#!/bin/ksh set -euax # # Specify whether the run is production or development # export RUN_ENVIR=${RUN_ENVIR:-prod} ##################################################################################### # Run config file to get input parameters # This config file should define the following variables # DATA_IN: Location of working directory, default to /tmpnwprd1 # DEV_ECF: If the job is to be running using ECF, default to YES # SENDDBN: Set to NO for developers, default to YES ##################################################################################### ############################################################### # This block can be modified for different test environment ############################################################### if [[ $RUN_ENVIR = nco && $envir != prod ]]; then export SENDDBN=${SENDDBN:-NO} fi #################################### # Specify NET and RUN Name and model #################################### export NET=cfs export RUN=cdas export RUN1=cdas1 #################################### # set up job name and environment #################################### export job=${job:-$RUN1} export envir=${envir:-prod} export host=${host:-`hostname | cut -c1`} ############################################### date export PS4='$SECONDS + ' date # ############################################# # SETUP CDAS ANALYSIS PROCESSING VARIABLES # ############################################# export DATA=${DATA:-${DATAROOT:?}/${jobid:?}} mkdir -p $DATA cd $DATA #################################### # Determine Job Output Name on System #################################### export cyc=${cyc:-00} export outid="LL$job" [ $envir != prod ] && export outid="LL${job}_${envir}" export pgmout="OUTPUT.$$" export pgmerr=errfile export cycle=t${cyc}z #################################### # 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 #################################### export SENDECF=${SENDECF:-YES} export SENDCOM=${SENDCOM:-YES} export SENDDBN=${SENDDBN:-YES} export RERUN=${RERUN:-NO} export VERBOSE=${VERBOSE:-YES} #################################### # Specify Execution Areas #################################### export HOMEcfs=${HOMEcfs:-$HOMEcfs} export EXECcfs=${EXECcfs:-$HOMEcfs/exec} export PARMcfs=${PARMcfs:-$HOMEcfs/parm} export USHcfs=${USHcfs:-$HOMEcfs/ush} export FIXcfs=$HOMEcfs/fix/cfs_fix_cdas export HOMEGLOBAL=${HOMEGLOBAL:-$HOMEcfs/global_shared_cfs} export EXECGLOBAL=${EXECGLOBAL:-$HOMEGLOBAL/exec} export PARMGLOBAL=${PARMGLOBAL:-$HOMEGLOBAL/parm} export USHGLOBAL=${USHGLOBAL:-$HOMEGLOBAL/ush} export FIXGLOBAL=${FIXGLOBAL:-$HOMEcfs/fix/cfs_fix_am} ############################## # Set up the UTILITIES ############################## err_chk=err_chk startmsg=startmsg ERRSCRIPT=${ERRSCRIPT:-$err_chk} LOGSCRIPT=${LOGSCRIPT:-$startmsg} export FILESTYLE='C' ############################## # Run setpdy and initialize PDY variables ############################## sh setpdy.sh . ./PDY ############################################## # Define COM directories ############################################## export COMROT=$(compath.py -o ${NET}/${cfs_ver}) export COMIN=$COMROT/cdas.${PDY} export COMINcfs_cdas=${COMINcfs_cdas:-$COMIN} export COMOUT=$COMROT/cdas.${PDY} mkdir -m 775 -p $COMOUT #################################### # Specify Special Fcst Vars #################################### # # Forecast Model Horizontal Resolution # export JCAP=${JCAP:-574} export JCAP_A=${JCAP:-574} export JCAP_ges=${JCAP:-574} # # Forecast MOdel Vertical Resolution # export LEVS=${LEVS:-64} export LEVS_ges=${LEVS:-64} export CDATE=${CDATE:-${PDY}${cyc}} # # These defaults are for the T574L64 # export LONA=${LONA:-1152} export LATA=${LATA:-576} export LONB=${LONB:-1760} export LATB=${LATB:-880} export LSOIL=${LSOIL:-4} export NLAT=$((${LATA}+2)) # # Time Step # export DELTIM=${DELTIM:-120} # # Analysis Fix Fields # export FNGLAC=${FNGLAC:-${FIXGLOBAL}/global_glacier.2x2.grb} export FNMXIC=${FNMXIC:-${FIXGLOBAL}/global_maxice.2x2.grb} export FNTSFC=${FNTSFC:-${FIXGLOBAL}/cfs_oi2sst1x1monclim19822001.grb} export FNSNOC=${FNSNOC:-${FIXGLOBAL}/global_snoclim.1.875.grb} export FNZORC=${FNZORC:-${FIXGLOBAL}/global_zorclim.1x1.grb} export FNALBC=${FNALBC:-${FIXGLOBAL}/global_albedo4.1x1.grb} export FNAISC=${FNAISC:-${FIXGLOBAL}/cfs_ice1x1monclim19822001.grb} export FNTG3C=${FNTG3C:-${FIXGLOBAL}/global_tg3clim.2.6x1.5.grb} export FNVEGC=${FNVEGC:-${FIXGLOBAL}/global_vegfrac.0.144.decpercent.grb} export FNVETC=${FNVETC:-${FIXGLOBAL}/global_vegtype.1x1.grb} export FNSOTC=${FNSOTC:-${FIXGLOBAL}/global_soiltype.1x1.grb} export FNSMCC=${FNSMCC:-${FIXGLOBAL}/global_soilmcpc.1x1.grb} export FNOROG=${FNOROG:-${FIXGLOBAL}/global_orography.t${JCAP}.grb} export FNMASK=${FNMASK:-${FIXGLOBAL}/global_slmask.t${JCAP}.grb} export BERROR=${BERROR:-${FIXcfs}/global_berror.l${LEVS}y${NLAT}.f77} export ANAVINFO=${ANAVINFO:-${FIXcfs}/global_anavinfo.l${LEVS}.txt} export SATANGL=${SATANGL:-${FIXcfs}/global_satangbias.txt} export SATINFO=${SATINFO:-${FIXcfs}/global_satinfo.txt} export CONVINFO=${CONVINFO:-${FIXcfs}/global_convinfo.txt} export OZINFO=${OZINFO:-${FIXcfs}/global_ozinfo.txt} export PCPINFO=${PCPINFO:-${FIXcfs}/global_pcpinfo.txt} export COMINgfs=${COMINgfs:-$(compath.py gfs/${gfs_ver})} export OBERROR=${OBERROR:-${COMINgfs}/fix/prepobs_errtable.global} # # Analysis Input Fields # export PREINP=${PREINP:-${RUN1}.${cycle}.} export FNTSFA=${FNTSFA:-${COMIN}/${PREINP}sstgrb} export FNACNA=${FNACNA:-${COMIN}/${PREINP}engicegrb} export FNSNOA=${FNSNOA:-${COMIN}/${PREINP}snogrb_t574} export PREPQC=${PREPQC:-${COMIN}/${PREINP}prepbufr} export SIGGES=${SIGGES:-${COMIN}/${PREINP}sgesprep} export SIGG03=${SIGG03:-${COMIN}/${PREINP}sgm3prep} export SIGG09=${SIGG09:-${COMIN}/${PREINP}sgp3prep} export GSNDBF1=${GSNDBF1:-${COMIN}/${PREINP}goesfv.tm00.bufr_d} export B1HRS2=${B1HRS2:-${COMIN}/${PREINP}1bhrs2.tm00.bufr_d} export B1MSU=${B1MSU:-${COMIN}/${PREINP}1bmsu.tm00.bufr_d} export B1HRS3=${B1HRS3:-${COMIN}/${PREINP}1bhrs3.tm00.bufr_d} export B1AMUA=${B1AMUA:-${COMIN}/${PREINP}1bamua.tm00.bufr_d} export B1AMUB=${B1AMUB:-${COMIN}/${PREINP}1bamub.tm00.bufr_d} export B1HRS4=${B1HRS4:-${COMIN}/${PREINP}1bhrs4.tm00.bufr_d} export B1MHS=${B1MHS:-${COMIN}/${PREINP}1bmhs.tm00.bufr_d} export ESHRS3=${ESHRS3:-${COMIN}/${PREINP}eshrs3.tm00.bufr_d} export ESAMUA=${ESAMUA:-${COMIN}/${PREINP}esamua.tm00.bufr_d} export ESAMUB=${ESAMUB:-${COMIN}/${PREINP}esamub.tm00.bufr_d} export AIRSBF=${AIRSBF:-${COMIN}/${PREINP}airsev.tm00.bufr_d} export IASIBF=${IASIBF:-${COMIN}/${PREINP}mtiasi.tm00.bufr_d} export SBUVBF=${SBUVBF:-${COMIN}/${PREINP}osbuv8.tm00.bufr_d} export GOMEBF=${GOMEBF:-${COMIN}/${PREINP}gome.tm00.bufr_d} export OMIBF=${OMIBF:-${COMIN}/${PREINP}omi.tm00.bufr_d} export SMIPCP=${SMIPCP:-${COMIN}/${PREINP}spssmi.tm00.bufr_d} export TMIPCP=${TMIPCP:-${COMIN}/${PREINP}sptrmm.tm00.bufr_d} export GPSROBF=${GPSROBF:-${COMIN}/${PREINP}gpsro.tm00.bufr_d} export TCVITL=${TCVITL:-${COMIN}/${PREINP}syndata.tcvitals.tm00} # Set non-assimilated obs fles as /dev/null to prevent reading # added 11/2008 by wx11sc to decrease run time, since SSMI and AMSRE are # not assimilated export AMSREBF=${AMSREBF:-/dev/null} export SSMITBF=${SSMITBF:-/dev/null} ############################################################################ # # Check grib date of current snogrb vs that of prev cycle # # if cdate_of_snogrb -le cdate_of_snoprv, i.e. file has not been updated # then set namelist input to CYCLEXEC to use the snow from the guess # FNSNOA=" ";CYCLVARS="FSNOL=99999.,FSNOS=99999.," # FNSNOA is the name of the snow depth analysis file # when not supplied, signals to CYCLEXEC to blend guess and climatology # (Note: file must be " ", not "" or the shell syntax for default # values X=${X:-default} will reset to default if X="") # FSNOL=99999.,FSNOS=99999., sets the blending of guess and climo to # use 100% guess # #################################### wgrib=$WGRIB RUN_GETGES=${RUN_GETGES:-YES} prev_cdate=`$NDATE -6 $PDY$cyc` GETGESSH=${GETGESSH:-$HOMEprepobs/ush/getges.sh} if [ $RUN_GETGES = YES ]; then export envir_getges=${envir_getges:-${envir:-prod}} snoprv=$($GETGESSH -q -t snogrb_$JCAP -e $envir_getges -n cfs-cdas -v $prev_cdate) else snoprv=${snoprv:-$FNSNOG} fi if [ `$wgrib -4yr ${FNSNOA} 2>/dev/null|grep -i snowc | awk -F: '{print $3}'|awk -F= '{print $2}'` -le `$wgrib -4yr $snoprv 2>/dev/null |grep -i snowc | awk -F: '{print $3}'|awk -F= '{print $2}'` ] ; then export FNSNOA=" " export CYCLVARS="FSNOL=99999.,FSNOS=99999.," fi export FSMCL2=99999 if [ $cyc -eq 00 ]; then export CYCLVARS="FSNOL=-2" fi ############################################################################ # # Output File Names # export SFCANL=${SFCANL:-$DATA/${RUN1}.${cycle}.sfcanl} export SIGANL=${SIGANL:-$DATA/${RUN1}.${cycle}.sanl} export ABIAS=${ABIAS:-$DATA/${RUN1}.${cycle}.abias} export GINCOUT=${GINCOUT:-$DATA/${RUN1}.${cycle}.gesfile} export PCPSTAT=${PCPSTAT:-${COMOUT}/${RUN1}.${cycle}.pcpstat} export RADSTAT=${RADSTAT:-${COMOUT}/${RUN1}.${cycle}.radstat} export GSISTAT=${GSISTAT:-${COMOUT}/${RUN1}.${cycle}.gsistat} export CNVSTAT=${CNVSTAT:-${COMOUT}/${RUN1}.${cycle}.cnvstat} export OZNSTAT=${OZNSTAT:-${COMOUT}/${RUN1}.${cycle}.oznstat} # # PDS Grid Designator # export IGEN=${IGEN:-197} msg="HAS BEGUN on `hostname`" postmsg "$msg" #################################### # Check if this is a restart # # Define Previous Guess File Names (dev users must provide from outside) #################################### if [ $RUN_GETGES = YES ]; then $GETGESSH -t sfcges -r ${JCAP_ges}$LEVS_ges -v ${PDY}$cyc -e $envir_getges -n cfs-cdas bges ; err1=$? $GETGESSH -t sfcgm3 -r ${JCAP_ges}$LEVS_ges -v ${PDY}$cyc -e $envir_getges -n cfs-cdas sfcgm3 $GETGESSH -t sfcgp3 -r ${JCAP_ges}$LEVS_ges -v ${PDY}$cyc -e $envir_getges -n cfs-cdas sfcgp3 $GETGESSH -t biascr -r ${JCAP_ges}$LEVS_ges -v ${PDY}$cyc -e $envir_getges -n cfs-cdas gbias $GETGESSH -t satang -r ${JCAP_ges}$LEVS_ges -v ${PDY}$cyc -e $envir_getges -n cfs-cdas gsatang fi export SFCGES=${SFCGES:-$DATA/bges} export SFCG03=${SFCG03:-$DATA/sfcgm3} export SFCG09=${SFCG09:-$DATA/sfcgp3} export GBIAS=${GBIAS:-$DATA/gbias} export GSATANG=${GSATANG:-$DATA/gsatang} export GESFIL=${GESFIL:-$DATA/gesfile} if [ $err1 -eq 0 ] ; then msg="Analysis Starting/Guess Fields Found" postmsg "$msg" else msg="Analysis Cannot Start/Guess Fields Not Available" postmsg "$msg" export pgm=$job export err=911 err_chk fi ############################ # Make use of updated angle dependent bias file, if it exists. if [[ -s $GSATANG ]]; then export SATANGL=$GSATANG fi # Make use of increment from GFS early cycle, if it exists if [[ -s $GESFIL ]]; then export GINCIN=$GESFIL fi ################################################################################ # Don't produce RAD, PCP, OZN, CNV diagnostic (STAT) files for GFS early analysis. # Set T574 weighting factor for negative moisture constraint export SETUP="factqmin=300.0," if [[ $RUN = gfs ]]; then export SETUP="diag_rad=.false.,diag_pcp=.false.,diag_conv=.false.,diag_ozone=.false.,write_diag(3)=.false.,factqmin=300.0," fi ############################ # WCOSS environment settings export MP_EAGER_LIMIT=65536 export MP_COREFILE_FORMAT=lite export MP_EUIDEVELOP=min export MP_EUIDEVICE=sn_all export MP_EUILIB=us export MP_MPILIB=mpich2 export MP_LABELIO=yes export MP_USE_BULK_XFER=yes export MP_SHARED_MEMORY=yes export MPICH_ALLTOALL_THROTTLE=0 export MP_COLLECTIVE_OFFLOAD=no export KMP_STACKSIZE=2048m export NTHREADS_GSI=${NTHREADS_GSI:-2} export RTMFIX=$HOMEcfs/global_shared_cfs/CRTMv205 env ############################################################# # Execute the script ${ANALYSISSH:-$HOMEcfs/scripts/excfs_cdas_analysis.sh} ############################################################# ########## # NOTES: 1) script excfs_cdas_analysis.sh compresses the contents of # RADSTAT, PCPSTAT, OZNSTAT, and CNVSTAT. These stat files # files are tarballs of compressed files. # 2) SFCANL, SIGANL are input to the GFS forecast following the analysis # 3) ABIAS is used in the following analysis cycle # 4) GINCOUT from the GFS early cycle (GFS) is used as input in the # GFS late (GDAS) cycle # 5) GSISTAT, RADSTAT, PCPSTAT, OZNSTAT, CNVSTAT are diagnostic output ########## if [ $SENDDBN = YES ] ; then $DBNROOT/bin/dbn_alert MODEL GDAS1_MSC_abias $job $COMOUT/${RUN1}.${cycle}.abias fi cat $pgmout msg="ENDED NORMALLY." postmsg "$msg" ############################## # Remove the Temporary working directory ############################## cd $DATAROOT if [ ${KEEPDATA:-NO} = NO ] ; then rm -rf $DATA ; fi date #if [[ $RUN_ENVIR = prod || ${DEV_ECF:-YES} = YES ]] ; then # ecflow_client --complete #else # export CSTEP=anal1 # ${PEND:-""} #fi