Skip to content

Commit 3cbff2c

Browse files
mjrenomjreno
authored andcommitted
refactor readarraygrid aux variables to store layered
1 parent 85105ae commit 3cbff2c

File tree

5 files changed

+309
-185
lines changed

5 files changed

+309
-185
lines changed

autotest/test_mf6.py

Lines changed: 93 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1963,6 +1963,8 @@ def test_array(function_tmpdir):
19631963

19641964
@requires_exe("mf6")
19651965
def test_grid_array(function_tmpdir):
1966+
import warnings
1967+
19661968
try:
19671969
from flopy.mf6 import (
19681970
ModflowGwfchdg,
@@ -1972,6 +1974,8 @@ def test_grid_array(function_tmpdir):
19721974
ModflowGwfwelg,
19731975
)
19741976
except ImportError:
1977+
msg = "test_mf6 test_grid_array did not run"
1978+
warnings.warn(msg, UserWarning)
19751979
return
19761980
# get_data
19771981
# empty data in period block vs data repeating
@@ -2015,7 +2019,7 @@ def test_grid_array(function_tmpdir):
20152019
delc=5000.0,
20162020
top=100.0,
20172021
botm=[50.0, 0.0, -50.0, -100.0],
2018-
filename=f"{model_name} 1.dis",
2022+
filename=f"{model_name}.dis",
20192023
)
20202024
ic_package = ModflowGwfic(model, strt=90.0, filename=f"{model_name}.ic")
20212025
npf_package = ModflowGwfnpf(
@@ -2091,6 +2095,8 @@ def test_grid_array(function_tmpdir):
20912095
q = np.full((nlay, nrow, ncol), DNODATA, dtype=float)
20922096
welconc = np.full((nlay, nrow, ncol), DNODATA, dtype=float)
20932097
welaux2 = np.full((nlay, nrow, ncol), DNODATA, dtype=float)
2098+
# TODO constant by layer
2099+
# welaux2 = [DNODATA]
20942100
if n == 1:
20952101
q[0, 0, 0] = 0.25
20962102
welconc[0, 0, 0] = 0.0
@@ -2115,6 +2121,12 @@ def test_grid_array(function_tmpdir):
21152121
aux=welconcspd,
21162122
)
21172123

2124+
print(wel.aux.array)
2125+
print(wel.aux.get_data())
2126+
2127+
# sim.write_simulation()
2128+
# assert False
2129+
21182130
assert len(wel.q.array) == 4
21192131
assert len(wel.q.get_data()) == 4
21202132
assert len(wel.aux.array) == 4
@@ -2135,15 +2147,6 @@ def test_grid_array(function_tmpdir):
21352147
assert np.allclose(wel.aux.array[2][1], wel.aux.get_data()[2][1])
21362148
assert np.allclose(wel.aux.array[3][0], wel.aux.get_data()[3][0])
21372149
assert np.allclose(wel.aux.array[3][1], wel.aux.get_data()[3][1])
2138-
# assert wel.q.get_data()[0] is None
2139-
# assert wel.q.get_data(0) is None
2140-
# assert np.allclose(wel.q.get_data()[1], wel.q.get_data(1))
2141-
# assert np.allclose(wel.q.get_data()[2], wel.q.get_data(2))
2142-
assert len(wel.q.array) == 4
2143-
# assert np.allclose(wel.q.array[1], wel.q.get_data(1))
2144-
# assert np.allclose(wel.q.array[2], wel.q.get_data(2))
2145-
# assert wel.q.get_data()[3] is None
2146-
# assert wel.q.get_data(3) is None
21472150

21482151
assert not wel.has_stress_period_data
21492152
q_nan = np.where(wel.q.array == DNODATA, np.nan, wel.q.array)
@@ -2167,10 +2170,10 @@ def test_grid_array(function_tmpdir):
21672170
assert aux_data_2[1][0][0][0] == 0.0
21682171
aux_data_3 = wel.aux.get_data(3)
21692172
assert np.all(aux_data_3[0] == DNODATA)
2170-
# assert wel.q[0] is None
2171-
# assert wel.q[1[0][1] == 0.25
21722173

