11import numpy as np
22
3+ from ..util import is_exg
34from .datamodel import get_package_type , gridshape
45from .pakbase import AdvancedPackage , ArrayPackage , ListPackage , package_factory
56
@@ -15,7 +16,8 @@ class ApiMbase:
1516 name : str
1617 modflow model name. ex. "GWF_1", "GWF-GWF_1"
1718 pkg_types : None, dict
18- optional dictionary of package types and ApiPackage class types
19+ optional dictionary of package types and ApiPackage class types,
20+ used to override the default package class selection
1921 """
2022
2123 def __init__ (self , mf6 , name , pkg_types = None ):
@@ -56,11 +58,9 @@ def _set_package_names(self):
5658 if addr .endswith ("PACKAGE_TYPE" ) and tmp [0 ] == self .name :
5759 pak_types [tmp [1 ]] = self .mf6 .get_value (addr )[0 ]
5860 elif tmp [0 ] == self .name and len (tmp ) == 2 :
59- if tmp [0 ].startswith ("GWF-GWF" ):
60- pak_types [tmp [0 ]] = "GWF-GWF"
61- pak_types .pop ("dis" , None )
62- elif tmp [0 ].startswith ("GWT-GWT" ):
63- pak_types [tmp [0 ]] = "GWT-GWT"
61+ pkg_type = tmp [0 ].rsplit ("_" , 1 )[0 ]
62+ if is_exg (pkg_type ):
63+ pak_types [tmp [0 ]] = pkg_type
6464 pak_types .pop ("dis" , None )
6565
6666 self ._pak_type = list (pak_types .values ())
@@ -72,18 +72,15 @@ def _create_package_list(self):
7272 """
7373 for ix , pkg_name in enumerate (self ._pkg_names ):
7474 pkg_type = self ._pak_type [ix ].lower ()
75- if self ._pkg_types is None :
76- basepackage = get_package_type (pkg_type )
75+ if self ._pkg_types is not None and pkg_type in self ._pkg_types :
76+ basepackage = self ._pkg_types [pkg_type ]
77+ elif is_exg (pkg_type ):
78+ basepackage = ListPackage
7779 else :
78- if pkg_type in self ._pkg_types :
79- basepackage = self ._pkg_types [pkg_type ]
80- else :
81- basepackage = AdvancedPackage
80+ basepackage = get_package_type (pkg_type )
8281
8382 package = package_factory (pkg_type , basepackage )
84- adj_pkg_name = "" .join (pkg_type .split ("-" ))
85-
86- if adj_pkg_name .lower () in ("gwfgwf" , "gwtgwt" ):
83+ if is_exg (pkg_type ):
8784 adj_pkg_name = ""
8885 else :
8986 adj_pkg_name = pkg_name
0 commit comments