print " \n" + "==> " + " RUNNING FORCING CODE FROM *> RomsFields class <* ...\n" + " " fields = RomsFields(args.imp) sustr, svstr = eval("fields.%s()" % roms.smflux) sms_time = fields.smstime print len(sms_time) ################################################################################ ## WRITING NETCDF GRID FILE ## Based on "sms_uvstress.cdl" NETCDF sample structure ################################################################################ print " \n" + "==> " + " WRITING NETCDF Frc FILE ...\n" + " " filetypestr = "ROMS Forcing file - %s" % args.imp ncfile = netCDF4.Dataset(roms.fnames_dict()["frc"], mode="w", clobber="true", format="NETCDF3_CLASSIC") # creating GLOBAL ATTRIBUTES setattr(ncfile, "title", roms.name) setattr(ncfile, "date", str(dt.datetime.now())) setattr(ncfile, "type", filetypestr) setattr(ncfile, "grdfile", args.imp + "_grd.nc") # creating DIMENSIONS ncfile.createDimension("xi_u", size=sustr.shape[2]) ncfile.createDimension("eta_u", size=sustr.shape[1]) ncfile.createDimension("xi_v", size=svstr.shape[2]) ncfile.createDimension("eta_v", size=svstr.shape[1]) ncfile.createDimension("sms_time", size=len(sms_time)) ncfile.createDimension("time", size=1)
nud3d = nud2d.reshape(1, nud2d.shape[0], nud2d.shape[1]).repeat(roms.N, axis=0) #################################################################### ## WRITING NETCDF GRID FILE #################################################################### print ' \n' + '==> ' + ' WRITING NETCDF GRID FILE ...\n' + ' ' filetypestr = 'ROMS Grid file - %s [%s]' %(args.imp, roms.grid) today = dt.date.today() Lp = L + 1 Mp = M + 1 spherical = 'T' ncfile = nc.Dataset( roms.fnames_dict()['grd'], mode='w', clobber='true', format='NETCDF3_CLASSIC') # creating GLOBAL ATTRIBUTES setattr(ncfile, 'title', roms.name) setattr(ncfile, 'date', str(today)) setattr(ncfile, 'type', filetypestr) # creating DIMENSIONS ncfile.createDimension('xi_u', size=L) ncfile.createDimension('eta_u', size=Mp) ncfile.createDimension('xi_v', size=Lp) ncfile.createDimension('eta_v', size=M) ncfile.createDimension('xi_rho', size=Lp) ncfile.createDimension('eta_rho', size=Mp) ncfile.createDimension('xi_psi', size=L)
lev = np.arange(1, lN+1, 1) sc = -1 + (lev-0.5)*ds Ptheta = np.sinh(theta_s*sc) / np.sinh(theta_s) Rtheta = np.tanh( theta_s*(sc+0.5) ) / ( 2* np.tanh(0.5*theta_s) ) - 0.5 Cs = (1-theta_b)*Ptheta + theta_b * Rtheta scw = np.arange(-1, 0+ds, ds) Pthetaw = np.sinh( theta_s*scw ) / np.sinh(theta_s) Rthetaw = np.tanh( theta_s*(scw+0.5) ) / (2*np.tanh(0.5*theta_s)) - 0.5 Csw = (1-theta_b)*Pthetaw + theta_b*Rthetaw print ' \n' + '==> ' + ' WRITING NETCDF INITIAL CONDITIONS FILE ...\n' + ' ' filetypestr = 'ROMS Initial Conditions file - %s [%s]' %(args.imp, roms.ts_field) ncfile = netCDF4.Dataset(roms.fnames_dict()['ini'], mode='w', clobber='true', format='NETCDF3_CLASSIC') # creating DIMENSIONS ncfile.createDimension('xi_rho', size=Lp) ncfile.createDimension('xi_u', size=L) ncfile.createDimension('xi_v', size=Lp) ncfile.createDimension('eta_rho', size=Mp) ncfile.createDimension('eta_u', size=Mp) ncfile.createDimension('eta_v', size=M) ncfile.createDimension('s_rho', size=roms.N) ncfile.createDimension('s_w', size=Np) ncfile.createDimension('tracer', size=2) ncfile.createDimension('time', size=1) ncfile.createDimension('one', size=1)