Skip to content

Commit

Permalink
fix(#856): Specifying period data with value None now only removes da…
Browse files Browse the repository at this point in the history
…ta from that period. Also, fixed an unrelated problem by updating the multi-package list. (#857)
  • Loading branch information
spaulins-usgs committed Apr 22, 2020
1 parent 0266728 commit c45a5e5
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 15 deletions.
3 changes: 2 additions & 1 deletion autotest/t505_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,8 @@ def np001():

# test saving a binary file with list data
well_spd = {0: {'filename': 'wel0.bin', 'binary': True,
'data': [((0, 0, 4), -2000.0), ((0, 0, 7), -2.0)]}}
'data': [((0, 0, 4), -2000.0), ((0, 0, 7), -2.0)]},
1: None}
wel_package = ModflowGwfwel(model, print_input=True, print_flows=True,
save_flows=True, maxbound=2,
stress_period_data=well_spd)
Expand Down
25 changes: 20 additions & 5 deletions flopy/mf6/data/mfdataarray.py
Original file line number Diff line number Diff line change
Expand Up @@ -1027,6 +1027,10 @@ def __init__(self, sim_data, model_or_sim, structure, enable=True,
def data_type(self):
return DataType.transient2d

def remove_transient_key(self, transient_key):
if transient_key in self._data_storage:
del self._data_storage[transient_key]

def add_transient_key(self, transient_key):
super(MFTransientArray, self).add_transient_key(transient_key)
self._data_storage[transient_key] = \
Expand Down Expand Up @@ -1112,10 +1116,17 @@ def set_data(self, data, multiplier=None, layer=None, key=None):
if isinstance(data, dict) or isinstance(data, OrderedDict):
# each item in the dictionary is a list for one stress period
# the dictionary key is the stress period the list is for
del_keys = []
for key, list_item in data.items():
self._set_data_prep(list_item, key)
super(MFTransientArray, self).set_data(list_item, multiplier,
layer)
if list_item is None:
self.remove_transient_key(key)
del_keys.append(key)
else:
self._set_data_prep(list_item, key)
super(MFTransientArray, self).set_data(list_item,
multiplier, layer)
for key in del_keys:
del data[key]
else:
if key is None:
# search for a key
Expand All @@ -1125,8 +1136,12 @@ def set_data(self, data, multiplier=None, layer=None, key=None):
key = data[new_key_index]
else:
key = 0
self._set_data_prep(data, key)
super(MFTransientArray, self).set_data(data, multiplier, layer)
if data is None:
self.remove_transient_key(key)
else:
self._set_data_prep(data, key)
super(MFTransientArray, self).set_data(data, multiplier,
layer)

def get_file_entry(self, key=0,
ext_file_action=ExtFileAction.copy_relative_paths):
Expand Down
25 changes: 20 additions & 5 deletions flopy/mf6/data/mfdatalist.py
Original file line number Diff line number Diff line change
Expand Up @@ -955,6 +955,10 @@ def masked_4D_arrays_itr(self):
def to_array(self, kper=0, mask=False):
return super(MFTransientList, self).to_array(kper, mask)

def remove_transient_key(self, transient_key):
if transient_key in self._data_storage:
del self._data_storage[transient_key]

def add_transient_key(self, transient_key):
super(MFTransientList, self).add_transient_key(transient_key)
if isinstance(transient_key, int):
Expand Down Expand Up @@ -1018,10 +1022,18 @@ def set_data(self, data, key=None, autofill=False):
if 'filename' not in data:
# each item in the dictionary is a list for one stress period
# the dictionary key is the stress period the list is for
del_keys = []
for key, list_item in data.items():
self._set_data_prep(list_item, key)
super(MFTransientList, self).set_data(list_item,
autofill=autofill)
if list_item is None:
self.remove_transient_key(key)
del_keys.append(key)
else:
self._set_data_prep(list_item, key)
super(MFTransientList, self).set_data(list_item,
autofill=
autofill)
for key in del_keys:
del data[key]
else:
self._set_data_prep(data['data'], key)
super(MFTransientList, self).set_data(data, autofill)
Expand All @@ -1033,8 +1045,11 @@ def set_data(self, data, key=None, autofill=False):
key = data[new_key_index]
else:
key = 0
self._set_data_prep(data, key)
super(MFTransientList, self).set_data(data, autofill)
if data is None:
self.remove_transient_key(key)
else:
self._set_data_prep(data, key)
super(MFTransientList, self).set_data(data, autofill)

def get_file_entry(self, key=0,
ext_file_action=ExtFileAction.copy_relative_paths):
Expand Down
9 changes: 5 additions & 4 deletions flopy/mf6/data/mfstructure.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,11 @@ def __init__(self):
self.dfndir = os.path.join('.', 'dfn')
self.common = os.path.join(self.dfndir, 'common.dfn')
# FIX: Transport - multi packages are hard coded
self.multi_package = {'gwfmvr': 0, 'exggwfgwf': 0, 'gwfchd': 0,
'gwfrch': 0, 'gwfwel': 0,
'gwfdrn': 0, 'gwfriv': 0, 'lnfcgeo': 0,
'lnfrgeo': 0, 'lnfngeo':0,
self.multi_package = {'exggwfgwf': 0, 'gwfchd': 0, 'gwfwel': 0,
'gwfdrn': 0, 'gwfriv': 0, 'gwfghb': 0,
'gwfrch': 0, 'gwfevt': 0, 'gwfmaw': 0,
'gwfsfr': 0, 'gwflak': 0, 'gwfuzf': 0,
'lnfcgeo': 0, 'lnfrgeo': 0, 'lnfngeo': 0,
'utlobs': 0, 'utlts': 0, 'utltas': 0}

def get_file_list(self):
Expand Down

0 comments on commit c45a5e5

Please sign in to comment.