예제 #1
0
def loadmat(save_file, base_dir, grid_dir, save_dir, basis_dir):
    """
    Loads data from ``save_file`` into a
    :class:`~polyadcirc.run_framwork.random_manningsn.runSet` object.
    Reconstructs :class:`~polyadcirc.run_framwork.random_manningsn.subdomain`. 

    :param string save_file: local file name
    :param string grid_dir: directory containing ``fort.14``, ``fort.15``, and
        ``fort.22`` 
    :param string save_dir: directory where ``RF_directory_*`` are
        saved, and where fort.13 is located 
    :param string basis_dir: directory where ``landuse_*`` folders are located
    :param string base_dir: directory that contains ADCIRC executables, and
        machine specific ``in.prep#`` files 
    :rtype: tuple of :class:`~polyadcirc.run_framwork.random_manningsn.runSet`
        and :class:`~polyadcirc.run_framwork.random_manningsn.domain` objects
    :returns: (main_run, domain)

    """

    # the lines below are only necessary if you need to update what the
    # directories are when swithcing from euclid to your desktop/laptop
    # assumes that the landuse directory and ADCIRC_landuse directory are in
    # the same directory
    domain = subdomain(grid_dir)
    domain.update()
    domain.get_Triangulation()
    #domain.set_station_bathymetry()

    main_run = rmn.runSet(grid_dir, save_dir, basis_dir, base_dir=base_dir)
    main_run.ts_error = {}
    main_run.nts_error = {}
    main_run.time_obs = {}

    # load the data from at *.mat file
    mdat = sio.loadmat(os.path.join(save_dir, save_file))

    for k, v in mdat.iteritems():
        skey = k.split('_')
        if skey[-1] == 'time':
            # check to see if the key is "*_time"
            main_run.time_obs[skey[0]] = v
        elif f15.filetype.has_key(skey[0]):
            if not re.match('fort', skey[0]):
                # check to see if key is nts_data
                main_run.nts_error[skey[0]] = v
            else:
                # check to see if key is ts_data
                main_run.ts_error[skey[0]] = v
        #print k, v

    return (main_run, domain)
예제 #2
0
def loadmat(save_file, base_dir, grid_dir, save_dir, basis_dir):
    """
    Loads data from ``save_file`` into a
    :class:`~polyadcirc.run_framwork.random_manningsn.runSet` object.
    Reconstructs :class:`~polyadcirc.run_framwork.random_manningsn.subdomain`. 

    :param string save_file: local file name
    :param string grid_dir: directory containing ``fort.14``, ``fort.15``, and
        ``fort.22`` 
    :param string save_dir: directory where ``RF_directory_*`` are
        saved, and where fort.13 is located 
    :param string basis_dir: directory where ``landuse_*`` folders are located
    :param string base_dir: directory that contains ADCIRC executables, and
        machine specific ``in.prep#`` files 
    :rtype: tuple of :class:`~polyadcirc.run_framwork.random_manningsn.runSet`
        and :class:`~polyadcirc.run_framwork.random_manningsn.domain` objects
    :returns: (main_run, domain)

    """
    
    # the lines below are only necessary if you need to update what the
    # directories are when swithcing from euclid to your desktop/laptop
    # assumes that the landuse directory and ADCIRC_landuse directory are in
    # the same directory
    domain = subdomain(grid_dir)
    domain.update()
    domain.get_Triangulation()
    #domain.set_station_bathymetry()

    main_run = rmn.runSet(grid_dir, save_dir, basis_dir, base_dir=base_dir)
    main_run.ts_error = {}
    main_run.nts_error = {}
    main_run.time_obs = {}

    # load the data from at *.mat file
    mdat = sio.loadmat(os.path.join(save_dir, save_file))

    for k, v in mdat.iteritems():
        skey = k.split('_')
        if skey[-1] == 'time':
            # check to see if the key is "*_time"
            main_run.time_obs[skey[0]] = v
        elif f15.filetype.has_key(skey[0]):
            if not re.match('fort', skey[0]):
                # check to see if key is nts_data
                main_run.nts_error[skey[0]] = v
            else:
                # check to see if key is ts_data
                main_run.ts_error[skey[0]] = v
        #print k, v
    
    return (main_run, domain)
예제 #3
0
nontimeseries_files = ["tinun.63", "maxvel.63"]

# NoNx12/TpN where NoN is number of nodes and TpN is tasks per node, 12 is the
# number of cores per node See -pe line in submission_script <TpN>way<NoN x
# 12>
nprocs = 2  # number of processors per PADCIRC run
ppnode = 12
NoN = 2
num_of_parallel_runs = (ppnode * NoN) / nprocs  # procs_pnode * NoN / nproc

domain = dom.domain(grid_dir)
domain.update()

main_run = rmn.runSet(grid_dir,
                      save_dir,
                      basis_dir,
                      num_of_parallel_runs,
                      base_dir=adcirc_dir,
                      script_name=script)
main_run.initialize_random_field_directories(num_procs=nprocs)

# Set samples
lam_domain = np.array([[.02, .2], [.02, .2], [.02, .2]])
lam1 = np.linspace(lam_domain[0, 0], lam_domain[0, 1], 3)
lam2 = np.linspace(lam_domain[1, 0], lam_domain[1, 1], 3)
lam3 = np.linspace(lam_domain[2, 0], lam_domain[2, 1], 3)
lam4 = 0.02
lam1, lam2, lam3, lam4 = np.meshgrid(lam1, lam2, lam3, lam4)
lam_samples = np.column_stack(
    (lam1.ravel(), lam2.ravel(), lam3.ravel(), lam4.ravel()))

mann_pts = lam_samples.transpose()
예제 #4
0
save_file = "py_save_file"
timeseries_files = ["fort.61", "fort.63", "fort.62", "fort.64"]
nontimeseries_files = ["tinun.63", "maxvel.63"]

# NoNx12/TpN where NoN is number of nodes and TpN is tasks per node, 12 is the
# number of cores per node See -pe line in submission_script <TpN>way<NoN x
# 12>
nprocs = 2  # number of processors per PADCIRC run
ppnode = 12
NoN = 2
num_of_parallel_runs = (ppnode * NoN) / nprocs  # procs_pnode * NoN / nproc

domain = dom.domain(grid_dir)
domain.update()

main_run = rmn.runSet(grid_dir, save_dir, basis_dir, num_of_parallel_runs, base_dir=adcirc_dir, script_name=script)
main_run.initialize_random_field_directories(num_procs=nprocs)

# Set samples
lam_domain = np.array([[0.02, 0.2], [0.02, 0.2], [0.02, 0.2]])
lam1 = np.linspace(lam_domain[0, 0], lam_domain[0, 1], 3)
lam2 = np.linspace(lam_domain[1, 0], lam_domain[1, 1], 3)
lam3 = np.linspace(lam_domain[2, 0], lam_domain[2, 1], 3)
lam4 = 0.02
lam1, lam2, lam3, lam4 = np.meshgrid(lam1, lam2, lam3, lam4)
lam_samples = np.column_stack((lam1.ravel(), lam2.ravel(), lam3.ravel(), lam4.ravel()))

mann_pts = lam_samples.transpose()


# Run experiments