-
Notifications
You must be signed in to change notification settings - Fork 111
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Baseline set of utility scripts to start a GDAS/ENKF cycle using FV3GFS data as input. The scripts pull the needed data from HPSS and run the chgres_cube program for the high-res and ENKF members. chgres_cube - Fix three argument mismatches in call to error handler routine (see #69 for details). Update Cray build module to point to my own copy of the wgrib2 api instead of Dusan's. Point to official version of ESMF v8 on Cray and Dell. This commit references #33.
- Loading branch information
1 parent
aeca779
commit 5b422ce
Showing
15 changed files
with
1,117 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
#----------------------------------------------------------- | ||
# | ||
# 1) Compile the chgres_cube program. Invoke | ||
# ./sorc/build_chgres_cube.sh | ||
# | ||
# 2) Ensure links to the 'fixed' directories are | ||
# set. See the ./sorc/link_fixdirs.sh script prolog | ||
# for details. | ||
# | ||
# 3) Set all config variables. See definitions | ||
# below. | ||
# | ||
# 4) Invoke the driver script for your machine (with no | ||
# arguments). | ||
# | ||
# Variable definitions: | ||
# -------------------- | ||
# EXTRACT_DIR - directory where data extracted from HPSS | ||
# is stored. | ||
# EXTRACT_DATA - Set to 'yes' to extract data from HPSS. | ||
# If data has been extracted and is located | ||
# in EXTRACT_DIR, set to 'no'. | ||
# RUN_CHGRES - To run chgres, set to 'yes'. To extract | ||
# data only, set to 'no'. | ||
# yy/mm/dd/hh - The year/month/day/hour of your desired | ||
# experiment. Currently, does not support | ||
# pre-ENKF GFS data, prior to | ||
# 2012 May 21 00z. | ||
# LEVS - Number of hybrid levels plus 1. To | ||
# run with 64 levels, set LEVS to 65. | ||
# CRES_HIRES - Resolution of the hires component of | ||
# your experiment. | ||
# CRES_ENKF - Resolution of the enkf component of the | ||
# your experiment. | ||
# UFS_DIR - Location of your checked out UFS_UTILS | ||
# repo. | ||
# OUTDIR - Directory where data output from chgres is stored. | ||
# | ||
#----------------------------------------------------------- | ||
|
||
EXTRACT_DIR=/gpfs/dell1/stmp/$USER/gdas.init/input | ||
EXTRACT_DATA=yes | ||
|
||
RUN_CHGRES=yes | ||
|
||
yy=2017 | ||
mm=07 | ||
dd=19 | ||
hh=18 | ||
|
||
LEVS=65 | ||
|
||
CRES_HIRES=C192 | ||
CRES_ENKF=C96 | ||
|
||
UFS_DIR=$PWD/../.. | ||
|
||
OUTDIR=/gpfs/dell1/stmp/$USER/gdas.init/output | ||
|
||
#--------------------------------------------------------- | ||
# Dont touch anything below here. | ||
#--------------------------------------------------------- | ||
|
||
gfs_ver=v15 | ||
|
||
# No ENKF data prior to 2012/05/21/00z | ||
if [ $yy$mm$dd$hh -lt 2012052100 ]; then | ||
set +x | ||
echo FATAL ERROR: SCRIPTS DO NOT SUPPORT OLD GFS DATA | ||
exit 2 | ||
elif [ $yy$mm$dd$hh -lt 2016051000 ]; then | ||
gfs_ver=v12 | ||
elif [ $yy$mm$dd$hh -lt 2017072000 ]; then | ||
gfs_ver=v13 | ||
elif [ $yy$mm$dd$hh -lt 2019061200 ]; then | ||
gfs_ver=v14 | ||
fi | ||
|
||
export EXTRACT_DIR yy mm dd hh UFS_DIR OUTDIR CRES_HIRES CRES_ENKF RUN_CHGRES | ||
export LEVS gfs_ver |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,147 @@ | ||
#!/bin/bash | ||
|
||
#---------------------------------------------------------------------- | ||
# Driver script for running on Cray. | ||
# | ||
# Edit the 'config' file before running. | ||
#---------------------------------------------------------------------- | ||
|
||
set -x | ||
|
||
module purge | ||
module load PrgEnv-intel/5.2.56 | ||
module rm intel | ||
module load intel/16.3.210 | ||
module load cray-mpich/7.2.0 | ||
module load craype-haswell | ||
module load cray-netcdf/4.3.3.1 | ||
module load xt-lsfhpc/9.1.3 | ||
module load prod_util/1.1.0 | ||
module load hpss/4.1.0.3 | ||
module list | ||
|
||
PROJECT_CODE=GFS-DEV | ||
|
||
source config | ||
|
||
if [ $EXTRACT_DATA == yes ]; then | ||
|
||
rm -fr $EXTRACT_DIR | ||
mkdir -p $EXTRACT_DIR | ||
|
||
QUEUE=dev_transfer | ||
|
||
MEM=6000 | ||
WALLT="2:00" | ||
|
||
case $gfs_ver in | ||
v12 | v13) | ||
bsub -o log.data.hires -e log.data.hires -q $QUEUE -P $PROJECT_CODE -J get.data.hires -W $WALLT \ | ||
-R "rusage[mem=$MEM]" "./get_pre-v14.data.sh hires" | ||
bsub -o log.data.enkf -e log.data.enkf -q $QUEUE -P $PROJECT_CODE -J get.data.enkf -W $WALLT \ | ||
-R "rusage[mem=$MEM]" "./get_pre-v14.data.sh enkf" | ||
DEPEND="-w ended(get.data.*)" | ||
;; | ||
v14) | ||
bsub -o log.data.hires -e log.data.hires -q $QUEUE -P $PROJECT_CODE -J get.data.hires -W $WALLT \ | ||
-R "rusage[mem=$MEM]" "./get_v14.data.sh hires" | ||
bsub -o log.data.enkf -e log.data.enkf -q $QUEUE -P $PROJECT_CODE -J get.data.enkf -W $WALLT \ | ||
-R "rusage[mem=$MEM]" "./get_v14.data.sh enkf" | ||
DEPEND="-w ended(get.data.*)" | ||
;; | ||
v15) | ||
bsub -o log.data.hires -e log.data.hires -q $QUEUE -P $PROJECT_CODE -J get.data.hires -W $WALLT \ | ||
-R "rusage[mem=$MEM]" "./get_v15.data.sh hires" | ||
bsub -o log.data.grp1 -e log.data.grp1 -q $QUEUE -P $PROJECT_CODE -J get.data.enkf1 -W $WALLT \ | ||
-R "rusage[mem=$MEM]" "./get_v15.data.sh grp1" | ||
bsub -o log.data.grp2 -e log.data.grp2 -q $QUEUE -P $PROJECT_CODE -J get.data.enkf2 -W $WALLT \ | ||
-R "rusage[mem=$MEM]" "./get_v15.data.sh grp2" | ||
bsub -o log.data.grp3 -e log.data.grp3 -q $QUEUE -P $PROJECT_CODE -J get.data.enkf3 -W $WALLT \ | ||
-R "rusage[mem=$MEM]" "./get_v15.data.sh grp3" | ||
bsub -o log.data.grp4 -e log.data.grp4 -q $QUEUE -P $PROJECT_CODE -J get.data.enkf4 -W $WALLT \ | ||
-R "rusage[mem=$MEM]" "./get_v15.data.sh grp4" | ||
bsub -o log.data.grp5 -e log.data.grp5 -q $QUEUE -P $PROJECT_CODE -J get.data.enkf5 -W $WALLT \ | ||
-R "rusage[mem=$MEM]" "./get_v15.data.sh grp5" | ||
bsub -o log.data.grp6 -e log.data.grp6 -q $QUEUE -P $PROJECT_CODE -J get.data.enkf6 -W $WALLT \ | ||
-R "rusage[mem=$MEM]" "./get_v15.data.sh grp6" | ||
bsub -o log.data.grp7 -e log.data.grp7 -q $QUEUE -P $PROJECT_CODE -J get.data.enkf7 -W $WALLT \ | ||
-R "rusage[mem=$MEM]" "./get_v15.data.sh grp7" | ||
bsub -o log.data.grp8 -e log.data.grp8 -q $QUEUE -P $PROJECT_CODE -J get.data.enkf8 -W $WALLT \ | ||
-R "rusage[mem=$MEM]" "./get_v15.data.sh grp8" | ||
DEPEND="-w ended(get.data.*)" | ||
;; | ||
esac | ||
|
||
else | ||
|
||
DEPEND=' ' | ||
|
||
fi | ||
|
||
if [ $RUN_CHGRES == yes ]; then | ||
MEM=2000 | ||
QUEUE=dev | ||
MEMBER=hires | ||
WALLT="0:15" | ||
NUM_NODES=1 | ||
case $gfs_ver in | ||
v12 | v13) | ||
export OMP_NUM_THREADS=2 | ||
export OMP_STACKSIZE=1024M | ||
;; | ||
*) | ||
export OMP_NUM_THREADS=1 | ||
;; | ||
esac | ||
export APRUN="aprun -j 1 -n 12 -N 12 -d ${OMP_NUM_THREADS} -cc depth" | ||
if [ $CRES_HIRES == 'C768' ] ; then | ||
WALLT="0:20" | ||
NUM_NODES=3 | ||
export APRUN="aprun -j 1 -n 36 -N 12 -d ${OMP_NUM_THREADS} -cc depth" | ||
elif [ $CRES_HIRES == 'C1152' ] ; then | ||
WALLT="0:20" | ||
NUM_NODES=4 | ||
export APRUN="aprun -j 1 -n 48 -N 12 -d ${OMP_NUM_THREADS} -cc depth" | ||
fi | ||
case $gfs_ver in | ||
v12 | v13) | ||
bsub -e log.${MEMBER} -o log.${MEMBER} -q $QUEUE -P $PROJECT_CODE -J chgres_${MEMBER} -M $MEM -W $WALLT \ | ||
-extsched 'CRAYLINUX[]' $DEPEND "export NODES=$NUM_NODES; ./run_pre-v14.chgres.sh ${MEMBER}" | ||
;; | ||
v14) | ||
bsub -e log.${MEMBER} -o log.${MEMBER} -q $QUEUE -P $PROJECT_CODE -J chgres_${MEMBER} -M $MEM -W $WALLT \ | ||
-extsched 'CRAYLINUX[]' $DEPEND "export NODES=$NUM_NODES; ./run_v14.chgres.sh ${MEMBER}" | ||
;; | ||
v15) | ||
bsub -e log.${MEMBER} -o log.${MEMBER} -q $QUEUE -P $PROJECT_CODE -J chgres_${MEMBER} -M $MEM -W $WALLT \ | ||
-extsched 'CRAYLINUX[]' $DEPEND "export NODES=$NUM_NODES; ./run_v15.chgres.sh ${MEMBER}" | ||
;; | ||
esac | ||
|
||
WALLT="0:15" | ||
NUM_NODES=1 | ||
export APRUN="aprun -j 1 -n 12 -N 12 -d ${OMP_NUM_THREADS} -cc depth" | ||
MEMBER=1 | ||
while [ $MEMBER -le 80 ]; do | ||
if [ $MEMBER -lt 10 ]; then | ||
MEMBER_CH="00${MEMBER}" | ||
else | ||
MEMBER_CH="0${MEMBER}" | ||
fi | ||
case $gfs_ver in | ||
v12 | v13) | ||
bsub -e log.${MEMBER_CH} -o log.${MEMBER_CH} -q $QUEUE -P $PROJECT_CODE -J chgres_${MEMBER_CH} -M $MEM -W $WALLT \ | ||
-extsched 'CRAYLINUX[]' $DEPEND "export NODES=$NUM_NODES; ./run_pre-v14.chgres.sh ${MEMBER_CH}" | ||
;; | ||
v14) | ||
bsub -e log.${MEMBER_CH} -o log.${MEMBER_CH} -q $QUEUE -P $PROJECT_CODE -J chgres_${MEMBER_CH} -M $MEM -W $WALLT \ | ||
-extsched 'CRAYLINUX[]' $DEPEND "export NODES=$NUM_NODES; ./run_v14.chgres.sh ${MEMBER_CH}" | ||
;; | ||
v15) | ||
bsub -e log.${MEMBER_CH} -o log.${MEMBER_CH} -q $QUEUE -P $PROJECT_CODE -J chgres_${MEMBER_CH} -M $MEM -W $WALLT \ | ||
-extsched 'CRAYLINUX[]' $DEPEND "export NODES=$NUM_NODES; ./run_v15.chgres.sh ${MEMBER_CH}" | ||
;; | ||
esac | ||
MEMBER=$(( $MEMBER + 1 )) | ||
done | ||
fi |
Oops, something went wrong.