From b64f2bdae803830936da89cf1c8e97ab4f660981 Mon Sep 17 00:00:00 2001 From: martclanor Date: Wed, 7 Aug 2024 22:21:37 +0200 Subject: [PATCH] fix(modelgrid): fix missing coord info if disv (#2284) Closes #2283 --------- Co-authored-by: wpbonelli --- autotest/test_mf6.py | 52 ++++++++++++++++++++++++++++++++++++++++++++ flopy/mf6/mfmodel.py | 13 ++++------- 2 files changed, 56 insertions(+), 9 deletions(-) diff --git a/autotest/test_mf6.py b/autotest/test_mf6.py index 2e1d93161..6401fa8fb 100644 --- a/autotest/test_mf6.py +++ b/autotest/test_mf6.py @@ -2420,3 +2420,55 @@ def test_remove_model(function_tmpdir, example_data_path): elif exg_index > 0: assert "end exchanges" in l break + + +def test_flopy_2283(function_tmpdir): + # create triangular grid + triangle_ws = function_tmpdir / "triangle" + triangle_ws.mkdir() + + active_area = [(0, 0), (0, 1000), (1000, 1000), (1000, 0)] + tri = Triangle(model_ws=triangle_ws, angle=30) + tri.add_polygon(active_area) + tri.add_region((1, 1), maximum_area=50**2) + + tri.build() + + # build vertex grid object + vgrid = flopy.discretization.VertexGrid( + vertices=tri.get_vertices(), + cell2d=tri.get_cell2d(), + xoff=199000, + yoff=215500, + crs=31370, + angrot=30, + ) + + # coord info is set (also correct when using vgrid.set_coord_info() + print(vgrid) + + # create MODFLOW 6 model + ws = function_tmpdir / "model" + ws.mkdir() + sim = flopy.mf6.MFSimulation(sim_name="prj-test", sim_ws=ws) + tdis = flopy.mf6.ModflowTdis(sim) + ims = flopy.mf6.ModflowIms(sim) + + gwf = flopy.mf6.ModflowGwf(sim, modelname="gwf") + disv = flopy.mf6.ModflowGwfdisv( + gwf, + xorigin=vgrid.xoffset, + yorigin=vgrid.yoffset, + angrot=vgrid.angrot, # no CRS info can be set in DISV + nlay=1, + top=0.0, + botm=-10.0, + ncpl=vgrid.ncpl, + nvert=vgrid.nvert, + cell2d=vgrid.cell2d, + vertices=tri.get_vertices(), # this is not stored in the Vertex grid object? + ) + + assert gwf.modelgrid.xoffset == disv.xorigin.get_data() + assert gwf.modelgrid.yoffset == disv.yorigin.get_data() + assert gwf.modelgrid.angrot == disv.angrot.get_data() diff --git a/flopy/mf6/mfmodel.py b/flopy/mf6/mfmodel.py index 70c62e28e..281173583 100644 --- a/flopy/mf6/mfmodel.py +++ b/flopy/mf6/mfmodel.py @@ -572,15 +572,10 @@ def modelgrid(self): else: return self._modelgrid - if self.get_grid_type() != DiscretizationType.DISV: - # get coordinate data from dis file - xorig = dis.xorigin.get_data() - yorig = dis.yorigin.get_data() - angrot = dis.angrot.get_data() - else: - xorig = self._modelgrid.xoffset - yorig = self._modelgrid.yoffset - angrot = self._modelgrid.angrot + # get coordinate data from dis file + xorig = dis.xorigin.get_data() + yorig = dis.yorigin.get_data() + angrot = dis.angrot.get_data() # resolve offsets if xorig is None: