Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions dev/drivers/scripts/prep/aigefs/jevs_prep_aigefs_atmos.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
#PBS -N jevs_prep_aigefs_atmos
#PBS -j oe
#PBS -S /bin/bash
#PBS -q dev
#PBS -A VERF-DEV
#PBS -l walltime=01:30:00
#PBS -l place=vscatter:exclhost,select=2:ncpus=48:mem=400GB:prepost=true
#PBS -l debug=true

set -x
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think cd $PBS_O_WORKDIR is needed after the set -x so that the job launches in the directory from which is was submitted?

CC: @malloryprow @AliciaBentley-NOAA

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure it's necessary. Global_ens driver scripts do not have it.

export OMP_NUM_THREADS=1
export HOMEevs=/lfs/h2/emc/vpppg/noscrub/${USER}/EVS
source $HOMEevs/versions/run.ver

export envir=prod
export NET=evs
export STEP=prep
export COMPONENT=aigefs
export RUN=atmos
export MODELNAME=aigefs
export VERIF_CASE=grid2grid

module reset
module load prod_envir/${prod_envir_ver}
source $HOMEevs/dev/modulefiles/$COMPONENT/${COMPONENT}_${STEP}.sh

evs_ver_2d=$(echo $evs_ver | cut -d'.' -f1-2)

export vhr=00

export COMIN=/lfs/h2/emc/vpppg/noscrub/${USER}/$NET/$evs_ver_2d
export COMINaigefs=/lfs/h1/ops/prod/com/aigefs/${aigefs_ver}
export COMINhgefs=/lfs/h1/ops/prod/com/hgefs/${hgefs_ver}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@GwenChen-NOAA Can you please remove the COMINaigefs and COMINhgefs lines from the dev driver? These two lines should be specified in the J-job only when the model output is in prod/com/. Thanks!

CC @malloryprow @AndrewBenjamin-NOAA

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Deleted.

export COMOUT=/lfs/h2/emc/vpppg/noscrub/${USER}/$NET/$evs_ver_2d
export DATAROOT=/lfs/h2/emc/stmp/${USER}/evs/$envir/tmp

export job=${PBS_JOBNAME:-jevs_${STEP}_${MODELNAME}_${VERIF_CASE}}
export jobid=$job.${PBS_JOBID:-$$}

export KEEPDATA=NO
export SENDMAIL=NO
export MAILTO='alicia.bentley@noaa.gov,lichuan.chen@noaa.gov'

if [ -z "$MAILTO" ]; then
echo "MAILTO variable is not defined. Exiting without continuing."
else
${HOMEevs}/jobs/JEVS_PREP_AIGEFS
fi
33 changes: 33 additions & 0 deletions dev/modulefiles/aigefs/aigefs_prep.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/bin/bash
# modulefile for EVS aigefs component, prep step

set -x

module load PrgEnv-intel/${PrgEnvintel_ver}
module load intel/${intel_ver}
module load ve/evs/${ve_evs_ver}
module load cray-mpich/${craympich_ver}
module load g2c/${g2c_ver}
module load gsl/${gsl_ver}
module load prod_util/${prod_util_ver}
module load libaec/${libaec_ver}
module load libjpeg/${libjpeg_ver}
module load libjpeg-turbo/${libjpegturbo_ver}
module load libpng/${libpng_ver}
module load netcdf-D/${netcdfD_ver}
module load zlib/${zlib_ver}
module load jasper/${jasper_ver}
module load udunits/${udunits_ver}
module load grib_util/${grib_util_ver}
module load wgrib2/${wgrib2_ver}
module load cray-pals/${craypals_ver}
module load cfp/${cfp_ver}
module load cdo/${cdo_ver}
module load met/${met_ver}
module load metplus/${metplus_ver}
module load bufr/${bufr_ver}

module list

set -x

4 changes: 4 additions & 0 deletions ecf/defs/evs-nco.def
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ suite evs_nco
edit PROJ 'VERF'
family prep
edit ECF_FILES '%PACKAGEHOME%/ecf/scripts/prep'
family aigefs
task jevs_prep_aigefs_atmos
trigger :TIME >= 0300 and :TIME < 0900
endfamily
family global_ens
task jevs_prep_global_ens_atmos
trigger :TIME >= 0300 and :TIME < 0900
Expand Down
66 changes: 66 additions & 0 deletions ecf/scripts/prep/aigefs/jevs_prep_aigefs_atmos.ecf
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
#PBS -N evs_prep_aigefs_atmos
#PBS -j oe
#PBS -S /bin/bash
#PBS -q %QUEUE%
#PBS -A %PROJ%-%PROJENVIR%
#PBS -l walltime=01:30:00
#PBS -l place=vscatter:exclhost,select=2:ncpus=48:mem=400GB:prepost=true
#PBS -l debug=true

