#!/bin/ksh # ####################################################### # Bias Correct FNMOC Global Ensemble Forecast # ####################################################### ###################################################### # The following two variable could be defined in the # loadleveler submission script (the sms script), if # not they will take the default values which is set # for the NCO running enviroment ####################################################### export RUN_ENVIR=${RUN_ENVIR:-prod} set -xa ################################### # Specify NET and RUN Name and model #################################### export NET=${NET:-gens} export RUN=${RUN:-fens} ##################################################################################### # This block is for Developer's test run: # Run config file to get input parameters # This config file should define the following variables # DATA_IN: Location of working directory, default to /tmpnwprd # SENDECF: If the job is to be running using SMS, default to YES # SENDDBN: Set to NO for developers, default to YES # COM_IN: Directory for input files, default to /com/$NET/${envir} # COM_OUT: Directory for output file, default to /com/$NET/${envir} # gespath: Directory for the guess or restart files, default to /nwges/${envir} ##################################################################################### if [ "$RUN_ENVIR" != prod ] ### For Developers then PARA_CONFIG=${PARA_CONFIG:-/ensemble/save/${LOGNAME}/${direxp}/parm/fnmoc_debias_config} . $PARA_CONFIG fi export PS4='$SECONDS + ' date #################################### # obtain unique process id (pid) and make temp directory #################################### export pid=$$ export DATA_IN=${DATA_IN:-/tmpnwprd2} export DATA=$DATA_IN/${job}.${pid} mkdir -p $DATA cd $DATA #################################### # Determine Job Output Name on System #################################### export outid="LL$job" export jobid="${outid}.o${pid}" export pgmout="OUTPUT.${pid}" export pgmerr=errfile export cycle=t${cyc}z #################################### # File To Log Msgs #################################### if [ "$envir" = 'prod' ] || [ "$envir" = 'para' ] || [ "$envir" = 'test' ] then # NCO if [ $envir = "prod" ] then export jlogfile=/com/logs/jlogfiles/jlogfile.${job}.${pid} else export jlogfile=/com/logs/${envir}/jlogfile #export DBNROOT=/nwprod/spa_util/para_dbn export DBNROOT=/nwprod/spa_util/fakedbn fi else # DEV export jlogfile=/dev/null fi ################################################################ # SENDCOM=YES--Copy output file to /com # SENDECF=YES--Allow to talk back to SMS # SENDDBN=YES--Alert output file to TOC, set to NO for testing ################################################################ export SENDCOM=${SENDCOM:-YES} export SENDDBN=${SENDDBN:-YES} # need to set to NO for testing export SENDECF=${SENDECF:-YES} #################################### # Specify Execution Areas #################################### export HOMEfnmoc=${HOMEfnmoc:-/nw${envir}/naefs.${model_ver}} export EXECfnmoc=${EXECfnmoc:-$HOMEfnmoc/exec} export FIXfnmoc=${FIXfnmoc:-$HOMEfnmoc/fix} export USHfnmoc=${USHfnmoc:-$HOMEfnmoc/ush} export ERRSCRIPT=err_chk export LOGSCRIPT=startmsg export REDOUT='1>>' export REDERR='2>' ############################## # Set up the UTILITIES ############################## export HOMEUTIL=/nwprod/util export utilscript=$HOMEUTIL/ush export EXECUTIL=$HOMEUTIL/exec ############################## # Run setup to initialize working directory and utility scripts ############################## sh $utilscript/setup.sh ############################## # Run setpdy and initialize PDY variables ############################## sh $utilscript/setpdy.sh . PDY ############################################## # Define COM directories ############################################## export DCOM=${DCOM:-/dcom/us007003} export COMIN=${COMIN:-$DCOM/$PDY/wgrbbul/fnmocens_gb2} export COM_BIAS=${COM_BIAS:-/com/${NET}/${envir}} export COM_OUT=${COM_OUT:-/com/${NET}/${envir}} export COMOUT=$COM_OUT/${RUN}.${PDY}/${cyc}/pgrb2a export COMOUTBC=$COM_OUT/${RUN}.${PDY}/${cyc}/pgrb2a_bc export COMOUTAN=$COM_OUT/${RUN}.${PDY}/${cyc}/pgrb2a_an export COMOUTWT=$COM_OUT/${RUN}.${PDY}/${cyc}/pgrb2a_wt export COMOUT_GB1=$COM_OUT/${RUN}.${PDY}/${cyc}/pgrba export COMOUTBC_GB1=$COM_OUT/${RUN}.${PDY}/${cyc}/pgrba_bc export COMOUTAN_GB1=$COM_OUT/${RUN}.${PDY}/${cyc}/pgrba_an export COMOUTWT_GB1=$COM_OUT/${RUN}.${PDY}/${cyc}/pgrba_wt mkdir -m 775 -p ${COMOUT} mkdir -m 775 -p ${COMOUTBC} mkdir -m 775 -p ${COMOUTAN} mkdir -m 775 -p ${COMOUTWT} mkdir -m 775 -p ${COMOUT_GB1} mkdir -m 775 -p ${COMOUTBC_GB1} mkdir -m 775 -p ${COMOUTAN_GB1} mkdir -m 775 -p ${COMOUTWT_GB1} msg="HAS BEGUN on `hostname`" postmsg "$jlogfile" "$msg" env ##################### # Execute the scripts ##################### export memberlist1="p01 p20" export memberlist2="p02 p19" export memberlist3="p03 p18" export memberlist4="p04 p17" export memberlist5="p05 p16" export memberlist6="p06 p15" export memberlist7="p07 p14" export memberlist8="p08 p13" export memberlist9="p09 p12" export memberlist10="p10 p11" rm -f $DATA/poescript for num in 1 2 3 4 5 6 7 8 9 10 do mkdir -p $DATA/group$num done echo "$HOMEfnmoc/scripts/exfnmoc_ens_debias.sh.ecf \"$memberlist1\" $DATA/group1" >>$DATA/poescript echo "$HOMEfnmoc/scripts/exfnmoc_ens_debias.sh.ecf \"$memberlist2\" $DATA/group2" >>$DATA/poescript echo "$HOMEfnmoc/scripts/exfnmoc_ens_debias.sh.ecf \"$memberlist3\" $DATA/group3" >>$DATA/poescript echo "$HOMEfnmoc/scripts/exfnmoc_ens_debias.sh.ecf \"$memberlist4\" $DATA/group4" >>$DATA/poescript echo "$HOMEfnmoc/scripts/exfnmoc_ens_debias.sh.ecf \"$memberlist5\" $DATA/group5" >>$DATA/poescript echo "$HOMEfnmoc/scripts/exfnmoc_ens_debias.sh.ecf \"$memberlist6\" $DATA/group6" >>$DATA/poescript echo "$HOMEfnmoc/scripts/exfnmoc_ens_debias.sh.ecf \"$memberlist7\" $DATA/group7" >>$DATA/poescript echo "$HOMEfnmoc/scripts/exfnmoc_ens_debias.sh.ecf \"$memberlist8\" $DATA/group8" >>$DATA/poescript echo "$HOMEfnmoc/scripts/exfnmoc_ens_debias.sh.ecf \"$memberlist9\" $DATA/group9" >>$DATA/poescript echo "$HOMEfnmoc/scripts/exfnmoc_ens_debias.sh.ecf \"$memberlist10\" $DATA/group10" >>$DATA/poescript chmod 775 $DATA/poescript export MP_CMDFILE=$DATA/poescript export MP_EUIDEVICE=sn_all export MP_EUILIB=us export MP_PGMMODEL=mpmd export MP_TASK_AFFINITY=cpu ##################### # Execute the script ##################### mpirun.lsf -cmdfile $DATA/poescript -pgmmodel mpmd -ilevel 3 -labelio yes -stdoutmode ordered export err=$?; err_chk #--------------------------------------- # calculate ensemble mean and spread #--------------------------------------- export DATAHOLD=$DATA export DATA=$DATAHOLD/dir_avgspr_bc mkdir -p $DATA cd $DATA sh $utilscript/setup.sh $USHfnmoc/fnmocens_bc_avgspr.sh export DATA=$DATAHOLD/dir_avgspr mkdir -p $DATA cd $DATA sh $utilscript/setup.sh $USHfnmoc/fnmocens_avgspr.sh cat $DATAHOLD/group2/$pgmout.06.p02 cat $DATAHOLD/group2/$pgmout.06.p02_an cat $DATAHOLD/group2/$pgmout.06.p02_wt cat $DATAHOLD/group2/$pgmout.360.p02 cat $DATAHOLD/group2/$pgmout.360.p02_an cat $DATAHOLD/dir_avgspr_bc/$pgmout.12_avgspr cat $DATAHOLD/dir_avgspr/$pgmout.12_avgspr cat $DATAHOLD/dir_avgspr_bc/$pgmout.360_avgspr cat $DATAHOLD/dir_avgspr/$pgmout.360_avgspr msg="JOB COMPLETED NORMALLY" postmsg "$jlogfile" "$msg" ############################## # Remove the Temporary working directory ############################## cd $DATA_IN rm -rf $DATA date