diff --git a/autotest/t009_test.py b/autotest/t009_test.py index 9649bb77cb..f2a6a4dad0 100644 --- a/autotest/t009_test.py +++ b/autotest/t009_test.py @@ -398,7 +398,6 @@ def test_ds_6d_6e_disordered(): sfr = m.get_package("SFR") sfr2 = m2.get_package("SFR") - if len(sfr.graph) != len(sfr2.graph): raise AssertionError @@ -416,6 +415,28 @@ def test_ds_6d_6e_disordered(): raise AssertionError +def test_disordered_reachdata_fields(): + path = os.path.join("..", "examples", "data", "hydmod_test") + wpath = os.path.join(".", "temp", "t009_disorderfields") + m = flopy.modflow.Modflow.load("test1tr2.nam", + model_ws=path) + sfr = m.get_package("SFR") + orig_reach_data = sfr.reach_data + # build shuffled rec array + shuffled_fields = list(set(orig_reach_data.dtype.names)) + data = [] + names = [] + formats = [] + for field in shuffled_fields: + data.append(orig_reach_data[field]) + names.append(field) + formats.append(orig_reach_data.dtype[field].str) + reach_data = np.rec.fromarrays(data, names=names, formats=formats) + m.sfr.reach_data = reach_data + m.change_model_ws(wpath) + m.write_input() + + def test_transient_example(): path = os.path.join('temp', 't009') gpth = os.path.join('..', 'examples', 'data', 'mf2005_test', 'testsfr2.*') @@ -488,14 +509,16 @@ def test_sfr_plot(): #assert True pass + if __name__ == '__main__': # test_sfr() # test_ds_6d_6e_disordered() + test_disordered_reachdata_fields() # test_sfr_renumbering() # test_example() # test_export() - #test_transient_example() - #test_sfr_plot() + # test_transient_example() + # mtest_sfr_plot() # test_assign_layers() # test_SfrFile() # test_const() diff --git a/flopy/modflow/mfevt.py b/flopy/modflow/mfevt.py index b2fc01241f..ec3776246a 100644 --- a/flopy/modflow/mfevt.py +++ b/flopy/modflow/mfevt.py @@ -139,7 +139,7 @@ def __init__(self, model, nevtop=3, ipakcb=None, surf=0., evtr=1e-3, self.surf = Transient2d(model, (nrow, ncol), np.float32, surf, name='surf') self.evtr = Transient2d(model, (nrow, ncol), np.float32, - evtr, name='etvr') + evtr, name='evtr') self.exdp = Transient2d(model, (nrow, ncol), np.float32, exdp, name='exdp') self.ievt = Transient2d(model, (nrow, ncol), np.int32, diff --git a/flopy/modflow/mfsfr2.py b/flopy/modflow/mfsfr2.py index bbba35855a..1dd84ea91c 100644 --- a/flopy/modflow/mfsfr2.py +++ b/flopy/modflow/mfsfr2.py @@ -1605,7 +1605,7 @@ def _write_reach_data(self, f_sfr): for idx in ['k', 'i', 'j', 'node']: if (idx in columns): d[idx] += 1 - d = d[columns] + d = d[columns] # data columns sorted formats = _fmt_string(d)[:-1] + '\n' for rec in d: f_sfr.write(formats.format(*rec)) @@ -2805,8 +2805,8 @@ def _get_item2_names(nstrm, reachinput, isfropt, structured=False): def _fmt_string(array, float_format='{!s}'): fmt_string = '' - for field in array.dtype.descr: - vtype = field[1][1].lower() + for field in array.dtype.names: # data already sorted + vtype = array.dtype[field].str[1].lower() if vtype == 'v': continue if vtype == 'i':