export model=evs
%include <head.h>
%include <envir-p1.h>

############################################################
# Load modules
############################################################
set -x
export COMPONENT=aigefs
export STEP=prep

module load PrgEnv-intel/${PrgEnvintel_ver}
module load intel/${intel_ver}
module load ve/evs/${ve_evs_ver}
module load gsl/${gsl_ver}
module load libjpeg/${libjpeg_ver}
module load libpng/${libpng_ver}
module load zlib/${zlib_ver}
module load jasper/${jasper_ver}
module load udunits/${udunits_ver}
module load grib_util/${grib_util_ver}
module load wgrib2/${wgrib2_ver}
module load cray-pals/${craypals_ver}
module load cfp/${cfp_ver}
module load cdo/${cdo_ver}
module load met/${met_ver}
module load metplus/${metplus_ver}
module load bufr/${bufr_ver}
module list

############################################################
# Specify environment variables
############################################################
if [ -n "%VHR:%" ]; then
export vhr=${vhr:-%VHR:%}
else
export vhr=00
fi
export OMP_NUM_THREADS=1
export NET=evs
export RUN=atmos
export VERIF_CASE=grid2grid
export MODELNAME=aigefs

############################################################
# Execute j-job
############################################################
${HOMEevs}/jobs/JEVS_PREP_AIGEFS
if [ $? -ne 0 ]; then
ecflow_client --msg="***JOB ${ECF_NAME} ERROR RUNNING J-SCRIPT ***"
ecflow_client --abort
exit
fi

%include <tail.h>
%manual
%end
112 changes: 112 additions & 0 deletions jobs/JEVS_PREP_AIGEFS
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
#!/bin/bash
# JOB card created for aigefs prep jobs
# Updated by L. Gwen Chen (lichuan.chen@noaa.gov), 10/03/2025

########################################
# Preliminary data setup step
########################################
set -x

####################################
# SET SHELL PROCESSING VARIABLES
####################################
export PS4='$SECONDS + '
date

###########################################################
# obtain unique LSF id (jobid) and make temp directories
###########################################################
export pid=$$
export DATA=${DATA:-${DATAROOT:?}/${jobid:?}}
mkdir -p $DATA
cd $DATA

####################################
# Define NET/RUN variables
####################################
export NET=${NET:-evs}
export STEP=${STEP:-prep}
export COMPONENT=${COMPONENT:-aigefs}
export RUN=${RUN:-atmos}
export MODELNAME=${MODELNAME:-aigefs}
export MODNAM=echo $MODELNAME | tr '[a-z]' '[A-Z]'
export VERIF_CASE=${VERIF_CASE:-grid2obs}
export OBTYPE=${OBTYPE:-GDAS}

####################################
# Set EVS directories
####################################
export HOMEevs=${HOMEevs:-${PACKAGEROOT}/${NET}.${evs_ver}}
export EXECevs=${EXECevs:-${HOMEevs}/exec}
export PARMevs=${PARMevs:-${HOMEevs}/parm}
export SCRIPTSevs=${SCRIPTSevs:-${HOMEevs}/scripts}
export USHevs=${USHevs:-${HOMEevs}/ush}
export FIXevs=${FIXevs:-${HOMEevs}/fix}

##########################################
# Run setpdy and initialize PDY variables
##########################################
export vhr=${vhr:-00}
export cycle=${cycle:-t${vhr}z}
setpdy.sh 20
. ./PDY

export INITDATE=${INITDATE:-${PDYm2}}

##################################################
### SENDCOM - Copy Files From TMPDIR to $COMOUT
### SENDDBN - Issue DBNet Client Calls
### SENDECF - Flag Events on ecFLOW
### SENDMAIL - Send email if file is missing
##################################################
export SENDCOM=${SENDCOM:-YES}
export SENDDBN=${SENDDBN:-YES}
export SENDECF=${SENDECF:-YES}
export SENDMAIL=${SENDMAIL:-NO}

