Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
 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__()
Exemplo n.º 5
0
 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__()
Exemplo n.º 6
0
    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)
Exemplo n.º 7
0
    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)
Exemplo n.º 8
0
    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
Exemplo n.º 9
0
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)
Exemplo n.º 10
0
# 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)