def setup_wel(self): """ Sets up the WEL package. Parameters ---------- Notes ----- """ package = 'wel' print('\nSetting up {} package...'.format(package.upper())) t0 = time.time() # option to write stress_period_data to external files external_files = self.cfg[package]['external_files'] # munge well package input # returns dataframe with information to populate stress_period_data df = setup_wel_data(self, for_external_files=external_files) if len(df) == 0: print('No wells in active model area') return # set up stress_period_data if external_files: # get the file path (allowing for different external file locations, specified name format, etc.) filename_format = package + '_{:03d}.dat' # stress period suffix filepaths = self.setup_external_filepaths(package, 'stress_period_data', filename_format=filename_format, file_numbers=sorted(df.per.unique().tolist())) spd = {} period_groups = df.groupby('per') for kper in range(self.nper): if kper in period_groups.groups: group = period_groups.get_group(kper) group.drop('per', axis=1, inplace=True) if external_files: group.to_csv(filepaths[kper]['filename'], index=False, sep=' ') # make a copy for the intermediate data folder, for consistency with mf-2005 shutil.copy(filepaths[kper]['filename'], self.cfg['intermediate_data']['output_folder']) else: kspd = mf6.ModflowGwfwel.stress_period_data.empty(self, len(group), boundnames=True)[0] kspd['cellid'] = list(zip(group.k, group.i, group.j)) kspd['q'] = group['q'] kspd['boundname'] = group['boundname'] spd[kper] = kspd else: pass # spd[kper] = None kwargs = self.cfg[package].copy() kwargs.update(self.cfg[package]['options']) if not external_files: kwargs['stress_period_data'] = spd kwargs = get_input_arguments(kwargs, mf6.ModflowGwfwel) wel = mf6.ModflowGwfwel(self, **kwargs) print("finished in {:.2f}s\n".format(time.time() - t0)) return wel
def test_minimum_well_layer_thickness(shellmound_model_with_dis, all_layers): m = shellmound_model_with_dis minthickness = 2 m.cfg['wel']['source_data']['csvfiles']['vertical_flux_distribution']\ ['minimum_layer_thickness'] = minthickness df = setup_wel_data(m, for_external_files=False) assert np.all( (-np.diff(all_layers, axis=0))[df.k, df.i, df.j] > minthickness)