def setup_landuse_folder(self, class_num, manningsn_value=1, folder_name=None): """ Set up a single landuse with name landuse_class_num :param int class_num: land classification number for this folder :param int manningsn_value: Manning's *n* value for this land classification :param string folder_name: folder name relative to ``self.base_dir`` :rtype: string :returns: file name of bash script for this land class """ if folder_name is None: folder_name = 'landuse_'+'{:=02d}'.format(class_num) print 'Setting up folder -- '+folder_name+'...' # create a folder for this land-use classification fm.mkdir(os.path.join(self.basis_dir, folder_name)) # cp self.file_name folder_name fm.copy(os.path.join(self.basis_dir, self.file_name), os.path.join(self.basis_dir, folder_name)) # create *.in files self.create_griddata_input_files(folder_name) # create *.sh files script_name = self.create_bash_script(folder_name) # create the *.table file needed for grid_all_data self.setup_tables_single_value(class_num, manningsn_value, os.path.join(self.basis_dir, folder_name)) return script_name
def setup_rfdir(self, path, num_procs): """ Creates the directory path and copies required files from ``self.base_dir`` into path:type path: string :param path: folder_name :param num_procs: number of processors per :program:`ADCIRC` run """ mkdir(path) copy(self.save_dir + '/fort.13', path) # crete sybolic links from fort.* files to path inputs1 = glob.glob(self.grid_dir + '/fort.1*') inputs2 = glob.glob(self.grid_dir + '/fort.2*') inputs0 = glob.glob(self.grid_dir + '/fort.01*') inputs = inputs0 + inputs1 + inputs2 if self.grid_dir + '/fort.13' in inputs: inputs.remove(self.grid_dir + '/fort.13') if not self.grid_dir + '/fort.019' in inputs: if self.grid_dir + '/fort.015' in inputs: inputs.remove(self.grid_dir + '/fort.015') for fid in inputs: if os.path.exists(path + '/' + fid.rpartition('/')[-1]): os.remove(path + '/' + fid.rpartition('/')[-1]) os.symlink(fid, path + '/' + fid.rpartition('/')[-1]) #copy(fid, path+'/'+fid.rpartition('/')[-1]) if not os.path.exists(path + '/adcprep'): os.symlink(self.base_dir + '/adcprep', path + '/adcprep') prep.write_1(path, num_procs) prep.write_2(path, num_procs) prep.write_5(path, num_procs)
def setup_rfdir(self, path, num_procs): """ Creates the directory path and copies required files from ``self.base_dir`` into path:type path: string :param path: folder_name :param num_procs: number of processors per :program:`ADCIRC` run """ mkdir(path) copy(self.save_dir+'/fort.13', path) # crete sybolic links from fort.* files to path inputs1 = glob.glob(self.grid_dir+'/fort.1*') inputs2 = glob.glob(self.grid_dir+'/fort.2*') inputs0 = glob.glob(self.grid_dir+'/fort.01*') inputs = inputs0 + inputs1 + inputs2 if self.grid_dir+'/fort.13' in inputs: inputs.remove(self.grid_dir+'/fort.13') if not self.grid_dir+'/fort.019' in inputs: if self.grid_dir+'/fort.015' in inputs: inputs.remove(self.grid_dir+'/fort.015') for fid in inputs: if os.path.exists(path+'/'+fid.rpartition('/')[-1]): os.remove(path+'/'+fid.rpartition('/')[-1]) os.symlink(fid, path+'/'+fid.rpartition('/')[-1]) #copy(fid, path+'/'+fid.rpartition('/')[-1]) if not os.path.exists(path+'/adcprep'): os.symlink(self.base_dir+'/adcprep', path+'/adcprep') prep.write_1(path, num_procs) prep.write_2(path, num_procs) prep.write_5(path, num_procs)
def __init__(self, grid_dir, save_dir, basis_dir, num_of_parallel_runs=10, base_dir=None, script_name=None): """ Initialization """ #: string, directory containing ``fort.14``, ``fort.15``, and # ``fort.22*`` self.grid_dir = grid_dir self.save_dir = save_dir """ string, directory where ``RF_directory_*`` are saved, and where ``fort.13`` is located """ if os.path.exists(save_dir) == False: os.mkdir(save_dir) fort13_file = save_dir.rpartition('/')[0] + '/fort.13' copy(fort13_file, save_dir) #: string, directory where ``landuse_*`` folders are located self.basis_dir = basis_dir if base_dir: self.base_dir = base_dir """ directory that contains ADCIRC executables, and machine specific ``in.prep#`` files """ else: self.base_dir = basis_dir.rpartition('/')[0] self.prep_dir = basis_dir.rpartition('/')[0] #: int, size of batch of jobs to be submitted to queue self.num_of_parallel_runs = num_of_parallel_runs #: dict() of :class:`np.ndarray`, timeseries data self.ts_data = None #: dict() of :class:`np.ndarray`, non-timeseries data self.nts_data = None #: list(), list of ``RF_directory_*/`` names self.rf_dirs = None #: dict() of :class:`np.array`, time in (s) of observations self.time_obs = None if script_name: #: string, name of the batch bash script self.script_name = script_name else: self.script_name = "run_job_batch.sh" super(runSet, self).__init__()
def __init__(self, grid_dir, save_dir, basis_dir, num_of_parallel_runs=10, base_dir=None, script_name=None): """ Initialization """ #: string, directory containing ``fort.14``, ``fort.15``, and # ``fort.22*`` self.grid_dir = grid_dir self.save_dir = save_dir """ string, directory where ``RF_directory_*`` are saved, and where ``fort.13`` is located """ if os.path.exists(save_dir) == False: os.mkdir(save_dir) fort13_file = save_dir.rpartition('/')[0]+'/fort.13' copy(fort13_file, save_dir) #: string, directory where ``landuse_*`` folders are located self.basis_dir = basis_dir if base_dir: self.base_dir = base_dir """ directory that contains ADCIRC executables, and machine specific ``in.prep#`` files """ else: self.base_dir = basis_dir.rpartition('/')[0] self.prep_dir = basis_dir.rpartition('/')[0] #: int, size of batch of jobs to be submitted to queue self.num_of_parallel_runs = num_of_parallel_runs #: dict() of :class:`np.ndarray`, timeseries data self.ts_data = None #: dict() of :class:`np.ndarray`, non-timeseries data self.nts_data = None #: list(), list of ``RF_directory_*/`` names self.rf_dirs = None #: dict() of :class:`np.array`, time in (s) of observations self.time_obs = None if script_name: #: string, name of the batch bash script self.script_name = script_name else: self.script_name = "run_job_batch.sh" super(runSet, self).__init__()
def setup_rfdir(self, path, num_procs): """ Creates the directory path and copies required files from ``self.base_dir`` into :param string path: folder_name :param int num_procs: number of processors per :program:`ADCIRC` run """ mkdir(path) copy(os.path.join(self.save_dir, 'fort.13'), path) # crete sybolic links from fort.* files to path inputs1 = glob.glob(os.path.join(self.grid_dir, 'fort.1*')) inputs2 = glob.glob(os.path.join(self.grid_dir, 'fort.2*')) inputs0 = glob.glob(os.path.join(self.grid_dir, 'fort.01*')) inputs = inputs0 + inputs1 + inputs2 if os.path.join(self.grid_dir, 'fort.13') in inputs: inputs.remove(os.path.join(self.grid_dir, 'fort.13')) if not os.path.join(self.grid_dir, 'fort.019') in inputs: if os.path.join(self.grid_dir, 'fort.015') in inputs: inputs.remove(os.path.join(self.grid_dir, 'fort.015')) else: sub_files = ['bv.nodes', 'py.140', 'py.141'] sub_files = [os.path.join(self.grid_dir, sf) for sf in sub_files] inputs.extend(sub_files) for fid in inputs: rf_fid = os.path.join(path, fid.rpartition('/')[-1]) if os.path.exists(rf_fid): if os.path.islink(rf_fid): os.unlink(rf_fid) else: os.remove(rf_fid) os.symlink(fid, rf_fid) if not os.path.exists(os.path.join(path, 'padcirc')): os.symlink(os.path.join(self.base_dir, 'padcirc'), os.path.join(path, 'padcirc')) if not os.path.exists(os.path.join(path, 'adcprep')): os.symlink(os.path.join(self.base_dir, 'adcprep'), os.path.join(path, 'adcprep')) prep.write_1(path, num_procs) prep.write_2(path, num_procs) prep.write_5(path, num_procs)
def setup_folder(self, folder_name = 'temp'): """ Set up a single folder with name folder_name :param string folder_name: folder name relative to ``self.base_dir`` :rtype: string :returns: file name of bash script for this land class """ print 'Setting up folder -- '+folder_name+'...' # create a folder for this land-use classification fm.mkdir(self.basis_dir+'/'+folder_name) # cp self.file_name folder_name fm.copy(self.basis_dir+'/'+self.file_name, self.basis_dir+'/'+folder_name) # create *.in files self.create_griddata_input_files(folder_name) # create *.sh files script_name = self.create_bash_script(folder_name) # create the *.table file needed for grid_all_data self.setup_tables(self.basis_dir+'/'+folder_name) return script_name
import polyadcirc.pyADCIRC.fort13_management as f13 import glob # Specify run parameter folders adcirc_dir = '/h1/lgraham/workspace' grid_dir = adcirc_dir + '/ADCIRC_landuse/Katrina_small/inputs' save_dir = adcirc_dir + '/ADCIRC_landuse/Katrina_small/runs/output_test' basis_dir = adcirc_dir + '/ADCIRC_landuse/Katrina_small/landuse_basis/gap/shelf_test' # load in the small katrina mesh domain = dom.domain(grid_dir) domain.update() # load in basis vectors for domain bv_dict = tmm.get_basis_vectors(basis_dir) # create the shelf basis vector dictonary shelf_limits = [0, 50] shelf_bv = tmm.create_shelf(domain, shelf_limits, bv_dict) # write this out to an appropriately numbered basis vector mesh in the correct # basis_dir # get list of landuse folder names folders = glob.glob(basis_dir + '/landuse_*') # create new folder folder_name = basis_dir + '/landuse_' + '{:=02d}'.format(len(folders)) fm.mkdir(folder_name) # copy a fort.13 file to that folder fm.copy(save_dir + '/fort.13', folder_name + '/fort.13') f13.update_mann(shelf_bv, folder_name)
# Specify run parameter folders adcirc_dir = '/h1/lgraham/workspace' grid_dir = adcirc_dir + '/ADCIRC_landuse/Katrina_small/inputs' save_dir = adcirc_dir + '/ADCIRC_landuse/Katrina_small/runs/output_test' basis_dir = adcirc_dir +'/ADCIRC_landuse/Katrina_small/landuse_basis/gap/shelf_test' # load in the small katrina mesh domain = dom.domain(grid_dir) domain.update() # load in basis vectors for domain bv_dict = tmm.get_basis_vectors(basis_dir) # create the shelf basis vector dictonary shelf_limits = [0, 50] #[0, 100] [50, 100] shelf_bv = tmm.create_shelf(domain, shelf_limits, bv_dict) # write this out to an appropriately numbered basis vector mesh in the correct # basis_dir # get list of landuse folder names folders = glob.glob(basis_dir+'/landuse_*') # create new folder folder_name = basis_dir+'/landuse_'+'{:=02d}'.format(len(folders)) fm.mkdir(folder_name) # copy a fort.13 file to that folder fm.copy(save_dir+'/fort.13', folder_name+'/fort.13') f13.update_mann(shelf_bv, folder_name)