21732174
# remove test wel package
2175+
sim.write_simulation()
2176+
# assert False
21742177
wel.remove()
21752178

21762179
welqspd = {}
@@ -2237,32 +2240,70 @@ def test_grid_array(function_tmpdir):
22372240
aux_data_3 = wel.aux.get_data(3)
22382241
assert aux_data_3 is None
22392242

2240-
drnspdict = {
2241-
0: [[(0, 0, 0), 60.0, 10.0]],
2242-
2: [],
2243-
3: [[(0, 0, 0), 55.0, 5.0]],
2244-
}
2245-
drn = ModflowGwfdrn(
2243+
# drnspdict = {
2244+
# 0: [[(0, 0, 0), 60.0, 10.0]],
2245+
# 2: [],
2246+
# 3: [[(0, 0, 0), 55.0, 5.0]],
2247+
# }
2248+
# drn = ModflowGwfdrn(
2249+
# model,
2250+
# print_input=True,
2251+
# print_flows=True,
2252+
# stress_period_data=drnspdict,
2253+
# save_flows=False,
2254+
# pname="DRN-1",
2255+
# )
2256+
2257+
drnelevspd = {}
2258+
drncondspd = {}
2259+
for n in range(4):
2260+
elev = np.full((nlay, nrow, ncol), DNODATA, dtype=float)
2261+
cond = np.full((nlay, nrow, ncol), DNODATA, dtype=float)
2262+
if n == 0:
2263+
elev[0, 0, 0] = 60.0
2264+
cond[0, 0, 0] = 10.0
2265+
elif n == 3:
2266+
elev[0, 0, 0] = 55.0
2267+
cond[0, 0, 0] = 5.0
2268+
if n != 1:
2269+
drnelevspd[n] = elev
2270+
drncondspd[n] = cond
2271+
2272+
# create drng package
2273+
drn = ModflowGwfdrng(
22462274
model,
22472275
print_input=True,
22482276
print_flows=True,
2249-
stress_period_data=drnspdict,
22502277
save_flows=False,
22512278
pname="DRN-1",
2252-
)
2253-
drn_array = drn.stress_period_data.array
2254-
assert drn_array[0][0][1] == 60.0
2255-
assert drn_array[1][0][1] == 60.0
2256-
assert drn_array[2] is None
2257-
assert drn_array[3][0][1] == 55.0
2258-
drn_gd_0 = drn.stress_period_data.get_data(0)
2259-
assert drn_gd_0[0][1] == 60.0
2260-
drn_gd_1 = drn.stress_period_data.get_data(1)
2261-
assert drn_gd_1 is None
2262-
drn_gd_2 = drn.stress_period_data.get_data(2)
2263-
assert len(drn_gd_2) == 0
2264-
drn_gd_3 = drn.stress_period_data.get_data(3)
2265-
assert drn_gd_3[0][1] == 55.0
2279+
elev=drnelevspd,
2280+
cond=drncondspd,
2281+
)
2282+
2283+
drn_elev_array = drn.elev.array
2284+
drn_cond_array = drn.cond.array
2285+
drn_elev_data = drn.elev.get_data()
2286+
drn_cond_data = drn.cond.get_data()
2287+
assert len(drn_elev_array) == 4
2288+
assert len(drn_cond_array) == 4
2289+
assert len(drn_elev_data) == 4
2290+
assert len(drn_cond_data) == 4
2291+
assert np.allclose(drn_elev_array[0], drn_elev_data[0])
2292+
assert np.allclose(drn_elev_array[0], drn.elev.get_data(0))
2293+
2294+
# drn_array = drn.stress_period_data.array
2295+
# assert drn_array[0][0][1] == 60.0
2296+
# assert drn_array[1][0][1] == 60.0
2297+
# assert drn_array[2] is None
2298+
# assert drn_array[3][0][1] == 55.0
2299+
# drn_gd_0 = drn.stress_period_data.get_data(0)
2300+
# assert drn_gd_0[0][1] == 60.0
2301+
# drn_gd_1 = drn.stress_period_data.get_data(1)
2302+
# assert drn_gd_1 is None
2303+
# drn_gd_2 = drn.stress_period_data.get_data(2)
2304+
# assert len(drn_gd_2) == 0
2305+
# drn_gd_3 = drn.stress_period_data.get_data(3)
2306+
# assert drn_gd_3[0][1] == 55.0
22662307

