#!/bin/ksh ##################################################################### # 9/20/2009, Julia Zhu Scripts are modified to be sharable # between EMC and NCO # Please note that variable "RUN_ENVIR" is set and used # in the development enviroment only. ###################################################################### export RUN_ENVIR=${RUN_ENVIR:-prod} echo `date` $0 `date -u` begin set -xa #################################### # 01/28/2013 New variables added for WCOSS and cross-machine unfication export gefsmachine=${gefsmachine:-dell} export gefsmpexec=${gefsmpexec:-mpirun} ########################################### # Run gefs_config to get input parameters ########################################### if [ "$RUN_ENVIR" = dev ] ### For Developers then # RLW 20141008 modify to obtain and use version for vertical structure . $basesource/nw$envir/*/versions/gefs_legacy.ver . $basesource/nw$envir/gefs_legacy.${gefs_legacy_ver}/parm/gefs_config fi # ################################### # SET SHELL PROCESSING VARIABLES # ################################### export PS4='$SECONDS + ' date #################################### # obtain unique process id (pid) and make temp directory #################################### export pid=$$ if [ "$RUN_ENVIR" = dev ] ### For Developers then export DATA_IN=${DATA_IN:-$basetmp/tmpnwprd1} else ### For Operations export DATA_IN=$DATAROOT fi #export DATA=$DATA_IN/${job}.${pid} export DATA=${DATA:-$DATA_IN/${job}.${pid}} mkdir -p $DATA cd $DATA ############################ # Set up cycle varaible ############################ echo $cyc #DHTEST export cycle=t${cyc}z export cycle_fcst=t${cyc_fcst}z export NTHREADS=$NTHREADS_SIGCHGRS export MP_LABELIO=YES echo $cyc_fcst $cyc #DHTEST if (( cyc == cyc_fcst )); then export cycsuffix=false export fcstlong=true else export fcstlong=false export cycsuffix=true export ENS_SPS=.false. fi #################################### # Specify NET and RUN Name and model #################################### export NET=gens #################################### # File To Log Msgs #################################### if [ "$RUN_ENVIR" = dev ] ### For Developers then export jlogfile=${jlogfile:-$baselog/com/logs/jlogfile} else ### For Operations export jlogfile=${jlogfile:-${DATA}/jlogfile} #if [[ $envir = "prod" ]]; then # export jlogfile=${jlogfile:-/com/logs/jlogfiles/jlogfile.${job}.$$} #else # export jlogfile=/com/logs/${envir}/jlogfile #fi fi #DHOU, Please modify this block #RUN_CONCURRENT=no CHGRES_ALL=yes CHGRES_ALL=no # disabled by RLW 20110704 #if [ "$CHGRES_ALL" != yes ] ; then # RUN=gec00 #fi #################################### # Determine Job Output Name on System #################################### export outid="LL$job" export jobid="${outid}.o${pid}" export pgmout="OUTPUT.${pid}" export pgmerr=errfile if [[ $RUN_CONCURRENT = yes ]]; then export PGMOUT=FCOUT.o$pid export PGMERR= export REDOUT=' | tee -a ' export REDERR=' 2>&1 ' fi #################################### # SENDECF - Flag Events on ECF # SENDCOM - Copy Files From TMPDIR to $COMOUT # SENDDBN - Issue DBNet Client Calls # RERUN - Rerun fcst from beginning (default no) # VERBOSE - Specify Verbose Output in exglobal_fcst.sh.ecf #################################### if [ "$RUN_ENVIR" = dev ] ### For Developers then export SENDCOM=${SENDCOM:-YES} export SENDECF=${SENDECF:-YES} export VERBOSE=${VERBOSE:-NO} export RERUN=${RERUN:-NO} # Specify Execution Areas # export HOMEGLOBAL=${HOMEGLOBAL:-/nw${envir}} export HOMEGLOBAL=${HOMEGLOBAL:-/nwprod} export EXECGLOBAL=${EXECGLOBAL:-$HOMEGLOBAL/exec} export USHGLOBAL=${USHGLOBAL:-$HOMEGLOBAL/ush} export FIXGLOBAL=${FIXGLOBAL:-$HOMEGLOBAL/fix} export PARMGLOBAL=${PARMGLOBAL:-$HOMEGLOBAL/parm} export HOMEglobal=${HOMEglobal:-/nw${envir}} export EXECglobal=${EXECglobal:-$HOMEglobal/exec} export USHglobal=${USHglobal:-$HOMEglobal/ush} export FIXglobal=${FIXglobal:-$HOMEglobal/fix} export PARMglobal=${PARMglobal:-$HOMEglobal/parm} # RLW 20141008 modify to obtain and use version for vertical structure export HOMEgefs=${HOMEgefs_legacy:-/gpfs/dell1/nco/ops/nw${envir}/gefs_legacy.${gefs_legacy_ver}} export EXECgefs=${EXECgefs:-$HOMEgefs/exec} export USHgefs=${USHgefs:-$HOMEgefs/ush} export FIXgefs=${FIXgefs:-$HOMEgefs/fix} export PARMgefs=${PARMgefs:-$HOMEgefs/parm} export FIXGLOBAL=$HOMEgefs/fix else ### For Operations export SENDCOM=YES export SENDECF=YES export VERBOSE=NO export RERUN=NO # Specify Execution Areas export HOMEgefs=${HOMEgefs_legacy:-/gpfs/dell1/nco/ops/nw${envir}/gefs_legacy.${gefs_legacy_ver}} export HOMEGLOBAL=${HOMEGLOBAL:-$HOMEgefs} #export HOMEGLOBAL=/nwprod export EXECGLOBAL=$HOMEGLOBAL/exec export USHGLOBAL=$HOMEGLOBAL/ush export FIXGLOBAL=$HOMEGLOBAL/fix export PARMGLOBAL=$HOMEGLOBAL/parm # RLW 20141008 modify to obtain and use version for vertical structure #export HOMEgefs=${HOMEgefs_legacy:-/gpfs/dell1/nco/ops/nw${envir}/gefs_legacy.${gefs_legacy_ver}} #export HOMEgefs=${HOMEgefs_legacy:-/gpfs/dell1/nco/ops/nw${envir}/gefs_legacy.${gefs_legacy_ver}} export EXECgefs=$HOMEgefs/exec export USHgefs=$HOMEgefs/ush export FIXgefs=$HOMEgefs/fix export PARMgefs=$HOMEgefs/parm fi export ERRSCRIPT=err_chk export LOGSCRIPT=startmsg ############################## # Set up the UTILITIES ############################## #export utilscript=/nwprod/util/ush ############################## # Run setup to initialize working directory and utility scripts ############################## #sh $utilscript/setup.sh ############################## # Run setpdy and initialize PDY variables ############################## #sh $utilscript/setpdy.sh setpdy.sh . PDY ############################################## echo set parameters using gefs.parm ############################################## . $PARMgefs/gefs.parm # hour_lr_ni will be used to define the IC files of the lower resolution part (if not restart) # this variable is used to define the input/output files (( hour_lr_ini = fhmaxh - HOUTSPS )) (( HOUTASPS = hour_lr_ini )) ############################################## # Define COM and GES directories ############################################## if [ "$RUN_ENVIR" = dev ] ### For Developers then export GFS_IN=${GFS_IN:-/com2/gfs/prod/} export COM_OUT=${COM_OUT:-/global/noscrub/$LOGBAME/com/${NET}/${envir}} export gespath=${gespath:-/global/noscrub/$LOGBAME/nwges/${envir}} export COMINgfs=$GFS_IN/gfs.${PDY} export COMOUT=$COM_OUT/gefs_legacy.${PDY} else ### For Operations #export COMINgfs=/com2/gfs/prod/gfs.${PDY} #export COMOUT=/com/${NET}/${envir}/gefs_legacy.${PDY} #export gespath=/nwges/${envir} export COMOUT=$COMROOT/${NET}/${envir}/gefs_legacy.${PDY} export gespath=${gespath:-$GESROOT/${envir}} fi #DHOU these are not needed ??? #mkdir -m 775 -p $COMOUT/$cyc/sfcsig #mkdir -m 775 -p $COMOUT/$cyc/sflux #mkdir -m 775 -p $COMOUT/$cyc/misc export ENS_COM=$COMOUT export GESdir=$gespath/gefs_legacy.${PDY} mkdir -m 775 -p $GESdir ############################################################### # Specify locations of the following scripts and executables ############################################################### export CHGRESTHREAD=$NTHREADS_SIGCHGRS export OVERPARMEXEC=$EXECGLOBAL/overparm_grib # Change Resolution script and executable export chgresush=$USHGLOBAL/global_chgres.sh export CHGRESEXEC=$EXECGLOBAL/global_chgres if [ "$RUN_ENVIR" = dev ] ### For Developers then case $gefsmachine in (ccs) export chgresush=$USHGLOBAL/global_chgres.sh export CHGRESEXEC=$EXECGLOBAL/global_chgres_thread ;; (zeus) export chgresush=$USHglobal/global_chgres.sh export CHGRESEXEC=$EXECglobal/global_chgres ;; (wcoss) export chgresush=$USHGLOBAL/global_chgres.sh export CHGRESEXEC=$EXECGLOBAL/global_chgres ;; esac fi # The VEGTYPE fix file: #export FNVETC=$FIXgefs/global_vegtype.1x1.grb export FNVETC=$FIXGLOBAL/global_vegtype.1x1.grb # For Post Processing #export POSTGPSH=$USHGLOBAL/global_nceppost.sh #export POSTGPSH=$USHglobal/global_nceppost.sh #export POSTGPEXEC=$EXECglobal/exec/ncep_post #export HOMEUTIL=$HOMEUTIL export HOMEUTIL=/nwprod/util export EXECUTIL=$HOMEUTIL/exec export FIXUTIL=$HOMEUTIL/fix #################################### # Create member list #################################### if [[ $CHGRES_ALL = yes ]]; then #Concurrent run, multi member memberlist="" (( imem = 0 )) while (( imem < npair * 2 )) do (( imem = imem + 1 )) if (( imem < 10 )); then imem=0$imem fi memberlist="$memberlist p$imem" done if (( cyc == cyc_fcst )) ; then memberlist="$memberlist c00" (( imem = imem + 1 )) fi (( ENS_NUM = imem )) export ENS_NUM echo ENS_NUM=$ENS_NUM export RUM=ge'${MN}' echo RUM=$RUM else #single member echo RUN=$RUN memberlist=`echo $RUN|cut -c3-5` export ENS_NUM=1 echo ENS_NUM=$ENS_NUM fi memberlist=`echo $memberlist` MEMBER_NAMES=$memberlist # # Forecast Fix Fields # export CLTUNE=$FIXGLOBAL/global_cldtune.f77 export DTBTHE=$FIXGLOBAL/global_tbthe.f77 export O3PROD=$FIXGLOBAL/global_o3prod.f77 export O3LOSS=$FIXGLOBAL/global_o3loss.f77 export O3CLIM=$FIXGLOBAL/global_o3clim.txt # #### DHOU, 09/10/2010 added this block for truncation of forecast files to prepair for lower res. ####################################################### # variables for low-resolution forecast third part # from FH=fhmaxh-fhmax, 6-hourly output ####################################################### # Interpolate restart Files for the third part export JCAP=$JCAPLR export LEVS=$LEVSLR export LONB=$LONBLR export LATB=$LATBLR export NTRAC=$NTRACLR export IDVC=$IDVC export NVCOORD=$IDVC export CHGRESVARS="NTRAC=$NTRACLR,NVCOORD=$NVCOORD" if (( IDVC == 1 )); then export SIGLEVEL=$FIXGLOBAL/global_siglevel.l${LEVS}.txt fi if (( IDVC == 2 )); then export SIGLEVEL=$FIXGLOBAL/global_hyblev.l${LEVS}.txt fi #echo $HOMEGLOBAL $HOMEglobal $HOMEgefs ZEUSTEST-SIGC #echo $FIXGLOBAL $FIXglobal $FIXgefs ZEUSTEST-SIGC #exit # Change resolution of the high-res forecast files # Write the resuled files in $GESdir and make a copy in $DATA if [[ $CHGRES_ALL = YES ]] ; then for MN in $MEMBER_NAMES do # eval export SIGOUT=$DATA/${RUM}.siganl # eval export SFCOUT=$DATA/${RUM}.sfcanl eval export SIGOUT=$GESdir/${RUM}.${cycle}.sig${HOUTASPS}_T$JCAP\L$LEVS eval export SFCOUT=$GESdir/${RUM}.${cycle}.sfc${HOUTASPS}_T$JCAP\L$LEVS if [[ $cycsuffix = false ]]; then if [[ $ENS_SPS = .true. ]]; then eval export SIGINP=$COMOUT/$cyc/sfcsig/${RUM}.t${cyc}z.ss${HOUTASPS} eval export SFCINP=$COMOUT/$cyc/sfcsig/${RUM}.t${cyc}z.bs${HOUTASPS} else eval export SIGINP=$COMOUT/$cyc/sfcsig/${RUM}.t${cyc}z.sf${HOUTASPS} eval export SFCINP=$COMOUT/$cyc/sfcsig/${RUM}.t${cyc}z.bf${HOUTASPS} fi else if [[ $ENS_SPS = .true. ]]; then eval export SIGINP=$COMOUT/$cyc/sfcsig/${RUM}.t${cyc}z.ss${HOUTASPS}.cycfs$cyc_fcst eval export SFCINP=$COMOUT/$cyc/sfcsig/${RUM}.t${cyc}z.bs${HOUTASPS}.cycfs$cyc_fcst else eval export SIGINP=$COMOUT/$cyc/sfcsig/${RUM}.t${cyc}z.sf${HOUTASPS}.cycfs$cyc_fcst eval export SFCINP=$COMOUT/$cyc/sfcsig/${RUM}.t${cyc}z.bf${HOUTASPS}.cycfs$cyc_fcst fi fi echo `date` timing lr chgres $MN before $chgresush >>$pgmout echo `date` timing lr $MN chgres after # NO need to cp in CHGRES # eval cp -pr $SIGOUT $DATA # eval cp -pr $SFCOUT $DATA done #MN else export SIGOUT=$GESdir/${RUN}.${cycle}.sig${HOUTASPS}_T$JCAP\L$LEVS export SFCOUT=$GESdir/${RUN}.${cycle}.sfc${HOUTASPS}_T$JCAP\L$LEVS if [[ $cycsuffix = false ]]; then if [[ $ENS_SPS = .true. ]]; then export SIGINP=$COMOUT/$cyc/sfcsig/${RUN}.t${cyc}z.ss${HOUTASPS} export SFCINP=$COMOUT/$cyc/sfcsig/${RUN}.t${cyc}z.bs${HOUTASPS} else export SIGINP=$COMOUT/$cyc/sfcsig/${RUN}.t${cyc}z.sf${HOUTASPS} export SFCINP=$COMOUT/$cyc/sfcsig/${RUN}.t${cyc}z.bf${HOUTASPS} fi else if [[ $ENS_SPS = .true. ]]; then export SIGINP=$COMOUT/$cyc/sfcsig/${RUN}.t${cyc}z.ss${HOUTASPS}.cycfs$cyc_fcst export SFCINP=$COMOUT/$cyc/sfcsig/${RUN}.t${cyc}z.bs${HOUTASPS}.cycfs$cyc_fcst else export SIGINP=$COMOUT/$cyc/sfcsig/${RUN}.t${cyc}z.sf${HOUTASPS}.cycfs$cyc_fcst export SFCINP=$COMOUT/$cyc/sfcsig/${RUN}.t${cyc}z.bf${HOUTASPS}.cycfs$cyc_fcst fi fi echo `date` timing lr chgres before $chgresush >>$pgmout echo `date` timing lr chgres after # NO need to cp in CHGRES # cp -pr $SIGOUT $DATA # cp -pr $SFCOUT $DATA fi # End of resolution change # remove the corresponding restart files from restarta for MN in $MEMBER_NAMES do for file in sigr1 sigr2 sfcr sigs1 sigs2 sfcs do dirfile=$COMOUT/$cyc/restarta/ge$MN.t${cyc}z.$file if [[ -f $dirfile ]]; then ls -al $dirfile rm $dirfile fi done done #### DHOU, 09/10/2010 added this block for lower res. forecast cat $pgmout echo if [[ $CHGRES_ALL = yes ]]; then echo echo `date` sorted forecast output begin echo cat $PGMOUT | sort -n -k1 echo echo `date` sorted forecast output end echo fi echo `date` TEST LISTING OF WORKING DIRECTORY BEGIN echo DATA=$DATA ls -al $DATA echo `date` TEST LISTING OF WORKING DIRECTORY END msg="ENDED NORMALLY." postmsg "$jlogfile" "$msg" ############################## # Remove the Temporary working directory ############################## cd $DATA_IN rm -rf $DATA echo `date` $0 `date -u` end