11import re
2- from typing import Optional
2+ from typing import Optional , Union
33
4- import numpy as np
54from flopy .datbase import DataInterface , DataListInterface , DataType
65from flopy .discretization import StructuredGrid
76from flopy .discretization .grid import Grid
87from flopy .discretization .modeltime import ModelTime
98from flopy .mbase import ModelInterface
109from flopy .pakbase import PackageInterface
1110from flopy .plot .plotutil import PlotUtilities
12- from xattree import _get_xatspec
11+ from xattree import _Array , _Attr , _get_xatspec
1312
1413from flopy4 .mf6 .model import Model
1514from flopy4 .mf6 .package import Package
@@ -51,9 +50,9 @@ def __init__(
5150 self ._grid = StructuredGrid (
5251 delc = model .dis .delc .data ,
5352 delr = model .dis .delr .data ,
54- top = np . transpose ( model .dis .top .data ) ,
55- botm = np . transpose ( model .dis .botm .data ) ,
56- idomain = np . transpose ( model .dis .idomain .data ) ,
53+ top = model .dis .top .data ,
54+ botm = model .dis .botm .data ,
55+ idomain = model .dis .idomain .data ,
5756 lenuni = lenuni ,
5857 crs = None ,
5958 prjfile = None ,
@@ -104,8 +103,8 @@ def solver_tols(self):
104103 """
105104 Solver inner hclose and rclose values.
106105 """
107- assert self ._ims
108- return self ._ims .inner_hclose , self ._ims .inner_rclose
106+ if self ._ims is not None :
107+ return self ._ims .inner_hclose , self ._ims .inner_rclose
109108
110109 return None
111110
@@ -154,8 +153,8 @@ def get_package_list(self, ftype=None):
154153 return [p .name for p in self ._plist ]
155154
156155 def plot (self , packages : Optional [list ] = None , ** kwargs ):
157- if packages is None :
158- packages = self .get_package_list ()
156+ # if packages is None:
157+ # packages = self.get_package_list()
159158 return PlotUtilities ._plot_model_helper (
160159 self , SelPackList = packages , ** kwargs
161160 )
@@ -190,25 +189,25 @@ def __init__(
190189 and self ._spec .flat [a ].type is not None
191190 ):
192191 d_fp3 = Flopy3Data (
192+ data = self ._data .attrs [a ],
193+ spec = self ._spec .flat [a ],
193194 name = a ,
194195 modelname = self .parent ,
195196 modelgrid = self ._grid ,
196197 modeltime = modeltime ,
197- data = self ._data .attrs [a ],
198- spec = self ._spec .flat [a ],
199198 )
200199 self .__dict__ [f"{ a } " ] = d_fp3
201200 self ._dlist .append (d_fp3 )
202201
203202 for v in self ._data .data_vars :
204203 if self ._data .data_vars [v ] is not None :
205204 d_fp3 = Flopy3Data (
205+ data = self ._data .data_vars [v ],
206+ spec = self ._spec .flat [v ],
206207 name = v ,
207208 modelname = self .parent ,
208209 modelgrid = self ._grid ,
209210 modeltime = modeltime ,
210- data = self ._data .data_vars [v ],
211- spec = self ._spec .flat [v ],
212211 )
213212 self .__dict__ [f"{ v } " ] = d_fp3
214213 self ._dlist .append (d_fp3 )
@@ -257,22 +256,18 @@ def check(self, f=None, verbose=True, level=1, checktype=None):
257256 return None
258257
259258 def plot (self , ** kwargs ):
260- # kwargs = {}
261- # kwargs["filename_base"] = "modelif"
262-
263259 return PlotUtilities ._plot_package_helper (self , ** kwargs )
264260
265261
266262class Flopy3Data (DataInterface ):
267263 def __init__ (
268- # TODO: types of data and spec are unions
269264 self ,
265+ data ,
266+ spec : Union [_Attr , _Array ],
270267 name : Optional [str ] = None ,
271268 modelname : Optional [str ] = None ,
272269 modelgrid : Optional [Grid ] = None ,
273270 modeltime : Optional [ModelTime ] = None ,
274- data = None ,
275- spec = None ,
276271 ):
277272 assert data is not None
278273 assert spec is not None
@@ -326,14 +321,12 @@ def data_type(self):
326321
327322 @property
328323 def dtype (self ):
329- # return self._spec.type
330324 return self ._spec .type .__name__
331325
332326 @property
333327 def array (self ):
334328 if self ._spec .type .__name__ == "ndarray" :
335329 if "nnodes" in self ._data .dims :
336- # TODO: transpose?
337330 if "nper" in self ._data .dims :
338331 shape = (
339332 self ._time .nper ,
@@ -348,7 +341,7 @@ def array(self):
348341
349342 return self ._data .data .reshape (shape )
350343 else :
351- return np . transpose ( self ._data .data )
344+ return self ._data .data
352345 return None
353346
354347 @property
0 commit comments