Skip to content

Commit 0920d27

Browse files
mjrenomjreno
authored andcommitted
add export
1 parent 2c01529 commit 0920d27

File tree

2 files changed

+40
-17
lines changed

2 files changed

+40
-17
lines changed

flopy4/mf6/interface/flopy3.py

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22
from typing import Optional
33

44
import numpy as np
5+
from flopy import export
56
from flopy.datbase import DataInterface, DataListInterface, DataType
67
from flopy.discretization import StructuredGrid
78
from flopy.discretization.grid import Grid
89
from flopy.discretization.modeltime import ModelTime
9-
from flopy.export.utils import model_export, package_export
1010
from flopy.mbase import ModelInterface
1111
from flopy.pakbase import PackageInterface
1212
from flopy.plot.plotutil import PlotUtilities
13-
from xattree import Xattribute, get_xatspec
13+
from xattree import Xattribute, _get_xatspec
1414

1515
from flopy4.mf6.model import Model
1616
from flopy4.mf6.package import Package
@@ -23,7 +23,7 @@ def __init__(
2323
modelgrid: Optional[Grid] = None,
2424
modeltime: Optional[ModelTime] = None,
2525
ims: Optional[Package] = None,
26-
crs: Optional[int] = None,
26+
**kwargs,
2727
):
2828
self._model = model
2929
self._grid = modelgrid
@@ -57,8 +57,8 @@ def __init__(
5757
botm=model.dis.botm.data,
5858
idomain=model.dis.idomain.data,
5959
lenuni=lenuni,
60-
crs=crs,
61-
prjfile=None,
60+
crs=kwargs.get("crs", None),
61+
prjfile=kwargs.get("prjfile", None),
6262
xoff=xoff,
6363
yoff=yoff,
6464
angrot=angrot,
@@ -98,7 +98,7 @@ def model_ws(self):
9898
return ""
9999

100100
@property
101-
def exe_name(self):
101+
def exename(self):
102102
return ""
103103

104104
@property
@@ -166,7 +166,7 @@ def plot(self, packages: Optional[list] = None, **kwargs):
166166
return PlotUtilities._plot_model_helper(self, SelPackList=packages, **kwargs)
167167

168168
def export(self, f, **kwargs):
169-
return model_export(f, self, **kwargs)
169+
return export.utils.model_export(f, self, **kwargs)
170170

171171

172172
class Flopy3Package(PackageInterface):
@@ -182,7 +182,7 @@ def __init__(
182182
self._data = package.data
183183
else:
184184
raise Exception("Input package has no data")
185-
self._spec = get_xatspec(type(package))
185+
self._spec = _get_xatspec(type(package))
186186
if modelgrid:
187187
self._grid = modelgrid
188188
elif model:
@@ -197,12 +197,12 @@ def __init__(
197197
continue
198198
if (
199199
self._data.attrs[a] is not None
200-
and a in self._spec
201-
and self._spec[a].type is not None
200+
and a in self._spec.flat
201+
and self._spec.flat[a].type is not None
202202
):
203203
d_fp3 = Flopy3Data(
204204
data=self._data.attrs[a],
205-
spec=self._spec[a],
205+
spec=self._spec.flat[a],
206206
name=a,
207207
modelname=self.parent,
208208
modelgrid=self._grid,
@@ -214,12 +214,12 @@ def __init__(
214214
for v in self._data.data_vars:
215215
if (
216216
self._data.data_vars[v] is not None
217-
and v in self._spec
218-
and self._spec[v].type is not None
217+
and v in self._spec.flat
218+
and self._spec.flat[v].type is not None
219219
):
220220
d_fp3 = Flopy3Data(
221221
data=self._data.data_vars[v],
222-
spec=self._spec[v],
222+
spec=self._spec.flat[v],
223223
name=v,
224224
modelname=self.parent,
225225
modelgrid=self._grid,
@@ -274,7 +274,7 @@ def plot(self, **kwargs):
274274
return PlotUtilities._plot_package_helper(self, **kwargs)
275275

276276
def export(self, f, **kwargs):
277-
return package_export(f, self, **kwargs)
277+
return export.utils.package_export(f, self, **kwargs)
278278

279279

280280
class Flopy3Data(DataInterface):
@@ -380,6 +380,22 @@ def plottable(self):
380380
return False
381381
return True
382382

383+
def export(self, f, **kwargs):
384+
if self._spec.type.__name__ == "ndarray":
385+
if (
386+
self.data_type == DataType.array2d
387+
and len(self.array.shape) == 2
388+
and self.array.shape[1] > 0
389+
):
390+
return export.utils.array2d_export(f, self, **kwargs)
391+
elif self.data_type == DataType.array3d:
392+
return export.utils.array3d_export(f, self, **kwargs)
393+
elif self.data_type == DataType.transient2d:
394+
return export.utils.transient2d_export(f, self, **kwargs)
395+
elif self.data_type == DataType.transientlist:
396+
return export.utils.mflist_export(f, self, **kwargs)
397+
return export.utils.transient2d_export(f, self, **kwargs)
398+
383399

384400
class Flopy3ListData(DataListInterface):
385401
@property

test/test_interface.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,7 @@ def test_flopy3_export():
315315
Path("output/flopy3_package/shape").mkdir(parents=True, exist_ok=True)
316316
Path("output/flopy3_model/netcdf").mkdir(parents=True, exist_ok=True)
317317
Path("output/flopy3_package/netcdf").mkdir(parents=True, exist_ok=True)
318+
Path("output/flopy3_package/vtk").mkdir(parents=True, exist_ok=True)
318319

319320
time = ModelTime(perlen=[1.0], nstp=[1], tsmult=[1.0])
320321

@@ -332,14 +333,20 @@ def test_flopy3_export():
332333

333334
# model netcdf export
334335
nc_mpth = Path("output/flopy3_model/netcdf/flopy3_model.nc")
335-
# TODO: needs flopy3 fix
336+
# TODO: needs flopy3 #2513
336337
# gwf3.export(f=nc_mpth)
337338

338339
# package netcdf export
339340
nc_ppth = Path("output/flopy3_package/netcdf/flopy3_package.nc")
340-
# TODO: needs flopy3 fix
341+
# TODO: needs flopy3 #2513
341342
# dis3.export(f=nc_ppth)
342343

344+
for d in dis3.data_list:
345+
print(d.name)
346+
if d.array is not None:
347+
vtk_pth = Path(f"output/flopy3_package/vtk/{d.name}.vtk")
348+
# d.export(vtk_pth, name=d.name, fmt="vtk", binary=False)
349+
343350

344351
@pytest.mark.xfail(
345352
reason=("demonstrate why wrapping array values with DataArray is necessary on set")

0 commit comments

Comments
 (0)