|
1 | 1 | # coding=utf-8 |
2 | 2 | import inspect |
| 3 | +import os |
3 | 4 | import textwrap |
4 | 5 | from collections import OrderedDict as od |
5 | 6 | from functools import partial |
@@ -157,67 +158,82 @@ def __init__(self, load_nam='', add_pack=[], load_only=None): |
157 | 158 | # if bas: |
158 | 159 | bas.ifrefm = True |
159 | 160 |
|
160 | | - # All loaded packages |
161 | | - packagelist = self.sw.get_package_list() |
| 161 | + else: |
| 162 | + self.sw = flopy.seawat.Seawat() |
162 | 163 |
|
163 | | - loaded_parameters = {} |
164 | | - loaded_packages = {} |
| 164 | + # All loaded packages |
| 165 | + packagelist = self.sw.get_package_list() + add_pack |
165 | 166 |
|
166 | | - for name in packagelist + add_pack: # + ['mf', 'mt', 'swt'] |
167 | | - pm = od() |
168 | | - pm['name'] = name |
| 167 | + if not packagelist: |
| 168 | + os.error('Noting to do') |
169 | 169 |
|
170 | | - pm['class'] = self.possible_sw_packages[name.lower()] |
171 | | - pm['parent_str'] = inspect.getmodule(pm['class']).__package__ |
| 170 | + loaded_parameters = od() |
| 171 | + loaded_packages = od() |
172 | 172 |
|
173 | | - if name in packagelist and name not in add_pack: |
174 | | - pm['loaded'] = True |
175 | | - pm['instance'] = self.sw.get_package(name=name) |
| 173 | + for name in packagelist: |
| 174 | + pm = od() |
| 175 | + pm['name'] = name |
176 | 176 |
|
177 | | - else: |
178 | | - pm['loaded'] = False |
| 177 | + pm['class'] = self.possible_sw_packages[name.lower()] |
| 178 | + pm['parent_str'] = inspect.getmodule(pm['class']).__package__ |
| 179 | + |
| 180 | + if name in packagelist and name not in add_pack: |
| 181 | + # if in add_pack the default will be used |
| 182 | + pm['loaded'] = True |
| 183 | + pm['instance'] = self.sw.get_package(name=name) |
| 184 | + |
| 185 | + else: |
| 186 | + pm['loaded'] = False |
| 187 | + |
| 188 | + try: |
179 | 189 | pm['instance'] = pm['class'](model=self.sw) |
180 | 190 |
|
| 191 | + except: |
| 192 | + print('{0} Doesnt initiate using loaded or default values'. |
| 193 | + format(name)) |
| 194 | + pm['instance'] = pm['class'] |
| 195 | + # continue |
| 196 | + |
| 197 | + try: |
181 | 198 | p = load_package(pm['instance']) |
182 | 199 |
|
183 | 200 | loaded_parameters[name] = p |
184 | 201 | loaded_packages[name] = pm |
185 | 202 |
|
186 | | - ##################### |
187 | | - # Order and include 'flopy.modflow', 'flopy.mt3d', 'flopy.seawat' |
188 | | - self.parameters = od() |
189 | | - self.packages = od() |
| 203 | + except: |
| 204 | + print('{0} failed to load'.format(name)) |
| 205 | + continue |
190 | 206 |
|
191 | | - all_modules = ['flopy.modflow', 'flopy.mt3d', 'flopy.seawat'] |
192 | | - unique_modules = set( |
193 | | - [item['parent_str'] for name, item in loaded_packages.items()]) |
| 207 | + # Order and include 'flopy.modflow', 'flopy.mt3d', 'flopy.seawat' |
| 208 | + self.parameters = od() |
| 209 | + self.packages = od() |
194 | 210 |
|
195 | | - for mod in [ |
196 | | - item for item in all_modules if item in unique_modules |
197 | | - ]: |
198 | | - pm = od() |
199 | | - pm['name'] = mod |
| 211 | + all_modules = ['flopy.modflow', 'flopy.mt3d', 'flopy.seawat'] |
| 212 | + unique_modules = set( |
| 213 | + [item['parent_str'] for name, item in loaded_packages.items()]) |
200 | 214 |
|
201 | | - pm['class'] = self.possible_sw_packages[mod] |
202 | | - pm['parent_str'] = 'flopy' |
203 | | - pm['loaded'] = False |
204 | | - pm['instance'] = pm['class']() |
| 215 | + for mod in [item for item in all_modules if item in unique_modules]: |
| 216 | + pm = od() |
| 217 | + pm['name'] = mod |
205 | 218 |
|
206 | | - self.packages[mod] = pm |
207 | | - self.parameters[mod] = load_package(pm['instance']) |
| 219 | + pm['class'] = self.possible_sw_packages[mod] |
| 220 | + pm['parent_str'] = 'flopy' |
| 221 | + pm['loaded'] = False |
| 222 | + pm['instance'] = pm['class']() |
208 | 223 |
|
209 | | - for name, item in loaded_packages.items(): |
210 | | - assert name in loaded_parameters, 'Each loaded package should have a loaded self.parameters' |
| 224 | + self.packages[mod] = pm |
| 225 | + self.parameters[mod] = load_package(pm['instance']) |
211 | 226 |
|
212 | | - if loaded_packages[name]['parent_str'] != mod: |
213 | | - continue |
| 227 | + for name, item in loaded_packages.items(): |
| 228 | + assert name in loaded_parameters, 'Each loaded package should have a loaded self.parameters' |
214 | 229 |
|
215 | | - self.packages[name] = loaded_packages[name] |
216 | | - self.parameters[name] = loaded_parameters[name] |
| 230 | + if loaded_packages[name]['parent_str'] != mod: |
| 231 | + continue |
217 | 232 |
|
218 | | - ##################### |
| 233 | + self.packages[name] = loaded_packages[name] |
| 234 | + self.parameters[name] = loaded_parameters[name] |
219 | 235 |
|
220 | | - # sanitize |
| 236 | + # sanitize |
221 | 237 | self.script_sanitize_ncomp() |
222 | 238 | self.script_sanitize_BTN_mfenheriting() |
223 | 239 | self.script_sanitize_unwanted_parameters() |
@@ -255,7 +271,8 @@ def cat_package_file(self, name): |
255 | 271 | s = file.read() |
256 | 272 |
|
257 | 273 | print('\n'.join( |
258 | | - [str(path.absolute()), len(str(path.absolute())) * '-', s])) |
| 274 | + [str(path.absolute()), |
| 275 | + len(str(path.absolute())) * '-', s])) |
259 | 276 |
|
260 | 277 | def script_kwargs2string(self, |
261 | 278 | name, |
|
0 commit comments