Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(tab files): fixed searching for tab file packages (#1337) #1344

Merged
merged 5 commits into from
Feb 16, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
160 changes: 79 additions & 81 deletions autotest/t504_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -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():
Expand Down Expand Up @@ -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()
2 changes: 1 addition & 1 deletion examples/data/mf6/test045_lake1ss_table/lakeex1b.lak
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
30 changes: 24 additions & 6 deletions flopy/mf6/mfpackage.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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
Expand Down