Skip to content

Commit 336e01a

Browse files
committed
fix(empty transient arrays): #2145
Empty transient array block were not being read or written correctly.
1 parent 5aaa5ff commit 336e01a

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

autotest/regression/test_mf6.py

+6-1
Original file line numberDiff line numberDiff line change
@@ -2062,7 +2062,7 @@ def test004_create_tests_bcfss(function_tmpdir, example_data_path):
20622062
readasarrays=True,
20632063
save_flows=True,
20642064
auxiliary=[("var1", "var2")],
2065-
recharge={0: 0.004},
2065+
recharge={0: 0.004, 1: []},
20662066
aux=aux,
20672067
) # *** test if aux works ***
20682068
chk = rch_package.check()
@@ -2078,6 +2078,11 @@ def test004_create_tests_bcfss(function_tmpdir, example_data_path):
20782078
assert aux_out[0][1][0, 0] == 1.3
20792079
assert aux_out[1][0][0, 0] == 200.0
20802080
assert aux_out[1][1][0, 0] == 1.5
2081+
# write test
2082+
sim.set_sim_path(function_tmpdir)
2083+
sim.write_simulation()
2084+
# update recharge
2085+
recharge = {0: 0.004, 1: 0.004}
20812086

20822087
riv_period = {}
20832088
riv_period_array = []

flopy/mf6/data/mfdataarray.py

+13
Original file line numberDiff line numberDiff line change
@@ -1788,6 +1788,9 @@ def has_data(self, layer=None):
17881788
self.get_data_prep(sto_key)
17891789
if super().has_data():
17901790
return True
1791+
for val in self.empty_keys.values():
1792+
if val:
1793+
return True
17911794
return False
17921795
else:
17931796
self.get_data_prep(layer)
@@ -1918,7 +1921,11 @@ def _set_data_record(
19181921
if list_item is None:
19191922
self.remove_transient_key(key)
19201923
del_keys.append(key)
1924+
self.empty_keys[key] = False
1925+
elif isinstance(list_item, list) and len(list_item) == 0:
1926+
self.empty_keys[key] = True
19211927
else:
1928+
self.empty_keys[key] = False
19221929
self._set_data_prep(list_item, key)
19231930
if is_record:
19241931
super().set_record(list_item)
@@ -1940,7 +1947,11 @@ def _set_data_record(
19401947
key = 0
19411948
if data is None:
19421949
self.remove_transient_key(key)
1950+
elif isinstance(data, list) and len(data) == 0:
1951+
# add empty record
1952+
self.empty_keys[key] = True
19431953
else:
1954+
self.empty_keys[key] = False
19441955
self._set_data_prep(data, key)
19451956
super().set_data(data, multiplier, layer)
19461957

@@ -1962,6 +1973,8 @@ def get_file_entry(
19621973
19631974
"""
19641975

1976+
if key in self.empty_keys and self.empty_keys[key]:
1977+
return ""
19651978
self._get_file_entry_prep(key)
19661979
return super().get_file_entry(ext_file_action=ext_file_action)
19671980

flopy/mf6/mfpackage.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1037,7 +1037,7 @@ def load(self, block_header, fd, strict=True):
10371037
for ds in self.datasets.values():
10381038
if isinstance(ds, mfdata.MFTransient):
10391039
transient_key = block_header.get_transient_key()
1040-
ds.set_data(empty_arr, transient_key)
1040+
ds.set_data(empty_arr, key=transient_key)
10411041
self.loaded = True
10421042
self.is_valid()
10431043

0 commit comments

Comments
 (0)