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)
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()
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