diff --git a/scripts/exglobal_fcst_nemsfv3gfs.sh b/scripts/exglobal_fcst_nemsfv3gfs.sh index 76da4a5b1fc..a64dc125fb7 100755 --- a/scripts/exglobal_fcst_nemsfv3gfs.sh +++ b/scripts/exglobal_fcst_nemsfv3gfs.sh @@ -1,4 +1,4 @@ -#!/bin/ksh +#!/bin/bash ################################################################################ ## UNIX Script Documentation Block ## Script name: exglobal_fcst_nemsfv3gfs.sh @@ -72,7 +72,6 @@ ## 2. nems.configure ## 3. model_configure ## 4. input.nml - ####################### # Main body starts here ####################### @@ -83,29 +82,8 @@ if [ $VERBOSE = "YES" ] ; then set -x fi -## Run in sandbox if no $machine defined -## Locate mod_forecast script folder -if [ -z $machine ]; then - machine='sandbox' - echo "MAIN: !!!Running in sandbox mode!!!" - unameOut="$(uname -s)" - case "${unameOut}" in - Linux*) - SCRIPTDIR=$(dirname $(readlink -f "$0") )/../ush - echo "MAIN: Linux environment. Current Script locates in $SCRIPTDIR." - ;; - Darwin*) - SCRIPTDIR=$(pwd)/../ush - echo "MAIN: MacOS environment. Current Script locates in $SCRIPTDIR." - ;; - CYGWIN*) echo CYGWIN ;; - MINGW*) echo MinGw ;; - *) echo "UNKNOWN:${unameOut}" - esac -else - SCRIPTDIR=$(dirname $(readlink -f "$0") )/../ush - echo "MAIN: environment loaded for $machine platform,Current Script locates in $SCRIPTDIR." -fi +SCRIPTDIR=$(dirname $(readlink -f "$0") )/../ush +echo "MAIN: environment loaded for $machine platform,Current Script locates in $SCRIPTDIR." # include all subroutines. Executions later. source $SCRIPTDIR/cplvalidate.sh # validation of cpl* @@ -114,6 +92,7 @@ source $SCRIPTDIR/forecast_det.sh # include functions for run type determinatio source $SCRIPTDIR/forecast_postdet.sh # include functions for variables after run type determination source $SCRIPTDIR/nems_configure.sh # include functions for nems_configure processing source $SCRIPTDIR/parsing_model_configure_FV3.sh +source $SCRIPTDIR/parsing_model_configure_DATM.sh # Compset string. For nems.configure.* template selection. Default ATM only confignamevarfornems=${confignamevarfornems:-'atm'} @@ -125,15 +104,12 @@ cplwav=${cplwav:-.false.} # ? how to control 1-way/2-way? cplchem=${cplchem:-.false.} # Chemistry model cplice=${cplice:-.false.} # ICE model -OCNTIM=${OCNTIM:-1800} +OCNTIM=${OCNTIM:-3600} DELTIM=${DELTIM:-450} ICETIM=${DELTIM} -CPL_SLOW=${OCNTIM} -CPL_FAST=${ICETIM} -# Coupling control switches, for coupling purpose, off by default - -[[ $machine = 'sandbox' ]] && RUN=gfs +CPL_SLOW=${CPL_SLOW:-$OCNTIM} +CPL_FAST=${CPL_FAST:-$ICETIM} echo "MAIN: $confignamevarfornems selected" echo "MAIN: Forecast script started for $confignamevarfornems on $machine" @@ -149,7 +125,7 @@ common_predet echo $RUN case $RUN in - 'data') Data_ATM_setup;; + 'data') DATM_predet;; 'gfs') FV3_GFS_predet;; 'gdas') FV3_GFS_predet;; 'gefs') FV3_GEFS_predet;; @@ -174,6 +150,7 @@ echo "MAIN: RUN Type Determined" echo "MAIN: Post-determination set up of run type" echo $RUN case $RUN in + 'data') DATM_postdet;; 'gfs') FV3_GFS_postdet;; 'gdas') FV3_GFS_postdet;; 'gefs') FV3_GEFS_postdet;; @@ -186,6 +163,7 @@ echo "MAIN: Post-determination set up of run type finished" echo "MAIN: Writing name lists and model configuration" case $RUN in + 'data') DATM_nml;; 'gfs') FV3_GFS_nml;; 'gdas') FV3_GFS_nml;; 'gefs') FV3_GEFS_nml;; @@ -194,7 +172,13 @@ esac #no namelist for data atmosphere [[ $cplwav = .true. ]] && WW3_nml [[ $cplice = .true. ]] && CICE_nml [[ $cplchem = .true. ]] && GSD_nml -Common_model_configure + +case $RUN in + 'data') DATM_model_configure;; + 'gfs') FV3_model_configure;; + 'gdas') FV3_model_configure;; + 'gefs') FV3_model_configure;; +esac echo "MAIN: Name lists and model configuration written" echo "MAIN: Writing NEMS Configure file" @@ -204,39 +188,26 @@ echo "MAIN: NEMS configured" #------------------------------------------------------------------ # run the executable -if [ $machine != 'sandbox' ]; then - $NCP $FCSTEXECDIR/$FCSTEXEC $DATA/. - export OMP_NUM_THREADS=$NTHREADS_FV3 - $APRUN_FV3 $DATA/$FCSTEXEC 1>&1 2>&2 - export ERR=$? - export err=$ERR - $ERRSCRIPT || exit $err -else - echo "MAIN: mpirun launch here" -fi +$NCP $FCSTEXECDIR/$FCSTEXEC $DATA/. +export OMP_NUM_THREADS=$NTHREADS_FV3 +$APRUN_FV3 $DATA/$FCSTEXEC 1>&1 2>&2 +export ERR=$? +export err=$ERR +$ERRSCRIPT || exit $err -if [ $machine != 'sandbox' ]; then - case $RUN in - 'data') data_out_Data_ATM;; - 'gfs') data_out_GFS;; - 'gdas') data_out_GFS;; - 'gefs') data_out_GEFS;; - esac - [[ $cplflx = .true. ]] && MOM6_out - [[ $cplwav = .true. ]] && WW3_out - [[ $cplice = .true. ]] && CICE_out - [[ $cplchem = .true. ]] && GSD_out -else - echo "MAIN: Running on sandbox mode, no output linking" -fi +case $RUN in + 'data') data_out_Data_ATM;; + 'gfs') data_out_GFS;; + 'gdas') data_out_GFS;; + 'gefs') data_out_GEFS;; +esac +[[ $cplflx = .true. ]] && MOM6_out +[[ $cplwav = .true. ]] && WW3_out +[[ $cplice = .true. ]] && CICE_out +[[ $cplchem = .true. ]] && GSD_out echo "MAIN: Output copied to COMROT" #------------------------------------------------------------------ -# Clean up before leaving -if [ $mkdata = "YES" ]; then rm -rf $DATA; fi - -#------------------------------------------------------------------ -#set +x if [ $VERBOSE = "YES" ] ; then echo $(date) EXITING $0 with return code $err >&2 fi @@ -246,5 +217,6 @@ if [ $err != 0 ]; then exit $err else echo "MAIN: $confignamevarfornems Forecast completed at normal status" + if [ $mkdata = "YES" ]; then rm -rf $DATA; fi exit 0 fi diff --git a/ush/cplvalidate.sh b/ush/cplvalidate.sh index ef888bfb421..f6ffa42ec05 100755 --- a/ush/cplvalidate.sh +++ b/ush/cplvalidate.sh @@ -12,6 +12,7 @@ cplvalidate(){ echo "SUB cplvalidate: validating cpl** switches for $confignamevarfornems" case $confignamevarfornems in 'atm') combination=.false..false..false..false..false.;; + 'datm') combination=.true..true..false..false..false.;; 'med_atm_ocn_ice') combination=.true..true..true..false..false.;; 'blocked_atm_wav') combination=.true..false..false..true..false.;; 'leapfrog_atm_wav')combination=.true..false..false..true..false.;; diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index 9ceb8940f20..0f8853fb0cc 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -16,6 +16,21 @@ FV3_GEFS_postdet(){ # soft link commands insert here } +DATM_postdet(){ +###################################################################### +# 3.1 Link DATM inputs (ie forcing files) # +###################################################################### + +#TODO: This should be some loop through CDATE-> CDATE+ FORECAST length +#and get input from either CFSR or GEFS or Whatever... +#Currently assumes you only need the month of DATM input for IC date + +# DATM forcing file name convention is ${DATM_FILENAME_BASE}.$YYYYMMDDHH.nc +echo "Link DATM forcing files" +DATMINPUTDIR="/scratch2/NCEPDEV/marineda/DATM_INPUT/CFSR/${SYEAR}${SMONTH}" +ln -sf ${DATMINPUTDIR}/${DATM_FILENAME_BASE}*.nc $DATA/DATM_INPUT/ +} + FV3_GFS_postdet(){ echo "SUB ${FUNCNAME[0]}: $RERUN and $warm_start determined for $RUN" @@ -180,6 +195,16 @@ EOF O3FORC=global_o3prdlos.f77 fi H2OFORC=${H2OFORC:-"global_h2o_pltc.f77"} + #### + # copy CCN_ACTIVATE.BIN for Thompson microphysics + if [ $imp_physics -eq 8 ]; then + $NCP $FV3INP/CCN_ACTIVATE.BIN CCN_ACTIVATE.BIN + #### + $NCP /scratch1/NCEPDEV/stmp2/Lin.Gan/RUNDIRS/gsdsuite-NEW/2019100900/gfs/fcst.383441/freezeH2O.dat freezeH2O.dat + $NCP /scratch1/NCEPDEV/stmp2/Lin.Gan/RUNDIRS/gsdsuite-NEW/2019100900/gfs/fcst.383441/qr_acr_qg.dat qr_acr_qg.dat + $NCP /scratch1/NCEPDEV/stmp2/Lin.Gan/RUNDIRS/gsdsuite-NEW/2019100900/gfs/fcst.383441/qr_acr_qs.dat qr_acr_qs.dat + sleep 60 + fi $NLN $FIX_AM/${O3FORC} $DATA/global_o3prdlos.f77 $NLN $FIX_AM/${H2OFORC} $DATA/global_h2oprdlos.f77 $NLN $FIX_AM/global_solarconstant_noaa_an.txt $DATA/solarconstant_noaa_an.txt @@ -362,9 +387,9 @@ EOF else ISEED=${ISEED:-0} fi - DO_SKEB=${DO_SKEB:-"NO"} - DO_SPPT=${DO_SPPT:-"NO"} - DO_SHUM=${DO_SHUM:-"NO"} + DO_SKEB=${DO_SKEB:-".false."} + DO_SPPT=${DO_SPPT:-".false."} + DO_SHUM=${DO_SHUM:-".false."} JCAP_STP=${JCAP_STP:-$JCAP_CASE} LONB_STP=${LONB_STP:-$LONB_CASE} LATB_STP=${LATB_STP:-$LATB_CASE} @@ -415,6 +440,12 @@ FV3_GFS_nml(){ echo SUB ${FUNCNAME[0]}: FV3 name lists and model configure file created } +DATM_nml(){ + source $SCRIPTDIR/parsing_namelists_DATM.sh + DATM_namelists + echo SUB ${FUNCNAME[0]}: DATM name lists and model configure file created +} + data_out_GFS() { # data in take for FV3GFS @@ -581,37 +612,57 @@ MOM6_out() CICE_postdet() { echo "SUB ${FUNCNAME[0]}: CICE after run type determination" + + year=$(echo $CDATE|cut -c 1-4) + #BL2018 + stepsperhr=$((3600/$DT_CICE)) + #BL2018 + nhours=$(${NHOUR} ${CDATE} ${SYEAR}010100) + istep0=$((nhours*stepsperhr)) + npt=$((FHMAX*$stepsperhr)) # Need this in order for dump_last to work + + histfreq_n=${histfreq_n:-6} + restart_interval=${restart_interval:-1296000} # restart write interval in seconds, default 15 days + dumpfreq_n=$restart_interval # restart write interval in seconds + + #BL2018 + #dumpfreq='d' + #dumpfreq='s' + if [ -d $ROTDIR/../NEXT_IC ]; then + #continuing run "hot start" + RUNTYPE='continue' + USE_RESTART_TIME='.true.' + restart_pond_lvl=${restart_pond_lvl:-".true."} + else + #using cold start IC + RUNTYPE='initial' + USE_RESTART_TIME='.false.' + restart_pond_lvl=${restart_pond_lvl:-".false."} + fi + + dumpfreq_n=${dumpfreq_n:-"${restart_interval}"} + dumpfreq=${dumpfreq:-"s"} # "s" or "d" or "m" for restarts at intervals of "seconds", "days" or "months" + + iceres=${iceres:-"mx025"} + ice_grid_file=${ice_grid_file:-"grid_cice_NEMS_${iceres}.nc"} + ice_kmt_file=${ice_kmt_file:-"kmtu_cice_NEMS_${iceres}.nc"} + + #TODO iceic name... this might need to be update? + iceic="cice5_model.res_$CDATE.nc" + # Copy CICE5 IC - pre-generated from CFSv2 - cp -p $ICSDIR/$CDATE/cice5_model_0.25.res_$CDATE.nc $DATA/cice5_model.res_$CDATE.nc + cp -p $ICSDIR/$CDATE/cice5_model_0.25.res_$CDATE.nc $DATA/$iceic #cp -p $ICSDIR/$CDATE/cpc/cice5_model_0.25.res_$CDATE.nc ./cice5_model.res_$CDATE.nc - # Copy CICE5 fixed files, and namelists - cp -p $FIXcice/kmtu_cice_NEMS_mx025.nc $DATA/ - cp -p $FIXcice/grid_cice_NEMS_mx025.nc $DATA/ + echo "Link CICE fixed files" + ln -sf $FIXcice/${ice_grid_file} $DATA/ + ln -sf $FIXcice/${ice_kmt_file} $DATA/ # Copy grid_spec and mosaic files cp -pf $FIXgrid/$CASE/${CASE}_mosaic* $DATA/INPUT/ cp -pf $FIXgrid/$CASE/grid_spec.nc $DATA/INPUT/ cp -pf $FIXgrid/$CASE/ocean_mask.nc $DATA/INPUT/ cp -pf $FIXgrid/$CASE/land_mask* $DATA/INPUT/ - - iceic=cice5_model.res_$CDATE.nc - year=$(echo $CDATE|cut -c 1-4) - #BL2018 - stepsperhr=$((3600/$ICETIM)) - #BL2018 - nhours=$($NHOUR $CDATE ${year}010100) - steps=$((nhours*stepsperhr)) - npt=$((FHMAX*$stepsperhr)) # Need this in order for dump_last to work - - histfreq_n=${histfreq_n:-6} - restart_interval=${restart_interval:-1296000} # restart write interval in seconds, default 15 days - dumpfreq_n=$restart_interval # restart write interval in seconds - - #BL2018 - #dumpfreq='d' - #dumpfreq='s' - } CICE_nml() @@ -683,3 +734,6 @@ GSD_out() echo "SUB ${FUNCNAME[0]}: Copying output data for GSD" # soft link commands insert here } + + + diff --git a/ush/forecast_predet.sh b/ush/forecast_predet.sh index 956a4ffc7c1..008d7c748ed 100755 --- a/ush/forecast_predet.sh +++ b/ush/forecast_predet.sh @@ -21,6 +21,20 @@ common_predet(){ ICSDIR=${ICSDIR:-$pwd} # cold start initial conditions } +DATM_predet(){ + SYEAR=$(echo $CDATE | cut -c1-4) + SMONTH=$(echo $CDATE | cut -c5-6) + SDAY=$(echo $CDATE | cut -c7-8) + SHOUR=$(echo $CDATE | cut -c9-10) + # directory set up + if [ ! -d $DATA ]; then mkdir -p $DATA; fi + if [ ! -d $DATA/DATM_INPUT ]; then mkdir -p $DATA/DATM_INPUT; fi + FHMAX=${FHMAX:-9} +# Go to Run Directory (DATA) +cd $DATA + +} + FV3_GFS_predet(){ echo "SUB ${FUNCNAME[0]}: Defining variables for FV3GFS" CDUMP=${CDUMP:-gdas} @@ -83,7 +97,11 @@ FV3_GFS_predet(){ NTHREADS_FV3=${NTHREADS_FV3:-${NTHREADS_FCST:-${nth_fv3:-1}}} cores_per_node=${cores_per_node:-${npe_node_max:-24}} ntiles=${ntiles:-6} - NTASKS_TOT=${NTASKS_TOT:-$npe_fcst} + if [ $MEMBER -lt 0 ]; then + NTASKS_TOT=${NTASKS_TOT:-$npe_fcst} + else + NTASKS_TOT=${NTASKS_TOT:-$npe_efcs} + fi TYPE=${TYPE:-"nh"} # choices: nh, hydro MONO=${MONO:-"non-mono"} # choices: mono, non-mono diff --git a/ush/nems_configure.sh b/ush/nems_configure.sh index 4f4a5063e34..27d37b51d2f 100755 --- a/ush/nems_configure.sh +++ b/ush/nems_configure.sh @@ -26,6 +26,14 @@ else coldstart=false fi +ATM_model=${ATM_model:-'fv3'} +OCN_model=${OCN_model:-'mom6'} +ICE_model=${ICE_model:-'cice'} + +ATMPETS=${ATMPETS:-8} +OCNPETS=${OCNPETS:-8} +ICEPETS=${ICEPETS:-8} + rm -f $DATA/nems.configure med_petlist_bounds=${med_petlist_bounds:-"0 $(( $ATMPETS-1 ))"} @@ -63,12 +71,12 @@ ice_petlist_bounds=${ice_petlist_bounds:-"$(( $ATMPETS+$OCNPETS )) $(( $ATMPETS+ # Copy the selected template into run directory cp $SCRIPTDIR/nems.configure.$confignamevarfornems.IN tmp1 sed -i -e "s;@\[med_model\];nems;g" tmp1 -sed -i -e "s;@\[atm_model\];fv3;g" tmp1 +sed -i -e "s;@\[atm_model\];$ATM_model;g" tmp1 sed -i -e "s;@\[med_petlist_bounds\];$med_petlist_bounds;g" tmp1 sed -i -e "s;@\[atm_petlist_bounds\];$atm_petlist_bounds;g" tmp1 if [ $cplflx = .true. ]; then - sed -i -e "s;@\[ocn_model\];mom6;g" tmp1 + sed -i -e "s;@\[ocn_model\];$OCN_model;g" tmp1 sed -i -e "s;@\[ocn_petlist_bounds\];$ocn_petlist_bounds;g" tmp1 sed -i -e "s;@\[DumpFields\];$DumpFields;g" tmp1 sed -i -e "s;@\[coldstart\];$coldstart;g" tmp1 @@ -80,7 +88,7 @@ if [ $cplwav = .true. ]; then sed -i -e "s;@\[wav_model\];ww3;g" tmp1 fi if [ $cplice = .true. ]; then - sed -i -e "s;@\[ice_model\];cice;g" tmp1 + sed -i -e "s;@\[ice_model\];$ICE_model;g" tmp1 sed -i -e "s;@\[ice_petlist_bounds\];$ice_petlist_bounds;g" tmp1 fi if [ $cplchem = .true. ]; then diff --git a/ush/parsing_model_configure_DATM.sh b/ush/parsing_model_configure_DATM.sh new file mode 100755 index 00000000000..c3fb5d1ac52 --- /dev/null +++ b/ush/parsing_model_configure_DATM.sh @@ -0,0 +1,40 @@ +#! /bin/sh + +##### +## "parsing_model_configure_DATM.sh" +## This script writes model configure file +## for DATM model +## +## This is the child script of ex-global forecast, +## writing model configure file for DATM +## This script is a direct execution. +##### + +DATM_model_configure(){ + +rm -f model_configure +cat > model_configure < model_configure < model_configure < input.nml <> input.nml << EOF + ccpp_suite = ${CCPP_SUITE:-"FV3_GFS_v15"} +EOF +fi + +cat >> input.nml < input.nml < input.nml < input.nml <> input.nml << EOF + ltaerosol = ${ltaerosol:-".F."} + lradar = ${lradar:-".F."} + do_mynnedmf = ${do_mynnedmf:-".false."} + do_mynnsfclay= ${do_mynnsfclay:-".false."} + lsoil_lsm = ${lsoil_lsm:-"4"} + ttendlim = ${ttendlim:-0.005} + icloud_bl = ${icloud_bl:-"1"} + bl_mynn_edmf = ${bl_mynn_edmf:-"1"} + bl_mynn_tkeadvect=${bl_mynn_tkeadvect:-".true."} + bl_mynn_edmf_mom=${bl_mynn_edmf_mom:-"1"} +EOF +fi + +cat >> input.nml < input.nml < input.nml <> input.nml << EOF cplflx = $cplflx EOF +fi # Add namelist for IAU if [ $DOIAU = "YES" ]; then @@ -304,6 +344,7 @@ cat >> input.nml <> input.nml <> input.nml << EOF skeb = $SKEB iseed_skeb = ${ISEED_SKEB:-$ISEED} @@ -385,7 +426,7 @@ EOF EOF fi - if [ $DO_SHUM = "YES" ]; then + if [ $DO_SHUM = ".true." ]; then cat >> input.nml << EOF shum = $SHUM iseed_shum = ${ISEED_SHUM:-$ISEED} @@ -394,7 +435,7 @@ EOF EOF fi - if [ $DO_SPPT = "YES" ]; then + if [ $DO_SPPT = ".true." ]; then cat >> input.nml << EOF sppt = $SPPT iseed_sppt = ${ISEED_SPPT:-$ISEED} diff --git a/workflow/cases/coupled_free_forecast.yaml b/workflow/cases/coupled_free_forecast.yaml index 3303f6c084e..c779e79507d 100644 --- a/workflow/cases/coupled_free_forecast.yaml +++ b/workflow/cases/coupled_free_forecast.yaml @@ -29,6 +29,9 @@ case: LEVS: 65 DELTIM: 450 nst_anl: no + DO_SKEB: true + DO_SHUM: false + DO_SPPT: true layout: x: 6 y: 8 diff --git a/workflow/config/efcs.yaml b/workflow/config/efcs.yaml index f6e8ad00a81..f14b4dbaa38 100644 --- a/workflow/config/efcs.yaml +++ b/workflow/config/efcs.yaml @@ -36,19 +36,19 @@ config_efcs: export NMEM_EFCSGRP={doc.data_assimilation.NMEM_EFCSGRP} export RERUN_EFCSGRP="{tools.YES_NO(doc.data_assimilation.RERUN_EFCSGRP)}" - # Stochastic physics parameters (only for ensemble forecasts) - export DO_SKEB="{tools.YES_NO(doc.fv3_enkf_settings.DO_SKEB)}" + # Stochastic physics parameters + export DO_SKEB="{tools.fort(doc.fv3_enkf_settings.DO_SKEB)}" export SKEB={doc.fv3_enkf_settings.SKEB} export SKEB_TAU={doc.fv3_enkf_settings.SKEB_TAU} export SKEB_LSCALE={doc.fv3_enkf_settings.SKEB_LSCALE} export SKEBNORM={doc.fv3_enkf_settings.SKEBNORM} export SKEB_NPASS={doc.fv3_enkf_settings.SKEB_NPASS} export SKEB_VDOF={doc.fv3_enkf_settings.SKEB_VDOF} - export DO_SHUM="{tools.YES_NO(doc.fv3_enkf_settings.DO_SHUM)}" + export DO_SHUM="{tools.fort(doc.fv3_enkf_settings.DO_SHUM)}" export SHUM={doc.fv3_enkf_settings.SHUM} export SHUM_TAU={doc.fv3_enkf_settings.SHUM_TAU} export SHUM_LSCALE={doc.fv3_enkf_settings.SHUM_LSCALE} - export DO_SPPT="{tools.YES_NO(doc.fv3_enkf_settings.DO_SPPT)}" + export DO_SPPT="{tools.fort(doc.fv3_enkf_settings.DO_SPPT)}" export SPPT={doc.fv3_enkf_settings.SPPT} export SPPT_TAU={doc.fv3_enkf_settings.SPPT_TAU} export SPPT_LSCALE={doc.fv3_enkf_settings.SPPT_LSCALE} diff --git a/workflow/config/fcst.yaml b/workflow/config/fcst.yaml index 39c12daa55f..04eb81f2fcc 100644 --- a/workflow/config/fcst.yaml +++ b/workflow/config/fcst.yaml @@ -104,6 +104,29 @@ config_fcst: {more_exports_for_microphys} {level_127} + # Stochastic physics parameters + export SEEDLET=1 + export ISEED_SKEB=$((SDATE*1000 + SEEDLET*10 + 1)) + export ISEED_SHUM=$((SDATE*1000 + SEEDLET*10 + 2)) + export ISEED_SPPT=$((SDATE*1000 + SEEDLET*10 + 3)) + export DO_SKEB="{tools.fort(doc.fv3_gfs_settings.DO_SKEB)}" + export DO_SHUM="{tools.fort(doc.fv3_gfs_settings.DO_SHUM)}" + export DO_SPPT="{tools.fort(doc.fv3_gfs_settings.DO_SPPT)}" + + export skeb=0.6,-999,-999,-999,-999 + export iseed_skeb=$ISEED_SKEB + export skeb_tau=2.16E4,1.728E5,2.592E6,7.776E6,3.1536E7 + export skeb_lscale=500.E3,1000.E3,2000.E3,2000.E3,2000.E3 + export skebnorm=1 + + export sppt=0.8,0.4,0.2,0.08,0.04 + export iseed_sppt=$ISEED_SPPT + export sppt_tau=2.16E4,2.592E5,2.592E6,7.776E6,3.1536E7 + export sppt_lscale=500.E3,1000.E3,2000.E3,2000.E3,2000.E3 + export sppt_logit=.TRUE. + export sppt_sfclimit=.true. + export use_zmtnblck=.true. + #--------------------------------------------------------------------- # Disable the use of coupler.res; get model start time from model_configure export USE_COUPLER_RES="NO" diff --git a/workflow/config/fv3.yaml b/workflow/config/fv3.yaml index c8d173fce68..5ea5b6ca7f3 100644 --- a/workflow/config/fv3.yaml +++ b/workflow/config/fv3.yaml @@ -43,7 +43,7 @@ config_fv3: forecast_mode=$( echo "$1" | tr a-z A-Z ) case $forecast_mode in - "gfs") + "GFS") echo "BEGIN: config.fv3 for $forecast_mode" export DELTIM={doc.fv3_gfs_settings.DELTIM} export layout_x={doc.fv3_gfs_settings.layout.x} @@ -61,7 +61,7 @@ config_fv3: export WRTTASK_PER_GROUP_GFS={doc.fv3_gfs_settings.layout.WGRP_NTASKS} export WRTIOBUF={doc.fv3_gfs_settings.layout.WRTIOBUF} ;; - "gdas") + "GDAS") echo "BEGIN: config.fv3 for $forecast_mode" export DELTIM={doc.fv3_gdas_settings.DELTIM} export layout_x={doc.fv3_gdas_settings.layout.x} @@ -78,7 +78,7 @@ config_fv3: export WRTTASK_PER_GROUP_GFS={doc.fv3_gdas_settings.layout.WGRP_NTASKS} export WRTIOBUF={doc.fv3_gdas_settings.layout.WRTIOBUF} ;; - "enkf") + "ENKF") echo "BEGIN: config.fv3 for $forecast_mode" export DELTIM={doc.fv3_enkf_settings.DELTIM} export layout_x={doc.fv3_enkf_settings.layout.x} diff --git a/workflow/defaults/fv3_gfs.yaml b/workflow/defaults/fv3_gfs.yaml index 877e9779de5..70775ecfd09 100644 --- a/workflow/defaults/fv3_gfs.yaml +++ b/workflow/defaults/fv3_gfs.yaml @@ -17,9 +17,10 @@ fv3_gfs_defaults: &fv3_gfs_defaults dddmp: 0.2 ISEED: 0 SET_STP_SEED: YES - DO_SHUM: NO - DO_SKEB: NO - DO_SPPT: NO + DO_SHUM: false + DO_SKEB: false + DO_SPPT: false + RUN_EFCSGRP: NO zhao_mic: YES nh_type: 'nh'