diff --git a/autotest/t504_test.py b/autotest/t504_test.py index cc8f5ac17f..d43fe175dc 100644 --- a/autotest/t504_test.py +++ b/autotest/t504_test.py @@ -537,87 +537,84 @@ def test006_gwf3(): return -# def test045_lake1ss_table(): -# # init paths -# test_ex_name = "test045_lake1ss_table" -# model_name = "lakeex1b" -# -# pth = os.path.join("..", "examples", "data", "mf6", test_ex_name) -# run_folder = f"{base_dir}_{test_ex_name}" -# save_folder = f"{run_folder}_save" -# test_setup = flopyTest(verbose=True) -# test_setup.add_test_dir([run_folder, save_folder]) -# -# expected_output_folder = os.path.join(pth, "expected_output") -# expected_head_file_a = os.path.join( -# expected_output_folder, "lakeex1b_unch.hds" -# ) -# expected_head_file_b = os.path.join( -# expected_output_folder, "lakeex1b_adj.hds" -# ) -# -# # load simulation -# sim = MFSimulation.load( -# sim_name=model_name, -# exe_name=exe_name, -# sim_ws=pth, -# verify_data=True, -# ) -# -# # make temp folder to save simulation -# sim.set_sim_path(run_folder) -# -# # write simulation to new location -# sim.write_simulation() -# -# if run: -# # run simulation -# success, buff = sim.run_simulation() -# assert success, f"simulation {sim.name} did not run" -# -# # compare output to expected results -# head_new = os.path.join(run_folder, "lakeex1b.hds") -# outfile = os.path.join(run_folder, "headcompare_a.txt") -# success = pymake.compare_heads( -# None, -# None, -# files1=expected_head_file_a, -# files2=head_new, -# outfile=outfile, -# ) -# assert success -# -# # change some settings -# model = sim.get_model(model_name) -# laktbl = model.get_package("tab").table -# laktbl_data = laktbl.get_data() -# laktbl_data[-1][0] = 700.0 -# laktbl.set_data(laktbl_data) -# -# # write simulation again -# sim.set_sim_path(save_folder) -# sim.write_simulation() -# -# if run: -# # run simulation -# success, buff = sim.run_simulation() -# assert success, f"simulation {sim.name} rerun did not run" -# -# # compare output to expected results -# head_new = os.path.join(save_folder, "lakeex1b.hds") -# outfile = os.path.join(run_folder, "headcompare_b.txt") -# success = pymake.compare_heads( -# None, -# None, -# files1=expected_head_file_b, -# files2=head_new, -# outfile=outfile, -# ) -# assert success -# -# -# -# return +def test045_lake1ss_table(): + # init paths + test_ex_name = "test045_lake1ss_table" + model_name = "lakeex1b" + + pth = os.path.join("..", "examples", "data", "mf6", test_ex_name) + run_folder = f"{base_dir}_{test_ex_name}" + save_folder = f"{run_folder}_save" + test_setup = FlopyTestSetup(verbose=True) + test_setup.add_test_dir([run_folder, save_folder]) + + expected_output_folder = os.path.join(pth, "expected_output") + expected_head_file_a = os.path.join( + expected_output_folder, "lakeex1b_unch.hds" + ) + expected_head_file_b = os.path.join( + expected_output_folder, "lakeex1b_adj.hds" + ) + + # load simulation + sim = MFSimulation.load( + sim_name=model_name, + exe_name=exe_name, + sim_ws=pth, + verify_data=True, + ) + + # make temp folder to save simulation + sim.set_sim_path(run_folder) + + # write simulation to new location + sim.write_simulation() + + if run: + # run simulation + success, buff = sim.run_simulation() + assert success, f"simulation {sim.name} did not run" + + # compare output to expected results + head_new = os.path.join(run_folder, "lakeex1b.hds") + outfile = os.path.join(run_folder, "headcompare_a.txt") + success = pymake.compare_heads( + None, + None, + files1=expected_head_file_a, + files2=head_new, + outfile=outfile, + ) + assert success + + # change some settings + model = sim.get_model(model_name) + laktbl = model.get_package("laktab").table + laktbl_data = laktbl.get_data() + laktbl_data[-1][0] = 700.0 + laktbl.set_data(laktbl_data) + # write simulation again + sim.set_sim_path(save_folder) + sim.write_simulation() + + if run: + # run simulation + success, buff = sim.run_simulation() + assert success, f"simulation {sim.name} rerun did not run" + + # compare output to expected results + head_new = os.path.join(save_folder, "lakeex1b.hds") + outfile = os.path.join(run_folder, "headcompare_b.txt") + success = pymake.compare_heads( + None, + None, + files1=expected_head_file_b, + files2=head_new, + outfile=outfile, + ) + assert success + + return def test006_2models_mvr(): @@ -1301,6 +1298,7 @@ def test_mf6_output_add_observation(): test006_gwf3() test027_timeseriestest() test036_twrihfb() + test045_lake1ss_table() test045_lake2tr() test_mf6_output() test_mf6_output_add_observation() diff --git a/examples/data/mf6/test045_lake1ss_table/lakeex1b.lak b/examples/data/mf6/test045_lake1ss_table/lakeex1b.lak index 57b4afb81f..273078efdf 100644 --- a/examples/data/mf6/test045_lake1ss_table/lakeex1b.lak +++ b/examples/data/mf6/test045_lake1ss_table/lakeex1b.lak @@ -75,7 +75,7 @@ BEGIN connectiondata END connectiondata BEGIN tables - 1 TAB6 FILEIN lakeex1b_table.ref + 1 TAB6 FILEIN lt/lakeex1b_table.ref END tables BEGIN period 1 diff --git a/examples/data/mf6/test045_lake1ss_table/lakeex1b_table.ref b/examples/data/mf6/test045_lake1ss_table/lt/lakeex1b_table.ref similarity index 96% rename from examples/data/mf6/test045_lake1ss_table/lakeex1b_table.ref rename to examples/data/mf6/test045_lake1ss_table/lt/lakeex1b_table.ref index 7cffd907a0..cc1ada58c7 100644 --- a/examples/data/mf6/test045_lake1ss_table/lakeex1b_table.ref +++ b/examples/data/mf6/test045_lake1ss_table/lt/lakeex1b_table.ref @@ -4,7 +4,7 @@ BEGIN dimensions END dimensions BEGIN table - 97.0 0.0 2250000.0 + 97.0 3045000.0 2250000.0 99.6867 6045000.0 2250000.0 102.373 12090000.0 2250000.0 105.06 18135000.0 2250000.0 diff --git a/flopy/mf6/mfpackage.py b/flopy/mf6/mfpackage.py index a9fa93fb66..face70898d 100644 --- a/flopy/mf6/mfpackage.py +++ b/flopy/mf6/mfpackage.py @@ -1149,10 +1149,23 @@ def _get_package_info(self, dataset): item_name = data_item.name package_type = item_name[:-1] model_type = self._model_or_sim.structure.model_type - if ( - PackageContainer.package_factory(package_type, model_type) - is not None - ): + # not all packages have the same naming convention + # try different naming conventions to find the appropriate + # package + package_types = [ + package_type, + f"{self._container_package.package_type}" + f"{package_type}", + ] + package_type_found = None + for ptype in package_types: + if ( + PackageContainer.package_factory(ptype, model_type) + is not None + ): + package_type_found = ptype + break + if package_type_found is not None: try: data = dataset.get_data() except MFDataException as mfde: @@ -1172,9 +1185,14 @@ def _get_package_info(self, dataset): file_location = data package_info_list = [] file_path, file_name = os.path.split(file_location) - dict_package_name = f"{package_type}_{self.path[-2]}" + dict_package_name = f"{package_type_found}_{self.path[-2]}" package_info_list.append( - (package_type, file_name, file_path, dict_package_name) + ( + package_type_found, + file_name, + file_path, + dict_package_name, + ) ) return package_info_list return None