diff --git a/util/gdas_init/config b/util/gdas_init/config index 5bfe25a81..628e59c0d 100644 --- a/util/gdas_init/config +++ b/util/gdas_init/config @@ -79,6 +79,10 @@ OUTDIR=/lfs/h2/emc/stmp/$USER/gdas.init/output #--------------------------------------------------------- # Dont touch anything below here. #--------------------------------------------------------- + +GDAS_INIT_DIR=$UFS_DIR/util/gdas_init +EXEC_DIR=$UFS_DIR/exec + if [ "$use_v16retro" = "yes" ]; then gfs_ver=v16retro @@ -113,4 +117,4 @@ else fi export EXTRACT_DIR yy mm dd hh UFS_DIR OUTDIR CRES_HIRES CRES_ENKF FRAC_ORO -export LEVS gfs_ver +export LEVS gfs_ver EXEC_DIR GDAS_INIT_DIR diff --git a/util/gdas_init/copy_coldstart_files.sh b/util/gdas_init/copy_coldstart_files.sh new file mode 100755 index 000000000..deeb0a29a --- /dev/null +++ b/util/gdas_init/copy_coldstart_files.sh @@ -0,0 +1,72 @@ +#!/bin/bash + +# Copy files from the working directory to the +# output directory. + +copy_data() +{ + +set -x + +mkdir -p $SAVEDIR +cp gfs_ctrl.nc $SAVEDIR + +for tile in 'tile1' 'tile2' 'tile3' 'tile4' 'tile5' 'tile6' +do + cp out.atm.${tile}.nc ${SAVEDIR}/gfs_data.${tile}.nc + cp out.sfc.${tile}.nc ${SAVEDIR}/sfc_data.${tile}.nc +done +} + +set -x + +MEMBER=$1 +OUTDIR=$2 +yy=$3 +mm=$4 +dd=$5 +hh=$6 +INPUT_DATA_DIR=$7 + +if [ ${MEMBER} == 'hires' ]; then + MEMBER='gdas' +fi + +set +x +echo 'COPY DATA TO OUTPUT DIRECTORY' +set -x + +if [ ${MEMBER} == 'gdas' ] || [ ${MEMBER} == 'gfs' ]; then + SUBDIR=$OUTDIR/${MEMBER}.${yy}${mm}${dd}/${hh} + rm -fr $SUBDIR + SAVEDIR=$SUBDIR/atmos/INPUT + copy_data + if [ ${MEMBER} == 'gdas' ]; then + cp ${INPUT_DATA_DIR}/*abias* $SAVEDIR/.. + cp ${INPUT_DATA_DIR}/*radstat $SAVEDIR/.. + fi + touch $SAVEDIR/../${MEMBER}.t${hh}z.loginc.txt +elif [ ${MEMBER} == 'enkf' ]; then # v16 retro data only. + MEMBER=1 + while [ $MEMBER -le 80 ]; do + if [ $MEMBER -lt 10 ]; then + MEMBER_CH="00${MEMBER}" + else + MEMBER_CH="0${MEMBER}" + fi + SUBDIR=$OUTDIR/enkfgdas.${yy}${mm}${dd}/${hh}/mem${MEMBER_CH} + rm -fr $SUBDIR + SAVEDIR=$SUBDIR/atmos/INPUT + copy_data + touch $SAVEDIR/../enkfgdas.t${hh}z.loginc.txt + MEMBER=$(( $MEMBER + 1 )) + done +else + SUBDIR=$OUTDIR/enkfgdas.${yy}${mm}${dd}/${hh}/mem${MEMBER} + rm -fr $SUBDIR + SAVEDIR=$SUBDIR/atmos/INPUT + copy_data + touch $SAVEDIR/../enkfgdas.t${hh}z.loginc.txt +fi + +exit 0 diff --git a/util/gdas_init/run_pre-v14.chgres.sh b/util/gdas_init/run_pre-v14.chgres.sh index f59ee675a..51290203e 100755 --- a/util/gdas_init/run_pre-v14.chgres.sh +++ b/util/gdas_init/run_pre-v14.chgres.sh @@ -18,8 +18,6 @@ WORKDIR=${WORKDIR:-$OUTDIR/work.${MEMBER}} if [ "${MEMBER}" = "gdas" ] || [ "${MEMBER}" = "gfs" ]; then CTAR=${CRES_HIRES} INPUT_DATA_DIR="${EXTRACT_DIR}/${MEMBER}.${yy}${mm}${dd}/${hh}" - RADSTAT_DATA_DIR="${EXTRACT_DIR}/${MEMBER}.${yy}${mm}${dd}/${hh}" - OUTDIR=$OUTDIR/${MEMBER}.${yy}${mm}${dd}/${hh}/atmos if [ "${MEMBER}" = "gdas" ]; then ATMFILE="gdas1.t${hh}z.sanl" SFCFILE="gdas1.t${hh}z.sfcanl" @@ -30,8 +28,6 @@ if [ "${MEMBER}" = "gdas" ] || [ "${MEMBER}" = "gfs" ]; then else CTAR=${CRES_ENKF} INPUT_DATA_DIR="${EXTRACT_DIR}/enkf.${yy}${mm}${dd}/${hh}/mem${MEMBER}" - RADSTAT_DATA_DIR="${EXTRACT_DIR}/enkf.${yy}${mm}${dd}/${hh}/mem${MEMBER}" - OUTDIR=$OUTDIR/enkfgdas.${yy}${mm}${dd}/${hh}/mem${MEMBER}/atmos ATMFILE="siganl_${yy}${mm}${dd}${hh}_mem${MEMBER}" SFCFILE="sfcanl_${yy}${mm}${dd}${hh}_mem${MEMBER}" fi @@ -40,11 +36,7 @@ rm -fr $WORKDIR mkdir -p $WORKDIR cd $WORKDIR -rm -fr $OUTDIR -mkdir -p $OUTDIR -mkdir -p $OUTDIR/INPUT - -source $UFS_DIR/util/gdas_init/set_fixed_files.sh +source $GDAS_INIT_DIR/set_fixed_files.sh cat << EOF > fort.41 @@ -69,30 +61,14 @@ cat << EOF > fort.41 / EOF -$APRUN $UFS_DIR/exec/chgres_cube +$APRUN $EXEC_DIR/chgres_cube rc=$? if [ $rc != 0 ]; then exit $rc fi -mv gfs_ctrl.nc ${OUTDIR}/INPUT - -for tile in 'tile1' 'tile2' 'tile3' 'tile4' 'tile5' 'tile6' -do - mv out.atm.${tile}.nc ${OUTDIR}/INPUT/gfs_data.${tile}.nc - mv out.sfc.${tile}.nc ${OUTDIR}/INPUT/sfc_data.${tile}.nc -done - -if [ "${MEMBER}" = "gdas" ]; then - cp ${RADSTAT_DATA_DIR}/*radstat* $OUTDIR - cp ${RADSTAT_DATA_DIR}/*abias* $OUTDIR - touch $OUTDIR/gdas.t${hh}z.loginc.txt -elif [ "${MEMBER}" = "gfs" ]; then - touch $OUTDIR/gfs.t${hh}z.loginc.txt -else - touch $OUTDIR/enkfgdas.t${hh}z.loginc.txt -fi +$GDAS_INIT_DIR/copy_coldstart_files.sh $MEMBER $OUTDIR $yy $mm $dd $hh $INPUT_DATA_DIR rm -fr $WORKDIR diff --git a/util/gdas_init/run_v14.chgres.sh b/util/gdas_init/run_v14.chgres.sh index ac63955b0..c1598a7d5 100755 --- a/util/gdas_init/run_v14.chgres.sh +++ b/util/gdas_init/run_v14.chgres.sh @@ -17,16 +17,12 @@ WORKDIR=${WORKDIR:-$OUTDIR/work.${MEMBER}} if [ "${MEMBER}" = "gdas" ] || [ "${MEMBER}" = "gfs" ]; then CTAR=${CRES_HIRES} INPUT_DATA_DIR="${EXTRACT_DIR}/${MEMBER}.${yy}${mm}${dd}/${hh}" - RADSTAT_DATA_DIR="${EXTRACT_DIR}/${MEMBER}.${yy}${mm}${dd}/${hh}" - OUTDIR=$OUTDIR/${MEMBER}.${yy}${mm}${dd}/${hh}/atmos ATMFILE="${MEMBER}.t${hh}z.atmanl.nemsio" SFCFILE="${MEMBER}.t${hh}z.sfcanl.nemsio" NSTFILE="${MEMBER}.t${hh}z.nstanl.nemsio" else CTAR=${CRES_ENKF} INPUT_DATA_DIR="${EXTRACT_DIR}/enkf.${yy}${mm}${dd}/${hh}/mem${MEMBER}" - RADSTAT_DATA_DIR="${EXTRACT_DIR}/enkf.${yy}${mm}${dd}/${hh}/mem${MEMBER}" - OUTDIR=$OUTDIR/enkfgdas.${yy}${mm}${dd}/${hh}/mem${MEMBER}/atmos ATMFILE="gdas.t${hh}z.ratmanl.mem${MEMBER}.nemsio" SFCFILE="gdas.t${hh}z.sfcanl.mem${MEMBER}.nemsio" NSTFILE="gdas.t${hh}z.nstanl.mem${MEMBER}.nemsio" @@ -36,11 +32,7 @@ rm -fr $WORKDIR mkdir -p $WORKDIR cd $WORKDIR -rm -fr $OUTDIR -mkdir -p $OUTDIR -mkdir -p $OUTDIR/INPUT - -source $UFS_DIR/util/gdas_init/set_fixed_files.sh +source $GDAS_INIT_DIR/set_fixed_files.sh cat << EOF > fort.41 @@ -66,30 +58,14 @@ cat << EOF > fort.41 / EOF -$APRUN $UFS_DIR/exec/chgres_cube +$APRUN $EXEC_DIR/chgres_cube rc=$? if [ $rc != 0 ]; then exit $rc fi -mv gfs_ctrl.nc ${OUTDIR}/INPUT - -for tile in 'tile1' 'tile2' 'tile3' 'tile4' 'tile5' 'tile6' -do - mv out.atm.${tile}.nc ${OUTDIR}/INPUT/gfs_data.${tile}.nc - mv out.sfc.${tile}.nc ${OUTDIR}/INPUT/sfc_data.${tile}.nc -done - -if [ "${MEMBER}" = "gdas" ]; then - cp ${RADSTAT_DATA_DIR}/*radstat* $OUTDIR - cp ${RADSTAT_DATA_DIR}/*abias* $OUTDIR - touch $OUTDIR/gdas.t${hh}z.loginc.txt -elif [ "${MEMBER}" = "gfs" ]; then - touch $OUTDIR/gfs.t${hh}z.loginc.txt -else - touch $OUTDIR/enkfgdas.t${hh}z.loginc.txt -fi +$GDAS_INIT_DIR/copy_coldstart_files.sh $MEMBER $OUTDIR $yy $mm $dd $hh $INPUT_DATA_DIR rm -fr $WORKDIR diff --git a/util/gdas_init/run_v15.chgres.gfs.sh b/util/gdas_init/run_v15.chgres.gfs.sh index 2c09b2f47..7cead7181 100755 --- a/util/gdas_init/run_v15.chgres.gfs.sh +++ b/util/gdas_init/run_v15.chgres.gfs.sh @@ -15,7 +15,6 @@ WORKDIR=${WORKDIR:-$OUTDIR/work.gfs} CTAR=${CRES_HIRES} INPUT_DATA_DIR="${EXTRACT_DIR}/gfs.${yy}${mm}${dd}/${hh}" -OUTDIR=$OUTDIR/gfs.${yy}${mm}${dd}/${hh}/atmos ATMFILE="gfs.t${hh}z.atmanl.nemsio" SFCFILE="gfs.t${hh}z.sfcanl.nemsio" @@ -23,11 +22,7 @@ rm -fr $WORKDIR mkdir -p $WORKDIR cd $WORKDIR -rm -fr $OUTDIR -mkdir -p $OUTDIR -mkdir -p $OUTDIR/INPUT - -source $UFS_DIR/util/gdas_init/set_fixed_files.sh +source $GDAS_INIT_DIR/set_fixed_files.sh cat << EOF > fort.41 @@ -52,22 +47,14 @@ cat << EOF > fort.41 / EOF -$APRUN $UFS_DIR/exec/chgres_cube +$APRUN $EXEC_DIR/chgres_cube rc=$? if [ $rc != 0 ]; then exit $rc fi -mv gfs_ctrl.nc ${OUTDIR}/INPUT - -for tile in 'tile1' 'tile2' 'tile3' 'tile4' 'tile5' 'tile6' -do - mv out.atm.${tile}.nc ${OUTDIR}/INPUT/gfs_data.${tile}.nc - mv out.sfc.${tile}.nc ${OUTDIR}/INPUT/sfc_data.${tile}.nc -done - -touch $OUTDIR/gfs.t${hh}z.loginc.txt +$GDAS_INIT_DIR/copy_coldstart_files.sh gfs $OUTDIR $yy $mm $dd $hh $INPUT_DATA_DIR rm -fr $WORKDIR diff --git a/util/gdas_init/run_v15.chgres.sh b/util/gdas_init/run_v15.chgres.sh index b78024538..ab2dfe530 100755 --- a/util/gdas_init/run_v15.chgres.sh +++ b/util/gdas_init/run_v15.chgres.sh @@ -27,24 +27,18 @@ if [ ${MEMBER} == 'gdas' ]; then CTAR=${CRES_HIRES} INPUT_DATA_DIR="${EXTRACT_DIR}/gdas.${yy_d}${mm_d}${dd_d}/${hh_d}/RESTART" RADSTAT_DATA_DIR="${EXTRACT_DIR}/gdas.${yy}${mm}${dd}/${hh}" - OUTDIR=$OUTDIR/gdas.${yy}${mm}${dd}/${hh}/atmos else CINP=${CINP:-"C384"} CTAR=${CRES_ENKF} INPUT_DATA_DIR="${EXTRACT_DIR}/enkfgdas.${yy_d}${mm_d}${dd_d}/${hh_d}/mem${MEMBER}/RESTART" RADSTAT_DATA_DIR="${EXTRACT_DIR}/enkfgdas.${yy}${mm}${dd}/${hh}/mem${MEMBER}" - OUTDIR=$OUTDIR/enkfgdas.${yy}${mm}${dd}/${hh}/mem${MEMBER}/atmos fi rm -fr $WORKDIR mkdir -p $WORKDIR cd $WORKDIR -rm -fr $OUTDIR -mkdir -p $OUTDIR -mkdir -p $OUTDIR/INPUT - -source $UFS_DIR/util/gdas_init/set_fixed_files.sh +source $GDAS_INIT_DIR/set_fixed_files.sh cat << EOF > fort.41 @@ -72,27 +66,14 @@ cat << EOF > fort.41 / EOF -$APRUN $UFS_DIR/exec/chgres_cube +$APRUN $EXEC_DIR/chgres_cube rc=$? if [ $rc != 0 ]; then exit $rc fi -mv gfs_ctrl.nc ${OUTDIR}/INPUT - -for tile in 'tile1' 'tile2' 'tile3' 'tile4' 'tile5' 'tile6' -do - mv out.atm.${tile}.nc ${OUTDIR}/INPUT/gfs_data.${tile}.nc - mv out.sfc.${tile}.nc ${OUTDIR}/INPUT/sfc_data.${tile}.nc -done - -if [ ${MEMBER} == 'gdas' ]; then - cp ${RADSTAT_DATA_DIR}/* $OUTDIR - touch $OUTDIR/gdas.t${hh}z.loginc.txt -else - touch $OUTDIR/enkfgdas.t${hh}z.loginc.txt -fi +$GDAS_INIT_DIR/copy_coldstart_files.sh $MEMBER $OUTDIR $yy $mm $dd $hh $RADSTAT_DATA_DIR rm -fr $WORKDIR diff --git a/util/gdas_init/run_v16.chgres.sh b/util/gdas_init/run_v16.chgres.sh index 3583fd85c..5525afdcb 100755 --- a/util/gdas_init/run_v16.chgres.sh +++ b/util/gdas_init/run_v16.chgres.sh @@ -1,18 +1,5 @@ #!/bin/bash -copy_data() -{ - -mkdir -p $SAVEDIR -cp gfs_ctrl.nc $SAVEDIR - -for tile in 'tile1' 'tile2' 'tile3' 'tile4' 'tile5' 'tile6' -do - cp out.atm.${tile}.nc ${SAVEDIR}/gfs_data.${tile}.nc - cp out.sfc.${tile}.nc ${SAVEDIR}/sfc_data.${tile}.nc -done -} - #--------------------------------------------------------------------------- # Run chgres using v16 netcdf history data as input. These history # files are part of the OPS v16 gfs/gdas/enkf tarballs, and the @@ -59,7 +46,7 @@ rm -fr $WORKDIR mkdir -p $WORKDIR cd $WORKDIR -source $UFS_DIR/util/gdas_init/set_fixed_files.sh +source $GDAS_INIT_DIR/set_fixed_files.sh cat << EOF > fort.41 @@ -84,26 +71,14 @@ cat << EOF > fort.41 / EOF -$APRUN $UFS_DIR/exec/chgres_cube +$APRUN $EXEC_DIR/chgres_cube rc=$? if [ $rc != 0 ]; then exit $rc fi -if [ ${MEMBER} == 'gdas' ] || [ ${MEMBER} == 'gfs' ]; then - SAVEDIR=$OUTDIR/${MEMBER}.${yy}${mm}${dd}/${hh}/atmos/INPUT - copy_data - touch $SAVEDIR/../${MEMBER}.t${hh}z.loginc.txt - if [ ${MEMBER} == 'gdas' ]; then - cp ${INPUT_DATA_DIR}/*abias* $SAVEDIR/.. - cp ${INPUT_DATA_DIR}/*radstat $SAVEDIR/.. - fi -else - SAVEDIR=$OUTDIR/enkfgdas.${yy}${mm}${dd}/${hh}/mem${MEMBER}/atmos/INPUT - copy_data - touch $SAVEDIR/../enkfgdas.t${hh}z.loginc.txt -fi +$GDAS_INIT_DIR/copy_coldstart_files.sh $MEMBER $OUTDIR $yy $mm $dd $hh $INPUT_DATA_DIR rm -fr $WORKDIR diff --git a/util/gdas_init/run_v16retro.chgres.sh b/util/gdas_init/run_v16retro.chgres.sh index 15b72b409..37b75728d 100755 --- a/util/gdas_init/run_v16retro.chgres.sh +++ b/util/gdas_init/run_v16retro.chgres.sh @@ -1,18 +1,5 @@ #!/bin/bash -copy_data() -{ - -mkdir -p $SAVEDIR -cp gfs_ctrl.nc $SAVEDIR - -for tile in 'tile1' 'tile2' 'tile3' 'tile4' 'tile5' 'tile6' -do - cp out.atm.${tile}.nc ${SAVEDIR}/gfs_data.${tile}.nc - cp out.sfc.${tile}.nc ${SAVEDIR}/sfc_data.${tile}.nc -done -} - #--------------------------------------------------------------------------- # Run chgres for gdas/enkf members using v16 parallel data as input. # The enkf data is not saved. So the coldstart files for all @@ -69,7 +56,7 @@ rm -fr $WORKDIR mkdir -p $WORKDIR cd $WORKDIR -source $UFS_DIR/util/gdas_init/set_fixed_files.sh +source $GDAS_INIT_DIR/set_fixed_files.sh cat << EOF > fort.41 @@ -97,33 +84,14 @@ cat << EOF > fort.41 / EOF -$APRUN $UFS_DIR/exec/chgres_cube +$APRUN $EXEC_DIR/chgres_cube rc=$? if [ $rc != 0 ]; then exit $rc fi -if [ ${MEMBER} == 'hires' ]; then - SAVEDIR=$OUTDIR/gdas.${yy}${mm}${dd}/${hh}/atmos/INPUT - copy_data - cp $RADSTAT_DATA_DIR/*abias* $SAVEDIR/.. - cp $RADSTAT_DATA_DIR/*radstat $SAVEDIR/.. - touch $SAVEDIR/../gdas.t${hh}z.loginc.txt -else - MEMBER=1 - while [ $MEMBER -le 80 ]; do - if [ $MEMBER -lt 10 ]; then - MEMBER_CH="00${MEMBER}" - else - MEMBER_CH="0${MEMBER}" - fi - SAVEDIR=$OUTDIR/enkfgdas.${yy}${mm}${dd}/${hh}/mem${MEMBER_CH}/atmos/INPUT - copy_data - touch $SAVEDIR/../enkfgdas.t${hh}z.loginc.txt - MEMBER=$(( $MEMBER + 1 )) - done -fi +$GDAS_INIT_DIR/copy_coldstart_files.sh $MEMBER $OUTDIR $yy $mm $dd $hh $RADSTAT_DATA_DIR rm -fr $WORKDIR