22672308
ghbspdict = {
22682309
0: [[(0, 1, 1), 60.0, 10.0]],
@@ -2343,11 +2384,11 @@ def test_grid_array(function_tmpdir):
23432384
)
23442385

23452386
# test writing and loading model
2346-
print(wel.aux.array)
2387+
# print(wel.aux.array)
23472388
sim.write_simulation()
2348-
print(wel.aux.array)
2389+
# print(wel.aux.array)
23492390
sim.run_simulation()
2350-
print(wel.aux.array)
2391+
# print(wel.aux.array)
23512392

23522393
test_sim = MFSimulation.load(
23532394
sim_name,
@@ -2363,7 +2404,7 @@ def test_grid_array(function_tmpdir):
23632404
drn = model.get_package("drn")
23642405
lak = model.get_package("lak")
23652406
lak_tab = model.get_package("laktab")
2366-
assert os.path.split(dis.filename)[1] == f"{model_name} 1.dis"
2407+
assert os.path.split(dis.filename)[1] == f"{model_name}.dis"
23672408
# do same tests as above
23682409
val_irch = rcha.irch.array.sum(axis=(1, 2, 3))
23692410
assert val_irch[0] == 4
@@ -2406,6 +2447,8 @@ def test_grid_array(function_tmpdir):
24062447
assert welg_q_per[2][0, 0, 0] == 0.1
24072448
assert welg_q_per[3] is None
24082449
wel_aux_array = wel.aux.array
2450+
print(wel_aux_array)
2451+
# assert False
24092452
assert np.all(wel_aux_array[0][0] == 0.0)
24102453
assert wel_aux_array[1][0][0, 0, 0] == 0.0
24112454
assert wel_aux_array[2][0][0, 0, 0] == 0.0
@@ -2422,19 +2465,19 @@ def test_grid_array(function_tmpdir):
24222465
welg_aux_per1 = wel.aux.get_data(1)
24232466
assert welg_aux_per1[0][0, 0, 0] == 0.0
24242467

2425-
drn_array = drn.stress_period_data.array
2426-
assert drn_array[0][0][1] == 60.0
2427-
assert drn_array[1][0][1] == 60.0
2428-
assert drn_array[2] is None
2429-
assert drn_array[3][0][1] == 55.0
2430-
drn_gd_0 = drn.stress_period_data.get_data(0)
2431-
assert drn_gd_0[0][1] == 60.0
2432-
drn_gd_1 = drn.stress_period_data.get_data(1)
2433-
assert drn_gd_1 is None
2434-
drn_gd_2 = drn.stress_period_data.get_data(2)
2435-
assert len(drn_gd_2) == 0
2436-
drn_gd_3 = drn.stress_period_data.get_data(3)
2437-
assert drn_gd_3[0][1] == 55.0
2468+
# drn_array = drn.stress_period_data.array
2469+
# assert drn_array[0][0][1] == 60.0
2470+
# assert drn_array[1][0][1] == 60.0
2471+
# assert drn_array[2] is None
2472+
# assert drn_array[3][0][1] == 55.0
2473+
# drn_gd_0 = drn.stress_period_data.get_data(0)
2474+
# assert drn_gd_0[0][1] == 60.0
2475+
# drn_gd_1 = drn.stress_period_data.get_data(1)
2476+
# assert drn_gd_1 is None
2477+
# drn_gd_2 = drn.stress_period_data.get_data(2)
2478+
# assert len(drn_gd_2) == 0
2479+
# drn_gd_3 = drn.stress_period_data.get_data(3)
2480+
# assert drn_gd_3[0][1] == 55.0
24382481

24392482
lak_tab_array = lak.tables.get_data()
24402483
assert lak_tab_array[0][1] == "lak01.tab"

0 commit comments

Comments
 (0)