####################################
# Define COMIN/COMOUT variables
####################################
export COMIN=${COMIN:-$(compath.py ${envir}/com/${NET}/${evs_ver})}
export COMINgfs=${COMINgfs:-$(compath.py $envir/com/gfs/${gfs_ver})}
export COMINgefs=${COMINgefs:-$(compath.py ${envir}/com/gefs/${gefs_ver})}
export COMINaigefs=${COMINaigefs:-$(compath.py ${envir}/com/aigefs/${aigefs_ver})}
export COMINhgefs=${COMINhgefs:-$(compath.py ${envir}/com/hgefs/${hgefs_ver})}
export DCOMIN=${DCOMIN:-${DCOMROOT}}
export COMINccpa=${COMINccpa:-$(compath.py $envir/com/ccpa/${ccpa_ver})}
export COMINobsproc=${COMINobsproc:-$(compath.py $envir/com/obsproc/${obsproc_ver})}
export DCOMINnohrsc=${DCOMINnohrsc:-$DCOMROOT}
export DCOMINosi_saf=${DCOMINosi_saf:-$DCOMROOT}
export DCOMINghrsst=${DCOMINghrsst:-$DCOMROOT}

export EVSINgefs=${COMIN}/${STEP}/${COMPONENT}/atmos.${INITDATE}/gefs
export EVSINaigefs=${COMIN}/${STEP}/${COMPONENT}/atmos.${INITDATE}/aigefs
export EVSINhgefs=${COMIN}/${STEP}/${COMPONENT}/atmos.${INITDATE}/hgefs

export COMOUT=${COMOUT:-$(compath.py -o $NET/${evs_ver})}/$STEP/${COMPONENT}
mkdir -p $COMOUT

export COMOUTgefs=${COMOUTgefs:-${COMOUT}/${RUN}.${INITDATE}/gefs}
export COMOUTaigefs=${COMOUTaigefs:-${COMOUT}/${RUN}.${INITDATE}/aigefs}
export COMOUThgefs=${COMOUThgefs:-${COMOUT}/${RUN}.${INITDATE}/hgefs}
export COMOUTcompleted=${COMOUTcompleted:-${COMOUT}/${RUN}.${INITDATE}/completed}

if [ "${RUN}" == "headline" ]; then
mkdir -p $COMOUTaigefs $COMOUThgefs
elif [ "${RUN}" == "atmos" ]; then
mkdir -p $COMOUTgefs $COMOUTaigefs $COMOUThgefs $COMOUTcompleted
fi
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@GwenChen-NOAA It looks like $RUN is set to atmos in the aigefs prep job. Please remove the part of this if statement that refers to when $RUN is set to headline. If you ever add headline prep to aigefs, this if statement can be added back.

CC @malloryprow @AndrewBenjamin-NOAA

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Deleted.


####################################
# Execute the script
####################################
$HOMEevs/scripts/${STEP}/${COMPONENT}/exevs_${STEP}_${COMPONENT}_${RUN}.sh
export err=$?; err_chk

if [ "${KEEPDATA}" != "YES" ]; then
cd ${DATAROOT}
rm -rf ${DATA}
fi

date

Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
[config]

LOG_METPLUS =

OUTPUT_BASE = {ENV[output_base]}

PROCESS_LIST = PCPCombine

LOOP_BY = INIT
INIT_TIME_FMT = %Y%m%d%H
INIT_BEG = {ENV[vday]}{ENV[ihour]}
INIT_END = {ENV[vday]}{ENV[ihour]}
INIT_INCREMENT = 1H

LEAD_SEQ = {ENV[lead]}

STAT_ANALYSIS_RUNTIME_FREQ = RUN_ONCE_PER_INIT_OR_VALID

FCST_PCP_COMBINE_CONSTANT_INIT = True
FCST_PCP_COMBINE_RUN = True
FCST_PCP_COMBINE_METHOD = ADD

FCST_PCP_COMBINE_INPUT_DIR = {ENV[modelpath]}
FCST_PCP_COMBINE_INPUT_TEMPLATE = {ENV[model]}.ens{ENV[mb]}.t{init?fmt=%H}z.grid3.f{lead?fmt=%3H}.grib2

