from GlobalParams import * from Constants import * from Utils import * import sys from datetime import datetime, timedelta import netCDF4 class Params(object): RUNPATH=None KEYWORDFILE=None ROMSINFILE=None FELT_CLMFILE=None KEYWORDLIST=None XCPU=None YCPU=None TSTEPS=None NRREC=None def __init__(self,app,xcpu,ycpu,start_date,end_date,nrrec=-1,cicecpu=0,restart=False): #def __init__(self,app,xcpu,ycpu,start_date,end_date,nrrec=7,cicecpu=0,restart=True): #self.KEYWORDFILE=GlobalParams.COMMONORIGPATH+"/roms_keyword.in_roms-trunk" self.XCPU=xcpu self.YCPU=ycpu self.CICECPU=cicecpu self.FCLEN=(end_date-start_date).total_seconds() self.NRREC=nrrec self.TIMEREF=datetime(1970,01,01,00) self.RESTART=restart self.APP=app # RDM # RDM NOTE: "app" is different than the cppdef application name. The cppdef # application name needs to be "weddkyst" for complile options. # Here, "app" refers to the directory name that defines the model setup. # I've changed the directory paths to use "app" rather then manually writing in dir name ######################################################################## ######################################################################## if app=='wk_strelwindtideslim_uplim': ######################################################################## ######################################################################## self.KEYWORDFILE=GlobalParams.METROMSDIR+"/apps/"+self.APP+"/origfiles/roms_keyword.in_roms-trunk_"+self.APP #RDM self.RUNPATH=GlobalParams.RUNDIR+"/"+self.APP+"/TCL400Brios20" #RDM self.INPUTPATH=GlobalParams.INPUTDIR self.ROMSINFILE=self.RUNPATH+"/"+self.APP+"_TCL400Brios20.in" #RDM: Check self.TIMEREF=-1#datetime(1992,01,01,00) self.DELTAT=120 self.RATIO=20 #RDM #print self.INPUTPATH #self.XCPU=8 #RDM #self.YCPU=8 #RDM if restart == True: self.ROMSRESTART=self.RUNPATH+"/ocean_rst.nc" #thinf: turn off CICE restart f = open(self.CICERUNDIR+'/restart/ice.restart_file', 'r') #cice_restartfile = f.readline().strip() #cice_rst_time = netCDF4.Dataset(cice_restartfile).istep1 #cicerst_truefalse = ".true." #cice_runtype = "'continue'" else: # Tore's periodic domain test, interpolated from Kaitlin's snapshot #self.ROMSRESTART="/global/work/thinf/weddkyst_data/input/29yr_avg/wk_alpha02_highres_smth_29yr_avg_ini_15.nc" #self.ROMSRESTART="/global/work/thinf/weddkyst_data/input/monthly/wk_alpha06d_mask_Eastfix_highres_smth_monthly_avg_KNsassi_clm.nc" self.ROMSRESTART="/global/work/thinf/weddkyst_data/input/monthly/TCL400restart.nc" ######################################################################## # List of keywords: ######################################################################## self.KEYWORDLIST=[ ['APPTITLE',"ROMS 3.6 Weddkyst, CATS2008 k1o1m2s2, 29-yr avg input files, seasonal SSS from MIcom, SST, boundary and climatology"], ['MYAPPCPPNAME',"WEDDKYST"], ['VARFILE',GlobalParams.COMMONPATH+"/include/varinfo.dat"],# GlobalParams.RUNDIR+self.APP+"/roms_src/ROMS/External/varinfo.dat"], # ['XPOINTS',"998"], # RDM: I may have these swapped ['YPOINTS',"798"], ['NLEVELS',"31"], ['GRDTHETAS',"7.0d0"], ['GRDTHETAB',"2.0d0"], ['GRDTCLINE',"250.0d0"], ['_TNU2_',"100.0d0 100.0d0"], ['_TNU4_',"1.0d+7 1.0d+7"], ['_VISC2_',"600.0d0"], ['_VISC4_',"1.0d+7"], ['XCPU',str(self.XCPU)], ['YCPU',str(self.YCPU)], ['TSTEPS',str(self.FCLEN/self.DELTAT)], ['DELTAT',str(self.DELTAT)], ['RATIO',str(self.RATIO)], # RDM: This was hard-coded as 30. User def now below self.DELTAT ['IRESTART',str(self.NRREC)], ['RSTSTEP',str(360*24*3600/int(self.DELTAT))], ['STASTEP',str(1*3600/int(self.DELTAT))], ['INFOSTEP', str(1*1800/int(self.DELTAT))], ['HISSTEPP', str(30*24*3600/int(self.DELTAT))], ['DEFHISSTEP',str(360*24*3600/int(self.DELTAT))], #if 0; all output in one his-file ['AVGSTEPP',str(30*24*3600/int(self.DELTAT))], ['STARTAVG',"1"], ['DEFAVGSTEP',str(360*24*3600/int(self.DELTAT))], #if 0; all output in one avg-file ['STARTTIME',str(0)],#str((start_date-self.TIMEREF).total_seconds()/86400)], ['TIDEREF',str(0)],#str((start_date-self.TIMEREF).total_seconds()/86400)], ['TIMEREF',str(-1)],#self.TIMEREF.strftime("%Y%m%d.00")], ['V_TRANS',"2"], ['V_STRETCH',"2"], ['_TNUDG_',"5.0d0 5.0d0"], ['_SSNUDG_',"5.0d0 5.0d0"], ['OBCFAKTOR',"3.0"], ['NUDGZONEWIDTH',"10"], # original: ['GRDFILE',GlobalParams.COMMONPATH+"/grid/circ30S_quarterdegree.nc"], # use this one for open/closed boundaries: # ['GRDFILE',"/global/work/thinf/weddkyst_data/grid/wk_alpha02_highres_smth_grd.nc"], # RDM GlobalParams.COMMONPATH set to ~/metroms/apps/common/include # use this one for E/W periodic boundaries: ['GRDFILE',"/global/work/thinf/weddkyst_data/grid/wk_alpha06d_mask_Eastfix_xfo_highres_smth_grd.nc"], # RDM GlobalParams.COMMONPATH set to ~/metroms/apps/common/include ['INIFILE',self.ROMSRESTART], ['CLMFILE',"/global/work/thinf/weddkyst_data/input/monthly/wk_alpha06d_mask_Eastfix_highres_smth_monthly_avg_KNsassi_TCL400_clm.nc"], ['BRYFILE',"/global/work/thinf/weddkyst_data/input/monthly/wk_alpha06d_mask_Eastfix_highres_smth_monthly_avg_KNsassi_TCL400_bry.nc"], ['NUDFILE',"/global/work/thinf/weddkyst_data/input/wk_alpha02_highres_smth_nud.nc"], ['FRCFILES',"/global/work/thinf/weddkyst_data/input/monthly/wk_alpha06d_mask_Eastfix_highres_smth_monthly_avg_MicomS_KcircumT_fixcoast_brios20_frc.nc \ \n /global/work/thinf/weddkyst_data/input/wk_alpha02_highres_smth_tides.nc"], ['RUNDIR',self.RUNPATH], ['_NFFILES_',"2"], ['ROMSINFILE', self.ROMSINFILE ], ['NUMROMSCORES',str(int(self.XCPU)*int(self.YCPU))], ] ######################################################################## ######################################################################## else: print 'Unknown application, will exit now' sys.exit() # def set_run_params(self,xcpu,ycpu,tsteps,irestart): # for keyvalue in self.KEYWORDLIST: # if keyvalue[0]=='TSTEPS': # keyvalue[1]=str(tsteps) # if keyvalue[0]=='IRESTART': # keyvalue[1]=str(irestart) # if keyvalue[0]=='STARTTIME': # keyvalue[1]=read_time_from_nc(INIFILE,irestart) # if keyvalue[0]=='XCPU': # keyvalue[1]=str(xcpu) # if keyvalue[0]=='YCPU': # keyvalue[1]=str(ycpu) def change_run_param(self,keyword,value): for keyvalue in self.KEYWORDLIST: if keyvalue[0]==keyword: keyvalue[1]=str(value)