22from typing import Optional
33
44import numpy as np
5+ from flopy import export
56from flopy .datbase import DataInterface , DataListInterface , DataType
67from flopy .discretization import StructuredGrid
78from flopy .discretization .grid import Grid
89from flopy .discretization .modeltime import ModelTime
9- from flopy .export .utils import model_export , package_export
1010from flopy .mbase import ModelInterface
1111from flopy .pakbase import PackageInterface
1212from flopy .plot .plotutil import PlotUtilities
13- from xattree import Xattribute , get_xatspec
13+ from xattree import Xattribute , _get_xatspec
1414
1515from flopy4 .mf6 .model import Model
1616from 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
172172class 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
280280class 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
384400class Flopy3ListData (DataListInterface ):
385401 @property
0 commit comments