From 0f0e79379995fb0afcb2200f15eda6fc6725ea6c Mon Sep 17 00:00:00 2001 From: Iliana Genkova Date: Thu, 26 Mar 2026 22:31:24 +0000 Subject: [PATCH 1/3] first changes for bufr/12.2.0 --- triggers/jrrfs_dump.wc2.pbs | 151 +++++++++++++++++++++++++++++++ triggers/jrrfs_dump_post.wc2.pbs | 126 ++++++++++++++++++++++++++ triggers/jrrfs_prep.wc2.pbs | 134 +++++++++++++++++++++++++++ triggers/jrrfs_prep_post.wc2.pbs | 114 +++++++++++++++++++++++ versions/build.ver | 2 +- versions/run.ver | 6 +- 6 files changed, 529 insertions(+), 4 deletions(-) create mode 100755 triggers/jrrfs_dump.wc2.pbs create mode 100755 triggers/jrrfs_dump_post.wc2.pbs create mode 100755 triggers/jrrfs_prep.wc2.pbs create mode 100755 triggers/jrrfs_prep_post.wc2.pbs diff --git a/triggers/jrrfs_dump.wc2.pbs b/triggers/jrrfs_dump.wc2.pbs new file mode 100755 index 0000000..3e2408f --- /dev/null +++ b/triggers/jrrfs_dump.wc2.pbs @@ -0,0 +1,151 @@ +#!/bin/bash +#PBS -N obsproc_%JTYP%_dump_%PDY%_%CC%_%DESC% +#PBS -j oe +#PBS -S /bin/bash +#PBS -q dev +#PBS -A OBSPROC-DEV +#PBS -l walltime=00:30:00 +#PBS -l place=vscatter,select=1:ncpus=13:mem=50gb +#PBS -l debug=true +##################################################################### +# Submit notes: +# Run from [ps]tmp when running manually +# When running from cron, output is written to /u/$USER. Bottom of trigger mv's to stmp +# For specific PDY: +# > jtyp=rrfs|rrfs_e|rrfs_p cyc=00 PDY=20170126 desc=somethingfun /u/Shelley.Melchior/bin/cycqsub /path/to/triggers/jrrfs_dump.wc2.pbs +# For latest/current PDY: +# > jtyp=rrfs cyc=00 /u/Shelley.Melchior/bin/cycqsub /path/to/triggers/jrrfs_dump.wc2.pbs +# cycqsub location: /u/Shelley.Melchior/bin +##################################################################### + +set -xu + + +export envir=prod +export cyc=%CC% +type=%DESC% +JTYP=%JTYP% +DESC=%DESC% +if [ $JTYP = "rrfs_e" ]; then + export job=$(echo $JTYP | cut -c1-3)_dump_erly_$cyc +elif [ $JTYP = "rrfs_p" ]; then + export job=$(echo $JTYP | cut -c1-3)_dump_pcyc_$cyc +else + export job=${JTYP}_dump_$cyc +fi +export jobid=$job.$PBS_JOBID +export PDY=%PDY% + +userROOT=/lfs/h2/emc/obsproc/noscrub/${USER} + +export obsproc_ver=v1.2 +export obsproc_ver_pckg=v1.2.8 +#export bufr_dump_ver=1.0.0 +export bufr_dump_ver=1.3.1 +export obsNET=obsproc +PACKAGEROOTpara=/lfs/h1/ops/para/packages +#export HOMEobsproc=${PACKAGEROOTpara}/obsproc.${obsproc_ver_pckg} # NCO para +export HOMEobsproc=${PACKAGEROOT}/obsproc.${obsproc_ver_pckg} # NCO prod +#export HOMEobsproc=${userROOT}/install/obsproc-rmprep # local +#export HOMEobsproc=${userROOT}/GIT/play/obsproc.REL/ + +VERSION_FILE=$HOMEobsproc/versions/run.ver +if [ -f $VERSION_FILE ]; then + . $VERSION_FILE +else + echo Need version info... Exiting... + exit 7 +fi + +# Load the modules specified in $VERSION_FILE +module load libjpeg +module load grib_util/${grib_util_ver} +module load netcdf/${netcdf_ver} +module load intel/${intel_ver} +module load craype/${craype_ver} +module load cray-mpich/${cray_mpich_ver} +module load cray-pals/${cray_pals_ver} +module load cfp/${cfp_ver} +# use para installation +module use /apps/ops/para/nco/modulefiles/compiler/intel/19.1.3.304 +## use local bufr_dump installation +#module unload bufr_dump + +#module use ${userROOT}/install/bufr_dump/modulefiles +#module use ${userROOT}/install/bufr-dump-rel.1.0.0/modulefiles +#module use ${userROOT}/git/bufr-dump_v110/install/modulefiles +#module use ${userROOT}/GIT/play/bufr-dump.REL/install/modulefiles +module load bufr_dump/${bufr_dump_ver} + +# Be sure the modules are loaded +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)prod_util/") -eq 0 ]]; then echo "prod_util is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)prod_envir/") -eq 0 ]]; then echo "prod_envir is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)libjpeg/") -eq 0 ]]; then echo "libjpeg is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)grib_util/") -eq 0 ]]; then echo "grib_util is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)netcdf/") -eq 0 ]]; then echo "netcdf is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)bufr_dump/") -eq 0 ]]; then echo "bufr_dump is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)intel/") -eq 0 ]]; then echo "intel is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)craype/") -eq 0 ]]; then echo "craype is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)cray-mpich/") -eq 0 ]]; then echo "cray-mpich is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)cray-pals/") -eq 0 ]]; then echo "cray-pals is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)cfp/") -eq 0 ]]; then echo "cfp is not loaded!"; fi + +export SENDECF=NO # developer +export SENDSDM=NO # developer +export SENDDBN=NO # developer + +export TANK=$DCOMROOT + +#export TANK_000021=/lfs/h1/ops/dev/dcom +#export TANK_002020=/lfs/h1/ops/dev/dcom +#export TANK_002021=/lfs/h1/ops/dev/dcom +# satwnd / sevasr +#export TANK_005067=/lfs/h1/ops/dev/dcom/ # only hourly winds are present +#export TANK_005068=/lfs/h1/ops/dev/dcom/ +#export TANK_005069=/lfs/h1/ops/dev/dcom/ +#export TANK_021042=/lfs/h1/ops/dev/dcom/ +#export TANK_001103=/lfs/h1/ops/dev/dcom #NDBC buoys in BUFR have HSMSL (think GL,M.Morris) + +export DATAROOT=/lfs/h2/emc/stmp/$USER +export jlogfile=/lfs/h2/emc/stmp/$USER/${JTYP}.$PDY.jlogfile + + +export COMOUT_ROOT=${DATAROOT}/CRON/${DESC}/com + +export LOUD=ON +export KEEPDATA=YES +export DEBUG_LEVEL=3 + + +$HOMEobsproc/jobs/JOBSPROC_RRFS_DUMP +err=$? + + +# When run from cron, the stdout is written to /u/$USER +# mv to stmp +pbsjobid=$(echo $PBS_JOBID | cut -d'.' -f1) +cronlogfile=/u/$USER/$PBS_JOBNAME.o$pbsjobid +outputdir=/lfs/h2/emc/stmp/$USER/CRON/${DESC}/output +if [ -f "$cronlogfile" ]; then + mkdir -p $outputdir + mv $cronlogfile ${outputdir}/$PBS_JOBNAME.o$pbsjobid +fi + +# If you wish to only run the dump job, un-comment the exit line below +#exit + +# Kick off dump_post job +if [ $err -eq 0 ]; then + echo "submit jrrfs_dump_post" + jtyp=$JTYP PDY=$PDY desc=$DESC bash -l /u/$USER/bin/cycqsub \ + /lfs/h2/emc/obsproc/noscrub/$USER/Trigs.KEEP/jrrfs_dump_post.wc2.pbs +fi + +# Kick off prep job +if [ $err -eq 0 ]; then + echo "submit jrrfs_prep" + jtyp=$JTYP PDY=$PDY desc=$DESC bash -l /u/$USER/bin/cycqsub \ + /lfs/h2/emc/obsproc/noscrub/$USER/Trigs.KEEP/jrrfs_prep.wc2.pbs +fi + +exit diff --git a/triggers/jrrfs_dump_post.wc2.pbs b/triggers/jrrfs_dump_post.wc2.pbs new file mode 100755 index 0000000..7ebf382 --- /dev/null +++ b/triggers/jrrfs_dump_post.wc2.pbs @@ -0,0 +1,126 @@ +#!/bin/bash +#PBS -N obsproc_%JTYP%_dump_post_%PDY%_%CC%_%DESC% +#PBS -j oe +#PBS -S /bin/bash +#PBS -q dev +#PBS -A OBSPROC-DEV +#PBS -l walltime=00:15:00 +#PBS -l place=vscatter,select=1:ncpus=1:mem=6gb +#PBS -l debug=true +##################################################################### +# Submit notes: +# Run from [ps]tmp when running manually +# When running from cron, output is written to /u/$USER. Bottom of trigger mv's to stmp +# For specific PDY: +# > jtyp=rrfs|rrfs_e|rrfs_p cyc=00 PDY=20170126 desc=somethingfun /u/Shelley.Melchior/cycqsub /path/to/triggers/jrrfs_dump_post.wc2.pbs +# For latest/current PDY: +# > jtyp=rrfs cyc=00 desc=somethingfun /u/Shelley.Melchior/bin/cycqsub /path/to/triggers/jrrfs_dump_post.wc2.pbs +# cycqsub location: /u/Shelley.Melchior/bin +##################################################################### + +set -xu + +export NODES=1 + +export envir=prod +export cyc=%CC% +type=%DESC% +DESC=%DESC% +JTYP=%JTYP% +if [ $JTYP = "rrfs_e" ]; then + export job=$(echo $JTYP | cut -c1-3)_dump_post_erly_$cyc +elif [ $JTYP = "rrfs_p" ]; then + export job=$(echo $JTYP | cut -c1-3)_dump_post_pcyc_$cyc +else + export job=${JTYP}_dump_post_$cyc +fi +export jobid=$job.$PBS_JOBID +export PDY=%PDY% +PDYm1=$(date -d "${PDY} 1 day ago" +%Y%m%d) + +userROOT=/lfs/h2/emc/obsproc/noscrub/iliana.genkova + +export obsproc_ver=v1.2 +export obsproc_ver_pckg=v1.2.8 +export bufr_dump_ver=1.3.1 +export obsNET=obsproc +PACKAGEROOTpara=/lfs/h1/ops/para/packages +#export HOMEobsproc=${PACKAGEROOTpara}/obsproc.${obsproc_ver_pckg} # NCO para +export HOMEobsproc=${PACKAGEROOT}/obsproc.${obsproc_ver_pckg} # NCO prod +#export HOMEobsproc=${userROOT}/install/obsproc-rmprep # local +#export HOMEobsproc=${userROOT}/git/obsproc_v13/obsproc + +VERSION_FILE=$HOMEobsproc/versions/run.ver +if [ -f $VERSION_FILE ]; then + . $VERSION_FILE +else + echo Need version info... Exiting... + exit 7 +fi + +# Load the modules specified in $VERSION_FILE +module load libjpeg +module load grib_util/${grib_util_ver} +module load netcdf/${netcdf_ver} +module load intel/${intel_ver} +module load craype/${craype_ver} +module load cray-mpich/${cray_mpich_ver} +module load cray-pals/${cray_pals_ver} +module load cfp/${cfp_ver} +# use para installation +module use /apps/ops/para/nco/modulefiles/compiler/intel/19.1.3.304 +# use local bufr_dump installation +module unload bufr_dump +#module use ${userROOT}/install/bufr_dump/modulefiles +#module use ${userROOT}/install/bufr-dump-rel.1.0.0/modulefiles +#module use ${userROOT}/git/bufr-dump_v110/install/modulefiles +#module use ${userROOT}/git/obsproc_v127/bufr-dump/install/modulefiles +module load bufr_dump/${bufr_dump_ver} + +# Be sure the modules are loaded +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)prod_util/") -eq 0 ]]; then echo "prod_util is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)prod_envir/") -eq 0 ]]; then echo "prod_envir is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)libjpeg/") -eq 0 ]]; then echo "libjpeg is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)grib_util/") -eq 0 ]]; then echo "grib_util is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)netcdf/") -eq 0 ]]; then echo "netcdf is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)bufr_dump/") -eq 0 ]]; then echo "bufr_dump is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)intel/") -eq 0 ]]; then echo "intel is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)craype/") -eq 0 ]]; then echo "craype is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)cray-mpich/") -eq 0 ]]; then echo "cray-mpich is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)cray-pals/") -eq 0 ]]; then echo "cray-pals is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)cfp/") -eq 0 ]]; then echo "cfp is not loaded!"; fi + +export SENDECF=NO # developer +export SENDDBN=NO # developer +export SENDSDM=NO # developer + +export DATAROOT=/lfs/h2/emc/stmp/iliana.genkova +export jlogfile=/lfs/h2/emc/stmp/iliana.genkova/${JTYP}.$PDY.jlogfile + +export LOUD=ON +export KEEPDATA=YES +export DEBUG_LEVEL=3 + +export COMIN_ROOT=/lfs/h2/emc/stmp/iliana.genkova/CRON/${DESC}/com/ +export COMOUT_ROOT=/lfs/h2/emc/stmp/iliana.genkova/CRON/${DESC}/com/ + +# Need these settings only when cyc=23 and have local set of dump status +# files to process +export COPY=YES +export HOMEarch=${COMOUT_ROOT}/${obsNET}/${obsproc_ver}/sdm_rtdm/rap +export AVGDarch_OUT=$HOMEarch/avgdata +export OBCNTarch=$HOMEarch/obcount_30day + +$HOMEobsproc/jobs/JOBSPROC_RRFS_DUMP_POST +err=$? +echo $err + +# When run from cron, the stdout is written to /u/$USER +# mv to stmp +pbsjobid=$(echo $PBS_JOBID | cut -d'.' -f1) +cronlogfile=/u/$USER/$PBS_JOBNAME.o$pbsjobid +outputdir=/lfs/h2/emc/stmp/iliana.genkova/CRON/${DESC}/output +if [ -f "$cronlogfile" ]; then + mkdir -p $outputdir + mv $cronlogfile ${outputdir}/$PBS_JOBNAME.o$pbsjobid +fi diff --git a/triggers/jrrfs_prep.wc2.pbs b/triggers/jrrfs_prep.wc2.pbs new file mode 100755 index 0000000..10828f2 --- /dev/null +++ b/triggers/jrrfs_prep.wc2.pbs @@ -0,0 +1,134 @@ +#!/bin/bash +#PBS -N obsproc_%JTYP%_prep_%PDY%_%CC%_%DESC% +#PBS -j oe +#PBS -S /bin/bash +#PBS -q dev +#PBS -A OBSPROC-DEV +#PBS -l walltime=00:15:00 +#PBS -l place=vscatter,select=1:ncpus=4:mem=100gb:prepost=true +#PBS -l debug=true + +##################################################################### +# Submit notes: +# Run from [ps]tmp when running manually +# When running from cron, output is written to /u/$USER. Bottom of trigger mv's to stmp +# For specific PDY: +# > jtyp=rrfs|rrfs_e|rrfs_p cyc=00 PDY=20170126 desc=somethingfun /u/Shelley.Melchior/bin/cycqsub /path/to/triggers/jrrfs_prep.wc2.pbs +# For latest/current PDY: +# > jtyp=rrfs cyc=00 /u/Shelley.Melchior/bin/cycqsub /path/to/triggers/jrrfs_prep.wc2.pbs +# cycqsub location: /u/Shelley.Melchior/bin +##################################################################### + +set -xu + +export envir=prod +export cyc=%CC% +JTYP=%JTYP% +type=%DESC% +DESC=%DESC% +if [ $JTYP = "rrfs_e" ]; then + export job=$(echo $JTYP | cut -c1-3)_prep_erly_$cyc +elif [ $JTYP = "rrfs_p" ]; then + export job=$(echo $JTYP | cut -c1-3)_prep_pcyc_$cyc +else +export job=${JTYP}_prep_$cyc +fi +export jobid=$job.$PBS_JOBID +export PDY=%PDY% + +userROOT=/lfs/h2/emc/obsproc/noscrub/iliana.genkova + +export obsproc_ver=v1.2 +export obsproc_ver_pckg=v1.2.8 +export prepobs_ver=1.1.1 +export obsNET=obsproc +PACKAGEROOTpara=/lfs/h1/ops/para/packages +#export HOMEobsproc=${PACKAGEROOTpara}/obsproc.${obsproc_ver_pckg} # NCO para +export HOMEobsproc=${PACKAGEROOT}/obsproc.${obsproc_ver_pckg} # NCO prod +#export HOMEobsproc=${userROOT}/install/obsproc-rmprep # local +#export HOMEobsproc=${userROOT}/git/obsproc_v13/obsproc +#export HOMEobsproc=${userROOT}/git/obsproc_v127/obsproc + +VERSION_FILE=${HOMEobsproc}/versions/run.ver +if [ -f $VERSION_FILE ]; then + . $VERSION_FILE +else + echo Need version info... Exiting... + exit 7 +fi + +#Load the modules +module load grib_util/${grib_util_ver} +module load netcdf/${netcdf_ver} +module load intel/${intel_ver} +module load craype/${craype_ver} +module load cray-mpich/${cray_mpich_ver} +module load cray-pals/${cray_pals_ver} +module load cfp/${cfp_ver} +# use local bufr_dump installation +#module unload bufr_dump +#module use ${userROOT}/git/obsproc_v127/bufr-dump/install/modulefiles +#module load bufr_dump/${bufr_dump_ver} +# use local prepobs installation +#module unload prepobs +#module use ${userROOT}/git/obsproc_v127/prepobs/install/modulefiles +module load prepobs/${prepobs_ver} + +#Check if they exist +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)grib_util/") -eq 0 ]]; then echo "grib_util is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)netcdf/") -eq 0 ]]; then echo "netcdf is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)bufr_dump/") -eq 0 ]]; then echo "bufr_dump is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)prepobs/") -eq 0 ]]; then echo "prepobs is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)intel/") -eq 0 ]]; then echo "intel is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)craype/") -eq 0 ]]; then echo "craype is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)cray-mpich/") -eq 0 ]]; then echo "cray-mpich is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)cray-pals/") -eq 0 ]]; then echo "cray-pals is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)cfp/") -eq 0 ]]; then echo "cfp is not loaded!"; fi + +export SENDECF=NO # developer +export SENDSDM=NO # developer +#export SENDDBN=YES; export DBNROOT="echo test " # developer + +export DATAROOT=/lfs/h2/emc/stmp/iliana.genkova +export jlogfile=/lfs/h2/emc/stmp/iliana.genkova/${JTYP}.${PDY}.jlogfile + +export COMIN_ROOT=/lfs/h2/emc/stmp/iliana.genkova/CRON/${DESC}/com +#export COMINgdas=/lfs/h1/ops/canned/com/gfs/${gfs_ver}/gdas.${PDY}/${cyc}/atmos +#export COMINgfs=/lfs/h1/ops/canned/com/gfs/${gfs_ver}/gfs.${PDY}/${cyc}/atmos +#export GETGES_COM=/lfs/h1/ops/canned/com/gfs/${gfs_ver}/ +#export GESROOT=/lfs/h1/ops/canned/com/gfs/${gfs_ver}/ +export COMOUT_ROOT=/lfs/h2/emc/stmp/iliana.genkova/CRON/${DESC}/com/ + + +export KEEPDATA=YES +export DEBUG_LEVEL=3 +export LOUD=ON + +#export POE=NO # use these settings +#export BACK=NO # when want to force +#export NSPLIT=1 # serial run + +$HOMEobsproc/jobs/JOBSPROC_RRFS_PREP +err=$? + +# When run from cron, the stdout is written to /u/$USER +# mv to stmp +pbsjobid=$(echo $PBS_JOBID | cut -d'.' -f1) +cronlogfile=/u/$USER/$PBS_JOBNAME.o$pbsjobid +outputdir=/lfs/h2/emc/stmp/iliana.genkova/CRON/${DESC}/output +if [ -f "$cronlogfile" ]; then + mkdir -p $outputdir + mv $cronlogfile ${outputdir}/$PBS_JOBNAME.o$pbsjobid +fi + +# If you wish to only run the prep job, un-comment the exit line below +#exit + +# Kick off prep_post job +if [ $err -eq 0 ]; then + echo "submit jrrfs_prep_post:" + jtyp=$JTYP PDY=$PDY desc=$DESC bash -l /u/$USER/bin/cycqsub \ + /lfs/h2/emc/obsproc/noscrub/iliana.genkova/Trigs.KEEP/jrrfs_prep_post.wc2.pbs +fi + +exit diff --git a/triggers/jrrfs_prep_post.wc2.pbs b/triggers/jrrfs_prep_post.wc2.pbs new file mode 100755 index 0000000..e124736 --- /dev/null +++ b/triggers/jrrfs_prep_post.wc2.pbs @@ -0,0 +1,114 @@ +#!/bin/bash +#PBS -N obsproc_%JTYP%_prep_post_%PDY%_%CC%_%DESC% +#PBS -j oe +#PBS -S /bin/bash +#PBS -q dev +#PBS -A OBSPROC-DEV +#PBS -l walltime=00:15:00 +#PBS -l place=vscatter,select=1:ncpus=1:mem=3gb +#PBS -l debug=true + +########################################################################## +# Submit notes: +# Run from [ps]tmp when running manually +# When running from cron, output is written to /u/$USER. Bottom of trigger mv's to stmp +# For specific PDY: +# > jtyp=rrfs|rrfs_e|rrfs_p cyc=00 PDY=20170126 desc=somethingfun /u/Shelley.Melchior/bin/cycqsub /path/to/triggers/jrrfs_prep_post.wc2.pbs +# For latest/current PDY: +# > jtyp=rrfs cyc=00 desc=somethingfun /u/Shelley.Melchior/bin/cycqsub /path/to/triggers/jrrfs_prep_post.wc2.pbs +# cycqsub location: /u/Shelley.Melchior/bin +########################################################################## + +set -xu + +export envir=prod +export cyc=%CC% +DESC=%DESC% +JTYP=%JTYP% +if [ $JTYP = "rrfs_e" ]; then + export job=$(echo $JTYP | cut -c1-3)_prep_post_erly_$cyc +elif [ $JTYP = "rrfs_p" ]; then + export job=$(echo $JTYP | cut -c1-3)_prep_post_pcyc_$cyc +else + export job=${JTYP}_prep_post_$cyc +fi +export PDY=%PDY% + +userROOT=/lfs/h2/emc/obsproc/noscrub/iliana.genkova + +export obsproc_ver=v1.2 +export obsproc_ver_pckg=v1.2.8 +export prepobs_ver=1.1.1 +export obsNET=obsproc +PACKAGEROOTpara=/lfs/h1/ops/para/packages +#export HOMEobsproc=${PACKAGEROOTpara}/obsproc.${obsproc_ver_pckg} # NCO para +export HOMEobsproc=${PACKAGEROOT}/obsproc.${obsproc_ver_pckg} # NCO prod +#export HOMEobsproc=${userROOT}/install/obsproc-rmprep # local +#export HOMEobsproc=${userROOT}/git/obsproc_v13/obsproc +#export HOMEobsproc=${userROOT}/git/obsproc_v127/obsproc + +VERSION_FILE=${HOMEobsproc}/versions/run.ver +if [ -f $VERSION_FILE ]; then + . $VERSION_FILE +else + echo Need version info... Exiting... + exit 7 +fi + +#Load the modules +module load grib_util/${grib_util_ver} +module load netcdf/${netcdf_ver} +module load intel/${intel_ver} +module load craype/${craype_ver} +module load cray-mpich/${cray_mpich_ver} +module load cray-pals/${cray_pals_ver} +module load cfp/${cfp_ver} +# use local bufr_dump installation +#module unload bufr_dump +#module use ${userROOT}/git/obsproc_v127/bufr-dump/install/modulefiles +#module load bufr_dump/${bufr_dump_ver} +# use local prepobs installation +#module unload prepobs +#module use ${userROOT}/git/obsproc_v127/prepobs/install/modulefiles +module load prepobs/${prepobs_ver} + +#Check if they exist +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)grib_util/") -eq 0 ]]; then echo "grib_util is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)netcdf/") -eq 0 ]]; then echo "netcdf is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)bufr_dump/") -eq 0 ]]; then echo "bufr_dump is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)prepobs/") -eq 0 ]]; then echo "prepobs is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)intel/") -eq 0 ]]; then echo "intel is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)craype/") -eq 0 ]]; then echo "craype is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)cray-mpich/") -eq 0 ]]; then echo "cray-mpich is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)cray-pals/") -eq 0 ]]; then echo "cray-pals is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)cfp/") -eq 0 ]]; then echo "cfp is not loaded!"; fi + +export SENDECF=NO +export SENDDBN=NO +export SENDSDM=NO +#export DBNROOT="echo dcs test "; export SENDDBN=YES + +export DATAROOT=/lfs/h2/emc/stmp/iliana.genkova +export jlogfile=/lfs/h2/emc/stmp/iliana.genkova/${JTYP}.${PDY}.jlogfile + +export COMIN_ROOT=/lfs/h2/emc/stmp/iliana.genkova/CRON/${DESC}/com/ +export COMOUT_ROOT=/lfs/h2/emc/stmp/iliana.genkova/CRON/${DESC}/com/ + +export DEBUG_LEVEL=3 +export KEEPDATA=YES +export LOUD=ON + +$HOMEobsproc/jobs/JOBSPROC_RRFS_PREP_POST +err=$? + +# When run from cron, the stdout is written to /u/$USER +# mv to stmp +pbsjobid=$(echo $PBS_JOBID | cut -d'.' -f1) +cronlogfile=/u/$USER/$PBS_JOBNAME.o$pbsjobid +outputdir=/lfs/h2/emc/stmp/iliana.genkova/CRON/${DESC}/output +if [ -f "$cronlogfile" ]; then + mkdir -p $outputdir + mv $cronlogfile ${outputdir}/$PBS_JOBNAME.o$pbsjobid +fi + +exit diff --git a/versions/build.ver b/versions/build.ver index df096aa..b70d5a7 100644 --- a/versions/build.ver +++ b/versions/build.ver @@ -5,7 +5,7 @@ export w3emc_ver=2.12.0 #2.9.1 export sp_ver=2.3.3 export sigio_ver=2.3.2 export nemsio_ver=2.5.2 -export bufr_ver=11.7.0 +export bufr_ver=12.2.0 export PrgEnv_intel_ver=8.3.3 #8.2.0 export intel_ver=19.1.3.304 diff --git a/versions/run.ver b/versions/run.ver index d7d9772..da35301 100644 --- a/versions/run.ver +++ b/versions/run.ver @@ -5,8 +5,8 @@ export libjpeg_ver=9c export grib_util_ver=1.2.2 export netcdf_ver=4.7.4 -export bufr_dump_ver=1.3.1 -export prepobs_ver=1.1.1 +export bufr_dump_ver=5.0.0 #1.3.2 +export prepobs_ver=5.0.0 #1.1.2 export intel_ver=19.1.3.304 export craype_ver=2.7.17 @@ -14,7 +14,7 @@ export cray_mpich_ver=8.1.19 export cray_pals_ver=1.1.3 export cfp_ver=2.0.4 -export gfs_ver=v16.3 +export gfs_ver=v16.3 # !!!change to v17 #export nam_ver=v4.2 # secure turn off SYNDAT for nam export dictionaries_ver=v3.4.0 export seaice_analysis_ver=v4.5 #engice, seaice.*5min.grb file From 81f3184113c6bda38920191bd6230dc5b55d2658 Mon Sep 17 00:00:00 2001 From: Iliana Genkova Date: Fri, 3 Apr 2026 03:05:30 +0000 Subject: [PATCH 2/3] remove NAP, split jobs JOBSPROC_[GLOBAL,RAP]_DUMP[2],update jrap*dump* jglobal*dump* triggers --- jobs/JOBSPROC_GLOBAL_DUMP | 2 + jobs/JOBSPROC_GLOBAL_DUMP2 | 285 +++++++++++++++++++++++++++++ jobs/JOBSPROC_RAP_DUMP | 2 + jobs/JOBSPROC_RAP_DUMP2 | 321 +++++++++++++++++++++++++++++++++ scripts/exglobal_dump.sh | 85 ++++++--- scripts/exrap_dump.sh | 73 ++++---- scripts/exrrfs_dump.sh | 31 ++-- triggers/jglobal_dump.wc2.pbs | 97 +++++++--- triggers/jglobal_dump2.wc2.pbs | 174 ++++++++++++++++++ triggers/jrap_dump.wc2.pbs | 67 +++++-- triggers/jrap_dump2.wc2.pbs | 168 +++++++++++++++++ 11 files changed, 1194 insertions(+), 111 deletions(-) create mode 100755 jobs/JOBSPROC_GLOBAL_DUMP2 create mode 100755 jobs/JOBSPROC_RAP_DUMP2 create mode 100755 triggers/jglobal_dump2.wc2.pbs create mode 100755 triggers/jrap_dump2.wc2.pbs diff --git a/jobs/JOBSPROC_GLOBAL_DUMP b/jobs/JOBSPROC_GLOBAL_DUMP index 8b3b6e9..053b914 100755 --- a/jobs/JOBSPROC_GLOBAL_DUMP +++ b/jobs/JOBSPROC_GLOBAL_DUMP @@ -232,6 +232,8 @@ fi ######################################################### # Specify variables specific to this execution of script ######################################################### +export JOB_NUMBER=1 + export PROCESS_GRIBFLDS=${PROCESS_GRIBFLDS:-YES} # normally runs export PROCESS_DUMP=${PROCESS_DUMP:-YES} # normally runs export prepssmi=NO # "spssmi" reprocessed dump no longer generated diff --git a/jobs/JOBSPROC_GLOBAL_DUMP2 b/jobs/JOBSPROC_GLOBAL_DUMP2 new file mode 100755 index 0000000..558ebe5 --- /dev/null +++ b/jobs/JOBSPROC_GLOBAL_DUMP2 @@ -0,0 +1,285 @@ +#!/bin/bash +set -xa +date -u + +################################################################### +# Set DEBUG LEVEL - modifies info in execution trace prompt string +################################################################### +export DEBUG_LEVEL=${DEBUG_LEVEL:-1} +case $DEBUG_LEVEL in + 1) export PS4='+ ${SECONDS}s + ' ;; # add seconds (this is typical case) + 0) export PS4='+ ';; # don't include seconds (useful if + # want to diff output from 2 runs) + 2) export PS4='+ ${SECONDS}s:L$LINENO + ';; # add script line # + 3) export PS4='+ ${SECONDS}s:${0##*/}:L$LINENO + ';;# add script name & line # + 4) export PS4='+ ${0##*/}:L$LINENO + ';; # script name & line (no seconds) + *) echo "Unrecognized DEBUG_LEVEL. Stay with current PS4 setting";; +esac + +######################################## +# Check that required variables are set +######################################## +set +x +echo +echo cyc is ${cyc:?"###FATAL ERROR \"cyc\" is not set"} +echo envir is ${envir:?"###FATAL ERROR \"envir\" is not set"} +echo job is ${job:?"###FATAL ERROR \"job\" is not set"} +echo DATAROOT is ${DATAROOT:?"###FATAL ERROR \"DATAROOT\" is not set"} +echo +set -x + +################################ +# Print out version information +################################ +set +x +echo +echo "####################################################################" +echo +echo "OBSPROC version is ${obsproc_ver:-not set}" #Set at trigger script level,outside of obsproc code +echo "BUFR_DUMP version used by this job, for dump and dumplist, is " \ + "${bufr_dump_ver:-not set}" #Set at trigger script level like obsproc_ver +echo "grib_util module version used by this job is ${grib_util_ver:-not set}" +echo +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)bufr_dump/") -eq 0 ]]; + then echo "bufr_dump is required but not loaded! Exiting..."; + exit; +fi +echo +echo "####################################################################" + +echo +set -x + +##################################################################### +# List modules loaded for this job +# May need to initialize Modules package to find the module command. +##################################################################### +set +x +echo +echo "####################################################################" +echo + module list +echo +echo "####################################################################" +echo +set -x + +###################### +# Specify NET and RUN +###################### +export obsNET=${obsNET:-obsproc} +export NET=${NET:-gfs} +echo $job | grep gfs +err_gfs=$? +echo $job | grep gdas +err_gdas=$? +if [ $err_gfs = 0 ]; then + export RUN=${RUN:-gfs} # GFS +elif [ $err_gdas = 0 ]; then + export RUN=${RUN:-gdas} # GDAS +fi +set +x +echo +echo obsNET is ${obsNET:?"###FATAL ERROR \"obsNET\" is not set"} +echo NET is ${NET:?"###FATAL ERROR \"NET\" is not set"} +echo RUN is ${RUN:?"###FATAL ERROR \"RUN\" is not set"} +echo +set -x + +############################## +# Specify cycle and time-mark +############################## +export cycle=t${cyc}z +export tmmark=tm00 + +############################### +# Create new working directory +############################### +jobid=${jobid:-${job}.$(hostname -s).$$} +export DATA=${DATA:-$DATAROOT/${jobid}} +rm -rf $DATA +mkdir -p $DATA +cd $DATA +export pgmout=OUTPUT.$$ +if [[ "$RUN_ENVIR" != nco ]]; then + TMPDIR=$DATAROOT # In the event TMPDIR is reset to a temporary LSF + # directory when batch jobs are submitted, set it to + # $DATAROOT so ensure it remains under the user's control + # (normally needed only if child script dumpjb executed) +fi + +###################################### +# Set job log file for postmsg output +###################################### +jlogfile=${jlogfile:-${DATA}/jlogfile} + +################################################# +# SENDCOM - Copy files to $COMOUT directory +# SENDECF - Flag Events on ECFLOW +# SENDDBN - Alert output file to TOC +################################################# +export SENDCOM=${SENDCOM:-YES} +export SENDECF=${SENDECF:-YES} +export SENDDBN=${SENDDBN:-YES} + +########################## +# Specify Execution Areas +########################## + +# ------------------------------- +# Paths for obsproc items +# ------------------------------- +export HOMEobsproc=${HOMEobsproc:\ +-${PACKAGEROOT:?}/${obsNET}/${obsproc_ver:?\ +"###FATAL ERROR \"obsproc_ver\" is not set"}} + +export SCRIPTSobsproc=${SCRIPTSobsproc:-$HOMEobsproc/scripts} + +# --------------------------------------- +# Paths for dump and bufr_dumplist items +# --------------------------------------- +# NOTE: defaults defined in bufr_dump module +# NOTE: path to dump executables defaults to $HOMEbufr_dump/exec in dumpjb + +export USHbufr_dump=${USHbufr_dump:-$HOMEbufr_dump/ush} +export FIXbufr_dump=${FIXbufr_dump:=$HOMEbufr_dump/fix} + +# directory path to data dump script executed in model script +# ----------------------------------------------------------- +export ushscript_dump=${ushscript_dump:-$USHbufr_dump} + +# ------------------------------------------ +# Paths for combined obsproc and dump items +# ------------------------------------------ + +# directory paths to SSMI dump re-processing executed in bufr_dump_obs +# -------------------------------------------------------------------- +export EXECPREP=${EXECPREP:-$HOMEbufr_dump/exec} +export PARMPREP=${PARMPREP:-$HOMEobsproc/parm} +export FIXPREP=${FIXPREP:-$HOMEbufr_dump/fix} + +# directory paths to ERS, QuikSCAT & ASCAT dump re-processing executed in +# bufr_dump_obs +# ----------------------------------------------------------------------- +export EXECWAVE=${EXECWAVE:-$HOMEbufr_dump/exec} +export PARMWAVE=${PARMWAVE:-$HOMEobsproc/parm} +export FIXWAVE=${FIXWAVE:-$HOMEbufr_dump/fix} + +# directory paths to SSMI & WindSAT dump re-processing executed in bufr_dump_obs +# ------------------------------------------------------------------------------ +export EXECbufr=${EXECbufr:-$HOMEbufr_dump/exec} +export PARMbufr=${PARMbufr:-$HOMEobsproc/parm} +export FIXbufr=${FIXbufr:-$HOMEbufr_dump/fix} + +# --------------------------- +# Paths for non-obsproc items +# --------------------------- + +# TANK is root directory path to observational database used in dumpjb +# -------------------------------------------------------------------- +export DCOMROOT=${DCOMROOT:-/lfs/h1/ops/prod/dcom} +export TANK=${TANK:-${DCOMROOT}} + +# directory paths to ice, sst & snowdepth grib files used in model script +# ----------------------------------------------------------------------- +export COM_ENGICE=${COM_ENGICE:-$(compath.py $envir/seaice_analysis/$seaice_analysis_ver)/seaice_analysis} +export COM_ICE5MIN=${COM_ICE5MIN:-$(compath.py $envir/seaice_analysis/$seaice_analysis_ver)/seaice_analysis} +export COM_SSTOI=${COM_SSTOI:-$(compath.py $envir/nsst/${nsst_ver})/nsst} +export COM_SSTRTG=${COM_SSTRTG:-$(compath.py $envir/nsst/${nsst_ver})/nsst} +export TANK_GRIBFLDS=${TANK_GRIBFLDS:-${DCOMROOT}} + +######################################################################### +# Add some prod utilities to working directory +######################################################################### +echo "step ############# break ##############################" > ./break +cp $UTILROOT/ush/err_chk .; chmod +x err_chk +cp $UTILROOT/ush/err_exit .; chmod +x err_exit +cp $UTILROOT/ush/prep_step .; chmod +x prep_step +cp $UTILROOT/ush/postmsg .; chmod +x postmsg +cp $UTILROOT/ush/setpdy.sh .; chmod +x setpdy.sh + +########################################## +# Run setpdy and initialize PDY variables +########################################## +./setpdy.sh +. PDY + +######################### +# Define COM directories +######################### +export COMIN_ROOT=${COMIN_ROOT:-${COMROOT:-""}} +export COMPONENT=${COMPONENT:-atmos} +if [[ "$RUN_ENVIR" == nco ]]; then + export COMIN=${COMIN:-$(compath.py ${envir}/${obsNET}/${obsproc_ver}/${RUN}.${PDY}/${cyc}/${COMPONENT})} + export COMOUT=${COMOUT:-$(compath.py -o ${obsNET}/${obsproc_ver}/${RUN}.${PDY}/${cyc}/${COMPONENT})} + mkdir -m 775 -p $COMOUT +else + export COMIN=${COMIN:-${COMIN_ROOT:?}/${obsNET}/${obsproc_ver}/${RUN}.${PDY}/${cyc}/${COMPONENT}} + +# COMOUT_ROOT for developers defaults to unique $DATA/com directory as root to +# prevent job from writing into a non-unique directory that might already have +# output in it from a previous checkout run for the same cycle +# ----------------------------------------------------------------------------- + export COMOUT_ROOT=${COMOUT_ROOT:-${DATA}/com} + export COMOUT=${COMOUT:-${COMOUT_ROOT}/${obsNET}/${obsproc_ver}/${RUN}.${PDY}/${cyc}/${COMPONENT}} + mkdir -m 755 -p $COMOUT +fi + +################################################### +# SETUP GDAS OR GFS DATA DUMP PROCESSING VARIABLES +################################################### + +######################################################### +# Specify variables specific to this execution of script +######################################################### +export JOB_NUMBER=2 + +export PROCESS_GRIBFLDS=${PROCESS_GRIBFLDS:-YES} # normally runs +export PROCESS_DUMP=${PROCESS_DUMP:-YES} # normally runs +export prepssmi=NO # "spssmi" reprocessed dump no longer generated + # since SSM/I instrument on F-13 has failed (11/2009) +export KEEP_NEARDUP_ACFT=${KEEP_NEARDUP_ACFT:-NO} # toss near-dupl. acft rpts + +# During the period where both Goodberlet and NN3 SSM/I products are +# being dumped, switch PREPSSMI_PROD_TYPE will direct the PREPSSMI +# program to process from SSM/I data dumps that are either all GOODBERLET, +# all NEURAL_NET3 or some COMBINATION of these two +# -- rendered meaningless after 11/2009 since prepssmi now set to "no" (above) + +export PREPSSMI_PROD_TYPE=COMBINATION + +# POE must be set to on if running poe +##export POE=on + +# -- or -- BACK must be set to on if running background shells +export BACK=on # "on" is default + +env + +[ $RUN = gdas ] && export NET=gdas +##################### +# Execute the script +##################### +$SCRIPTSobsproc/exglobal_dump.sh +eval err_${RUN}_dump2=$? +eval [[ \$err_${RUN}_dump2 -ne 0 ]] && $DATA/err_exit + +echo "$SITE `hostname` -- `date -u`" > $COMOUT/where_${cycle}_${RUN}_dump2_ran + +> $COMOUT/obsproc_version_for_${cycle}_${RUN}_dump2_run +[ -n "$obsproc_ver" ] && \ + echo "OBSPROC version is $obsproc_ver" >> \ + $COMOUT/obsproc_version_for_${cycle}_${RUN}_dump2_run +[ -n "$bufr_dump_ver" ] && \ + echo "BUFR_DUMP version used by this job is $bufr_dump_ver" >> \ + $COMOUT/obsproc_version_for_${cycle}_${RUN}_dump2_run +echo "Version of module \"grib_util\" used by this job is $grib_util_ver" \ + >> $COMOUT/obsproc_version_for_${cycle}_${RUN}_dump2_run + +if [ "$KEEPDATA" != YES ]; then + cd $DATAROOT + rm -rf $DATA +fi +date -u + +exit diff --git a/jobs/JOBSPROC_RAP_DUMP b/jobs/JOBSPROC_RAP_DUMP index 7448352..3af0227 100755 --- a/jobs/JOBSPROC_RAP_DUMP +++ b/jobs/JOBSPROC_RAP_DUMP @@ -249,6 +249,8 @@ fi ######################################################### # Specify variables specific to this execution of script ######################################################### +export JOB_NUMBER=1 + if [ $RUN = rap_p ]; then #if [ $RUN = rap_p -o $RUN = rap_eh ]; then # 10/2019; rap_eh disabled for HRRRv4 export PROCESS_GRIBFLDS=${PROCESS_GRIBFLDS:-NO} # defaults to NO in diff --git a/jobs/JOBSPROC_RAP_DUMP2 b/jobs/JOBSPROC_RAP_DUMP2 new file mode 100755 index 0000000..9455af6 --- /dev/null +++ b/jobs/JOBSPROC_RAP_DUMP2 @@ -0,0 +1,321 @@ +#!/bin/bash +set -xa +date -u + +################################################################### +# Set DEBUG LEVEL - modifies info in execution trace prompt string +################################################################### +export DEBUG_LEVEL=${DEBUG_LEVEL=1} +case $DEBUG_LEVEL in + 1) export PS4='+ ${SECONDS}s + ' ;; # add seconds (this is typical case) + 0) export PS4='+ ';; # don't include seconds (useful if + # want to diff output from 2 runs) + 2) export PS4='+ ${SECONDS}s:L$LINENO + ';; # add script line # + 3) export PS4='+ ${SECONDS}s:${0##*/}:L$LINENO + ';;# add script name & line # + 4) export PS4='+ ${0##*/}:L$LINENO + ';; # script name & line (no seconds) + *) echo "Unrecognized DEBUG_LEVEL. Stay with current PS4 setting";; +esac + +######################################## +# Check that required variables are set +######################################## +set +x +echo +echo cyc is ${cyc:?"###FATAL ERROR \"cyc\" is not set"} +echo envir is ${envir:?"###FATAL ERROR \"envir\" is not set"} +echo job is ${job:?"###FATAL ERROR \"job\" is not set"} +echo DATAROOT is ${DATAROOT:?"###FATAL ERROR \"DATAROOT\" is not set"} +echo +set -x + +############################### +# Print out version information +############################### +set +x +echo +echo "####################################################################" +echo +echo "OBSPROC version is ${obsproc_ver:-not set}" +echo "BUFR_DUMP version used by this job, for dump and dumplist, is \ +${bufr_dump_ver:-not set}" +echo "grib_util module version used by this job is ${grib_util_ver:-not set}" +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)bufr_dump/") -eq 0 ]]; + then echo "bufr_dump is required but not loaded! Exiting..."; + exit; +fi + +echo +echo "####################################################################" +echo +set -x + +##################################################################### +# List modules loaded for this job +# On luna/surge may need to initialize the Modules package to find +# the module command. Will do so for either system. +##################################################################### +set +x +echo +echo "####################################################################" +echo + module list +echo +echo "####################################################################" +echo +set -x + +########################### +# Specify NET and RUN Name +########################### +export obsNET=${obsNET:-obsproc} +export NET=${NET:-rap} +echo $job | grep pcyc +err_p=$? +echo $job | grep erly +err_e=$? +#echo $job | grep ehrrr +#err_eh=$? +if [ $err_p = 0 ]; then + export RUN=${RUN:-rap_p} # Partial cycle +elif [ $err_e = 0 ]; then + export RUN=${RUN:-rap_e} # Early cycle +#elif [ $err_eh = 0 ]; then # 10/2019; disabled for HRRRv4 +# export RUN=${RUN:-rap_eh} # Early HRRR cycle +else + export RUN=${RUN:-rap} # Full cycle +fi + +set +x +echo +echo obsNET is ${obsNET:?"###FATAL ERROR \"obsNET\" is not set"} +echo NET is ${NET:?"###FATAL ERROR \"NET\" is not set"} +echo RUN is ${RUN:?"###FATAL ERROR \"RUN\" is not set"} +echo +set -x + +############################## +# Specify cycle and time-mark +############################## +export cycle=t${cyc}z +export tmmark=tm00 + +############################### +# Create new working directory +############################### +host=$(hostname -s) +export DATA=${DATA:-$DATAROOT/${jobid}.${host}} +rm -rf $DATA +mkdir -p $DATA +cd $DATA +if [[ "$RUN_ENVIR" != nco ]]; then + TMPDIR=$DATAROOT # In the event TMPDIR is reset to a temporary LSF + # directory when batch jobs are submitted, set it to + # $DATAROOT so ensure it remains under the user's control + # (normally needed only if child script dumpjb executed) +fi + +###################################### +# Set job log file for postmsg output +###################################### +jlogfile=${jlogfile:-${DATA}/jlogfile} + +###################################### +# Determine Job Output Name on System +###################################### +export pid=$$ +export outid="LL$job" +[ $envir != prod ] && export outid="LL${job}_${envir}" +export jobid="${outid}.o${pid}" +export pgmout="OUTPUT.${pid}" + +################################################# +# SENDCOM - Copy files to $COMOUT directory +# SENDECF - Flag Events on ECFLOW +# SENDDBN - Alert output file to TOC +################################################ +export SENDCOM=${SENDCOM:-YES} +export SENDECF=${SENDECF:-YES} +export SENDDBN=${SENDDBN:-YES} + +########################## +# Specify Execution Areas +########################## + +# ------------------------------- +# Paths for obsproc_network items +# ------------------------------- +export HOMEobsproc=${HOMEobsproc:\ +-${PACKAGEROOT:?}/${obsNET}/${obsproc_ver:?\ +"###FATAL ERROR \"obsproc_ver\" is not set"}} + +export SCRIPTSobsproc=${SCRIPTSobsproc:\ +-$HOMEobsproc/scripts} + +# ---------------------------------------------------- +# Paths for dump and bufr_dumplist items +# variables predefined when bufr_dump module is loaded +# ---------------------------------------------------- + +export USHbufr_dump=${USHbufr_dump:-$HOMEbufr_dump/ush} +export FIXbufr_dump=${FIXbufr_dump:-$HOMEbufr_dump/fix} + +# NOTE: path to dump executables defaults to $HOMEbufr_dump/exec in dumpjb + +# directory path to data dump script executed in model script +# ----------------------------------------------------------- +export ushscript_dump=${ushscript_dump:-$USHbufr_dump} + +# --------------------------------------------------------- +# Paths for combined obsproc and dump items +# --------------------------------------------------------- + +# directory paths to SSMI dump re-processing executed in bufr_dump_obs +# -------------------------------------------------------------------- +export EXECPREP=${EXECPREP:-$HOMEbufr_dump/exec} +export PARMPREP=${PARMPREP:-$HOMEobsproc/parm} +export FIXPREP=${FIXPREP:-$HOMEbufr_dump/fix} # also path to expanded NAM + # domain mask file + +# directory paths to ERS, QuikSCAT & ASCAT dump re-processing executed in +# bufr_dump_obs +# ----------------------------------------------------------------------- +export EXECWAVE=${EXECWAVE:-$HOMEbufr_dump/exec} +export PARMWAVE=${PARMWAVE:-$HOMEobsproc/parm} +export FIXWAVE=${FIXWAVE:-$HOMEbufr_dump/fix} + +# directory paths to SSMI, TRMM & WindSAT dump re-processing executed in +# bufr_dump_obs +# ---------------------------------------------------------------------- +export EXECbufr=${EXECbufr:-$HOMEbufr_dump/exec} +export PARMbufr=${PARMbufr:-$HOMEobsproc/parm} +export FIXbufr=${FIXbufr:-$HOMEbufr_dump/fix} + +# --------------------------- +# Paths for non-obsproc items +# --------------------------- + +# TANK is root directory path to observational database used in dumpjb +# -------------------------------------------------------------------- +export DCOMROOT=${DCOMROOT:-/lfs/h1/ops/prod/dcom} +export TANK=${TANK:-${DCOMROOT}} + +# directory path to imssnow grib files used in model script +# --------------------------------------------------------- +export TANK_GRIBFLDS=${TANK_GRIBFLDS:-${DCOMROOT}} + +######################################################################### +# Add some prod utilities to working directory +######################################################################### +echo "step ############# break ##############################" > ./break +cp $UTILROOT/ush/err_chk .; chmod +x err_chk +cp $UTILROOT/ush/err_exit .; chmod +x err_exit +cp $UTILROOT/ush/prep_step .; chmod +x prep_step +cp $UTILROOT/ush/postmsg .; chmod +x postmsg +cp $UTILROOT/ush/setpdy.sh .; chmod +x setpdy.sh + +########################################## +# Run setpdy and initialize PDY variables +########################################## +./setpdy.sh +. PDY + +######################### +# Define COM directories +######################### +export COMIN_ROOT=${COMIN_ROOT:-${COMROOT:-""}} + +if [[ "$RUN_ENVIR" == nco ]]; then + export COMIN=${COMIN:-$(compath.py ${envir}/${obsNET}/${obsproc_ver}/${RUN}.${PDY})} + export COMOUT=${COMOUT:-$(compath.py -o ${obsNET}/${obsproc_ver}/${RUN}.${PDY})} + mkdir -m 775 -p $COMOUT +else + export COMIN=${COMIN:-${COMIN_ROOT:?}/${obsNET}/${obsproc_ver}/${RUN}.${PDY}} + +# COMOUT_ROOT for developers defaults to unique $DATA/com directory as root to +# prevent job from writing into a non-unique directory that might already have +# output in it from a previous checkout run for the same cycle +# ----------------------------------------------------------------------------- + export COMOUT_ROOT=${COMOUT_ROOT:-${DATA}/com} + export COMOUT=${COMOUT:-${COMOUT_ROOT:?}/${obsNET}/${obsproc_ver}/${RUN}.${PDY}} + mkdir -m 755 -p $COMOUT +fi + +######################################################################## +# SETUP RAP (full cycle), RAP_P (partial cycle), RAP_E (early cycle) or +# RAP_EH (early HRRR cycle) DATA DUMP PROCESSING VARIABLES +# 10/2019 rap_eh disabled for HRRRv4 +######################################################################## + +######################################################### +# Specify variables specific to this execution of script +######################################################### +export JOB_NUMBER=2 + +if [ $RUN = rap_p ]; then +#if [ $RUN = rap_p -o $RUN = rap_eh ]; then # 10/2019; rap_eh disabled for HRRRv4 + export PROCESS_GRIBFLDS=${PROCESS_GRIBFLDS:-NO} # defaults to NO in + # partial cycle jobs +else + export PROCESS_GRIBFLDS=${PROCESS_GRIBFLDS:-YES} # defaults to YES in + # full and early cycle jobs +fi +export PROCESS_DUMP=${PROCESS_DUMP:-YES} +export prepssmi=NO # "spssmi" reprocessed dump no longer generated + # since SSM/I instrument on F-13 has failed (11/2009) +export KEEP_NEARDUP_ACFT=${KEEP_NEARDUP_ACFT:-NO} # toss near-dupl. acft rpts + +# LALO is set if doing geographic dumping +# Expanded NAM domain: 0.5 degree mask nam_expdomain_halfdeg_imask.gbl +export LALO=${LALO:-"F$FIXPREP/nam_expdomain_halfdeg_imask.gbl"} + +# POE must be set to on if running poe +###export POE=on + +# -- or -- BACK must be set to on if running background shells +export BACK=on # "on" is default + +# 10/2019; rap_eh disabled for HRRRv4 +#if [ $RUN = rap_eh ]; then +# +# Early HRRR cycle jobs will dump only data in DUMP_group6 ("nexrad") +# ------------------------------------------------------------------- +# export num_DUMP_group=7 # test to make sure job & model scripts are in sync +# export DUMP_group1=NO +# export DUMP_group2=NO +# export DUMP_group3=NO +# export DUMP_group4=NO +# export DUMP_group5=NO +# export DUMP_group6=YES +# export DUMP_group7=NO +# +#fi + +env + +##################### +# Execute the script +##################### +$SCRIPTSobsproc/exrap_dump.sh +err_rap_dump2=$? +eval err_${RUN}_dump2=${err_rap_dump} +[[ $err_rap_dump2 -ne 0 ]] && $DATA/err_exit + +echo "$SITE `hostname` -- `date -u`" > $COMOUT/where_${cycle}_${RUN}_dump2_ran + +> $COMOUT/obsproc_version_for_${cycle}_${RUN}_dump2_run +[ -n "$obsproc_ver" ] && \ + echo "OBSPROC version is $obsproc_ver" >> \ + $COMOUT/obsproc_version_for_${cycle}_${RUN}_dump2_run +[ -n "$bufr_dump_ver" ] && \ + echo "BUFR_DUMP version used by this job is $bufr_dump_ver" >> \ + $COMOUT/obsproc_version_for_${cycle}_${RUN}_dump2_run +echo "Version of module \"grib_util\" used by this job is $grib_util_ver" \ + >> $COMOUT/obsproc_version_for_${cycle}_${RUN}_dump2_run + +if [ "$KEEPDATA" != YES ]; then + cd $DATAROOT + rm -rf $DATA +fi +date -u + +exit diff --git a/scripts/exglobal_dump.sh b/scripts/exglobal_dump.sh index 2f4edb5..66674a0 100755 --- a/scripts/exglobal_dump.sh +++ b/scripts/exglobal_dump.sh @@ -93,6 +93,8 @@ echo " Jul 20 2024 - Turn on group #6, do not run nexrad, run marine" echo " obs instead-axbt,xbtctd,altkob - longer windows" echo " Add sofarw " echo " - Add snomad to group #2 " +echo " Mar 30 2026 - Remove NAP and introdude " +echo " second JOBSPROC_GLOBAL_DUMP2 " ############################################################################# # NOTE: NET is changed to gdas in the parent Job script for the gdas RUN @@ -175,34 +177,41 @@ set +u # ----------------------------------------------------------------------------- #^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +# NOTE: +# Split global dumps to 2 jobs, b/c of slow satwnd and uprair +# Remove NAP and go back to Shelley's original cron kick off times +# But for satwnd and upair - start NAP minutes earlier (global->10min, rap->2min) +# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + if [ -n "$JOB_NUMBER" ]; then set -u if [ $JOB_NUMBER = 2 ]; then - dump_ind=DUMP2 + dump_ind=DUMP2 # quick jobs DUMP_group1=${DUMP_group1:-"YES"} - DUMP_group2=${DUMP_group2:-"NO"} - DUMP_group3=${DUMP_group3:-"NO"} - DUMP_group4=${DUMP_group4:-"NO"} - DUMP_group5=${DUMP_group5:-"NO"} + DUMP_group2=${DUMP_group2:-"YES"} + DUMP_group3=${DUMP_group3:-"YES"} + DUMP_group4=${DUMP_group4:-"YES"} + DUMP_group5=${DUMP_group5:-"NO"} #msonet DUMP_group6=${DUMP_group6:-"YES"} DUMP_group7=${DUMP_group7:-"YES"} DUMP_group8=${DUMP_group8:-"NO"} - DUMP_group9=${DUMP_group9:-"YES"} + DUMP_group9=${DUMP_group9:-"NO"} DUMP_group10=${DUMP_group10:-"YES"} DUMP_group11=${DUMP_group11:-"YES"} DUMP_group12=${DUMP_group12:-"YES"} DUMP_group13=${DUMP_group13:-"NO"} else - dump_ind=DUMP + dump_ind=DUMP # slow jobs DUMP_group1=${DUMP_group1:-"NO"} - DUMP_group2=${DUMP_group2:-"YES"} - DUMP_group3=${DUMP_group3:-"YES"} - DUMP_group4=${DUMP_group4:-"YES"} - DUMP_group5=${DUMP_group5:-"NO"} + DUMP_group2=${DUMP_group2:-"NO"} + DUMP_group3=${DUMP_group3:-"NO"} + DUMP_group4=${DUMP_group4:-"NO"} + DUMP_group5=${DUMP_group5:-"NO"} #msonet DUMP_group6=${DUMP_group6:-"NO"} DUMP_group7=${DUMP_group7:-"NO"} DUMP_group8=${DUMP_group8:-"YES"} - DUMP_group9=${DUMP_group9:-"NO"} + DUMP_group9=${DUMP_group9:-"YES"} DUMP_group10=${DUMP_group10:-"NO"} DUMP_group11=${DUMP_group11:-"NO"} DUMP_group12=${DUMP_group12:-"NO"} @@ -227,16 +236,19 @@ fi # NAP and NAP_adpupa instroduced so that uprair can run early on his own #NAP=${NAP:-600} #b/c cron is moved to run 10min (600s) early -NAP=${NAP:-120} #b/c cron is moved to run 2min (120s) early +#NAP=${NAP:-120} #b/c cron is moved to run 2min (120s) early +#NAP=${NAP:0} #b/c cron is moved to run 2min (120s) early if [ "$NET" = 'gfs' ]; then ADPUPA_wait=${ADPUPA_wait:-"YES"} +# ADPUPA_wait=${ADPUPA_wait:-"NO"} # NAP_adpupa=${NAP_adpupa:-800} #600s(compensate early cron) + 300s(for adpupa data to come) - NAP_adpupa=${NAP_adpupa:-320} #120s(compensate early cron) + 200s(for adpupa data to come) + #NAP_adpupa=${NAP_adpupa:-320} #120s(compensate early cron) + 200s(for adpupa data to come) + #NAP_adpupa=${NAP_adpupa:-200} #120s(compensate early cron) + 200s(for adpupa data to come) ########ADPUPA_wait=${ADPUPA_wait:-"NO"} # saves time if ADPUPA_wait=NO else ADPUPA_wait=${ADPUPA_wait:-"NO"} # NAP_adpupa=${NAP_adpupa:-600} #like other dump groups - NAP_adpupa=${NAP_adpupa:-120} #like other dump groups + #NAP_adpupa=${NAP_adpupa:-120} #like other dump groups fi # send extra output of DUMP2 for monitoring purposes. @@ -606,6 +618,17 @@ if [ "$PROCESS_DUMP" = 'YES' ]; then msg="START THE $tmmark_uc $NET_uc DATA $dump_ind CENTERED ON $dumptime" $DATA/postmsg "$jlogfile" "$msg" +### ASK DIANE IF WE NEED THIS (taken from exnam_dump.sh) +#if [ $CHECK_STATUS = YES -a -s ${COMSP}status${JOB_NUMBER}.${tmmark}.bufr_d ] +#then +# +#msg="**WARNING: status${JOB_NUMBER} file already exists for $tmmark \ +#$PDY$cyc run - no data dumps produced" +#$DATA/postmsg "$jlogfile" "$msg" +# +#else +#.................... + set +x #---------------------------------------------------------------- cat<<\EOF>thread_1; chmod +x thread_1 @@ -623,7 +646,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron +#sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron export STATUS=NO export DUMP_NUMBER=1 @@ -758,7 +781,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron +#sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron export STATUS=NO export DUMP_NUMBER=2 @@ -891,7 +914,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP_adpupa} # to reverse 10min early start of jglobal_dump in cron +#sleep ${NAP_adpupa} # to reverse 10min early start of jglobal_dump in cron export STATUS=NO export DUMP_NUMBER=3 @@ -948,7 +971,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron +#sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron export STATUS=NO export DUMP_NUMBER=4 @@ -1061,7 +1084,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron +#sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron export STATUS=NO export DUMP_NUMBER=5 @@ -1114,7 +1137,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron +#sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron export STATUS=NO export DUMP_NUMBER=6 @@ -1273,7 +1296,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron +#sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron export STATUS=NO export DUMP_NUMBER=7 @@ -1381,7 +1404,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron +#sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron export STATUS=NO export DUMP_NUMBER=8 @@ -1491,7 +1514,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron +#sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron export STATUS=NO export DUMP_NUMBER=9 @@ -1568,7 +1591,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron +#sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron export STATUS=NO export DUMP_NUMBER=10 @@ -1669,7 +1692,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron +#sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron export STATUS=NO export DUMP_NUMBER=11 @@ -1726,7 +1749,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron +#sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron export STATUS=NO export DUMP_NUMBER=12 @@ -1823,7 +1846,7 @@ echo set -x # UPRAIR requires early start, no need to NAP -#sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron +##sleep ${NAP} # to reverse 10min early start of jglobal_dump in cron export STATUS=NO export DUMP_NUMBER=13 @@ -1929,6 +1952,7 @@ else fi # long run times for uprair lead to use of NAP and NAP_adpupa variables (see code above) instead of this code +# IGDK : consider opening up this if adpupa is not catching enough obs # ## if ADPUPA_wait is YES, adpupa and uprair are dumped AFTER all other dump ## threads have run (normally done in real-time GFS runs to dump as late as @@ -1966,6 +1990,10 @@ export STATUS=YES export DUMP_NUMBER=14 $ushscript_dump/bufr_dump_obs.sh $dumptime 3.00 1 null +## ASK DIANE IF WE NEED THIS (taken from exnam_dump.sh) +# endif test for existence of status file +#fi + # endif loop $PROCESS_DUMP fi @@ -2024,6 +2052,7 @@ $err5, $err6, $err7, $err8, $err9, $err10, $err11, $err12, $err13 " # endif loop $PROCESS_DUMP fi + # # copy bufr_dumplist to $COMOUT per NCO SPA request # ------------------------------------------------- diff --git a/scripts/exrap_dump.sh b/scripts/exrap_dump.sh index db577d5..c60d0de 100755 --- a/scripts/exrap_dump.sh +++ b/scripts/exrap_dump.sh @@ -60,6 +60,7 @@ echo " concatenate msonet and msone1 right after dump " echo " - Pull adpupa and uprair into own Dump group " echo " Mar 14 2024 - Split gsrasr and gsrcsr to own dump hroups " echo " Feb 18 2025 - Split gpsipw to own dump group " +echo " Mar 30 2026 - Remove NAP and introduce second DUMP job " ################################################################################ set -xau @@ -102,35 +103,42 @@ set +u # ----------------------------------------------------------------------------- #^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +# NOTE: +# Split global dumps to 2 jobs, b/c of slow satwnd and uprair +# Remove NAP and go back to Shelley's original cron kick off times +# But for satwnd and upair - start NAP minutes earlier (global->10min, rap->2min) +# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + if [ -n "$JOB_NUMBER" ]; then set -u if [ $JOB_NUMBER = 2 ]; then - dump_ind=DUMP2 - DUMP_group1=${DUMP_group1:-"YES"} + dump_ind=DUMP2 #quick jobs + DUMP_group1=${DUMP_group1:-"NO"} DUMP_group2=${DUMP_group2:-"NO"} - DUMP_group3=${DUMP_group3:-"NO"} - DUMP_group4=${DUMP_group4:-"NO"} - DUMP_group5=${DUMP_group5:-"NO"} + DUMP_group3=${DUMP_group3:-"YES"} + DUMP_group4=${DUMP_group4:-"YES"} + DUMP_group5=${DUMP_group5:-"YES"} DUMP_group6=${DUMP_group6:-"YES"} DUMP_group7=${DUMP_group7:-"YES"} DUMP_group8=${DUMP_group8:-"YES"} DUMP_group9=${DUMP_group9:-"YES"} - DUMP_group10=${DUMP_group10:-"NO"} + DUMP_group10=${DUMP_group10:-"YES"} DUMP_group11=${DUMP_group11:-"NO"} DUMP_group12=${DUMP_group12:-"YES"} DUMP_group13=${DUMP_group13:-"YES"} else - dump_ind=DUMP - DUMP_group1=${DUMP_group1:-"NO"} + dump_ind=DUMP #slow + DUMP_group1=${DUMP_group1:-"YES"} DUMP_group2=${DUMP_group2:-"YES"} - DUMP_group3=${DUMP_group3:-"YES"} - DUMP_group4=${DUMP_group4:-"YES"} - DUMP_group5=${DUMP_group5:-"YES"} + DUMP_group3=${DUMP_group3:-"NO"} + DUMP_group4=${DUMP_group4:-"NO"} + DUMP_group5=${DUMP_group5:-"NO"} DUMP_group6=${DUMP_group6:-"NO"} DUMP_group7=${DUMP_group7:-"NO"} DUMP_group8=${DUMP_group8:-"NO"} DUMP_group9=${DUMP_group9:-"NO"} - DUMP_group10=${DUMP_group10:-"YES"} + DUMP_group10=${DUMP_group10:-"NO"} DUMP_group11=${DUMP_group11:-"YES"} DUMP_group12=${DUMP_group12:-"NO"} DUMP_group13=${DUMP_group13:-"NO"} @@ -237,8 +245,8 @@ to ${COMSP}${i}" done fi # endif loop $PROCESS_GRIBFLDS -# NAP is introduced so that uprair can run early on his own -NAP=${NAP:-120} #b/c cron is moved to run 2min (120s) early +## NAP is introduced so that uprair can run early on his own +#NAP=${NAP:-120} #b/c cron is moved to run 2min (120s) early echo "=======> Dump group 1 (thread_1) not executed." > $DATA/1.out echo "=======> Dump group 2 (thread_2) not executed." > $DATA/2.out @@ -321,7 +329,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrap_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrap_dump in cron export STATUS=NO export DUMP_NUMBER=1 @@ -472,7 +480,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrap_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrap_dump in cron export STATUS=NO export DUMP_NUMBER=2 @@ -604,7 +612,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrap_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrap_dump in cron export STATUS=NO export DUMP_NUMBER=3 @@ -698,7 +706,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrap_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrap_dump in cron export STATUS=NO export DUMP_NUMBER=4 @@ -745,7 +753,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrap_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrap_dump in cron export STATUS=NO export DUMP_NUMBER=5 @@ -833,7 +841,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrap_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrap_dump in cron export STATUS=NO export DUMP_NUMBER=6 @@ -1058,7 +1066,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrap_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrap_dump in cron export STATUS=NO export DUMP_NUMBER=7 @@ -1189,7 +1197,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrap_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrap_dump in cron export STATUS=NO export DUMP_NUMBER=8 @@ -1256,7 +1264,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrap_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrap_dump in cron export STATUS=NO export DUMP_NUMBER=9 @@ -1317,7 +1325,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrap_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrap_dump in cron export STATUS=NO export DUMP_NUMBER=10 @@ -1366,7 +1374,7 @@ echo set -x # UPRAIR need to start early -#sleep ${NAP} # to reverse 2min early start of jrap_dump in cron +##sleep ${NAP} # to reverse 2min early start of jrap_dump in cron export STATUS=NO export DUMP_NUMBER=11 @@ -1437,7 +1445,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrap_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrap_dump in cron export STATUS=NO export DUMP_NUMBER=12 @@ -1502,7 +1510,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrap_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrap_dump in cron export STATUS=NO export DUMP_NUMBER=13 @@ -1715,11 +1723,14 @@ $err5, $err6, $err7, $err8, $err9, $err10, $err11, $err12, $err13" set -x fi + + if [ $JOB_NUMBER = 2 ]; then #don't do in JOBSPROC_RAP_DUMP2 # concatenate msone0 and msone1, b/c prepobs only wants one file - cat ${DATA}/msone0.ibm ${DATA}/msone1.ibm > ${DATA}/msonet.ibm - cpfs ${DATA}/msonet.ibm ${COMSP}msonet.${tmmark}.bufr_d - chmod 640 ${COMSP}msonet.${tmmark}.bufr_d - chgrp rstprod ${COMSP}msonet.${tmmark}.bufr_d + cat ${DATA}/msone0.ibm ${DATA}/msone1.ibm > ${DATA}/msonet.ibm + cpfs ${DATA}/msonet.ibm ${COMSP}msonet.${tmmark}.bufr_d + chmod 640 ${COMSP}msonet.${tmmark}.bufr_d + chgrp rstprod ${COMSP}msonet.${tmmark}.bufr_d + fi # endif loop $PROCESS_DUMP fi diff --git a/scripts/exrrfs_dump.sh b/scripts/exrrfs_dump.sh index 3213e28..b80e6e5 100755 --- a/scripts/exrrfs_dump.sh +++ b/scripts/exrrfs_dump.sh @@ -7,6 +7,7 @@ echo "History: Nov 20 2025 - Original script generated by leveraging " echo " exrap_dump.sh from Obsproc v1.2.6. " echo " Dec 05 2025 - Removed sevcsr from group 1 as sevcsr data is no " echo " longer available. " +echo " Mar 30 2026 - Remove NAP " ################################################################################ set -xau @@ -184,8 +185,8 @@ to ${COMSP}${i}" done fi # endif loop $PROCESS_GRIBFLDS -# NAP is introduced so that upair can run early on its own -NAP=${NAP:-0} #Currently no slowdown to allow uprair to execute earlier. +## NAP is introduced so that upair can run early on its own +#NAP=${NAP:-0} #Currently no slowdown to allow uprair to execute earlier. echo "=======> Dump group 1 (thread_1) not executed." > $DATA/1.out echo "=======> Dump group 2 (thread_2) not executed." > $DATA/2.out @@ -265,7 +266,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrrfs_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrrfs_dump in cron export STATUS=NO export DUMP_NUMBER=1 @@ -412,7 +413,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrrfs_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrrfs_dump in cron export STATUS=NO export DUMP_NUMBER=2 @@ -544,7 +545,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrrfs_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrrfs_dump in cron export STATUS=NO export DUMP_NUMBER=3 @@ -638,7 +639,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrrfs_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrrfs_dump in cron export STATUS=NO export DUMP_NUMBER=4 @@ -685,7 +686,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrrfs_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrrfs_dump in cron export STATUS=NO export DUMP_NUMBER=5 @@ -773,7 +774,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrrfs_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrrfs_dump in cron export STATUS=NO export DUMP_NUMBER=6 @@ -998,7 +999,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrrfs_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrrfs_dump in cron export STATUS=NO export DUMP_NUMBER=7 @@ -1129,7 +1130,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrrfs_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrrfs_dump in cron export STATUS=NO export DUMP_NUMBER=8 @@ -1200,7 +1201,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrrfs_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrrfs_dump in cron export STATUS=NO export DUMP_NUMBER=9 @@ -1265,7 +1266,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrap_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrap_dump in cron export STATUS=NO export DUMP_NUMBER=10 @@ -1313,7 +1314,7 @@ echo set -x # UPRAIR needs to start early -#sleep ${NAP} # to reverse 2min early start of jrap_dump in cron +##sleep ${NAP} # to reverse 2min early start of jrap_dump in cron export STATUS=NO export DUMP_NUMBER=11 @@ -1381,7 +1382,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrap_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrap_dump in cron export STATUS=NO export DUMP_NUMBER=12 @@ -1446,7 +1447,7 @@ echo "********************************************************************" echo set -x -sleep ${NAP} # to reverse 2min early start of jrrfs_dump in cron +#sleep ${NAP} # to reverse 2min early start of jrrfs_dump in cron export STATUS=NO export DUMP_NUMBER=13 diff --git a/triggers/jglobal_dump.wc2.pbs b/triggers/jglobal_dump.wc2.pbs index 9b79e75..2fddf5d 100755 --- a/triggers/jglobal_dump.wc2.pbs +++ b/triggers/jglobal_dump.wc2.pbs @@ -5,7 +5,7 @@ #PBS -q dev #PBS -l walltime=00:20:00 #PBS -A OBSPROC-DEV -#PBS -l place=vscatter,select=1:ncpus=14:mem=100gb +#PBS -l place=vscatter,select=1:ncpus=14:mem=500gb #PBS -l debug=true ############################################## @@ -13,10 +13,10 @@ # Run from [ps]tmp when running manually # When running from cron, output is written to /u/$USER. Bottom of trigger mv's to stmp # For specific PDY: -# > jtyp=[gdas][gfs] cyc=00 PDY=20170126 desc=somethingfun /u/Shelley.Melchior/bin/cycqsub /path/to/triggers/jglobal_dump.wc2.pbs +# > jtyp=[gdas][gfs] cyc=00 PDY=20170126 desc=somethingfun /u/iliana.genkova/bin/cycqsub /path/to/triggers/jglobal_dump.wc2.pbs # For latest/current PDY: -# > jtyp=[gdas][gfs] cyc=00 desc=somethingfun /u/Shelley.Melchior/bin/cycqsub /path/to/triggers/jglobal_dump.wc2.pbs -# cycqsub location: /u/Shelley.Melchior/bin +# > jtyp=[gdas][gfs] cyc=00 desc=somethingfun /u/iliana.genkova/bin/cycqsub /path/to/triggers/jglobal_dump.wc2.pbs +# cycqsub location: /u/iliana.genkova/bin ############################################## set -xu @@ -32,16 +32,18 @@ export PDY=%PDY% userROOT=/lfs/h2/emc/obsproc/noscrub/$USER -export obsproc_ver=v1.0 -export obsproc_ver_pckg=v1.0.0 -export bufr_dump_ver=1.0.0 +export obsproc_ver=v5.0 +export obsproc_ver_pckg=v1.2.1 export obsNET=obsproc -PACKAGEROOTpara=/lfs/h1/ops/para/packages +#PACKAGEROOTpara=/lfs/h1/ops/para/packages #export HOMEobsproc=${PACKAGEROOTpara}/obsproc.${obsproc_ver_pckg} # NCO para #export HOMEobsproc=${PACKAGEROOT}/obsproc.${obsproc_ver_pckg} # NCO prod -export HOMEobsproc=${userROOT}/install/obsproc-rmprep # local +#export HOMEobsproc=${userROOT}/install/obsproc-rel.v1.0.0 # SM local +export HOMEobsproc=${userROOT}/GIT/play/obsproc.G # IG local -VERSION_FILE=$HOMEobsproc/versions/run.ver +VERSION_FILE=$HOMEobsproc/versions/run.ver # NCO prod +#VERSION_FILE=${userROOT}/install/obsproc-rel.v1.0.0/versions/run.ver # SM local +#VERSION_FILE=${userROOT}/GIT/obsproc/versions/run.ver # IG local if [ -f $VERSION_FILE ]; then . $VERSION_FILE else @@ -49,22 +51,33 @@ else exit 7 fi +#already in versioins/run.ver :) +export bufr_dump_ver=5.0.0 #1.0.0 + # Load the modules specified in $VERSION_FILE module load libjpeg module load grib_util/${grib_util_ver} module load netcdf/${netcdf_ver} +# use para installation +#module use /apps/ops/para/nco/modulefiles/compiler/intel/19.1.3.304 +#module use ${userROOT}/install/bufr-dump/modulefiles +#module unload bufr_dump/${bufr_dump_ver} +#module use ${userROOT}/GIT/play/bufr-dump.ATMS_VIIRS/install/modulefiles +#module load bufr_dump/${bufr_dump_ver} +#echo LOADED ILIANA bufr-dump +#module use ${userROOT}/GIT/prepobs/install/modulefiles module load intel/${intel_ver} module load craype/${craype_ver} module load cray-mpich/${cray_mpich_ver} module load cray-pals/${cray_pals_ver} module load cfp/${cfp_ver} -# use para installation -#module use /apps/ops/para/nco/modulefiles/compiler/intel/19.1.3.304 -# use local bufr_dump installation + + module unload bufr_dump -#module use ${userROOT}/install/bufr_dump/modulefiles -module use ${userROOT}/install/bufr-dump-rel.1.0.0/modulefiles +module use ${userROOT}/GIT/play/bufr-dump.G/install/modulefiles module load bufr_dump/${bufr_dump_ver} +echo LOADED ILIANA bufr-dump +echo $BUFR_DUMPLIST # Be sure the modules are loaded if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)prod_util/") -eq 0 ]]; then echo "prod_util is not loaded!"; fi @@ -85,6 +98,18 @@ export SENDDBN=NO # developer export SENDSDM=NO # developer export TANK=$DCOMROOT +export TANK_004030=/lfs/h1/ops/dev/dcom #Windborne and Sorcerer Feb11, obs as of 16z +export TANK_002102=/lfs/h1/ops/dev/dcom/ # 002103->002101->002102 dev uprair from ship, to catch Urban sky, as of 20260220 00z + +#export TANK_001103=/lfs/h1/ops/dev/dcom #NDBC buoys in BUFR have HSMSL (think GL,M.Morris) + +#export TANK_002101=/lfs/h1/ops/dev/dcom/ # 002103->002101dev uprair from ship, to catch Urban sky + +# GMI tanks are in prod already June 2022 +#export TANK_021246=/lfs/h2/emc/obsproc/noscrub/ashley.stanfield/git/TANK_DUMP #${userROOT}/DCOMDIR/TEST/prod/ + +#export EPRM=${userROOT}/sample_sdmedit.txt +#export EPRM=/lfs/h2/emc/obsproc/noscrub/iliana.genkova/SDMEDIT/sample_sdmedit.txt export DATAROOT=/lfs/h2/emc/stmp/$USER export jlogfile=/lfs/h2/emc/stmp/$USER/${JTYP}.$PDY.jlogfile @@ -93,11 +118,11 @@ export COMOUT_ROOT=${DATAROOT}/CRON/${DESC}/com export COMPONENT=atmos export DEBUG_LEVEL=3 -export LOUD=on +export LOUD=on #ON export KEEPDATA=YES -$HOMEobsproc/jobs/JOBSPROC_GLOBAL_DUMP +$HOMEobsproc/jobs/JOBSPROC_GLOBAL_DUMP #slow jobs err=$? # When run from cron, the stdout is written to /u/$USER @@ -110,21 +135,51 @@ if [ -f "$cronlogfile" ]; then mv $cronlogfile ${outputdir}/$PBS_JOBNAME.o$pbsjobid fi -# If you wish to only run the dump job, un-comment the exit line below -#exit +# ... existing Script A code ... +if [ $err -eq 0 ]; then + touch /lfs/h2/emc/stmp/${USER}/${JTYP}_dump_done.txt + # Check if B is already done + #try with the where* files, hoping $COMOUT is exported from the job run above!!!!!!!!!!!! + #if [ -f $COMOUT/where_${cycle}_${RUN}_dump2_ran]; then + if [ -f /lfs/h2/emc/stmp/${USER}/${JTYP}_dump2_done.txt ]; then + echo "A finished last. Triggering Script C." + echo "submit jglobal_dump_post" + jtyp=$JTYP PDY=$PDY desc=$DESC bash -l /u/$USER/bin/cycqsub \ + ${userROOT}/Trigs.KEEP/jglobal_dump_post.wc2.pbs.G + + # Clean up flags for the next run + rm -f /lfs/h2/emc/stmp/${USER}/${JTYP}_*_done.txt + fi +fi + +exit #!!!!!!!!!!!!!!!! + +# Kick off dump2 job +if [ $err -eq 0 ]; then + #if [ $err2 -eq 0 ]; then + echo "submit jglobal_dump2_post" + jtyp=$JTYP PDY=$PDY desc=$DESC bash -l /u/$USER/bin/cycqsub \ + ${userROOT}/Trigs.KEEP/jglobal_dump2_post.wc2.pbs.G + #/lfs/h2/emc/obsproc/noscrub/iliana.genkova/Trigs.KEEP/jglobal_dump_post.wc2.pbs + #fi # WILL err1 be exported and kept in the memomry if it's a separate job in the queue? +fi # Kick off dump_post job if [ $err -eq 0 ]; then + #if [ $err2 -eq 0 ]; then echo "submit jglobal_dump_post" jtyp=$JTYP PDY=$PDY desc=$DESC bash -l /u/$USER/bin/cycqsub \ - /lfs/h2/emc/obsproc/noscrub/Shelley.Melchior/triggers/jglobal_dump_post.wc2.pbs + ${userROOT}/Trigs.KEEP/jglobal_dump_post.wc2.pbs.G + #/lfs/h2/emc/obsproc/noscrub/iliana.genkova/Trigs.KEEP/jglobal_dump_post.wc2.pbs + #fi # WILL err1 be exported and kept in the memomry if it's a separate job in the queue? fi # Kick off prep job if [ $err -eq 0 ]; then echo "submit jglobal_prep" jtyp=$JTYP PDY=$PDY desc=$DESC bash -l /u/$USER/bin/cycqsub \ - /lfs/h2/emc/obsproc/noscrub/Shelley.Melchior/triggers/jglobal_prep.wc2.pbs + ${userROOT}/Trigs.KEEP/jglobal_prep.wc2.pbs.G + #/lfs/h2/emc/obsproc/noscrub/iliana.genkova/Trigs.KEEP/jglobal_prep.wc2.pbs fi exit diff --git a/triggers/jglobal_dump2.wc2.pbs b/triggers/jglobal_dump2.wc2.pbs new file mode 100755 index 0000000..17bce5e --- /dev/null +++ b/triggers/jglobal_dump2.wc2.pbs @@ -0,0 +1,174 @@ +#!/bin/sh +#PBS -N obsproc_%JTYP%_dump2_%PDY%_%CC%_%DESC% +#PBS -j oe +#PBS -S /bin/bash +#PBS -q dev +#PBS -l walltime=00:20:00 +#PBS -A OBSPROC-DEV +#PBS -l place=vscatter,select=1:ncpus=14:mem=500gb +#PBS -l debug=true + +############################################## +# Submit notes:% +# Run from [ps]tmp when running manually +# When running from cron, output is written to /u/$USER. Bottom of trigger mv's to stmp +# For specific PDY: +# > jtyp=[gdas][gfs] cyc=00 PDY=20170126 desc=somethingfun /u/iliana.genkova/bin/cycqsub /path/to/triggers/jglobal_dump.wc2.pbs +# For latest/current PDY: +# > jtyp=[gdas][gfs] cyc=00 desc=somethingfun /u/iliana.genkova/bin/cycqsub /path/to/triggers/jglobal_dump.wc2.pbs +# cycqsub location: /u/iliana.genkova/bin +############################################## + +set -xu + +export envir=prod + +export cyc=%CC% +DESC=%DESC% +JTYP=%JTYP% +export job=${JTYP}_dump_$cyc +export jobid=$job.$PBS_JOBID +export PDY=%PDY% + +userROOT=/lfs/h2/emc/obsproc/noscrub/$USER + +export obsproc_ver=v5.0 +export obsproc_ver_pckg=v1.2.1 +export obsNET=obsproc +#PACKAGEROOTpara=/lfs/h1/ops/para/packages +#export HOMEobsproc=${PACKAGEROOTpara}/obsproc.${obsproc_ver_pckg} # NCO para +#export HOMEobsproc=${PACKAGEROOT}/obsproc.${obsproc_ver_pckg} # NCO prod +#export HOMEobsproc=${userROOT}/install/obsproc-rel.v1.0.0 # SM local +export HOMEobsproc=${userROOT}/GIT/play/obsproc.G # IG local + +VERSION_FILE=$HOMEobsproc/versions/run.ver # NCO prod +#VERSION_FILE=${userROOT}/install/obsproc-rel.v1.0.0/versions/run.ver # SM local +#VERSION_FILE=${userROOT}/GIT/obsproc/versions/run.ver # IG local +if [ -f $VERSION_FILE ]; then + . $VERSION_FILE +else + echo Need version info... Exiting... + exit 7 +fi + +#already in versioins/run.ver :) +export bufr_dump_ver=5.0.0 #1.0.0 + +# Load the modules specified in $VERSION_FILE +module load libjpeg +module load grib_util/${grib_util_ver} +module load netcdf/${netcdf_ver} +# use para installation +#module use /apps/ops/para/nco/modulefiles/compiler/intel/19.1.3.304 +#module use ${userROOT}/install/bufr-dump/modulefiles +#module unload bufr_dump/${bufr_dump_ver} +#module use ${userROOT}/GIT/play/bufr-dump.ATMS_VIIRS/install/modulefiles +#module load bufr_dump/${bufr_dump_ver} +#echo LOADED ILIANA bufr-dump +#module use ${userROOT}/GIT/prepobs/install/modulefiles +module load intel/${intel_ver} +module load craype/${craype_ver} +module load cray-mpich/${cray_mpich_ver} +module load cray-pals/${cray_pals_ver} +module load cfp/${cfp_ver} + + +module unload bufr_dump +module use ${userROOT}/GIT/play/bufr-dump.G/install/modulefiles +module load bufr_dump/${bufr_dump_ver} +echo LOADED ILIANA bufr-dump +echo $BUFR_DUMPLIST + +# Be sure the modules are loaded +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)prod_util/") -eq 0 ]]; then echo "prod_util is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)prod_envir/") -eq 0 ]]; then echo "prod_envir is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)libjpeg/") -eq 0 ]]; then echo "libjpeg is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)grib_util/") -eq 0 ]]; then echo "grib_util is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)netcdf/") -eq 0 ]]; then echo "netcdf is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)bufr_dump/") -eq 0 ]]; then echo "bufr_dump is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)intel/") -eq 0 ]]; then echo "intel is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)craype/") -eq 0 ]]; then echo "craype is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)cray-mpich/") -eq 0 ]]; then echo "cray-mpich is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)cray-pals/") -eq 0 ]]; then echo "cray-pals is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)cfp/") -eq 0 ]]; then echo "cfp is not loaded!"; fi + + +export SENDECF=NO # developer +export SENDDBN=NO # developer +export SENDSDM=NO # developer + +export TANK=$DCOMROOT +export TANK_004030=/lfs/h1/ops/dev/dcom #Windborne and Sorcerer Feb11, obs as of 16z +export TANK_002102=/lfs/h1/ops/dev/dcom/ # 002103->002101->002102 dev uprair from ship, to catch Urban sky, as of 20260220 00z + +#export TANK_001103=/lfs/h1/ops/dev/dcom #NDBC buoys in BUFR have HSMSL (think GL,M.Morris) + +#export TANK_002101=/lfs/h1/ops/dev/dcom/ # 002103->002101dev uprair from ship, to catch Urban sky + +# GMI tanks are in prod already June 2022 +#export TANK_021246=/lfs/h2/emc/obsproc/noscrub/ashley.stanfield/git/TANK_DUMP #${userROOT}/DCOMDIR/TEST/prod/ + +#export EPRM=${userROOT}/sample_sdmedit.txt +#export EPRM=/lfs/h2/emc/obsproc/noscrub/iliana.genkova/SDMEDIT/sample_sdmedit.txt + +export DATAROOT=/lfs/h2/emc/stmp/$USER +export jlogfile=/lfs/h2/emc/stmp/$USER/${JTYP}.$PDY.jlogfile + +export COMOUT_ROOT=${DATAROOT}/CRON/${DESC}/com +export COMPONENT=atmos + +export DEBUG_LEVEL=3 +export LOUD=on #ON +export KEEPDATA=YES + + +$HOMEobsproc/jobs/JOBSPROC_GLOBAL_DUMP2 +export err=$? + +# When run from cron, the stdout is written to /u/$USER +# mv to stmp +pbsjobid=$(echo $PBS_JOBID | cut -d'.' -f1) +cronlogfile=/u/$USER/$PBS_JOBNAME.o$pbsjobid +outputdir=/lfs/h2/emc/stmp/${USER}/CRON/${DESC}/output +if [ -f "$cronlogfile" ]; then + mkdir -p $outputdir + mv $cronlogfile ${outputdir}/$PBS_JOBNAME.o$pbsjobid +fi + +# ... existing Script B code ... +if [ $err -eq 0 ]; then + touch /lfs/h2/emc/stmp/${USER}/${JTYP}_dump2_done.txt + # Check if A is already done + if [ -f /lfs/h2/emc/stmp/${USER}/${JTYP}_dump_done.txt ]; then + echo "B finished last. Triggering Script C." + echo "submit jglobal_dump_post" + jtyp=$JTYP PDY=$PDY desc=$DESC bash -l /u/$USER/bin/cycqsub \ + ${userROOT}/Trigs.KEEP/jglobal_dump_post.wc2.pbs.G + + # Clean up flags for the next run + rm -f /lfs/h2/emc/stmp/${USER}/${JTYP}_*_done.txt + + fi +fi + + +exit # GLOBAL_DUMP (the slow jobs) will trigger dump_post +####################################################################### + +# Kick off dump_post job +if [ $err -eq 0 ]; then + echo "submit jglobal_dump_post" + jtyp=$JTYP PDY=$PDY desc=$DESC bash -l /u/$USER/bin/cycqsub \ + ${userROOT}/Trigs.KEEP/jglobal_dump_post.wc2.pbs.G + #/lfs/h2/emc/obsproc/noscrub/iliana.genkova/Trigs.KEEP/jglobal_dump_post.wc2.pbs +fi + +# Kick off prep job +if [ $err -eq 0 ]; then + echo "submit jglobal_prep" + jtyp=$JTYP PDY=$PDY desc=$DESC bash -l /u/$USER/bin/cycqsub \ + ${userROOT}/Trigs.KEEP/jglobal_prep.wc2.pbs.G + #/lfs/h2/emc/obsproc/noscrub/iliana.genkova/Trigs.KEEP/jglobal_prep.wc2.pbs +fi + +exit diff --git a/triggers/jrap_dump.wc2.pbs b/triggers/jrap_dump.wc2.pbs index 9b302c6..0835e88 100755 --- a/triggers/jrap_dump.wc2.pbs +++ b/triggers/jrap_dump.wc2.pbs @@ -4,8 +4,9 @@ #PBS -S /bin/bash #PBS -q dev #PBS -A OBSPROC-DEV -#PBS -l walltime=00:30:00 -#PBS -l place=vscatter,select=1:ncpus=8:mem=5gb +#PBS -l walltime=00:45:00 +#PBS -l place=vscatter,select=1:ncpus=14:mem=120gb +####PBS -l place=vscatter,select=1:ncpus=8:mem=50gb #PBS -l debug=true ##################################################################### # Submit notes: @@ -36,16 +37,17 @@ fi export jobid=$job.$PBS_JOBID export PDY=%PDY% -userROOT=/lfs/h2/emc/obsproc/noscrub/$USER +userROOT=/lfs/h2/emc/obsproc/noscrub/${USER} -export obsproc_ver=v1.0 -export obsproc_ver_pckg=v1.0.0 -export bufr_dump_ver=1.0.0 +export obsproc_ver=v5.0 +export obsproc_ver_pckg=v1.0.2 export obsNET=obsproc PACKAGEROOTpara=/lfs/h1/ops/para/packages #export HOMEobsproc=${PACKAGEROOTpara}/obsproc.${obsproc_ver_pckg} # NCO para #export HOMEobsproc=${PACKAGEROOT}/obsproc.${obsproc_ver_pckg} # NCO prod -export HOMEobsproc=${userROOT}/install/obsproc-rmprep # local +#export HOMEobsproc=${userROOT}/install/obsproc-rmprep # local +#export HOMEobsproc=${userROOT}/GIT/play/obsproc.RAPall +export HOMEobsproc=${userROOT}/GIT/play/obsproc.G # IG local VERSION_FILE=$HOMEobsproc/versions/run.ver if [ -f $VERSION_FILE ]; then @@ -55,6 +57,8 @@ else exit 7 fi +export bufr_dump_ver=5.0.0 #1.0.0 + # Load the modules specified in $VERSION_FILE module load libjpeg module load grib_util/${grib_util_ver} @@ -69,7 +73,8 @@ module load cfp/${cfp_ver} # use local bufr_dump installation module unload bufr_dump #module use ${userROOT}/install/bufr_dump/modulefiles -module use ${userROOT}/install/bufr-dump-rel.1.0.0/modulefiles +#module use ${userROOT}/install/bufr-dump-rel.1.0.0/modulefiles +module use /lfs/h2/emc/obsproc/noscrub/${USER}/GIT/play/bufr-dump.G/install/modulefiles #Gv1.1.0 module load bufr_dump/${bufr_dump_ver} # Be sure the modules are loaded @@ -90,46 +95,76 @@ export SENDSDM=NO # developer export SENDDBN=NO # developer export TANK=$DCOMROOT +#test +#export TANK_002101=/lfs/h1/ops/dev/dcom/ # 002103->002101dev uprair from ship, to catch Urban sky + +#test tank size check for MSONET and MSONE1 tanks +#export TANK_MAX_255003=500 +#export TANK_001103=/lfs/h1/ops/dev/dcom #NDBC buoys in BUFR have HSMSL (think GL,M.Morris) +export TANK_004030=/lfs/h1/ops/dev/dcom #Windborne and Sorcerer +export TANK_002102=/lfs/h1/ops/dev/dcom/ # 002103->002101->002102 dev uprair from ship, to catch Urban sky -export DATAROOT=/lfs/h2/emc/stmp/$USER -export jlogfile=/lfs/h2/emc/stmp/$USER/${JTYP}.$PDY.jlogfile +export DATAROOT=/lfs/h2/emc/stmp/${USER} +export jlogfile=/lfs/h2/emc/stmp/${USER}/${JTYP}.$PDY.jlogfile export COMOUT_ROOT=${DATAROOT}/CRON/${DESC}/com -export LOUD=ON +export LOUD=on #ON export KEEPDATA=YES export DEBUG_LEVEL=3 -$HOMEobsproc/jobs/JOBSPROC_RAP_DUMP +$HOMEobsproc/jobs/JOBSPROC_RAP_DUMP #slow dump groups err=$? - # When run from cron, the stdout is written to /u/$USER # mv to stmp pbsjobid=$(echo $PBS_JOBID | cut -d'.' -f1) cronlogfile=/u/$USER/$PBS_JOBNAME.o$pbsjobid -outputdir=/lfs/h2/emc/stmp/${USER}/CRON/${DESC}/output +outputdir=/lfs/h2/emc/stmp/$USER/CRON/${DESC}/output if [ -f "$cronlogfile" ]; then mkdir -p $outputdir mv $cronlogfile ${outputdir}/$PBS_JOBNAME.o$pbsjobid fi +# ... existing Script A code ... +if [ $err -eq 0 ]; then + touch /lfs/h2/emc/stmp/${USER}/${JTYP}_dump_done.txt + # Check if B is already done + if [ -f /lfs/h2/emc/stmp/${USER}/${JTYP}_dump2_done.txt ]; then + echo "A finished last. Triggering Script C." + echo "submit jrap_dump_post" + jtyp=$JTYP PDY=$PDY desc=$DESC bash -l /u/$USER/bin/cycqsub \ + ${userROOT}/Trigs.KEEP/jrap_dump_post.wc2.pbs.G + + # Clean up flags for the next run + rm -f /lfs/h2/emc/stmp/${USER}/${JTYP}_*_done.txt + fi +fi + +exit # If you wish to only run the dump job, un-comment the exit line below #exit +# Kick off dump2 job +if [ $err1 -eq 0 ]; then + echo "submit jrap_dump2" + jtyp=$JTYP PDY=$PDY desc=$DESC bash -l /u/$USER/bin/cycqsub \ + /lfs/h2/emc/obsproc/noscrub/$USER/Trigs.KEEP/jrap_dump2.wc2.pbs.G +fi + # Kick off dump_post job if [ $err -eq 0 ]; then echo "submit jrap_dump_post" jtyp=$JTYP PDY=$PDY desc=$DESC bash -l /u/$USER/bin/cycqsub \ - /lfs/h2/emc/obsproc/noscrub/Shelley.Melchior/triggers/jrap_dump_post.wc2.pbs + /lfs/h2/emc/obsproc/noscrub/$USER/Trigs.KEEP/jrap_dump_post.wc2.pbs.G fi # Kick off prep job if [ $err -eq 0 ]; then echo "submit jrap_prep" jtyp=$JTYP PDY=$PDY desc=$DESC bash -l /u/$USER/bin/cycqsub \ - /lfs/h2/emc/obsproc/noscrub/Shelley.Melchior/triggers/jrap_prep.wc2.pbs + /lfs/h2/emc/obsproc/noscrub/$USER/Trigs.KEEP/jrap_prep.wc2.pbs.G fi exit diff --git a/triggers/jrap_dump2.wc2.pbs b/triggers/jrap_dump2.wc2.pbs new file mode 100755 index 0000000..fa6b241 --- /dev/null +++ b/triggers/jrap_dump2.wc2.pbs @@ -0,0 +1,168 @@ +#!/bin/bash +#PBS -N obsproc_%JTYP%_dump2_%PDY%_%CC%_%DESC% +#PBS -j oe +#PBS -S /bin/bash +#PBS -q dev +#PBS -A OBSPROC-DEV +#PBS -l walltime=00:45:00 +#PBS -l place=vscatter,select=1:ncpus=14:mem=120gb +####PBS -l place=vscatter,select=1:ncpus=8:mem=50gb +#PBS -l debug=true +##################################################################### +# Submit notes: +# Run from [ps]tmp when running manually +# When running from cron, output is written to /u/$USER. Bottom of trigger mv's to stmp +# For specific PDY: +# > jtyp=rap|rap_e|rap_p cyc=00 PDY=20170126 desc=somethingfun /u/Shelley.Melchior/bin/cycqsub /path/to/triggers/jrap_dump.wc2.pbs +# For latest/current PDY: +# > jtyp=rap cyc=00 /u/Shelley.Melchior/bin/cycqsub /path/to/triggers/jrap_dump.wc2.pbs +# cycqsub location: /u/Shelley.Melchior/bin +##################################################################### + +set -xu + + +export envir=prod +export cyc=%CC% +type=%DESC% +JTYP=%JTYP% +DESC=%DESC% +if [ $JTYP = "rap_e" ]; then + export job=$(echo $JTYP | cut -c1-3)_dump_erly_$cyc +elif [ $JTYP = "rap_p" ]; then + export job=$(echo $JTYP | cut -c1-3)_dump_pcyc_$cyc +else + export job=${JTYP}_dump_$cyc +fi +export jobid=$job.$PBS_JOBID +export PDY=%PDY% + +userROOT=/lfs/h2/emc/obsproc/noscrub/${USER} + +export obsproc_ver=v5.0 +export obsproc_ver_pckg=v1.0.2 +export obsNET=obsproc +PACKAGEROOTpara=/lfs/h1/ops/para/packages +#export HOMEobsproc=${PACKAGEROOTpara}/obsproc.${obsproc_ver_pckg} # NCO para +#export HOMEobsproc=${PACKAGEROOT}/obsproc.${obsproc_ver_pckg} # NCO prod +#export HOMEobsproc=${userROOT}/install/obsproc-rmprep # local +#export HOMEobsproc=${userROOT}/GIT/play/obsproc.RAPall +export HOMEobsproc=${userROOT}/GIT/play/obsproc.G # IG local + +VERSION_FILE=$HOMEobsproc/versions/run.ver +if [ -f $VERSION_FILE ]; then + . $VERSION_FILE +else + echo Need version info... Exiting... + exit 7 +fi + +export bufr_dump_ver=5.0.0 #1.0.0 + +# Load the modules specified in $VERSION_FILE +module load libjpeg +module load grib_util/${grib_util_ver} +module load netcdf/${netcdf_ver} +module load intel/${intel_ver} +module load craype/${craype_ver} +module load cray-mpich/${cray_mpich_ver} +module load cray-pals/${cray_pals_ver} +module load cfp/${cfp_ver} +# use para installation +#module use /apps/ops/para/nco/modulefiles/compiler/intel/19.1.3.304 +# use local bufr_dump installation +module unload bufr_dump +#module use ${userROOT}/install/bufr_dump/modulefiles +#module use ${userROOT}/install/bufr-dump-rel.1.0.0/modulefiles +module use /lfs/h2/emc/obsproc/noscrub/${USER}/GIT/play/bufr-dump.G/install/modulefiles #Gv1.1.0 +module load bufr_dump/${bufr_dump_ver} + +# Be sure the modules are loaded +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)prod_util/") -eq 0 ]]; then echo "prod_util is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)prod_envir/") -eq 0 ]]; then echo "prod_envir is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)libjpeg/") -eq 0 ]]; then echo "libjpeg is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)grib_util/") -eq 0 ]]; then echo "grib_util is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)netcdf/") -eq 0 ]]; then echo "netcdf is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)bufr_dump/") -eq 0 ]]; then echo "bufr_dump is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)intel/") -eq 0 ]]; then echo "intel is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)craype/") -eq 0 ]]; then echo "craype is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)cray-mpich/") -eq 0 ]]; then echo "cray-mpich is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)cray-pals/") -eq 0 ]]; then echo "cray-pals is not loaded!"; fi +if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)cfp/") -eq 0 ]]; then echo "cfp is not loaded!"; fi + +export SENDECF=NO # developer +export SENDSDM=NO # developer +export SENDDBN=NO # developer + +export TANK=$DCOMROOT +#test +#export TANK_002101=/lfs/h1/ops/dev/dcom/ # 002103->002101dev uprair from ship, to catch Urban sky + +#test tank size check for MSONET and MSONE1 tanks +#export TANK_MAX_255003=500 +#export TANK_001103=/lfs/h1/ops/dev/dcom #NDBC buoys in BUFR have HSMSL (think GL,M.Morris) +export TANK_004030=/lfs/h1/ops/dev/dcom #Windborne and Sorcerer +export TANK_002102=/lfs/h1/ops/dev/dcom/ # 002103->002101->002102 dev uprair from ship, to catch Urban sky + +export DATAROOT=/lfs/h2/emc/stmp/${USER} +export jlogfile=/lfs/h2/emc/stmp/${USER}/${JTYP}.$PDY.jlogfile + +export COMOUT_ROOT=${DATAROOT}/CRON/${DESC}/com + +export LOUD=on #ON +export KEEPDATA=YES +export DEBUG_LEVEL=3 + + +$HOMEobsproc/jobs/JOBSPROC_RAP_DUMP2 +err=$? + + +# When run from cron, the stdout is written to /u/$USER +# mv to stmp +pbsjobid=$(echo $PBS_JOBID | cut -d'.' -f1) +cronlogfile=/u/$USER/$PBS_JOBNAME.o$pbsjobid +outputdir=/lfs/h2/emc/stmp/$USER/CRON/${DESC}/output +if [ -f "$cronlogfile" ]; then + mkdir -p $outputdir + mv $cronlogfile ${outputdir}/$PBS_JOBNAME.o$pbsjobid +fi + +# ... existing Script B code ... +if [ $err -eq 0 ]; then + touch /lfs/h2/emc/stmp/${USER}/${JTYP}_dump2_done.txt + # Check if A is already done + if [ -f /lfs/h2/emc/stmp/${USER}/${JTYP}_dump_done.txt ]; then + echo "B finished last. Triggering Script C." + echo "submit jrap_dump_post" + jtyp=$JTYP PDY=$PDY desc=$DESC bash -l /u/$USER/bin/cycqsub \ + ${userROOT}/Trigs.KEEP/jrap_dump_post.wc2.pbs.G + + # Clean up flags for the next run + rm -f /lfs/h2/emc/stmp/${USER}/${JTYP}_*_done.txt + fi +fi + +exit + +# If you wish to only run the dump job, un-comment the exit line below +echo "leaving second rap dump job" +exit + +echo "we are not here" + +## Kick off dump_post job +#if [ $err -eq 0 ]; then +# echo "submit jrap_dump_post" +# jtyp=$JTYP PDY=$PDY desc=$DESC bash -l /u/$USER/bin/cycqsub \ +# /lfs/h2/emc/obsproc/noscrub/$USER/Trigs.KEEP/jrap_dump_post.wc2.pbs.G +#fi + +## Kick off prep job +#if [ $err -eq 0 ]; then +# echo "submit jrap_prep" +# jtyp=$JTYP PDY=$PDY desc=$DESC bash -l /u/$USER/bin/cycqsub \ +# /lfs/h2/emc/obsproc/noscrub/$USER/Trigs.KEEP/jrap_prep.wc2.pbs.G +#fi + +exit From ba7c968efac629caef699ec458b791623277f8bd Mon Sep 17 00:00:00 2001 From: Dagmar Merkova <60443455+dmerkova@users.noreply.github.com> Date: Thu, 23 Apr 2026 15:32:37 -0400 Subject: [PATCH 3/3] Fixing issue with GRIBFIELD in split global dump job. --- jobs/JOBSPROC_GLOBAL_DUMP | 2 +- jobs/JOBSPROC_GLOBAL_DUMP2 | 2 +- scripts/exglobal_dump.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jobs/JOBSPROC_GLOBAL_DUMP b/jobs/JOBSPROC_GLOBAL_DUMP index 053b914..8cd6a95 100755 --- a/jobs/JOBSPROC_GLOBAL_DUMP +++ b/jobs/JOBSPROC_GLOBAL_DUMP @@ -234,7 +234,7 @@ fi ######################################################### export JOB_NUMBER=1 -export PROCESS_GRIBFLDS=${PROCESS_GRIBFLDS:-YES} # normally runs +export PROCESS_GRIBFLDS=${PROCESS_GRIBFLDS:-NO} # GRIBFLDS run in JOB_NUMBER=2 export PROCESS_DUMP=${PROCESS_DUMP:-YES} # normally runs export prepssmi=NO # "spssmi" reprocessed dump no longer generated # since SSM/I instrument on F-13 has failed (11/2009) diff --git a/jobs/JOBSPROC_GLOBAL_DUMP2 b/jobs/JOBSPROC_GLOBAL_DUMP2 index 558ebe5..ed0c0c9 100755 --- a/jobs/JOBSPROC_GLOBAL_DUMP2 +++ b/jobs/JOBSPROC_GLOBAL_DUMP2 @@ -234,7 +234,7 @@ fi ######################################################### export JOB_NUMBER=2 -export PROCESS_GRIBFLDS=${PROCESS_GRIBFLDS:-YES} # normally runs +export PROCESS_GRIBFLDS=${PROCESS_GRIBFLDS:-YES} # GRIBFLDS run in JOB_NUMBER=2 export PROCESS_DUMP=${PROCESS_DUMP:-YES} # normally runs export prepssmi=NO # "spssmi" reprocessed dump no longer generated # since SSM/I instrument on F-13 has failed (11/2009) diff --git a/scripts/exglobal_dump.sh b/scripts/exglobal_dump.sh index 66674a0..bbef02d 100755 --- a/scripts/exglobal_dump.sh +++ b/scripts/exglobal_dump.sh @@ -283,7 +283,7 @@ set -x export COMSP=$COMOUT/$RUN.${cycle}. -if [ "$PROCESS_GRIBFLDS" = 'YES' ]; then +if [ "$PROCESS_GRIBFLDS" = 'YES' -a "${JOB_NUMBER:-2}" = '2' ]; then ######################################################## ########################################################