def load(f, model, nper=None, ext_unit_dict=None): """ Load an existing package. Parameters ---------- f : filename or file handle File to load. model : model object The model object (of type :class:`flopy.modflow.mf.Modflow`) to which this package will be added. nper : int The number of stress periods. If nper is None, then nper will be obtained from the model object. (default is None). ext_unit_dict : dictionary, optional If the arrays in the file are specified using EXTERNAL, or older style array control records, then `f` should be a file handle. In this case ext_unit_dict is required, which can be constructed using the function :class:`flopy.utils.mfreadnam.parsenamefile`. Returns ------- evt : ModflowEvt object ModflowEvt object. Examples -------- >>> import flopy >>> m = flopy.modflow.Modflow() >>> evt = flopy.modflow.mfevt.load('test.evt', m) """ if model.verbose: sys.stdout.write("loading evt package file...\n") if not hasattr(f, "read"): filename = f f = open(filename, "r") # Dataset 0 -- header while True: line = f.readline() if line[0] != "#": break npar = 0 if "parameter" in line.lower(): raw = line.strip().split() npar = int(raw[1]) if npar > 0: if model.verbose: print(" Parameters detected. Number of parameters = ", npar) line = f.readline() # Dataset 2 t = line.strip().split() nevtop = int(t[0]) ipakcb = 0 try: if int(t[1]) != 0: model.add_pop_key_list(int(t[1])) ipakcb = 53 except: pass # Dataset 3 and 4 - parameters data pak_parms = None if npar > 0: pak_parms = mfparbc.loadarray(f, npar, model.verbose) if nper is None: nrow, ncol, nlay, nper = model.get_nrow_ncol_nlay_nper() # Read data for every stress period surf = {} evtr = {} exdp = {} ievt = {} current_surf = [] current_evtr = [] current_exdp = [] current_ievt = [] for iper in range(nper): line = f.readline() t = line.strip().split() insurf = int(t[0]) inevtr = int(t[1]) inexdp = int(t[2]) if nevtop == 2: inievt = int(t[3]) if insurf >= 0: if model.verbose: print(" loading surf stress period {0:3d}...".format(iper + 1)) t = Util2d.load(f, model, (nrow, ncol), np.float32, "surf", ext_unit_dict) current_surf = t surf[iper] = current_surf if inevtr >= 0: if npar == 0: if model.verbose: print(" loading evtr stress period {0:3d}...".format(iper + 1)) t = Util2d.load(f, model, (nrow, ncol), np.float32, "evtr", ext_unit_dict) else: parm_dict = {} for ipar in range(inevtr): line = f.readline() t = line.strip().split() pname = t[0].lower() try: c = t[1].lower() if c in pak_parms.bc_parms: iname = c else: iname = "static" except: iname = "static" parm_dict[pname] = iname t = mfparbc.parameter_bcfill(model, (nrow, ncol), parm_dict, pak_parms) current_evtr = t evtr[iper] = current_evtr if inexdp >= 0: if model.verbose: print(" loading exdp stress period {0:3d}...".format(iper + 1)) t = Util2d.load(f, model, (nrow, ncol), np.float32, "exdp", ext_unit_dict) current_exdp = t exdp[iper] = current_exdp if nevtop == 2: if inievt >= 0: if model.verbose: print(" loading ievt stress period {0:3d}...".format(iper + 1)) t = Util2d.load(f, model, (nrow, ncol), np.int32, "ievt", ext_unit_dict) current_ievt = t ievt[iper] = current_ievt # create evt object args = {} if ievt: args["ievt"] = ievt if nevtop: args["nevtop"] = nevtop if evtr: args["evtr"] = evtr if surf: args["surf"] = surf if exdp: args["exdp"] = exdp args["ipakcb"] = ipakcb evt = ModflowEvt(model, **args) # return evt object return evt
def load(f, model, nper=None, ext_unit_dict=None): """ Load an existing package. Parameters ---------- f : filename or file handle File to load. model : model object The model object (of type :class:`flopy.modflow.mf.Modflow`) to which this package will be added. nper : int The number of stress periods. If nper is None, then nper will be obtained from the model object. (default is None). ext_unit_dict : dictionary, optional If the arrays in the file are specified using EXTERNAL, or older style array control records, then `f` should be a file handle. In this case ext_unit_dict is required, which can be constructed using the function :class:`flopy.utils.mfreadnam.parsenamefile`. Returns ------- evt : ModflowEvt object ModflowEvt object. Examples -------- >>> import flopy >>> m = flopy.modflow.Modflow() >>> evt = flopy.modflow.mfevt.load('test.evt', m) """ if model.verbose: sys.stdout.write('loading evt package file...\n') if not hasattr(f, 'read'): filename = f f = open(filename, 'r') # Dataset 0 -- header while True: line = f.readline() if line[0] != '#': break npar = 0 if "parameter" in line.lower(): raw = line.strip().split() npar = int(raw[1]) if npar > 0: if model.verbose: print(' Parameters detected. Number of parameters = ', npar) line = f.readline() # Dataset 2 t = line.strip().split() nevtop = int(t[0]) ipakcb = 0 try: if int(t[1]) != 0: model.add_pop_key_list(int(t[1])) ipakcb = 53 except: pass # Dataset 3 and 4 - parameters data pak_parms = None if npar > 0: pak_parms = mfparbc.loadarray(f, npar, model.verbose) if nper is None: nrow, ncol, nlay, nper = model.get_nrow_ncol_nlay_nper() # Read data for every stress period surf = {} evtr = {} exdp = {} ievt = {} current_surf = [] current_evtr = [] current_exdp = [] current_ievt = [] for iper in range(nper): line = f.readline() t = line.strip().split() insurf = int(t[0]) inevtr = int(t[1]) inexdp = int(t[2]) if (nevtop == 2): inievt = int(t[3]) if insurf >= 0: if model.verbose: print( ' loading surf stress period {0:3d}...'.format(iper + 1)) t = Util2d.load(f, model, (nrow, ncol), np.float32, 'surf', ext_unit_dict) current_surf = t surf[iper] = current_surf if inevtr >= 0: if npar == 0: if model.verbose: print(' loading evtr stress period {0:3d}...'.format( iper + 1)) t = Util2d.load(f, model, (nrow, ncol), np.float32, 'evtr', ext_unit_dict) else: parm_dict = {} for ipar in range(inevtr): line = f.readline() t = line.strip().split() pname = t[0].lower() try: c = t[1].lower() if c in pak_parms.bc_parms: iname = c else: iname = 'static' except: iname = 'static' parm_dict[pname] = iname t = mfparbc.parameter_bcfill(model, (nrow, ncol), parm_dict, pak_parms) current_evtr = t evtr[iper] = current_evtr if inexdp >= 0: if model.verbose: print( ' loading exdp stress period {0:3d}...'.format(iper + 1)) t = Util2d.load(f, model, (nrow, ncol), np.float32, 'exdp', ext_unit_dict) current_exdp = t exdp[iper] = current_exdp if nevtop == 2: if inievt >= 0: if model.verbose: print(' loading ievt stress period {0:3d}...'.format( iper + 1)) t = Util2d.load(f, model, (nrow, ncol), np.int32, 'ievt', ext_unit_dict) current_ievt = t ievt[iper] = current_ievt # create evt object args = {} if ievt: args["ievt"] = ievt if nevtop: args["nevtop"] = nevtop if evtr: args["evtr"] = evtr if surf: args["surf"] = surf if exdp: args["exdp"] = exdp args["ipakcb"] = ipakcb evt = ModflowEvt(model, **args) # return evt object return evt
def load(f, model, nper=None, ext_unit_dict=None): """ Load an existing package. Parameters ---------- f : filename or file handle File to load. model : model object The model object (of type :class:`flopy.modflow.mf.Modflow`) to which this package will be added. nper : int The number of stress periods. If nper is None, then nper will be obtained from the model object. (default is None). ext_unit_dict : dictionary, optional If the arrays in the file are specified using EXTERNAL, or older style array control records, then `f` should be a file handle. In this case ext_unit_dict is required, which can be constructed using the function :class:`flopy.utils.mfreadnam.parsenamefile`. Returns ------- rch : ModflowRch object ModflowRch object. Examples -------- >>> import flopy >>> m = flopy.modflow.Modflow() >>> rch = flopy.modflow.ModflowRch.load('test.rch', m) """ if model.verbose: sys.stdout.write('loading rch package file...\n') if not hasattr(f, 'read'): filename = f f = open(filename, 'r') # dataset 0 -- header while True: line = f.readline() if line[0] != '#': break npar = 0 if "parameter" in line.lower(): raw = line.strip().split() npar = np.int(raw[1]) if npar > 0: if model.verbose: print(' Parameters detected. Number of parameters = ', npar) line = f.readline() # dataset 2 t = line.strip().split() nrchop = int(t[0]) ipakcb = 0 try: if int(t[1]) != 0: model.add_pop_key_list(int(t[1])) ipakcb = 53 except: pass # dataset 3 and 4 - parameters data pak_parms = None if npar > 0: pak_parms = mfparbc.loadarray(f, npar, model.verbose) if nper is None: nrow, ncol, nlay, nper = model.get_nrow_ncol_nlay_nper() # read data for every stress period rech = {} irch = None if nrchop == 2: irch = {} current_rech = [] current_irch = [] for iper in range(nper): line = f.readline() t = line.strip().split() inrech = int(t[0]) if nrchop == 2: inirch = int(t[1]) if inrech >= 0: if npar == 0: if model.verbose: print(' loading rech stress period {0:3d}...'.format(iper + 1)) t = Util2d.load(f, model, (nrow, ncol), np.float32, 'rech', ext_unit_dict) else: parm_dict = {} for ipar in range(inrech): line = f.readline() t = line.strip().split() pname = t[0].lower() try: c = t[1].lower() instance_dict = pak_parms.bc_parms[pname][1] if c in instance_dict: iname = c else: iname = 'static' except: iname = 'static' parm_dict[pname] = iname t = mfparbc.parameter_bcfill(model, (nrow, ncol), parm_dict, pak_parms) current_rech = t rech[iper] = current_rech if nrchop == 2: if inirch >= 0: if model.verbose: print(' loading irch stress period {0:3d}...'.format( iper + 1)) t = Util2d.load(f, model, (nrow, ncol), np.int, 'irch', ext_unit_dict) current_irch = t irch[iper] = current_irch rch = ModflowRch(model, nrchop=nrchop, ipakcb=ipakcb, rech=rech, irch=irch) return rch
def load(f, model, nper=None, ext_unit_dict=None): """ Load an existing package. Parameters ---------- f : filename or file handle File to load. model : model object The model object (of type :class:`flopy.modflow.mf.Modflow`) to which this package will be added. nper : int The number of stress periods. If nper is None, then nper will be obtained from the model object. (default is None). ext_unit_dict : dictionary, optional If the arrays in the file are specified using EXTERNAL, or older style array control records, then `f` should be a file handle. In this case ext_unit_dict is required, which can be constructed using the function :class:`flopy.utils.mfreadnam.parsenamefile`. Returns ------- rch : ModflowRch object ModflowRch object. Examples -------- >>> import flopy >>> m = flopy.modflow.Modflow() >>> rch = flopy.modflow.ModflowRch.load('test.rch', m) """ if model.verbose: sys.stdout.write('loading rch package file...\n') if type(f) is not file: filename = f f = open(filename, 'r') #dataset 0 -- header while True: line = f.readline() if line[0] != '#': break npar = 0 if "parameter" in line.lower(): raw = line.strip().split() npar = np.int(raw[1]) if npar > 0: if model.verbose: print ' Parameters detected. Number of parameters = ', npar line = f.readline() #dataset 2 t = line.strip().split() nrchop = int(t[0]) ipakcb = 0 try: if int(t[1]) != 0: model.add_pop_key_list(int(t[1])) ipakcb = 53 except: pass #--dataset 3 and 4 - parameters data pak_parms = None if npar > 0: pak_parms = mfparbc.loadarray(f, npar, model.verbose) if nper is None: nrow, ncol, nlay, nper = model.get_nrow_ncol_nlay_nper() #read data for every stress period rech = {} irch = None if nrchop == 2: irch = {} current_rech = [] current_irch = [] for iper in xrange(nper): line = f.readline() t = line.strip().split() inrech = int(t[0]) if nrchop == 2: inirch = int(t[1]) if inrech >= 0: if npar == 0: if model.verbose: print \ ' loading rech stress period {0:3d}...'.format(iper+1) t = util_2d.load(f, model, (nrow, ncol), np.float32, 'rech', ext_unit_dict) else: parm_dict = {} for ipar in xrange(inrech): line = f.readline() t = line.strip().split() pname = t[0].lower() try: c = t[1].lower() instance_dict = pak_parms.bc_parms[pname][1] if c in instance_dict: iname = c else: iname = 'static' except: iname = 'static' parm_dict[pname] = iname t = mfparbc.parameter_bcfill(model, (nrow, ncol), parm_dict, pak_parms) current_rech = t rech[iper] = current_rech if nrchop == 2: if inirch >= 0: if model.verbose: print ' loading irch stress period {0:3d}...'.format( iper+1) t = util_2d.load(f, model, (nrow,ncol), np.int, 'irch', ext_unit_dict) current_irch = t irch[iper] = current_irch rch = ModflowRch(model, nrchop=nrchop, ipakcb=ipakcb, rech=rech, irch=irch) return rch