################################################################################## # This config file set up most of the defaults for the cfs_v2 cdas step # and post processing. Authored by Shrinivas Moorthi - June 2010 ################################################################################## set -x RUN_ENVIR=${RUN_ENVIR:-prod} # NET=${NET:-"cfs"} RUN=${RUN:-cdas} CDATE=${CDATE:-20101114} DISK_GLOB=${DISK_GLOB:-/global/save} DISK_CLIM=${DISK_CLIM:-/climate/save} #################################### # Specify Execution Areas #################################### if [[ $RUN_ENVIR = prod ]] ; then HOMEcfs=${HOMEcfs:-/nw$envir} else cfs_dir=${cfs_dir:-misc} HOMEcfs=${HOMEcfs:-$DISK_GLOB/wx23sm/$cfs_dir/cfs_v2} fi cfss=${cfss:-/cfs} # prefix for cfs specific directories cfsp=${cfsp:-cfs_} # prefix for cfs specific directories cfsd=${cfsd:-cfs_cdas_} # prefix for cfs specific directories BASEDIR=${BASEDIR:-$HOMEcfs} PARMcfs=${PARMcfs:-$HOMEcfs/parm} EXECcfs=${EXECcfs:-$HOMEcfs/exec} FIXcfs=${FIXcfs:-$HOMEcfs/fix} USHcfs=${USHcfs:-$HOMEcfs/ush} UTLcfs=${UTLcfs:-$HOMEcfs/util} # HOMEglobal=${HOMEglobal:-/nwprod} EXECglobal=${EXECglobal:-$HOMEglobal/exec} USHglobal=${USHglobal:-$HOMEglobal/ush} FIXglobal=${FIXglobal:-$HOMEglobal/fix} model=${model:-global} FIXGLOBAL=${FIXGLOBAL:-$FIXcfs/${cfsp}fix_am} utilscript=/nwprod/util/ush utilexec=/nwprod/util/exec err_chk=${err_chk:-$utilscript/err_chk.sh} startmsg=${startmsg:-$utilscript/startmsg.sh} ERRSCRIPT=${ERRSCRIPT:-$err_chk} LOGSCRIPT=${LOGSCRIPT:-$startmsg} # # Options for coupled case (godas) #-------------------------- ASYM_GODAS=YES # For asymmetric godas (default is NO} GODAS_WNDO=10 # Data window for asymmetric godas NTHSTACK=4096000000 # stacks for fcst step; default 128000000 idvc_a=${idvc_a:-3} idvc_f=${idvc_f:-3} Apercent=${Apercent:-100} newoz_nrl=${newoz_nrl:-YES} MFCST00GFS=0 fout_a=1 ; # GDAS forecast output frequency (defaults to 3) # Used when gdas_fh is not defined (i.e. no long gdas fcst) fres1=24 ; # Interval for restart write - default=24hr fout1=01 ; # Output frequency default=3hr fzer1=06 ; # Output zeroing interval - default=6hr #fmax1=192 ; # Maximum forecast hour in first segment - default 180hrs #fmax1=48 ; # Maximum forecast hour in first segment - default 180hrs fmax1=09 ; # Maximum forecast hour in first segment - default 180hrs fcyc=24 ; # Surface cycle calling interval # inch_1=168 ; # defaults to 360 ; interval of coupled run km_mom4=40 # Nummber of MOM4 levels ############################################################ # Set relevant parameters for the coupled model forecast # ############################################################ # # AM related parameters # --------------------- FIX_AM=${FIX_AM:-$HOMEcfs/fix/${cfsp}fix_am} CO2DIR=${CO2DIR:-$FIX_AM/fix_co2_proj} PARM_AM=${PARM_AM:-$HOMEcfs/parm/${cfsp}parm_am} JCAP=${JCAP:-574} LEVS=${LEVS:-64} LSOIL=${LSOIL:-4} NGPTC=${NGPTC:-30} if [ $JCAP -eq 574 ] ; then LONB=${LONB:-1760} ; LATB=${LATB:-880} ; DELTIM=${DELTIM:-120} elif [ $JCAP -eq 382 ] ; then LONB=${LONB:-1152} ; LATB=${LATB:-576} ; DELTIM=${DELTIM:-180} elif [ $JCAP -eq 254 ] ; then LONB=${LONB:-768} ; LATB=${LATB:-384} ; DELTIM=${DELTIM:-300} elif [ $JCAP -eq 190 ] ; then LONB=${LONB:-576} ; LATB=${LATB:-288} ; DELTIM=${DELTIM:-360} elif [ $JCAP -eq 170 ] ; then LONB=${LONB:-512} ; LATB=${LATB:-256} ; DELTIM=${DELTIM:-450} elif [ $JCAP -eq 126 ] ; then LONB=${LONB:-384} ; LATB=${LATB:-190} ; DELTIM=${DELTIM:-600} elif [ $JCAP -eq 62 ] ; then LONB=${LONB:-192} ; LATB=${LATB:-94} ; DELTIM=${DELTIM:-900} fi LONR=${LONR:-$LONB} ; LATR=${LATR:-$LATB} LONF=${LONF:-$LONB} ; LATG=${LATG:-$LATB} if [ $LSOIL -eq 2 ] ; then lsm=${lsm:-0} # This will run OSU LSM option fi lsm=${lsm:-1} ;# lsm=1 is for NOAH land model (=0 for OSU model) ntrac=${ntrac:-3} varid=${varid:-21} numcld=${numcld:-1} im=${im:-$LONB} jm=${jm:-$LATB} iop=${iop:-360} jop=${jop:-181} kop=${kop:-47} KTO=${KTO:-16} IGEN=${IGEN:-197} IGEN_OCNP=${IGEN_OCNP:-197} GENPSICHI=${GENPSICHI:-YES} ivssig=${ivssig:-200509} ivssfc=${ivssfc:-200509} IDVC=${IDVC:-3} IDVM=${IDVM:-11} IDSL=${IDSL:-2} IDVT=${IDVT:-21} FHLWR=${FHLWR:-1} FHSWR=${FHSWR:-1} if [ $LEVS -gt 99 ] ; then ivssig=200509 ; fi THERMODYN_ID=${THERMODYN_ID:-1} SFCPRESS_ID=${SFCPRESS_ID:-1} # if [ $IDVC = 1 ] ; then IDVM=1 ; IDSL=1 ; nvcoord=1 SIGLEVEL1=${SIGLEVEL1:-$FIXGLOBAL/global_siglevel.l$LEVS.txt} elif [ $IDVC = 2 ] ; then IDVM=1 ; IDSL=1 ; nvcoord=2 SIGLEVEL2=${SIGLEVEL2:-$FIXGLOBAL/global_hyblev.l$LEVS.txt} elif [ $IDVC = 3 ] ; then ivssig=200509 #Apercent=${Apercent:-050} Apercent=${Apercent:-100} if [ $Apercent -lt 100 ] ; then SIGLEVEL3=${SIGLEVEL3:-$FIXGLOBAL/global_hyblev3.ipa$Apercent.txt} else SIGLEVEL3=${SIGLEVEL3:-$FIXGLOBAL/global_hyblev3.l$LEVS.txt} fi fi # gfsio_in=${gfsio_in:-.false.} gfsio_out=${gfsio_out:-.false.} LANDICE_OPT=${LANDICE_OPT:-2} CLIMO_FIELDS_OPT=${CLIMO_FIELDS_OPT:-2} if [ $lsm -eq 0 ] ; then # all climo/static fields interpolated from input grid CLIMO_FIELDS_OPT=${CLIMO_FIELDS_OPT:-1} else # Interpolate veg type, soil type and slope type from input grid, all others from sfcsub.f CLIMO_FIELDS_OPT=${CLIMO_FIELDS_OPT:-2} fi ccnorm=${ccnorm:-.false.} climate=${climate:-.false.} mfcstcpl=${mfcstcpl:-0} cnvgwd=${cnvgwd:-${CNVGWD:-.false.}} crtrh=${crtrh:-'0.85,0.85,0.85'} ctei_rm=${ctei_rm:-0.5} IAER=${IAER:-${iaer:-101}} # 111--with stratospheric aerosol, tropospheric aerosol LW, troposphere aerosol SW. ialb=${ialb:-${IALB:-0}} # 0: climatology sw albedo based on surface veg types; # 1: MODIS based land surface albedo ICO2=${ICO2:-${ico2:-2}} # 0--fixed CO2 constant; 1--time varying global mean CO2; 2--changing CO2 ictm=${ictm:-${ICTM:-0}} # IEMS=${IEMS:-${iems:-0}} # 0-blackbody ground emission; 1-climatology on one-deg map ISOL=${ISOL:-${isol:-1}} # 0--fixed solar constant; 1--changing solar constant IOVR_LW=${IOVR_LW:-1} # LW cloud overlap : 0 - random, 1 - max/random IOVR_SW=${IOVR_SW:-1} # SW cloud overlap : 0 - random, 1 - max/random ISUBC_LW=${ISUBC_LW:-0} # LW McICA control ISUBC_SW=${ISUBC_SW:-0} # SW McICA control ldiag3d=${ldiag3d:-.false.} lgoc3d=${lgoc3d:-.false.} liope=${liope:-.true.} mom4ice=${mom4ice:-.true.} nsout=${nsout:-0} OUT_VIRTTEMP=${OUT_VIRTTEMP:-.true.} ras=${ras:-.false.} zhao_mic=${zhao_mic:-.true.} ncw=${ncw:-'10,100'} tfiltc=${tfiltc:-0.85} # ##################################################################### # The following are needed to use current GFS as AM ##################################################################### mstrat=${mstrat:-.true.} newsas=${newsas:-.false.} old_monin=${old_monin:-.true.} RUN_ENTHALPY=${RUN_ENTHALPY:-.true.} sashal=${sashal:-.false.} zflxtvd=${zflxtvd:-.true.} flgmin=${flgmin:-'0.220'} ##################################################################### CHGRESVARS="IALB=$ialb,ntrac=3,idvc=$IDVC,idvt=$IDVT,idsl=$IDSL,IDVM=$IDVM,$CHGRESVARS" FCSTVARS=${FCSTVARS:-NULL} if [ $FCSTVARS = NULL ] ; then FCSTVARS="RUN_ENTHALPY=$RUN_ENTHALPY,LDIAG3D=$ldiag3d,ras=$ras,nsout=$nsout,\ lsm=$lsm,tfiltc=$tfiltc,liope=$liope,zhao_mic=$zhao_mic, \ old_monin=$old_monin,ncw=$ncw,crtrh=$crtrh,flgmin=$flgmin, \ IALB=$ialb,ccnorm=$ccnorm,OUT_VIRTTEMP=$OUT_VIRTTEMP, \ IOVR_LW=$IOVR_LW, IOVR_SW=$IOVR_SW,zflxtvd=$zflxtvd, \ ictm=$ictm,NGPTC=$NGPTC,mstrat=$mstrat,ctei_rm=$ctei_rm," fi # iovr_sw=$IOVR_SW,isubc_lw=$ISUBC_LW,isubc_sw=$ISUBC_SW,lsm=$lsm,\ if [ $ldiag3d = .true. ] ; then FCSTVARS="LDIAG3D=$ldiag3d,$FCSTVARS" ; fi if [ $lgoc3d = .true. ] ; then FHGOC3D=${FHGOC3D:-72} FCSTVARS="LGOC3D=$LGOC3D,FHGOC3D=$FHGOC3D,$FCSTVARS" fi if [ $RUN_ENTHALPY = .true. ] ; then RIlist=${RIlist:-" 287.05, 461.50, 173.2247, 0.0"} CPIlist=${CPIlist:-" 1004.6, 1846.0, 820.2391, 0.0"} TRACERVARS="RI=$RIlist,CPI=$CPIlist," # FCSTVARS="RUN_ENTHALPY=$RUN_ENTHALPY,$FCSTVARS" IDVM=${THERMODYN_ID}${SFCPRESS_ID} IDSL=2 ; nvcoord=3 ; LATCH=${LATCH:-8} fi export SIGLEVEL=$(eval echo \${SIGLEVEL$IDVC}) COUP_FCST=${COUP_FCST:-YES} tasks=${tot_fcst_tasks:-256} # OM related parameters # --------------------- if [ $COUP_FCST = YES ] ; then dt_ocean=${dt_ocean:-1800} dt_cpld=${dt_cpld:-$dt_ocean} dt_aocpl=${dt_aocpl:-$dt_ocean} im_mom4=720 jm_mom4=410 jmtp_mom4=50 imos=160 omres=${omres:-05} NPROCS_o=${NPROCS_o:-60} NPROCS_c=1 NPROCS_a=$((tasks-NPROCS_o-NPROCS_c)) # OCN_DT=${OCN_DT:-3600} # CouplingPeriod=${CouplingPeriod:-$OCN_DT} CouplingPeriod=${CouplingPeriod:-$DELTIM} FSICL=${FSICL:-99999} # # Fix files and parm files for OM # ------------------------------- FIX_OM=${FIX_OM:-$BASEDIR/fix/${cfsp}fix_om} FIX_OCN=${FIX_OCN:-$FIX_OM} PARM_OM=${PARM_OM:-$BASEDIR/parm/${cfsp}parm_om} SNOWNC=${SNOWNC:-$FIX_OCN/SNOW.nc} SSTICECLIM=${SSTICECLIM:-$FIX_OCN/sst_ice_clim.nc} # diagtable=${diagtable:-$PARM_OM/diag_table.hrs} # Hourly output diagtable=${diagtable:-$PARM_OM/diag_table.hr_vdif} # Hourly output # diagtable=${diagtable:-$PARM_OM/diag_table.6hr} # Hourly output diagtable_hrs=${diagtable_hrs:-$PARM_OM/diag_table.hrs_vdif} # diagtable_long=${diagtable_long:-$diagtable} # Hourly output diagtable_long=${diagtable_long:-$PARM_OM/diag_table.hrs_vdif} # Hourly output datatable=${datatable:-$PARM_OM/data_override} # data override table fieldtable=${fieldtable:-$PARM_OM/field_table} # field table namelist=${namelist:-$PARM_OM/namelist} # namelist file do_irestart=${do_irestart:-.true.} # For OM to write multiple restarts dt_rstrt=${dt_rstrt:-10800} # To write 3 hourly ocean restarts grid_mom4ice=${grid_mom4ice:-$FIX_OM/grid_spec_$omres.nc.T$JCAP} chl=${chl:-$FIX_OM/chl_$omres.nc} salt_sfc_restore=${salt_sfc_restore:-$FIX_OM/salt_sfc_restore_$omres.nc} SALTSFCRESTORE=$salt_sfc_restore temp_sfc_restore=${temp_sfc_restore:-$FIX_OM/temp_sfc_restore_$omres.nc} runoff=${runoff:-$FIX_OM/runoff_$omres.nc} ohf_sice=${ohf_sice:-$FIX_OM/ohf_sice.nc} GODAS_FREQ=${GODAS_FREQ:-0} else NPROCS_a=$tasks NPROCS_o=0 NPROCS_c=0 fi ENS_NUM=${ENS_NUM:-1} # This is for uncoupled ensemble runs task_mem=$((NPROCS_a/ENS_NUM)) c=1 while [ $c -le $ENS_NUM ] ; do eval PE$c=$task_mem c=$((c+1)) done ####################################################################### IC_FROM_HPSS=${IC_FROM_HPSS:-NO} if [ $IC_FROM_HPSS = YES ] ; then IC_FROM_DISK=NO ; fi IC_FROM_DISK=${IC_FROM_DISK:-YES} INI_DIR=${INI_DIR:-$DISK_GLOB/noscrub/$userid/cfs_ini} # Specify length of forecast - either in hours or days. LENDAY=${LENDAY:-0} # Length of forecast in days LENHR=${LENHR:-9} # Length of forecast in hours ##################################### # specify user and local directories if "dev" queue ##################################### if [ $RUN_ENVIR != prod -a $RUN_ENVIR != devpara ] ; then usergroup=${usergroup:-g01} userid=${userid:-$LOGNAME} userdir=${userdir:-clim_script/cfs_v2} fi if [[ $RUN_ENVIR = prod || $RUN_ENVIR = devpara ]] ; then COMDSK=${COMDSK:-} COMDIR=${COMDIR:-$COMDSK/com/$NET/$envir/} LOGDIR=${COMDIR:-$COMDSK/com/logs/$envir} # DATA=${DATA:-/tmpnwprd/$NET/${job}.${pid}} else COMDSK=${COMDSK:-/ptmp} version=${version:-v2} COMDIR=${COMDIR:-$COMDSK/$userid/$NET/$version} LOGDIR=${COMDIR:-/ptmp/$userid/$NET} # DATA=${DATA:-/ptmp/$userid/$NET/${job}.${pid}} fi # if [[ ! -d $COMDIR ]] ; then mkdir -p $COMDIR mkdir -p $LOGDIR fi if [[ ! -d $DATA ]] ; then mkdir -p $DATA fi #################################### # File To Log Msgs #################################### if [[ $RUN_ENVIR = prod ]] ; then jlogfile=${jlogfile:-$LOGDIR/jlogfile} else jlogfile=${jlogfile:-$LOGDIR/jlogfile} fi ###################################################################### # Determine variable settings before testing and set them accordingly ###################################################################### SENDCOM=${SENDCOM:-YES} SENDSMS=${SENDSMS:-YES} SENDDBN=${SENDDBN:-NO} DOFTP=${DOFTP:-NO} SAVEGES=${SAVEGES:-YES} BATCH_POST=${BATCH_POST:-NO} # ############################################# # SETUP CLIM FCST PROCESSING VARIABLES # ############################################# # # Replacing some initial surface fileds (if SFC0=YES) # SFC0=NO ################################### # Define executive code and places ################################### NDATE=${NDATE:-$utilexec/ndate} NHOUR=${NHOUR:-$utilexec/nhour} wgrib=${wgrib:-$utilexec/wgrib} windex=${windex:-$utilexec/grbindex} POSTGPSH=${POSTGPSH:-$USHcfs/${cfsp}nceppost.sh} POSTGPEXEC=${POSTGPEXEC:-$EXECcfs/${cfsp}ncep_post} sigavg=${sigavg:-$EXECcfs/${cfsp}sigavg} SIGHDR=${SIGHDR:-$EXECcfs/${cfsp}sighdr} SFCHDR=${SFCHDR:-$EXECGLOBAL/global_sfchdr} CTLFILE=${CTLFILE:-$HOMEcfs/parm/${cfsp}parm_am/cfs_cdas_cntrl.parm} mppnccombine=${mppnccombine:-$EXECcfs/${cfsp}mppnccombine} export hpsstar=${hpsstat:-$utilscript/hpsstar} # AM_EXEC=${AM_EXEC:-${EXEC_AMD:-$EXECcfs}/${cfsd}atmos_fcst} OM_EXEC=${OM_EXEC:-${EXEOMD:-$EXECcfs}/${cfsp}ocean_mom4ice} C_EXEC=${C_EXEC:-${EXEC_CD:-$EXECcfs}/${cfsp}mlc_coupler} # FCSTSHDIR=${FCSTSHDIR:-$HOMEcfs/scripts} FORECASTSH=${FORECASTSH:-$FCSTSHDIR/excfs_cdas_fcst.sh.sms} # The following is needed if we want to use the current operational GFS for AM #FORECASTSH=${FORECASTSH:-$FCSTSHDIR/excfs_cdas_fcst.sh.sms} # CHGRESTHREAD=${CHGRESTHREAD:-32} CHGRESSH=${CHGRESSH:-$USHGLOBAL/global_chgres.sh} CHGRESEXEC=${CHGRESEXEC:-$EXECGLOBAL/global_chgres} LONSPERLAT=${LONSPERLAT:-$FIXcfs/fix/${cfsp}fix_am/global_lonsperlat.t$JCAP.txt} # # These are for the new GFS FIXGLOBAL=${FIXGLOBAL:-$FIXcfs/${cfsp}fix_am} FIXDIR=${FIXDIR:-$FIXcfs/${cfsp}fix_am} FIXDIR2=${FIXDIR2:-$FIXcfs/${cfsp}fix_am} OROGRAPHY=${OROGRAPHY:-$FIXDIR2/global_orography.t$JCAP.grb} SLMASK=${SLMASK:-$FIXDIR2/global_slmask.t$JCAP.grb} MTNVAR=${MTNVAR:-$FIXDIR2/global_mtnvar.t$JCAP.f77} FNOROG=${FNOROG:-$FIXDIR2/global_orography.t$JCAP.grb} FNMASK=${FNMASK:-$FIXDIR2/global_slmask.t$JCAP.grb} FNMSKH=${FNMSKH:-$FIXDIR2/seaice_newland.grb} FNTG3C=${FNTG3C:-$FIXDIR2/global_tg3clim.2.6x1.5.grb} O3FORC=${O3FORC:-$FIXDIR2/global_o3prdlos.f77} O3CLIM=${O3CLIM:-$FIXDIR2/global_o3clim.txt} # ################################### # Define forecast output variables ################################### # FHROT=${FHROT:-0} # Forecast hour to Read One Time level FHOUT=${FHOUT:-1} # Forecast Hour Output Frequency FHRES=${FHRES:-24} # Forecast Hour Restart Frequency FHZER=${FHZER:-6} # Interval to Zero the bucket - must be >= FHOUT FHCYC=${FHCYC:-24} # Surface boundary condition update interval in hours FHDFI=${FHDFI:-3} # Half of the digital filter initialization hours FHDFI_INIT=${FHDFI_INIT:-3} # Same but for cold start FHMAX=${FHMAX:-${LENHR:-9}} ########################################################################### # These are needed only if the current GFS AM is used FHOUT_HF=1 # High Frequency Forecast Output Interval FHMAX_HF=12 # High Frequency Forecast Length (Hours) FHGOC3D=0 # Forecast Output Length for G3D files for GOCART LGOC3D=.false. # Control Variable to output the G3D files for GOCART ########################################################################### RUN_NAME=${RUN_NAME:-cdas_fcst} RECOVERY=${RECOVERY:-$COMDIR/RESTART} RESTART_CONTROL_FILE=${RESTART_CONTROL_FILE:-$RECOVERY/$RUN_NAME.2restart} # ########################################### # Define integration parameter and hours # ########################################### FCST_RESTART=YES RESTART_SUBMIT=YES FH_CYCL=${FH_CYCL:-24} INCHOUR=${INCHOUR:-09} if [ $RUN_ENVIR = prod ] ; then SUBSH="" else SUBSH=${SUBSH:-$HOMEcfs/jobs/submit_cdas.sh} fi #