FCST_PCP_COMBINE_OUTPUT_DIR = {OUTPUT_BASE}
FCST_PCP_COMBINE_OUTPUT_TEMPLATE = {ENV[model]}.ens{ENV[mb]}.t{init?fmt=%H}z.grid3.24h.f{lead?fmt=%3H}.nc

FCST_IS_PROB = false

FCST_PCP_COMBINE_INPUT_DATATYPE = GRIB
FCST_PCP_COMBINE_INPUT_ACCUMS = 6H
FCST_PCP_COMBINE_INPUT_NAMES = APCP
FCST_PCP_COMBINE_INPUT_LEVELS = A06

FCST_PCP_COMBINE_OUTPUT_ACCUM = 24H
FCST_PCP_COMBINE_OUTPUT_NAME =
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
[config]

LOG_METPLUS =

OUTPUT_BASE = {ENV[output_base]}

PROCESS_LIST = PCPCombine

LOOP_BY = INIT
INIT_TIME_FMT = %Y%m%d%H
INIT_BEG = {ENV[vday]}{ENV[ihour]}
INIT_END = {ENV[vday]}{ENV[ihour]}
INIT_INCREMENT = 1H

LEAD_SEQ = {ENV[lead]}

STAT_ANALYSIS_RUNTIME_FREQ = RUN_ONCE_PER_INIT_OR_VALID

FCST_PCP_COMBINE_CONSTANT_INIT = True
FCST_PCP_COMBINE_RUN = True
FCST_PCP_COMBINE_METHOD = ADD

FCST_PCP_COMBINE_INPUT_DIR = {ENV[modelpath]}
FCST_PCP_COMBINE_INPUT_TEMPLATE = {ENV[model]}.ens{ENV[mb]}.t{init?fmt=%H}z.grid3.f{lead?fmt=%3H}.grib2

FCST_PCP_COMBINE_OUTPUT_DIR = {OUTPUT_BASE}
FCST_PCP_COMBINE_OUTPUT_TEMPLATE = {ENV[model]}.ens{ENV[mb]}.t{init?fmt=%H}z.grid3.24h.f{lead?fmt=%3H}.nc

FCST_IS_PROB = false

FCST_PCP_COMBINE_INPUT_DATATYPE = GRIB
FCST_PCP_COMBINE_INPUT_ACCUMS = 6H
FCST_PCP_COMBINE_INPUT_NAMES = APCP
FCST_PCP_COMBINE_INPUT_LEVELS = A06

FCST_PCP_COMBINE_OUTPUT_ACCUM = 24H
FCST_PCP_COMBINE_OUTPUT_NAME =
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
[config]

LOG_METPLUS =

OUTPUT_BASE = {ENV[output_base]}

PROCESS_LIST = PCPCombine

LOOP_BY = INIT
INIT_TIME_FMT = %Y%m%d%H
INIT_BEG = {ENV[vday]}{ENV[ihour]}
INIT_END = {ENV[vday]}{ENV[ihour]}
INIT_INCREMENT = 1H

LEAD_SEQ = {ENV[lead]}

STAT_ANALYSIS_RUNTIME_FREQ = RUN_ONCE_PER_INIT_OR_VALID

FCST_PCP_COMBINE_CONSTANT_INIT = True
FCST_PCP_COMBINE_RUN = True
FCST_PCP_COMBINE_METHOD = ADD

FCST_PCP_COMBINE_INPUT_DIR = {ENV[modelpath]}
FCST_PCP_COMBINE_INPUT_TEMPLATE = {ENV[model]}.ens{ENV[mb]}.t{init?fmt=%H}z.grid3.f{lead?fmt=%3H}.grib2

FCST_PCP_COMBINE_OUTPUT_DIR = {OUTPUT_BASE}
FCST_PCP_COMBINE_OUTPUT_TEMPLATE = {ENV[model]}.ens{ENV[mb]}.t{init?fmt=%H}z.grid3.24h.f{lead?fmt=%3H}.nc

FCST_IS_PROB = false

FCST_PCP_COMBINE_INPUT_DATATYPE = GRIB
FCST_PCP_COMBINE_INPUT_ACCUMS = 6H
FCST_PCP_COMBINE_INPUT_NAMES = APCP
FCST_PCP_COMBINE_INPUT_LEVELS = A06

FCST_PCP_COMBINE_OUTPUT_ACCUM = 24H
FCST_PCP_COMBINE_OUTPUT_NAME =
Loading