1
1
import re
2
- from typing import Optional
2
+ from typing import Optional , Union
3
3
4
- import numpy as np
5
4
from flopy .datbase import DataInterface , DataListInterface , DataType
6
5
from flopy .discretization import StructuredGrid
7
6
from flopy .discretization .grid import Grid
8
7
from flopy .discretization .modeltime import ModelTime
9
8
from flopy .mbase import ModelInterface
10
9
from flopy .pakbase import PackageInterface
11
10
from flopy .plot .plotutil import PlotUtilities
12
- from xattree import _get_xatspec
11
+ from xattree import _Array , _Attr , _get_xatspec
13
12
14
13
from flopy4 .mf6 .model import Model
15
14
from flopy4 .mf6 .package import Package
@@ -51,9 +50,9 @@ def __init__(
51
50
self ._grid = StructuredGrid (
52
51
delc = model .dis .delc .data ,
53
52
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 ,
57
56
lenuni = lenuni ,
58
57
crs = None ,
59
58
prjfile = None ,
@@ -104,8 +103,8 @@ def solver_tols(self):
104
103
"""
105
104
Solver inner hclose and rclose values.
106
105
"""
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
109
108
110
109
return None
111
110
@@ -154,8 +153,8 @@ def get_package_list(self, ftype=None):
154
153
return [p .name for p in self ._plist ]
155
154
156
155
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()
159
158
return PlotUtilities ._plot_model_helper (
160
159
self , SelPackList = packages , ** kwargs
161
160
)
@@ -190,25 +189,25 @@ def __init__(
190
189
and self ._spec .flat [a ].type is not None
191
190
):
192
191
d_fp3 = Flopy3Data (
192
+ data = self ._data .attrs [a ],
193
+ spec = self ._spec .flat [a ],
193
194
name = a ,
194
195
modelname = self .parent ,
195
196
modelgrid = self ._grid ,
196
197
modeltime = modeltime ,
197
- data = self ._data .attrs [a ],
198
- spec = self ._spec .flat [a ],
199
198
)
200
199
self .__dict__ [f"{ a } " ] = d_fp3
201
200
self ._dlist .append (d_fp3 )
202
201
203
202
for v in self ._data .data_vars :
204
203
if self ._data .data_vars [v ] is not None :
205
204
d_fp3 = Flopy3Data (
205
+ data = self ._data .data_vars [v ],
206
+ spec = self ._spec .flat [v ],
206
207
name = v ,
207
208
modelname = self .parent ,
208
209
modelgrid = self ._grid ,
209
210
modeltime = modeltime ,
210
- data = self ._data .data_vars [v ],
211
- spec = self ._spec .flat [v ],
212
211
)
213
212
self .__dict__ [f"{ v } " ] = d_fp3
214
213
self ._dlist .append (d_fp3 )
@@ -257,22 +256,18 @@ def check(self, f=None, verbose=True, level=1, checktype=None):
257
256
return None
258
257
259
258
def plot (self , ** kwargs ):
260
- # kwargs = {}
261
- # kwargs["filename_base"] = "modelif"
262
-
263
259
return PlotUtilities ._plot_package_helper (self , ** kwargs )
264
260
265
261
266
262
class Flopy3Data (DataInterface ):
267
263
def __init__ (
268
- # TODO: types of data and spec are unions
269
264
self ,
265
+ data ,
266
+ spec : Union [_Attr , _Array ],
270
267
name : Optional [str ] = None ,
271
268
modelname : Optional [str ] = None ,
272
269
modelgrid : Optional [Grid ] = None ,
273
270
modeltime : Optional [ModelTime ] = None ,
274
- data = None ,
275
- spec = None ,
276
271
):
277
272
assert data is not None
278
273
assert spec is not None
@@ -326,14 +321,12 @@ def data_type(self):
326
321
327
322
@property
328
323
def dtype (self ):
329
- # return self._spec.type
330
324
return self ._spec .type .__name__
331
325
332
326
@property
333
327
def array (self ):
334
328
if self ._spec .type .__name__ == "ndarray" :
335
329
if "nnodes" in self ._data .dims :
336
- # TODO: transpose?
337
330
if "nper" in self ._data .dims :
338
331
shape = (
339
332
self ._time .nper ,
@@ -348,7 +341,7 @@ def array(self):
348
341
349
342
return self ._data .data .reshape (shape )
350
343
else :
351
- return np . transpose ( self ._data .data )
344
+ return self ._data .data
352
345
return None
353
346
354
347
@property
0 commit comments