diff --git a/.gitignore b/.gitignore index 047313a32f..e73744aaba 100644 --- a/.gitignore +++ b/.gitignore @@ -91,6 +91,11 @@ parm/post/postxconfig-NT-GFS.txt parm/post/postxconfig-NT-gefs-aerosol.txt parm/post/postxconfig-NT-gefs-chem.txt parm/ufs/noahmptable.tbl +parm/ufs/model_configure.IN +parm/ufs/MOM_input_*.IN +parm/ufs/MOM6_data_table.IN +parm/ufs/ice_in.IN +parm/ufs/ufs.configure.*.IN parm/wafs # Ignore sorc and logs folders from externals diff --git a/ci/cases/weekly/C384_S2SWA.yaml b/ci/cases/weekly/C384_S2SWA.yaml index 8e2c043a4c..813188015f 100644 --- a/ci/cases/weekly/C384_S2SWA.yaml +++ b/ci/cases/weekly/C384_S2SWA.yaml @@ -6,7 +6,7 @@ arguments: pslot: {{ 'pslot' | getenv }} app: S2SWA resdetatmos: 384 - resdetocean: 0.5 + resdetocean: 0.25 comroot: {{ 'RUNTESTS' | getenv }}/COMROOT expdir: {{ 'RUNTESTS' | getenv }}/EXPDIR idate: 2016070100 diff --git a/env/HERA.env b/env/HERA.env index 284d54820e..fb156645f8 100755 --- a/env/HERA.env +++ b/env/HERA.env @@ -18,6 +18,8 @@ export npe_node_max=40 export launcher="srun -l --export=ALL" export mpmd_opt="--multi-prog --output=mpmd.%j.%t.out" +#export POSTAMBLE_CMD='report-mem' + # Configure MPI environment #export I_MPI_ADJUST_ALLREDUCE=5 #export MPI_BUFS_PER_PROC=2048 diff --git a/jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_BMAT b/jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_BMAT index 4a8242abfb..20b669ab4c 100755 --- a/jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_BMAT +++ b/jobs/JGDAS_GLOBAL_OCEAN_ANALYSIS_BMAT @@ -3,7 +3,7 @@ source "${HOMEgfs}/ush/preamble.sh" export WIPE_DATA="NO" export DATA="${DATAROOT}/${RUN}ocnanal_${cyc}" -source "${HOMEgfs}/ush/jjob_header.sh" -e "ocnanalrun" -c "base ocnanal ocnanalrun" +source "${HOMEgfs}/ush/jjob_header.sh" -e "ocnanalbmat" -c "base ocnanal ocnanalbmat" ############################################## diff --git a/jobs/JGLOBAL_ARCHIVE b/jobs/JGLOBAL_ARCHIVE index e6c016e703..66f6dfa8dc 100755 --- a/jobs/JGLOBAL_ARCHIVE +++ b/jobs/JGLOBAL_ARCHIVE @@ -19,7 +19,7 @@ YMD=${PDY} HH=${cyc} generate_com -rx COM_ATMOS_ANALYSIS COM_ATMOS_BUFR COM_ATMO COM_OCEAN_HISTORY COM_OCEAN_INPUT COM_OCEAN_RESTART COM_OCEAN_XSECT COM_OCEAN_2D COM_OCEAN_3D \ COM_OCEAN_ANALYSIS \ COM_WAVE_GRID COM_WAVE_HISTORY COM_WAVE_STATION \ - COM_ATMOS_OZNMON COM_ATMOS_RADMON COM_ATMOS_MINMON + COM_ATMOS_OZNMON COM_ATMOS_RADMON COM_ATMOS_MINMON COM_CONF for grid in "0p25" "0p50" "1p00"; do YMD=${PDY} HH=${cyc} GRID=${grid} generate_com -rx "COM_ATMOS_GRIB_${grid}:COM_ATMOS_GRIB_GRID_TMPL" diff --git a/parm/config/gefs/config.atmos_products b/parm/config/gefs/config.atmos_products new file mode 100644 index 0000000000..6ba38318c7 --- /dev/null +++ b/parm/config/gefs/config.atmos_products @@ -0,0 +1,28 @@ +#! /usr/bin/env bash + +########## config.atmos_products ########## +# atmosphere grib2 products specific + +echo "BEGIN: config.atmos_products" + +# Get task specific resources +. "${EXPDIR}/config.resources" atmos_products + +# No. of forecast hours to process in a single job +export NFHRS_PER_GROUP=3 + +# Scripts used by this job +export INTERP_ATMOS_MASTERSH="${HOMEgfs}/ush/interp_atmos_master.sh" +export INTERP_ATMOS_SFLUXSH="${HOMEgfs}/ush/interp_atmos_sflux.sh" + +export downset=2 +export FHOUT_PGBS=${FHOUT_GFS:-3} # Output frequency of supplemental gfs pgb file at 1.0 and 0.5 deg +export FLXGF="NO" # Create interpolated sflux.1p00 file + +# paramlist files for the different forecast hours and downsets +export paramlista="${HOMEgfs}/parm/product/gefs.0p25.fFFF.paramlist.a.txt" +export paramlista_anl="${HOMEgfs}/parm/product/gefs.0p25.anl.paramlist.a.txt" +export paramlista_f000="${HOMEgfs}/parm/product/gefs.0p25.f000.paramlist.a.txt" +export paramlistb="${HOMEgfs}/parm/product/gefs.0p25.fFFF.paramlist.b.txt" + +echo "END: config.atmos_products" diff --git a/parm/config/gefs/config.base.emc.dyn b/parm/config/gefs/config.base.emc.dyn index 5358a37768..d6f3069baf 100644 --- a/parm/config/gefs/config.base.emc.dyn +++ b/parm/config/gefs/config.base.emc.dyn @@ -218,6 +218,7 @@ export gfs_cyc=@gfs_cyc@ # 0: no GFS cycle, 1: 00Z only, 2: 00Z and 12Z only, 4: # GFS output and frequency export FHMIN_GFS=0 +export FHMIN=${FHMIN_GFS} export FHMAX_GFS_00=120 export FHMAX_GFS_06=120 @@ -270,7 +271,7 @@ export NMEM_ENS=@NMEM_ENS@ # set default member number memdir for control # this will be overwritten for the perturbed members -export ENSMEM="000" +export ENSMEM=${ENSMEM:-"000"} export MEMDIR="mem${ENSMEM}" export DOIAU="NO" # While we are not doing IAU, we may want to warm start w/ IAU in the future diff --git a/parm/config/gefs/config.fcst b/parm/config/gefs/config.fcst index 4c8d3be99f..6f4a11f7c4 100644 --- a/parm/config/gefs/config.fcst +++ b/parm/config/gefs/config.fcst @@ -231,20 +231,6 @@ export FSICL="0" export FSICS="0" #--------------------------------------------------------------------- - -# ideflate: netcdf zlib lossless compression (0-9): 0 no compression -# nbits: netcdf lossy compression level (0-32): 0 lossless -export ideflate=1 -export nbits=14 -export ishuffle=0 -# compression for RESTART files written by FMS -export shuffle=1 -export deflate_level=1 - -#--------------------------------------------------------------------- -# Disable the use of coupler.res; get model start time from model_configure -export USE_COUPLER_RES="NO" - # Write more variables to output export DIAG_TABLE="${HOMEgfs}/parm/ufs/fv3/diag_table" diff --git a/parm/config/gefs/config.resources b/parm/config/gefs/config.resources index a50418d23a..36b70aecb8 100644 --- a/parm/config/gefs/config.resources +++ b/parm/config/gefs/config.resources @@ -4,17 +4,26 @@ # Set resource information for job tasks # e.g. walltime, node, cores per node, memory etc. -if [[ $# -ne 1 ]]; then +if (( $# != 1 )); then echo "Must specify an input task argument to set resource variables!" echo "argument can be any one of the following:" echo "stage_ic aerosol_init" - echo "sfcanl analcalc analdiag fcst fit2obs metp arch echgres" - echo "ecen esfc efcs epos earc" + echo "prep preplandobs prepatmiodaobs" + echo "atmanlinit atmanlrun atmanlfinal" + echo "atmensanlinit atmensanlrun atmensanlfinal" + echo "landanl" + echo "aeroanlinit aeroanlrun aeroanlfinal" + echo "anal sfcanl analcalc analdiag fcst echgres" + echo "upp atmos_products" + echo "tracker genesis genesis_fsu" + echo "verfozn verfrad vminmon fit2obs metp arch cleanup" + echo "eobs ediag eomg eupd ecen esfc efcs epos earc" echo "init_chem mom6ic ocnpost" echo "waveinit waveprep wavepostsbs wavepostbndpnt wavepostbndpntbll wavepostpnt" echo "wavegempak waveawipsbulls waveawipsgridded" - echo "postsnd awips gempak" + echo "postsnd awips gempak npoess" + echo "ocnanalprep prepoceanobs ocnanalbmat ocnanalrun ocnanalchkpt ocnanalpost ocnanalvrfy" exit 1 fi @@ -23,281 +32,164 @@ step=$1 echo "BEGIN: config.resources" -if [[ "${machine}" = "WCOSS2" ]]; then - export npe_node_max=128 -elif [[ "${machine}" = "JET" ]]; then - if [[ ${PARTITION_BATCH} = "xjet" ]]; then - export npe_node_max=24 - elif [[ ${PARTITION_BATCH} = "vjet" || ${PARTITION_BATCH} = "sjet" ]]; then - export npe_node_max=16 - elif [[ ${PARTITION_BATCH} = "kjet" ]]; then - export npe_node_max=40 - fi -elif [[ ${machine} = "HERA" ]]; then - export npe_node_max=40 -elif [[ ${machine} = "S4" ]]; then - if [[ ${PARTITION_BATCH} = "s4" ]]; then - export npe_node_max=32 - elif [[ ${PARTITION_BATCH} = "ivy" ]]; then - export npe_node_max=20 - fi -elif [[ ${machine} = "ORION" ]]; then - export npe_node_max=40 -elif [[ ${machine} = "HERCULES" ]]; then - export npe_node_max=40 -fi - -if [[ ${step} = "prep" ]]; then - export wtime_prep='00:30:00' - export npe_prep=4 - export npe_node_prep=2 - export nth_prep=1 - if [[ "${machine}" = "WCOSS2" ]]; then - export is_exclusive=True - else - export memory_prep="40G" - fi - -elif [[ "${step}" = "aerosol_init" ]]; then - export wtime_aerosol_init="00:05:00" - export npe_aerosol_init=1 - export nth_aerosol_init=1 - npe_node_aerosol_init=$(echo "${npe_node_max} / ${nth_aerosol_init}" | bc) - export npe_node_aerosol_init - export NTASKS=${npe_aerosol_init} - export memory_aerosol_init="6G" - -elif [[ ${step} = "waveinit" ]]; then +case ${machine} in + "WCOSS2") npe_node_max=128;; + "HERA") npe_node_max=40;; + "ORION") npe_node_max=40;; + "HERCULES") npe_node_max=80;; + "JET") + case ${PARTITION_BATCH} in + "xjet") npe_node_max=24;; + "vjet" | "sjet") npe_node_max=16;; + "kjet") npe_node_max=40;; + *) + echo "FATAL ERROR: Unknown partition ${PARTITION_BATCH} specified for ${machine}" + exit 3 + esac + ;; + "S4") + case ${PARTITION_BATCH} in + "s4") npe_node_max=32;; + "ivy") npe_node_max=20;; + *) + echo "FATAL ERROR: Unknown partition ${PARTITION_BATCH} specified for ${machine}" + exit 3 + esac + ;; + "AWSPW") + export PARTITION_BATCH="compute" + npe_node_max=40 + ;; + *) + echo "FATAL ERROR: Unknown machine encountered by ${BASH_SOURCE[0]}" + exit 2 + ;; +esac +export npe_node_max +case ${step} in + "waveinit") export wtime_waveinit="00:10:00" export npe_waveinit=12 export nth_waveinit=1 - npe_node_waveinit=$(echo "${npe_node_max} / ${nth_waveinit}" | bc) - export npe_node_waveinit + export npe_node_waveinit=$(( npe_node_max / nth_waveinit )) export NTASKS=${npe_waveinit} export memory_waveinit="2GB" + ;; -elif [[ ${step} = "waveprep" ]]; then - - export wtime_waveprep="00:10:00" - export npe_waveprep=5 - export npe_waveprep_gfs=65 - export nth_waveprep=1 - export nth_waveprep_gfs=1 - npe_node_waveprep=$(echo "${npe_node_max} / ${nth_waveprep}" | bc) - export npe_node_waveprep - npe_node_waveprep_gfs=$(echo "${npe_node_max} / ${nth_waveprep_gfs}" | bc) - export npe_node_waveprep_gfs - export NTASKS=${npe_waveprep} - export NTASKS_gfs=${npe_waveprep_gfs} - export memory_waveprep="100GB" - export memory_waveprep_gfs="150GB" - -elif [[ ${step} = "wavepostsbs" ]]; then - + "wavepostsbs") export wtime_wavepostsbs="00:20:00" export wtime_wavepostsbs_gfs="03:00:00" export npe_wavepostsbs=8 export nth_wavepostsbs=1 - npe_node_wavepostsbs=$(echo "${npe_node_max} / ${nth_wavepostsbs}" | bc) - export npe_node_wavepostsbs + export npe_node_wavepostsbs=$(( npe_node_max / nth_wavepostsbs )) export NTASKS=${npe_wavepostsbs} export memory_wavepostsbs="10GB" export memory_wavepostsbs_gfs="10GB" + ;; -elif [[ ${step} = "wavepostbndpnt" ]]; then - - export wtime_wavepostbndpnt="01:00:00" - export npe_wavepostbndpnt=240 - export nth_wavepostbndpnt=1 - npe_node_wavepostbndpnt=$(echo "${npe_node_max} / ${nth_wavepostbndpnt}" | bc) - export npe_node_wavepostbndpnt - export NTASKS=${npe_wavepostbndpnt} - export is_exclusive=True - -elif [[ ${step} = "wavepostbndpntbll" ]]; then - - export wtime_wavepostbndpntbll="01:00:00" - export npe_wavepostbndpntbll=448 - export nth_wavepostbndpntbll=1 - npe_node_wavepostbndpntbll=$(echo "${npe_node_max} / ${nth_wavepostbndpntbll}" | bc) - export npe_node_wavepostbndpntbll - export NTASKS=${npe_wavepostbndpntbll} + "fcst" | "efcs") export is_exclusive=True -elif [[ ${step} = "wavepostpnt" ]]; then - - export wtime_wavepostpnt="01:30:00" - export npe_wavepostpnt=200 - export nth_wavepostpnt=1 - npe_node_wavepostpnt=$(echo "${npe_node_max} / ${nth_wavepostpnt}" | bc) - export npe_node_wavepostpnt - export NTASKS=${npe_wavepostpnt} - export is_exclusive=True - -elif [[ ${step} = "wavegempak" ]]; then - - export wtime_wavegempak="02:00:00" - export npe_wavegempak=1 - export nth_wavegempak=1 - npe_node_wavegempak=$(echo "${npe_node_max} / ${nth_wavegempak}" | bc) - export npe_node_wavegempak - export NTASKS=${npe_wavegempak} - export memory_wavegempak="1GB" - -elif [[ ${step} = "waveawipsbulls" ]]; then - - export wtime_waveawipsbulls="00:20:00" - export npe_waveawipsbulls=1 - export nth_waveawipsbulls=1 - npe_node_waveawipsbulls=$(echo "${npe_node_max} / ${nth_waveawipsbulls}" | bc) - export npe_node_waveawipsbulls - export NTASKS=${npe_waveawipsbulls} - export is_exclusive=True - -elif [[ ${step} = "waveawipsgridded" ]]; then - - export wtime_waveawipsgridded="02:00:00" - export npe_waveawipsgridded=1 - export nth_waveawipsgridded=1 - npe_node_waveawipsgridded=$(echo "${npe_node_max} / ${nth_waveawipsgridded}" | bc) - export npe_node_waveawipsgridded - export NTASKS=${npe_waveawipsgridded} - export memory_waveawipsgridded_gfs="1GB" - -elif [[ ${step} = "analcalc" ]]; then - - export wtime_analcalc="00:10:00" - export npe_analcalc=127 - export ntasks="${npe_analcalc}" - export nth_analcalc=1 - export nth_echgres=4 - export nth_echgres_gfs=12 - npe_node_analcalc=$(echo "${npe_node_max} / ${nth_analcalc}" | bc) - export npe_node_analcalc - export is_exclusive=True - -elif [[ ${step} = "analdiag" ]]; then - - export wtime_analdiag="00:15:00" - export npe_analdiag=96 # Should be at least twice npe_ediag - export nth_analdiag=1 - npe_node_analdiag=$(echo "${npe_node_max} / ${nth_analdiag}" | bc) - export npe_node_analdiag - export memory_analdiag="48GB" - -elif [[ ${step} = "sfcanl" ]]; then - - export wtime_sfcanl="00:10:00" - export npe_sfcanl=6 - export nth_sfcanl=1 - npe_node_sfcanl=$(echo "${npe_node_max} / ${nth_sfcanl}" | bc) - export npe_node_sfcanl - export is_exclusive=True - -elif [[ "${step}" = "fcst" || "${step}" = "efcs" ]]; then - - export is_exclusive=True - - if [[ "${step}" = "fcst" ]]; then - _CDUMP_LIST=${CDUMP:-"gdas gfs"} - elif [[ "${step}" = "efcs" ]]; then - _CDUMP_LIST=${CDUMP:-"enkfgdas enkfgfs"} + if [[ "${step}" == "fcst" ]]; then + _CDUMP_LIST=${CDUMP:-"gdas gfs"} + elif [[ "${step}" == "efcs" ]]; then + _CDUMP_LIST=${CDUMP:-"enkfgdas enkfgfs"} fi # During workflow creation, we need resources for all CDUMPs and CDUMP is undefined for _CDUMP in ${_CDUMP_LIST}; do - if [[ "${_CDUMP}" =~ "gfs" ]]; then - export layout_x=${layout_x_gfs} - export layout_y=${layout_y_gfs} - export WRITE_GROUP=${WRITE_GROUP_GFS} - export WRTTASK_PER_GROUP_PER_THREAD=${WRTTASK_PER_GROUP_PER_THREAD_GFS} - ntasks_fv3=${ntasks_fv3_gfs} - ntasks_quilt=${ntasks_quilt_gfs} - nthreads_fv3=${nthreads_fv3_gfs} - fi - - # PETS for the atmosphere dycore - (( FV3PETS = ntasks_fv3 * nthreads_fv3 )) - echo "FV3 using (nthreads, PETS) = (${nthreads_fv3}, ${FV3PETS})" - - # PETS for quilting - if [[ "${QUILTING:-}" = ".true." ]]; then - (( QUILTPETS = ntasks_quilt * nthreads_fv3 )) - (( WRTTASK_PER_GROUP = WRTTASK_PER_GROUP_PER_THREAD )) - export WRTTASK_PER_GROUP - else - QUILTPETS=0 - fi - echo "QUILT using (nthreads, PETS) = (${nthreads_fv3}, ${QUILTPETS})" - - # Total PETS for the atmosphere component - ATMTHREADS=${nthreads_fv3} - (( ATMPETS = FV3PETS + QUILTPETS )) - export ATMPETS ATMTHREADS - echo "FV3ATM using (nthreads, PETS) = (${ATMTHREADS}, ${ATMPETS})" - - # Total PETS for the coupled model (starting w/ the atmosphere) - NTASKS_TOT=${ATMPETS} - - # The mediator PETS can overlap with other components, usually it lands on the atmosphere tasks. - # However, it is suggested limiting mediator PETS to 300, as it may cause the slow performance. - # See https://docs.google.com/document/d/1bKpi-52t5jIfv2tuNHmQkYUe3hkKsiG_DG_s6Mnukog/edit - # TODO: Update reference when moved to ufs-weather-model RTD - MEDTHREADS=${nthreads_mediator:-1} - MEDPETS=${MEDPETS:-ATMPETS} - [[ "${MEDPETS}" -gt 300 ]] && MEDPETS=300 - export MEDPETS MEDTHREADS - echo "MEDIATOR using (threads, PETS) = (${MEDTHREADS}, ${MEDPETS})" - - CHMPETS=0; CHMTHREADS=0 - if [[ "${DO_AERO}" = "YES" ]]; then - # GOCART shares the same grid and forecast tasks as FV3 (do not add write grid component tasks). - (( CHMTHREADS = ATMTHREADS )) - (( CHMPETS = FV3PETS )) - # Do not add to NTASKS_TOT - echo "GOCART using (threads, PETS) = (${CHMTHREADS}, ${CHMPETS})" - fi - export CHMPETS CHMTHREADS - - WAVPETS=0; WAVTHREADS=0 - if [[ "${DO_WAVE}" = "YES" ]]; then - (( WAVPETS = ntasks_ww3 * nthreads_ww3 )) - (( WAVTHREADS = nthreads_ww3 )) - echo "WW3 using (threads, PETS) = (${WAVTHREADS}, ${WAVPETS})" - (( NTASKS_TOT = NTASKS_TOT + WAVPETS )) - fi - export WAVPETS WAVTHREADS - - OCNPETS=0; OCNTHREADS=0 - if [[ "${DO_OCN}" = "YES" ]]; then - (( OCNPETS = ntasks_mom6 * nthreads_mom6 )) - (( OCNTHREADS = nthreads_mom6 )) - echo "MOM6 using (threads, PETS) = (${OCNTHREADS}, ${OCNPETS})" - (( NTASKS_TOT = NTASKS_TOT + OCNPETS )) - fi - export OCNPETS OCNTHREADS - - ICEPETS=0; ICETHREADS=0 - if [[ "${DO_ICE}" = "YES" ]]; then - (( ICEPETS = ntasks_cice6 * nthreads_cice6 )) - (( ICETHREADS = nthreads_cice6 )) - echo "CICE6 using (threads, PETS) = (${ICETHREADS}, ${ICEPETS})" - (( NTASKS_TOT = NTASKS_TOT + ICEPETS )) - fi - export ICEPETS ICETHREADS - - echo "Total PETS for ${_CDUMP} = ${NTASKS_TOT}" - - if [[ "${_CDUMP}" =~ "gfs" ]]; then - declare -x "npe_${step}_gfs"="${NTASKS_TOT}" - declare -x "nth_${step}_gfs"=1 # ESMF handles threading for the UFS-weather-model - declare -x "npe_node_${step}_gfs"="${npe_node_max}" - else - declare -x "npe_${step}"="${NTASKS_TOT}" - declare -x "nth_${step}"=1 # ESMF handles threading for the UFS-weather-model - declare -x "npe_node_${step}"="${npe_node_max}" - fi + if [[ "${_CDUMP}" =~ "gfs" ]]; then + export layout_x=${layout_x_gfs} + export layout_y=${layout_y_gfs} + export WRITE_GROUP=${WRITE_GROUP_GFS} + export WRTTASK_PER_GROUP_PER_THREAD=${WRTTASK_PER_GROUP_PER_THREAD_GFS} + ntasks_fv3=${ntasks_fv3_gfs} + ntasks_quilt=${ntasks_quilt_gfs} + nthreads_fv3=${nthreads_fv3_gfs} + fi + + # PETS for the atmosphere dycore + (( FV3PETS = ntasks_fv3 * nthreads_fv3 )) + echo "FV3 using (nthreads, PETS) = (${nthreads_fv3}, ${FV3PETS})" + + # PETS for quilting + if [[ "${QUILTING:-}" == ".true." ]]; then + (( QUILTPETS = ntasks_quilt * nthreads_fv3 )) + (( WRTTASK_PER_GROUP = WRTTASK_PER_GROUP_PER_THREAD )) + export WRTTASK_PER_GROUP + else + QUILTPETS=0 + fi + echo "QUILT using (nthreads, PETS) = (${nthreads_fv3}, ${QUILTPETS})" + + # Total PETS for the atmosphere component + ATMTHREADS=${nthreads_fv3} + (( ATMPETS = FV3PETS + QUILTPETS )) + export ATMPETS ATMTHREADS + echo "FV3ATM using (nthreads, PETS) = (${ATMTHREADS}, ${ATMPETS})" + + # Total PETS for the coupled model (starting w/ the atmosphere) + NTASKS_TOT=${ATMPETS} + + # The mediator PETS can overlap with other components, usually it lands on the atmosphere tasks. + # However, it is suggested limiting mediator PETS to 300, as it may cause the slow performance. + # See https://docs.google.com/document/d/1bKpi-52t5jIfv2tuNHmQkYUe3hkKsiG_DG_s6Mnukog/edit + # TODO: Update reference when moved to ufs-weather-model RTD + MEDTHREADS=${nthreads_mediator:-1} + MEDPETS=${MEDPETS:-${FV3PETS}} + (( "${MEDPETS}" > 300 )) && MEDPETS=300 + export MEDPETS MEDTHREADS + echo "MEDIATOR using (threads, PETS) = (${MEDTHREADS}, ${MEDPETS})" + + CHMPETS=0; CHMTHREADS=0 + if [[ "${DO_AERO}" == "YES" ]]; then + # GOCART shares the same grid and forecast tasks as FV3 (do not add write grid component tasks). + (( CHMTHREADS = ATMTHREADS )) + (( CHMPETS = FV3PETS )) + # Do not add to NTASKS_TOT + echo "GOCART using (threads, PETS) = (${CHMTHREADS}, ${CHMPETS})" + fi + export CHMPETS CHMTHREADS + + WAVPETS=0; WAVTHREADS=0 + if [[ "${DO_WAVE}" == "YES" ]]; then + (( WAVPETS = ntasks_ww3 * nthreads_ww3 )) + (( WAVTHREADS = nthreads_ww3 )) + echo "WW3 using (threads, PETS) = (${WAVTHREADS}, ${WAVPETS})" + (( NTASKS_TOT = NTASKS_TOT + WAVPETS )) + fi + export WAVPETS WAVTHREADS + + OCNPETS=0; OCNTHREADS=0 + if [[ "${DO_OCN}" == "YES" ]]; then + (( OCNPETS = ntasks_mom6 * nthreads_mom6 )) + (( OCNTHREADS = nthreads_mom6 )) + echo "MOM6 using (threads, PETS) = (${OCNTHREADS}, ${OCNPETS})" + (( NTASKS_TOT = NTASKS_TOT + OCNPETS )) + fi + export OCNPETS OCNTHREADS + + ICEPETS=0; ICETHREADS=0 + if [[ "${DO_ICE}" == "YES" ]]; then + (( ICEPETS = ntasks_cice6 * nthreads_cice6 )) + (( ICETHREADS = nthreads_cice6 )) + echo "CICE6 using (threads, PETS) = (${ICETHREADS}, ${ICEPETS})" + (( NTASKS_TOT = NTASKS_TOT + ICEPETS )) + fi + export ICEPETS ICETHREADS + + echo "Total PETS for ${_CDUMP} = ${NTASKS_TOT}" + + if [[ "${_CDUMP}" =~ "gfs" ]]; then + declare -x "npe_${step}_gfs"="${NTASKS_TOT}" + declare -x "nth_${step}_gfs"=1 # ESMF handles threading for the UFS-weather-model + declare -x "npe_node_${step}_gfs"="${npe_node_max}" + else + declare -x "npe_${step}"="${NTASKS_TOT}" + declare -x "nth_${step}"=1 # ESMF handles threading for the UFS-weather-model + declare -x "npe_node_${step}"="${npe_node_max}" + fi done @@ -311,167 +203,40 @@ elif [[ "${step}" = "fcst" || "${step}" = "efcs" ]]; then declare -x "wtime_${step}_gfs"="06:00:00" ;; *) - echo "FATAL ERROR: Resolution ${CASE} not supported in ${step}" - exit 1 + echo "FATAL ERROR: Resources not defined for job ${job} at resolution ${CASE}" + exit 4 ;; esac unset _CDUMP _CDUMP_LIST unset NTASKS_TOT - -elif [[ ${step} = "ocnpost" ]]; then - - export wtime_ocnpost="00:30:00" - export npe_ocnpost=1 - export npe_node_ocnpost=1 - export nth_ocnpost=1 - export memory_ocnpost="96G" - if [[ ${machine} == "JET" ]]; then - # JET only has 88GB of requestable memory per node - # so a second node is required to meet the requiremtn - npe_ocnpost=2 - fi - -elif [[ "${step}" = "fit2obs" ]]; then - - export wtime_fit2obs="00:20:00" - export npe_fit2obs=3 - export nth_fit2obs=1 - export npe_node_fit2obs=1 - export memory_fit2obs="20G" - if [[ ${machine} == "WCOSS2" ]]; then export npe_node_fit2obs=3 ; fi - -elif [[ "${step}" = "metp" ]]; then - - export nth_metp=1 - export wtime_metp="03:00:00" - export npe_metp=4 - export npe_node_metp=4 - export wtime_metp_gfs="06:00:00" - export npe_metp_gfs=4 - export npe_node_metp_gfs=4 + ;; + + "atmos_products") + export wtime_atmos_products="00:15:00" + export npe_atmos_products=24 + export nth_atmos_products=1 + export npe_node_atmos_products="${npe_atmos_products}" + export wtime_atmos_products_gfs="${wtime_atmos_products}" + export npe_atmos_products_gfs="${npe_atmos_products}" + export nth_atmos_products_gfs="${nth_atmos_products}" + export npe_node_atmos_products_gfs="${npe_node_atmos_products}" export is_exclusive=True + ;; -elif [[ ${step} = "echgres" ]]; then - - export wtime_echgres="00:10:00" - export npe_echgres=3 - export nth_echgres=${npe_node_max} - export npe_node_echgres=1 - if [[ "${machine}" = "WCOSS2" ]]; then - export memory_echgres="200GB" - fi - -elif [[ ${step} = "init_chem" ]]; then - - export wtime_init_chem="00:30:00" - export npe_init_chem=1 - export npe_node_init_chem=1 - export is_exclusive=True - -elif [[ ${step} = "mom6ic" ]]; then - - export wtime_mom6ic="00:30:00" - export npe_mom6ic=24 - export npe_node_mom6ic=24 - export is_exclusive=True - -elif [[ ${step} = "arch" || ${step} = "earc" ]]; then - - eval "export wtime_${step}='06:00:00'" - eval "export npe_${step}=1" - eval "export npe_node_${step}=1" - eval "export nth_${step}=1" - eval "export memory_${step}=4096M" - if [[ "${machine}" = "WCOSS2" ]]; then - eval "export memory_${step}=50GB" - fi - -elif [[ ${step} = "stage_ic" ]]; then - + "stage_ic") export wtime_stage_ic="00:15:00" export npe_stage_ic=1 export npe_node_stage_ic=1 export nth_stage_ic=1 export is_exclusive=True + ;; -elif [[ ${step} = "ecen" ]]; then - - export wtime_ecen="00:10:00" - export npe_ecen=80 - export nth_ecen=4 - if [[ "${machine}" = "HERA" ]]; then export nth_ecen=6; fi - if [[ ${CASE} = "C384" || ${CASE} = "C192" || ${CASE} = "C96" || ${CASE} = "C48" ]]; then export nth_ecen=2; fi - npe_node_ecen=$(echo "${npe_node_max} / ${nth_ecen}" | bc) - export npe_node_ecen - export nth_cycle=${nth_ecen} - npe_node_cycle=$(echo "${npe_node_max} / ${nth_cycle}" | bc) - export npe_node_cycle - export is_exclusive=True - -elif [[ ${step} = "esfc" ]]; then - - export wtime_esfc="00:06:00" - export npe_esfc=80 - export nth_esfc=1 - npe_node_esfc=$(echo "${npe_node_max} / ${nth_esfc}" | bc) - export npe_node_esfc - export nth_cycle=${nth_esfc} - npe_node_cycle=$(echo "${npe_node_max} / ${nth_cycle}" | bc) - export npe_node_cycle - export memory_esfc="80GB" - -elif [[ ${step} = "epos" ]]; then - - export wtime_epos="00:15:00" - export npe_epos=80 - export nth_epos=4 - if [[ "${machine}" == "HERA" ]]; then - export nth_epos=6 - fi - npe_node_epos=$(echo "${npe_node_max} / ${nth_epos}" | bc) - export npe_node_epos - export is_exclusive=True - -elif [[ ${step} = "postsnd" ]]; then - - export wtime_postsnd="02:00:00" - export npe_postsnd=40 - export nth_postsnd=8 - export npe_node_postsnd=10 - export npe_postsndcfp=9 - export npe_node_postsndcfp=1 - postsnd_req_cores=$(echo "${npe_node_postsnd} * ${nth_postsnd}" | bc) - if [[ ${postsnd_req_cores} -gt "${npe_node_max}" ]]; then - npe_node_postsnd=$(echo "${npe_node_max} / ${nth_postsnd}" | bc) - export npe_node_postsnd - fi - export is_exclusive=True - -elif [[ ${step} = "awips" ]]; then - - export wtime_awips="03:30:00" - export npe_awips=1 - export npe_node_awips=1 - export nth_awips=1 - export memory_awips="3GB" - -elif [[ ${step} = "gempak" ]]; then - - export wtime_gempak="03:00:00" - export npe_gempak=2 - export npe_gempak_gfs=28 - export npe_node_gempak=2 - export npe_node_gempak_gfs=28 - export nth_gempak=1 - export memory_gempak="4GB" - export memory_gempak_gfs="2GB" - -else - - echo "Invalid step = ${step}, ABORT!" - exit 2 + *) + echo "FATAL ERROR: Invalid job ${step} passed to ${BASH_SOURCE[0]}" + exit 1 + ;; -fi +esac -echo "END: config.resources" +echo "END: config.resources" \ No newline at end of file diff --git a/parm/config/gefs/config.ufs b/parm/config/gefs/config.ufs index 68b364529e..2031d0b538 100644 --- a/parm/config/gefs/config.ufs +++ b/parm/config/gefs/config.ufs @@ -72,9 +72,12 @@ case "${machine}" in "WCOSS2") npe_node_max=128 ;; - "HERA" | "ORION" | "HERCULES" ) + "HERA" | "ORION" ) npe_node_max=40 ;; + "HERCULES" ) + npe_node_max=80 + ;; "JET") case "${PARTITION_BATCH}" in "xjet") @@ -193,7 +196,7 @@ case "${fv3_res}" in export WRITE_GROUP=2 export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=10 export WRITE_GROUP_GFS=4 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=10 + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=20 #Note this should be 10 for WCOSS2 ;; "C1152") export DELTIM=120 @@ -209,7 +212,7 @@ case "${fv3_res}" in export WRITE_GROUP=4 export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=10 # TODO: refine these numbers when a case is available export WRITE_GROUP_GFS=4 - export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=10 # TODO: refine these numbers when a case is available + export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE_GFS=20 # TODO: refine these numbers when a case is available ;; "C3072") export DELTIM=90 @@ -258,6 +261,10 @@ case ${fv3_res} in OUTPUT_FILETYPE_ATM="netcdf_parallel" OUTPUT_FILETYPE_SFC="netcdf_parallel" ;; + *) + echo "FATAL ERROR: Unrecognized FV3 resolution ${fv3_res}" + exit 15 + ;; esac export OUTPUT_FILETYPE_ATM OUTPUT_FILETYPE_SFC @@ -309,11 +316,12 @@ if [[ "${skip_mom6}" == "false" ]]; then NY_GLB=320 DT_DYNAM_MOM6='1800' DT_THERM_MOM6='3600' - FRUNOFF="" + FRUNOFF="runoff.daitren.clim.1deg.nc" CHLCLIM="seawifs_1998-2006_smoothed_2X.nc" - MOM6_RESTART_SETTING='n' + MOM6_RESTART_SETTING='r' MOM6_RIVER_RUNOFF='False' eps_imesh="2.5e-1" + TOPOEDITS="ufs.topo_edits_011818.nc" if [[ "${DO_JEDIOCNVAR:-NO}" = "YES" ]]; then MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_75L.nc" MOM6_DIAG_MISVAL="0.0" @@ -321,6 +329,7 @@ if [[ "${skip_mom6}" == "false" ]]; then MOM6_DIAG_COORD_DEF_Z_FILE="interpolate_zgrid_40L.nc" MOM6_DIAG_MISVAL="-1e34" fi + MOM6_ALLOW_LANDMASK_CHANGES='True' ;; "050") ntasks_mom6=60 @@ -334,7 +343,6 @@ if [[ "${skip_mom6}" == "false" ]]; then MOM6_RESTART_SETTING='n' MOM6_RIVER_RUNOFF='True' eps_imesh="1.0e-1" - TOPOEDITS="ufs.topo_edits_011818.nc" if [[ "${DO_JEDIOCNVAR:-NO}" = "YES" ]]; then MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_75L.nc" MOM6_DIAG_MISVAL="0.0" @@ -342,7 +350,8 @@ if [[ "${skip_mom6}" == "false" ]]; then MOM6_DIAG_COORD_DEF_Z_FILE="interpolate_zgrid_40L.nc" MOM6_DIAG_MISVAL="-1e34" fi - MOM6_ALLOW_LANDMASK_CHANGES='True' + MOM6_ALLOW_LANDMASK_CHANGES='False' + TOPOEDITS="" ;; "025") ntasks_mom6=220 @@ -356,7 +365,6 @@ if [[ "${skip_mom6}" == "false" ]]; then MOM6_RIVER_RUNOFF='True' MOM6_RESTART_SETTING="r" eps_imesh="1.0e-1" - TOPOEDITS="" if [[ "${DO_JEDIOCNVAR:-NO}" = "YES" ]]; then MOM6_DIAG_COORD_DEF_Z_FILE="oceanda_zgrid_75L.nc" MOM6_DIAG_MISVAL="0.0" @@ -364,7 +372,8 @@ if [[ "${skip_mom6}" == "false" ]]; then MOM6_DIAG_COORD_DEF_Z_FILE="interpolate_zgrid_40L.nc" MOM6_DIAG_MISVAL="-1e34" fi - MOM6_ALLOW_LANDMASK_CHANGES='True' + MOM6_ALLOW_LANDMASK_CHANGES='False' + TOPOEDITS="" ;; *) echo "FATAL ERROR: Unsupported MOM6 resolution = ${mom6_res}, ABORT!" @@ -378,10 +387,10 @@ if [[ "${skip_mom6}" == "false" ]]; then export DT_DYNAM_MOM6 DT_THERM_MOM6 export FRUNOFF export CHLCLIM + export TOPOEDITS export MOM6_RIVER_RUNOFF export MOM6_RESTART_SETTING export eps_imesh - export TOPOEDITS export MOM6_DIAG_COORD_DEF_Z_FILE export MOM6_DIAG_MISVAL export MOM6_ALLOW_LANDMASK_CHANGES @@ -397,6 +406,7 @@ if [[ "${skip_cice6}" == "false" ]]; then echo "FATAL ERROR: CICE6 cannot be configured without MOM6, ABORT!" exit 1 fi + nthreads_cice6=${nthreads_mom6} # CICE6 needs to run on same threads as MOM6 case "${cice6_res}" in "500") @@ -470,39 +480,42 @@ if [[ "${skip_gocart}" == "false" ]]; then fi # Set the name of the UFS (previously nems) configure template to use +# Default ufs.configure templates for supported model configurations case "${model_list}" in atm) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.atm.IN" + default_template="${HOMEgfs}/parm/ufs/ufs.configure.atm.IN" ;; atm.aero) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.atm_aero.IN" + default_template="${HOMEgfs}/parm/ufs/ufs.configure.atmaero.IN" ;; atm.wave) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.leapfrog_atm_wav.IN" + default_template="${HOMEgfs}/parm/ufs/ufs.configure.leapfrog_atm_wav.IN" ;; atm.ocean.ice) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.cpld.IN" + default_template="${HOMEgfs}/parm/ufs/ufs.configure.s2s_esmf.IN" ;; atm.ocean.ice.aero) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.cpld_aero.IN" + default_template="${HOMEgfs}/parm/ufs/ufs.configure.s2sa_esmf.IN" ;; atm.ocean.ice.wave) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.cpld_outerwave.IN" + default_template="${HOMEgfs}/parm/ufs/ufs.configure.s2sw_esmf.IN" ;; atm.ocean.ice.wave.aero) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.cpld_aero_outerwave.IN" + default_template="${HOMEgfs}/parm/ufs/ufs.configure.s2swa_esmf.IN" ;; *) - echo "FATAL ERROR: Unable to determine appropriate UFS configure template for ${model_list}" + echo "FATAL ERROR: Unsupported UFSWM configuration for ${model_list}" exit 16 ;; esac +# Allow user to override the default template +export ufs_configure_template=${ufs_configure_template:-${default_template:-"/dev/null"}} +unset model_list default_template + if [[ ! -r "${ufs_configure_template}" ]]; then echo "FATAL ERROR: ${ufs_configure_template} either doesn't exist or is not readable." exit 17 fi -unset model_list - echo "END: config.ufs" diff --git a/parm/config/gfs/config.atmanl b/parm/config/gfs/config.atmanl index abfbd80734..3e6b351cb2 100644 --- a/parm/config/gfs/config.atmanl +++ b/parm/config/gfs/config.atmanl @@ -8,7 +8,7 @@ echo "BEGIN: config.atmanl" export CASE_ANL=${CASE} export OBS_YAML_DIR=${HOMEgfs}/sorc/gdas.cd/parm/atm/obs/config/ export OBS_LIST=${HOMEgfs}/sorc/gdas.cd/parm/atm/obs/lists/gdas_prototype_3d.yaml -export ATMVARYAML=${HOMEgfs}/sorc/gdas.cd/parm/atm/variational/3dvar_dripcg.yaml +export ATMVARYAML=${HOMEgfs}/sorc/gdas.cd/parm/atm/variational/3dvar_drpcg.yaml export STATICB_TYPE="gsibec" export BERROR_YAML=${HOMEgfs}/sorc/gdas.cd/parm/atm/berror/staticb_${STATICB_TYPE}.yaml export INTERP_METHOD='barycentric' diff --git a/parm/config/gfs/config.atmos_products b/parm/config/gfs/config.atmos_products index d8b1d6e32b..aefb1e7014 100644 --- a/parm/config/gfs/config.atmos_products +++ b/parm/config/gfs/config.atmos_products @@ -19,16 +19,22 @@ if [[ "${RUN:-}" == "gdas" ]]; then export downset=1 export FHOUT_PGBS=${FHOUT:-1} # Output frequency of supplemental gfs pgb file at 1.0 and 0.5 deg export FLXGF="NO" # Create interpolated sflux.1p00 file + export WGNE="NO" # WGNE products are created for first FHMAX_WGNE forecast hours + export FHMAX_WGNE=0 elif [[ "${RUN:-}" == "gfs" ]]; then export downset=2 export FHOUT_PGBS=${FHOUT_GFS:-3} # Output frequency of supplemental gfs pgb file at 1.0 and 0.5 deg export FLXGF="YES" # Create interpolated sflux.1p00 file + export WGNE="YES" # WGNE products are created for first FHMAX_WGNE forecast hours + export FHMAX_WGNE=180 fi +export APCP_MSG="597" # Message number for APCP in GFSv16. Look for TODO in exglobal_atmos_products.sh + # paramlist files for the different forecast hours and downsets -export paramlista="${HOMEgfs}/parm/post/global_1x1_paramlist_g2" -export paramlista_anl="${HOMEgfs}/parm/post/global_1x1_paramlist_g2.anl" -export paramlista_f000="${HOMEgfs}/parm/post/global_1x1_paramlist_g2.f000" -export paramlistb="${HOMEgfs}/parm/post/global_master-catchup_parmlist_g2" +export paramlista="${HOMEgfs}/parm/product/gfs.fFFF.paramlist.a.txt" +export paramlista_anl="${HOMEgfs}/parm/product/gfs.anl.paramlist.a.txt" +export paramlista_f000="${HOMEgfs}/parm/product/gfs.f000.paramlist.a.txt" +export paramlistb="${HOMEgfs}/parm/product/gfs.fFFF.paramlist.b.txt" echo "END: config.atmos_products" diff --git a/parm/config/gfs/config.fcst b/parm/config/gfs/config.fcst index f367df1194..6c4ce639f8 100644 --- a/parm/config/gfs/config.fcst +++ b/parm/config/gfs/config.fcst @@ -231,20 +231,6 @@ export FSICL="0" export FSICS="0" #--------------------------------------------------------------------- - -# ideflate: netcdf zlib lossless compression (0-9): 0 no compression -# nbits: netcdf lossy compression level (0-32): 0 lossless -export ideflate=1 -export nbits=14 -export ishuffle=0 -# compression for RESTART files written by FMS -export shuffle=1 -export deflate_level=1 - -#--------------------------------------------------------------------- -# Disable the use of coupler.res; get model start time from model_configure -export USE_COUPLER_RES="NO" - if [[ "${CDUMP}" =~ "gdas" ]] ; then # GDAS cycle specific parameters # Variables used in DA cycling diff --git a/parm/config/gfs/config.ice b/parm/config/gfs/config.ice index 205458020f..055bd1e2bb 100644 --- a/parm/config/gfs/config.ice +++ b/parm/config/gfs/config.ice @@ -6,4 +6,9 @@ echo "BEGIN: config.ice" export min_seaice="1.0e-6" export use_cice_alb=".true." +export MESH_ICE="mesh.mx${ICERES}.nc" + +export CICE_GRID="grid_cice_NEMS_mx${ICERES}.nc" +export CICE_MASK="kmtu_cice_NEMS_mx${ICERES}.nc" + echo "END: config.ice" diff --git a/parm/config/gfs/config.ocn b/parm/config/gfs/config.ocn index 37f6a966aa..f9e6595ce9 100644 --- a/parm/config/gfs/config.ocn +++ b/parm/config/gfs/config.ocn @@ -2,8 +2,7 @@ echo "BEGIN: config.ocn" -# MOM_input template to use -export MOM_INPUT="MOM_input_template_${OCNRES}" +export MESH_OCN="mesh.mx${OCNRES}.nc" export DO_OCN_SPPT="NO" # In MOM_input, this variable is determines OCN_SPPT (OCN_SPPT = True|False) export DO_OCN_PERT_EPBL="NO" # In MOM_input, this variable determines PERT_EPBL (PERT_EPBL = True|False) diff --git a/parm/config/gfs/config.prepoceanobs b/parm/config/gfs/config.prepoceanobs index d7c4e37bb9..56fc349ce2 100644 --- a/parm/config/gfs/config.prepoceanobs +++ b/parm/config/gfs/config.prepoceanobs @@ -7,7 +7,7 @@ echo "BEGIN: config.prepoceanobs" export OCNOBS2IODAEXEC=${HOMEgfs}/sorc/gdas.cd/build/bin/gdas_obsprovider2ioda.x export OBS_YAML_DIR=${HOMEgfs}/sorc/gdas.cd/parm/soca/obs/config -export OBSPROC_YAML=@OBSPROC_YAML@ +export OBSPREP_YAML=@OBSPREP_YAML@ export OBS_LIST=@SOCA_OBS_LIST@ [[ -n "${OBS_LIST}" ]] || export OBS_LIST=${HOMEgfs}/sorc/gdas.cd/parm/soca/obs/obs_list.yaml export OBS_YAML=${OBS_LIST} diff --git a/parm/config/gfs/config.resources b/parm/config/gfs/config.resources index 98ddb47a7d..26d5aa9126 100644 --- a/parm/config/gfs/config.resources +++ b/parm/config/gfs/config.resources @@ -4,7 +4,7 @@ # Set resource information for job tasks # e.g. walltime, node, cores per node, memory etc. -if [[ $# -ne 1 ]]; then +if (( $# != 1 )); then echo "Must specify an input task argument to set resource variables!" echo "argument can be any one of the following:" @@ -32,620 +32,589 @@ step=$1 echo "BEGIN: config.resources" -if [[ "${machine}" = "WCOSS2" ]]; then - export npe_node_max=128 -elif [[ "${machine}" = "JET" ]]; then - if [[ ${PARTITION_BATCH} = "xjet" ]]; then - export npe_node_max=24 - elif [[ ${PARTITION_BATCH} = "vjet" || ${PARTITION_BATCH} = "sjet" ]]; then - export npe_node_max=16 - elif [[ ${PARTITION_BATCH} = "kjet" ]]; then - export npe_node_max=40 - fi -elif [[ ${machine} = "HERA" ]]; then - export npe_node_max=40 -elif [[ ${machine} = "S4" ]]; then - if [[ ${PARTITION_BATCH} = "s4" ]]; then - export npe_node_max=32 - elif [[ ${PARTITION_BATCH} = "ivy" ]]; then - export npe_node_max=20 - fi -elif [[ "${machine}" = "AWSPW" ]]; then - export PARTITION_BATCH="compute" - export npe_node_max=40 -elif [[ ${machine} = "ORION" ]]; then - export npe_node_max=40 -elif [[ ${machine} = "HERCULES" ]]; then - export npe_node_max=80 -fi +case ${machine} in + "WCOSS2") npe_node_max=128;; + "HERA") npe_node_max=40;; + "ORION") npe_node_max=40;; + "HERCULES") npe_node_max=80;; + "JET") + case ${PARTITION_BATCH} in + "xjet") npe_node_max=24;; + "vjet" | "sjet") npe_node_max=16;; + "kjet") npe_node_max=40;; + *) + echo "FATAL ERROR: Unknown partition ${PARTITION_BATCH} specified for ${machine}" + exit 3 + esac + ;; + "S4") + case ${PARTITION_BATCH} in + "s4") npe_node_max=32;; + "ivy") npe_node_max=20;; + *) + echo "FATAL ERROR: Unknown partition ${PARTITION_BATCH} specified for ${machine}" + exit 3 + esac + ;; + "AWSPW") + export PARTITION_BATCH="compute" + npe_node_max=40 + ;; + *) + echo "FATAL ERROR: Unknown machine encountered by ${BASH_SOURCE[0]}" + exit 2 + ;; +esac +export npe_node_max -if [[ ${step} = "prep" ]]; then +case ${step} in + "prep") export wtime_prep='00:30:00' export npe_prep=4 export npe_node_prep=2 export nth_prep=1 - if [[ "${machine}" = "WCOSS2" ]]; then + if [[ "${machine}" == "WCOSS2" ]]; then export is_exclusive=True else - export memory_prep="40G" + export memory_prep="40GB" fi + ;; -elif [[ "${step}" = "preplandobs" ]]; then + "preplandobs") export wtime_preplandobs="00:05:00" - npe_preplandobs=1 - export npe_preplandobs + export npe_preplandobs=1 export nth_preplandobs=1 - npe_node_preplandobs=1 - export npe_node_preplandobs + export npe_node_preplandobs=1 + ;; -elif [[ "${step}" = "prepatmiodaobs" ]]; then + "prepatmiodaobs") export wtime_prepatmiodaobs="00:10:00" export npe_prepatmiodaobs=1 export nth_prepatmiodaobs=1 - npe_node_prepatmiodaobs=$(echo "${npe_node_max} / ${nth_prepatmiodaobs}" | bc) - export npe_node_prepatmiodaobs + export npe_node_prepatmiodaobs=$(( npe_node_max / nth_prepatmiodaobs )) + ;; -elif [[ "${step}" = "aerosol_init" ]]; then + "aerosol_init") export wtime_aerosol_init="00:05:00" export npe_aerosol_init=1 export nth_aerosol_init=1 - npe_node_aerosol_init=$(echo "${npe_node_max} / ${nth_aerosol_init}" | bc) - export npe_node_aerosol_init + export npe_node_aerosol_init=$(( npe_node_max / nth_aerosol_init )) export NTASKS=${npe_aerosol_init} - export memory_aerosol_init="6G" - -elif [[ ${step} = "waveinit" ]]; then + export memory_aerosol_init="6GB" + ;; + "waveinit") export wtime_waveinit="00:10:00" export npe_waveinit=12 export nth_waveinit=1 - npe_node_waveinit=$(echo "${npe_node_max} / ${nth_waveinit}" | bc) - export npe_node_waveinit + export npe_node_waveinit=$(( npe_node_max / nth_waveinit )) export NTASKS=${npe_waveinit} export memory_waveinit="2GB" + ;; -elif [[ ${step} = "waveprep" ]]; then - + "waveprep") export wtime_waveprep="00:10:00" export npe_waveprep=5 export npe_waveprep_gfs=65 export nth_waveprep=1 export nth_waveprep_gfs=1 - npe_node_waveprep=$(echo "${npe_node_max} / ${nth_waveprep}" | bc) - export npe_node_waveprep - npe_node_waveprep_gfs=$(echo "${npe_node_max} / ${nth_waveprep_gfs}" | bc) - export npe_node_waveprep_gfs + export npe_node_waveprep=$(( npe_node_max / nth_waveprep )) + export npe_node_waveprep_gfs=$(( npe_node_max / nth_waveprep_gfs )) export NTASKS=${npe_waveprep} export NTASKS_gfs=${npe_waveprep_gfs} export memory_waveprep="100GB" export memory_waveprep_gfs="150GB" + ;; -elif [[ ${step} = "wavepostsbs" ]]; then - + "wavepostsbs") export wtime_wavepostsbs="00:20:00" export wtime_wavepostsbs_gfs="03:00:00" export npe_wavepostsbs=8 export nth_wavepostsbs=1 - npe_node_wavepostsbs=$(echo "${npe_node_max} / ${nth_wavepostsbs}" | bc) - export npe_node_wavepostsbs + export npe_node_wavepostsbs=$(( npe_node_max / nth_wavepostsbs )) export NTASKS=${npe_wavepostsbs} export memory_wavepostsbs="10GB" export memory_wavepostsbs_gfs="10GB" + ;; -elif [[ ${step} = "wavepostbndpnt" ]]; then - + "wavepostbndpnt") export wtime_wavepostbndpnt="01:00:00" export npe_wavepostbndpnt=240 export nth_wavepostbndpnt=1 - npe_node_wavepostbndpnt=$(echo "${npe_node_max} / ${nth_wavepostbndpnt}" | bc) - export npe_node_wavepostbndpnt + export npe_node_wavepostbndpnt=$(( npe_node_max / nth_wavepostbndpnt )) export NTASKS=${npe_wavepostbndpnt} export is_exclusive=True + ;; -elif [[ ${step} = "wavepostbndpntbll" ]]; then - + "wavepostbndpntbll") export wtime_wavepostbndpntbll="01:00:00" export npe_wavepostbndpntbll=448 export nth_wavepostbndpntbll=1 - npe_node_wavepostbndpntbll=$(echo "${npe_node_max} / ${nth_wavepostbndpntbll}" | bc) - export npe_node_wavepostbndpntbll + export npe_node_wavepostbndpntbll=$(( npe_node_max / nth_wavepostbndpntbll )) export NTASKS=${npe_wavepostbndpntbll} export is_exclusive=True + ;; -elif [[ ${step} = "wavepostpnt" ]]; then - + "wavepostpnt") export wtime_wavepostpnt="04:00:00" export npe_wavepostpnt=200 export nth_wavepostpnt=1 - npe_node_wavepostpnt=$(echo "${npe_node_max} / ${nth_wavepostpnt}" | bc) - export npe_node_wavepostpnt + export npe_node_wavepostpnt=$(( npe_node_max / nth_wavepostpnt )) export NTASKS=${npe_wavepostpnt} export is_exclusive=True + ;; -elif [[ ${step} = "wavegempak" ]]; then - + "wavegempak") export wtime_wavegempak="02:00:00" export npe_wavegempak=1 export nth_wavegempak=1 - npe_node_wavegempak=$(echo "${npe_node_max} / ${nth_wavegempak}" | bc) - export npe_node_wavegempak + export npe_node_wavegempak=$(( npe_node_max / nth_wavegempak )) export NTASKS=${npe_wavegempak} export memory_wavegempak="1GB" + ;; -elif [[ ${step} = "waveawipsbulls" ]]; then - + "waveawipsbulls") export wtime_waveawipsbulls="00:20:00" export npe_waveawipsbulls=1 export nth_waveawipsbulls=1 - npe_node_waveawipsbulls=$(echo "${npe_node_max} / ${nth_waveawipsbulls}" | bc) - export npe_node_waveawipsbulls + export npe_node_waveawipsbulls=$(( npe_node_max / nth_waveawipsbulls )) export NTASKS=${npe_waveawipsbulls} export is_exclusive=True + ;; -elif [[ ${step} = "waveawipsgridded" ]]; then - + "waveawipsgridded") export wtime_waveawipsgridded="02:00:00" export npe_waveawipsgridded=1 export nth_waveawipsgridded=1 - npe_node_waveawipsgridded=$(echo "${npe_node_max} / ${nth_waveawipsgridded}" | bc) - export npe_node_waveawipsgridded + export npe_node_waveawipsgridded=$(( npe_node_max / nth_waveawipsgridded )) export NTASKS=${npe_waveawipsgridded} export memory_waveawipsgridded_gfs="1GB" + ;; -elif [[ "${step}" = "atmanlinit" ]]; then - + "atmanlinit") # make below case dependent later export layout_x=1 export layout_y=1 - layout_gsib_x=$(echo "${layout_x} * 3" | bc) - export layout_gsib_x - layout_gsib_y=$(echo "${layout_y} * 2" | bc) - export layout_gsib_y + export layout_gsib_x=$(( layout_x * 3 )) + export layout_gsib_y=$(( layout_y * 2 )) export wtime_atmanlinit="00:10:00" export npe_atmanlinit=1 export nth_atmanlinit=1 - npe_node_atmanlinit=$(echo "${npe_node_max} / ${nth_atmanlinit}" | bc) + export npe_node_atmanlinit=$(( npe_node_max / nth_atmanlinit )) export npe_node_atmanlinit export memory_atmanlinit="3072M" + ;; -elif [[ "${step}" = "atmanlrun" ]]; then - + "atmanlrun") # make below case dependent later export layout_x=1 export layout_y=1 export wtime_atmanlrun="00:30:00" - npe_atmanlrun=$(echo "${layout_x} * ${layout_y} * 6" | bc) - export npe_atmanlrun - npe_atmanlrun_gfs=$(echo "${layout_x} * ${layout_y} * 6" | bc) - export npe_atmanlrun_gfs + export npe_atmanlrun=$(( layout_x * layout_y * 6 )) + export npe_atmanlrun_gfs=$(( layout_x * layout_y * 6 )) export nth_atmanlrun=1 export nth_atmanlrun_gfs=${nth_atmanlrun} - npe_node_atmanlrun=$(echo "${npe_node_max} / ${nth_atmanlrun}" | bc) - export npe_node_atmanlrun + export npe_node_atmanlrun=$(( npe_node_max / nth_atmanlrun )) export is_exclusive=True + ;; -elif [[ "${step}" = "atmanlfinal" ]]; then - + "atmanlfinal") export wtime_atmanlfinal="00:30:00" export npe_atmanlfinal=${npe_node_max} export nth_atmanlfinal=1 - npe_node_atmanlfinal=$(echo "${npe_node_max} / ${nth_atmanlfinal}" | bc) - export npe_node_atmanlfinal + export npe_node_atmanlfinal=$(( npe_node_max / nth_atmanlfinal )) export is_exclusive=True + ;; -elif [[ "${step}" = "landanl" ]]; then - # below lines are for creating JEDI YAML - case ${CASE} in - C768) + "landanl") + # below lines are for creating JEDI YAML + case ${CASE} in + "C768") layout_x=6 layout_y=6 ;; - C384) + "C384") layout_x=5 layout_y=5 ;; - C192 | C96 | C48) + "C192" | "C96" | "C48") layout_x=1 layout_y=1 ;; - *) - echo "FATAL ERROR: Resolution not supported for land analysis'" - exit 1 - esac - - export layout_x - export layout_y - - export wtime_landanl="00:15:00" - npe_landanl=$(echo "${layout_x} * ${layout_y} * 6" | bc) - export npe_landanl - export nth_landanl=1 - npe_node_landanl=$(echo "${npe_node_max} / ${nth_landanl}" | bc) - export npe_node_landanl - -elif [[ "${step}" = "aeroanlinit" ]]; then - - # below lines are for creating JEDI YAML - case ${CASE} in - C768) + *) + echo "FATAL ERROR: Resources not defined for job ${job} at resolution ${CASE}" + exit 4 + esac + + export layout_x + export layout_y + + export wtime_landanl="00:15:00" + export npe_landanl=$(( layout_x * layout_y * 6 )) + export nth_landanl=1 + export npe_node_landanl=$(( npe_node_max / nth_landanl )) + ;; + + "aeroanlinit") + # below lines are for creating JEDI YAML + case ${CASE} in + "C768") layout_x=8 layout_y=8 ;; - C384) + "C384") layout_x=8 layout_y=8 ;; - C192 | C96) + "C192" | "C96") layout_x=8 layout_y=8 ;; - C48 ) + "C48" ) # this case is for testing only layout_x=1 layout_y=1 ;; *) - echo "FATAL ERROR: Resolution not supported for aerosol analysis'" - exit 1 + echo "FATAL ERROR: Resources not defined for job ${job} at resolution ${CASE}" + exit 4 esac export layout_x export layout_y - export wtime_aeroanlinit="00:10:00" export npe_aeroanlinit=1 export nth_aeroanlinit=1 - npe_node_aeroanlinit=$(echo "${npe_node_max} / ${nth_aeroanlinit}" | bc) - export npe_node_aeroanlinit + export npe_node_aeroanlinit=$(( npe_node_max / nth_aeroanlinit )) export memory_aeroanlinit="3072M" + ;; -elif [[ "${step}" = "aeroanlrun" ]]; then - - case ${CASE} in - C768) + "aeroanlrun") + case ${CASE} in + "C768") layout_x=8 layout_y=8 ;; - C384) + "C384") layout_x=8 layout_y=8 ;; - C192 | C96) + "C192" | "C96") layout_x=8 layout_y=8 ;; - C48 ) + "C48" ) # this case is for testing only layout_x=1 layout_y=1 ;; *) - echo "FATAL ERROR: Resolution ${CASE} is not supported, ABORT!" - exit 1 + echo "FATAL ERROR: Resources not defined for job ${job} at resolution ${CASE}" + exit 4 esac export layout_x export layout_y export wtime_aeroanlrun="00:30:00" - npe_aeroanlrun=$(echo "${layout_x} * ${layout_y} * 6" | bc) - export npe_aeroanlrun - npe_aeroanlrun_gfs=$(echo "${layout_x} * ${layout_y} * 6" | bc) - export npe_aeroanlrun_gfs + export npe_aeroanlrun=$(( layout_x * layout_y * 6 )) + export npe_aeroanlrun_gfs=$(( layout_x * layout_y * 6 )) export nth_aeroanlrun=1 export nth_aeroanlrun_gfs=1 - npe_node_aeroanlrun=$(echo "${npe_node_max} / ${nth_aeroanlrun}" | bc) - export npe_node_aeroanlrun + export npe_node_aeroanlrun=$(( npe_node_max / nth_aeroanlrun )) export is_exclusive=True + ;; -elif [[ "${step}" = "aeroanlfinal" ]]; then - + "aeroanlfinal") export wtime_aeroanlfinal="00:10:00" export npe_aeroanlfinal=1 export nth_aeroanlfinal=1 - npe_node_aeroanlfinal=$(echo "${npe_node_max} / ${nth_aeroanlfinal}" | bc) - export npe_node_aeroanlfinal + export npe_node_aeroanlfinal=$(( npe_node_max / nth_aeroanlfinal )) export memory_aeroanlfinal="3072M" + ;; -elif [[ "${step}" = "ocnanalprep" ]]; then - + "ocnanalprep") export wtime_ocnanalprep="00:10:00" export npe_ocnanalprep=1 export nth_ocnanalprep=1 - npe_node_ocnanalprep=$(echo "${npe_node_max} / ${nth_ocnanalprep}" | bc) - export npe_node_ocnanalprep + export npe_node_ocnanalprep=$(( npe_node_max / nth_ocnanalprep )) export memory_ocnanalprep="24GB" + ;; -elif [[ "${step}" = "prepoceanobs" ]]; then - + "prepoceanobs") export wtime_prepoceanobs="00:10:00" export npe_prepoceanobs=1 export nth_prepoceanobs=1 - npe_node_prepoceanobs=$(echo "${npe_node_max} / ${nth_prepoceanobs}" | bc) - export npe_node_prepoceanobs + export npe_node_prepoceanobs=$(( npe_node_max / nth_prepoceanobs )) export memory_prepoceanobs="24GB" - - -elif [[ "${step}" = "ocnanalbmat" ]]; then - npes=16 - case ${CASE} in - C384) - npes=480 - ;; - C96) - npes=16 - ;; - C48) - npes=16 - ;; + ;; + + "ocnanalbmat") + npes=16 + case ${CASE} in + "C384") npes=480;; + "C96") npes=16;; + "C48") npes=16;; *) - echo "FATAL: Resolution not supported'" - exit 1 + echo "FATAL ERROR: Resources not defined for job ${job} at resolution ${CASE}" + exit 4 esac export wtime_ocnanalbmat="00:30:00" export npe_ocnanalbmat=${npes} export nth_ocnanalbmat=1 export is_exclusive=True - npe_node_ocnanalbmat=$(echo "${npe_node_max} / ${nth_ocnanalbmat}" | bc) - export npe_node_ocnanalbmat + export npe_node_ocnanalbmat=$(( npe_node_max / nth_ocnanalbmat )) + ;; -elif [[ "${step}" = "ocnanalrun" ]]; then - npes=16 - case ${CASE} in - C384) + "ocnanalrun") + npes=16 + case ${CASE} in + "C384") npes=480 memory_ocnanalrun="128GB" ;; - C96) + "C96") npes=16 ;; - C48) + "C48") npes=16 memory_ocnanalrun="64GB" ;; *) - echo "FATAL: Resolution not supported'" - exit 1 + echo "FATAL ERROR: Resources not defined for job ${job} at resolution ${CASE}" + exit 4 esac export wtime_ocnanalrun="00:15:00" export npe_ocnanalrun=${npes} - export nth_ocnanalrun=2 + export nth_ocnanalrun=1 export is_exclusive=True - npe_node_ocnanalrun=$(echo "${npe_node_max} / ${nth_ocnanalrun}" | bc) - export npe_node_ocnanalrun + export npe_node_ocnanalrun=$(( npe_node_max / nth_ocnanalrun )) export memory_ocnanalrun - -elif [[ "${step}" = "ocnanalchkpt" ]]; then - - export wtime_ocnanalchkpt="00:10:00" - export npe_ocnanalchkpt=1 - export nth_ocnanalchkpt=1 - npe_node_ocnanalchkpt=$(echo "${npe_node_max} / ${nth_ocnanalchkpt}" | bc) - export npe_node_ocnanalchkpt - case ${CASE} in - C384) - export memory_ocnanalchkpt="128GB" - ;; - C96) - export memory_ocnanalchkpt="32GB" - ;; - C48) - export memory_ocnanalchkpt="32GB" - ;; + ;; + + "ocnanalchkpt") + export wtime_ocnanalchkpt="00:10:00" + export npe_ocnanalchkpt=1 + export nth_ocnanalchkpt=1 + export npe_node_ocnanalchkpt=$(( npe_node_max / nth_ocnanalchkpt )) + case ${CASE} in + "C384") memory_ocnanalchkpt="128GB";; + "C96") memory_ocnanalchkpt="32GB";; + "C48") memory_ocnanalchkpt="32GB";; *) - echo "FATAL: Resolution not supported'" - exit 1 + echo "FATAL ERROR: Resources not defined for job ${job} at resolution ${CASE}" + exit 4 esac + export memory_ocnanalchkpt + ;; -elif [[ "${step}" = "ocnanalpost" ]]; then - + "ocnanalpost") export wtime_ocnanalpost="00:30:00" export npe_ocnanalpost=${npe_node_max} export nth_ocnanalpost=1 - npe_node_ocnanalpost=$(echo "${npe_node_max} / ${nth_ocnanalpost}" | bc) - export npe_node_ocnanalpost - -elif [[ "${step}" = "ocnanalvrfy" ]]; then + export npe_node_ocnanalpost=$(( npe_node_max / nth_ocnanalpost )) + ;; + "ocnanalvrfy") export wtime_ocnanalvrfy="00:35:00" export npe_ocnanalvrfy=1 export nth_ocnanalvrfy=1 - npe_node_ocnanalvrfy=$(echo "${npe_node_max} / ${nth_ocnanalvrfy}" | bc) - export npe_node_ocnanalvrfy + export npe_node_ocnanalvrfy=$(( npe_node_max / nth_ocnanalvrfy )) export memory_ocnanalvrfy="24GB" + ;; -elif [[ ${step} = "anal" ]]; then - + "anal") export wtime_anal="00:50:00" export wtime_anal_gfs="00:40:00" export npe_anal=780 export nth_anal=5 export npe_anal_gfs=825 export nth_anal_gfs=5 - if [[ "${machine}" = "WCOSS2" ]]; then + if [[ "${machine}" == "WCOSS2" ]]; then export nth_anal=8 export nth_anal_gfs=8 fi - if [[ ${CASE} = "C384" ]]; then - export npe_anal=160 - export npe_anal_gfs=160 - export nth_anal=10 - export nth_anal_gfs=10 - if [[ ${machine} = "S4" ]]; then - #On the S4-s4 partition, this is accomplished by increasing the task - #count to a multiple of 32 - if [[ ${PARTITION_BATCH} = "s4" ]]; then + case ${CASE} in + "C384") + export npe_anal=160 + export npe_anal_gfs=160 + export nth_anal=10 + export nth_anal_gfs=10 + if [[ ${machine} = "S4" ]]; then + #On the S4-s4 partition, this is accomplished by increasing the task + #count to a multiple of 32 + if [[ ${PARTITION_BATCH} = "s4" ]]; then export npe_anal=416 export npe_anal_gfs=416 - fi - #S4 is small, so run this task with just 1 thread - export nth_anal=1 - export nth_anal_gfs=1 - export wtime_anal="02:00:00" - fi - fi - if [[ ${CASE} = "C192" || ${CASE} = "C96" || ${CASE} = "C48" ]]; then - export npe_anal=84 - export npe_anal_gfs=84 - if [[ ${machine} = "S4" ]]; then - export nth_anal=4 - export nth_anal_gfs=4 - #Adjust job count for S4 - if [[ ${PARTITION_BATCH} = "s4" ]]; then + fi + #S4 is small, so run this task with just 1 thread + export nth_anal=1 + export nth_anal_gfs=1 + export wtime_anal="02:00:00" + fi + ;; + "C192" | "C96" | "C48") + export npe_anal=84 + export npe_anal_gfs=84 + if [[ ${machine} == "S4" ]]; then + export nth_anal=4 + export nth_anal_gfs=4 + #Adjust job count for S4 + if [[ ${PARTITION_BATCH} == "s4" ]]; then export npe_anal=88 export npe_anal_gfs=88 - elif [[ ${PARTITION_BATCH} = "ivy" ]]; then + elif [[ ${PARTITION_BATCH} == "ivy" ]]; then export npe_anal=90 export npe_anal_gfs=90 - fi - fi - fi - npe_node_anal=$(echo "${npe_node_max} / ${nth_anal}" | bc) - export npe_node_anal + fi + fi + ;; + *) + echo "FATAL ERROR: Resources not defined for job ${job} at resolution ${CASE}" + exit 4 + ;; + esac + export npe_node_anal=$(( npe_node_max / nth_anal )) export nth_cycle=${nth_anal} - npe_node_cycle=$(echo "${npe_node_max} / ${nth_cycle}" | bc) - export npe_node_cycle + export npe_node_cycle=$(( npe_node_max / nth_cycle )) export is_exclusive=True + ;; -elif [[ ${step} = "analcalc" ]]; then - + "analcalc") export wtime_analcalc="00:10:00" export npe_analcalc=127 export ntasks="${npe_analcalc}" export nth_analcalc=1 export nth_echgres=4 export nth_echgres_gfs=12 - npe_node_analcalc=$(echo "${npe_node_max} / ${nth_analcalc}" | bc) - export npe_node_analcalc + export npe_node_analcalc=$(( npe_node_max / nth_analcalc )) export is_exclusive=True export memory_analcalc="48GB" + ;; -elif [[ ${step} = "analdiag" ]]; then - + "analdiag") export wtime_analdiag="00:15:00" export npe_analdiag=96 # Should be at least twice npe_ediag export nth_analdiag=1 - npe_node_analdiag=$(echo "${npe_node_max} / ${nth_analdiag}" | bc) - export npe_node_analdiag + export npe_node_analdiag=$(( npe_node_max / nth_analdiag )) export memory_analdiag="48GB" + ;; -elif [[ ${step} = "sfcanl" ]]; then - + "sfcanl") export wtime_sfcanl="00:10:00" export npe_sfcanl=6 export nth_sfcanl=1 - npe_node_sfcanl=$(echo "${npe_node_max} / ${nth_sfcanl}" | bc) - export npe_node_sfcanl + export npe_node_sfcanl=$(( npe_node_max / nth_sfcanl )) export is_exclusive=True + ;; -elif [[ "${step}" = "fcst" || "${step}" = "efcs" ]]; then - + "fcst" | "efcs") export is_exclusive=True - if [[ "${step}" = "fcst" ]]; then - _CDUMP_LIST=${CDUMP:-"gdas gfs"} - elif [[ "${step}" = "efcs" ]]; then - _CDUMP_LIST=${CDUMP:-"enkfgdas enkfgfs"} + if [[ "${step}" == "fcst" ]]; then + _CDUMP_LIST=${CDUMP:-"gdas gfs"} + elif [[ "${step}" == "efcs" ]]; then + _CDUMP_LIST=${CDUMP:-"enkfgdas enkfgfs"} fi # During workflow creation, we need resources for all CDUMPs and CDUMP is undefined for _CDUMP in ${_CDUMP_LIST}; do - if [[ "${_CDUMP}" =~ "gfs" ]]; then - export layout_x=${layout_x_gfs} - export layout_y=${layout_y_gfs} - export WRITE_GROUP=${WRITE_GROUP_GFS} - export WRTTASK_PER_GROUP_PER_THREAD=${WRTTASK_PER_GROUP_PER_THREAD_GFS} - ntasks_fv3=${ntasks_fv3_gfs} - ntasks_quilt=${ntasks_quilt_gfs} - nthreads_fv3=${nthreads_fv3_gfs} - fi + if [[ "${_CDUMP}" =~ "gfs" ]]; then + export layout_x=${layout_x_gfs} + export layout_y=${layout_y_gfs} + export WRITE_GROUP=${WRITE_GROUP_GFS} + export WRTTASK_PER_GROUP_PER_THREAD=${WRTTASK_PER_GROUP_PER_THREAD_GFS} + ntasks_fv3=${ntasks_fv3_gfs} + ntasks_quilt=${ntasks_quilt_gfs} + nthreads_fv3=${nthreads_fv3_gfs} + fi - # PETS for the atmosphere dycore - (( FV3PETS = ntasks_fv3 * nthreads_fv3 )) - echo "FV3 using (nthreads, PETS) = (${nthreads_fv3}, ${FV3PETS})" - - # PETS for quilting - if [[ "${QUILTING:-}" = ".true." ]]; then - (( QUILTPETS = ntasks_quilt * nthreads_fv3 )) - (( WRTTASK_PER_GROUP = WRTTASK_PER_GROUP_PER_THREAD )) - export WRTTASK_PER_GROUP - else - QUILTPETS=0 - fi - echo "QUILT using (nthreads, PETS) = (${nthreads_fv3}, ${QUILTPETS})" - - # Total PETS for the atmosphere component - ATMTHREADS=${nthreads_fv3} - (( ATMPETS = FV3PETS + QUILTPETS )) - export ATMPETS ATMTHREADS - echo "FV3ATM using (nthreads, PETS) = (${ATMTHREADS}, ${ATMPETS})" - - # Total PETS for the coupled model (starting w/ the atmosphere) - NTASKS_TOT=${ATMPETS} - - # The mediator PETS can overlap with other components, usually it lands on the atmosphere tasks. - # However, it is suggested limiting mediator PETS to 300, as it may cause the slow performance. - # See https://docs.google.com/document/d/1bKpi-52t5jIfv2tuNHmQkYUe3hkKsiG_DG_s6Mnukog/edit - # TODO: Update reference when moved to ufs-weather-model RTD - MEDTHREADS=${nthreads_mediator:-1} - MEDPETS=${MEDPETS:-${FV3PETS}} - [[ "${MEDPETS}" -gt 300 ]] && MEDPETS=300 - export MEDPETS MEDTHREADS - echo "MEDIATOR using (threads, PETS) = (${MEDTHREADS}, ${MEDPETS})" - - CHMPETS=0; CHMTHREADS=0 - if [[ "${DO_AERO}" = "YES" ]]; then - # GOCART shares the same grid and forecast tasks as FV3 (do not add write grid component tasks). - (( CHMTHREADS = ATMTHREADS )) - (( CHMPETS = FV3PETS )) - # Do not add to NTASKS_TOT - echo "GOCART using (threads, PETS) = (${CHMTHREADS}, ${CHMPETS})" - fi - export CHMPETS CHMTHREADS - - WAVPETS=0; WAVTHREADS=0 - if [[ "${DO_WAVE}" = "YES" ]]; then - (( WAVPETS = ntasks_ww3 * nthreads_ww3 )) - (( WAVTHREADS = nthreads_ww3 )) - echo "WW3 using (threads, PETS) = (${WAVTHREADS}, ${WAVPETS})" - (( NTASKS_TOT = NTASKS_TOT + WAVPETS )) - fi - export WAVPETS WAVTHREADS - - OCNPETS=0; OCNTHREADS=0 - if [[ "${DO_OCN}" = "YES" ]]; then - (( OCNPETS = ntasks_mom6 * nthreads_mom6 )) - (( OCNTHREADS = nthreads_mom6 )) - echo "MOM6 using (threads, PETS) = (${OCNTHREADS}, ${OCNPETS})" - (( NTASKS_TOT = NTASKS_TOT + OCNPETS )) - fi - export OCNPETS OCNTHREADS - - ICEPETS=0; ICETHREADS=0 - if [[ "${DO_ICE}" = "YES" ]]; then - (( ICEPETS = ntasks_cice6 * nthreads_cice6 )) - (( ICETHREADS = nthreads_cice6 )) - echo "CICE6 using (threads, PETS) = (${ICETHREADS}, ${ICEPETS})" - (( NTASKS_TOT = NTASKS_TOT + ICEPETS )) - fi - export ICEPETS ICETHREADS - - echo "Total PETS for ${_CDUMP} = ${NTASKS_TOT}" - - if [[ "${_CDUMP}" =~ "gfs" ]]; then - declare -x "npe_${step}_gfs"="${NTASKS_TOT}" - declare -x "nth_${step}_gfs"=1 # ESMF handles threading for the UFS-weather-model - declare -x "npe_node_${step}_gfs"="${npe_node_max}" - else - declare -x "npe_${step}"="${NTASKS_TOT}" - declare -x "nth_${step}"=1 # ESMF handles threading for the UFS-weather-model - declare -x "npe_node_${step}"="${npe_node_max}" - fi + # PETS for the atmosphere dycore + (( FV3PETS = ntasks_fv3 * nthreads_fv3 )) + echo "FV3 using (nthreads, PETS) = (${nthreads_fv3}, ${FV3PETS})" + + # PETS for quilting + if [[ "${QUILTING:-}" == ".true." ]]; then + (( QUILTPETS = ntasks_quilt * nthreads_fv3 )) + (( WRTTASK_PER_GROUP = WRTTASK_PER_GROUP_PER_THREAD )) + export WRTTASK_PER_GROUP + else + QUILTPETS=0 + fi + echo "QUILT using (nthreads, PETS) = (${nthreads_fv3}, ${QUILTPETS})" + + # Total PETS for the atmosphere component + ATMTHREADS=${nthreads_fv3} + (( ATMPETS = FV3PETS + QUILTPETS )) + export ATMPETS ATMTHREADS + echo "FV3ATM using (nthreads, PETS) = (${ATMTHREADS}, ${ATMPETS})" + + # Total PETS for the coupled model (starting w/ the atmosphere) + NTASKS_TOT=${ATMPETS} + + # The mediator PETS can overlap with other components, usually it lands on the atmosphere tasks. + # However, it is suggested limiting mediator PETS to 300, as it may cause the slow performance. + # See https://docs.google.com/document/d/1bKpi-52t5jIfv2tuNHmQkYUe3hkKsiG_DG_s6Mnukog/edit + # TODO: Update reference when moved to ufs-weather-model RTD + MEDTHREADS=${nthreads_mediator:-1} + MEDPETS=${MEDPETS:-${FV3PETS}} + (( "${MEDPETS}" > 300 )) && MEDPETS=300 + export MEDPETS MEDTHREADS + echo "MEDIATOR using (threads, PETS) = (${MEDTHREADS}, ${MEDPETS})" + + CHMPETS=0; CHMTHREADS=0 + if [[ "${DO_AERO}" == "YES" ]]; then + # GOCART shares the same grid and forecast tasks as FV3 (do not add write grid component tasks). + (( CHMTHREADS = ATMTHREADS )) + (( CHMPETS = FV3PETS )) + # Do not add to NTASKS_TOT + echo "GOCART using (threads, PETS) = (${CHMTHREADS}, ${CHMPETS})" + fi + export CHMPETS CHMTHREADS + + WAVPETS=0; WAVTHREADS=0 + if [[ "${DO_WAVE}" == "YES" ]]; then + (( WAVPETS = ntasks_ww3 * nthreads_ww3 )) + (( WAVTHREADS = nthreads_ww3 )) + echo "WW3 using (threads, PETS) = (${WAVTHREADS}, ${WAVPETS})" + (( NTASKS_TOT = NTASKS_TOT + WAVPETS )) + fi + export WAVPETS WAVTHREADS + + OCNPETS=0; OCNTHREADS=0 + if [[ "${DO_OCN}" == "YES" ]]; then + (( OCNPETS = ntasks_mom6 * nthreads_mom6 )) + (( OCNTHREADS = nthreads_mom6 )) + echo "MOM6 using (threads, PETS) = (${OCNTHREADS}, ${OCNPETS})" + (( NTASKS_TOT = NTASKS_TOT + OCNPETS )) + fi + export OCNPETS OCNTHREADS + + ICEPETS=0; ICETHREADS=0 + if [[ "${DO_ICE}" == "YES" ]]; then + (( ICEPETS = ntasks_cice6 * nthreads_cice6 )) + (( ICETHREADS = nthreads_cice6 )) + echo "CICE6 using (threads, PETS) = (${ICETHREADS}, ${ICEPETS})" + (( NTASKS_TOT = NTASKS_TOT + ICEPETS )) + fi + export ICEPETS ICETHREADS + + echo "Total PETS for ${_CDUMP} = ${NTASKS_TOT}" + + if [[ "${_CDUMP}" =~ "gfs" ]]; then + declare -x "npe_${step}_gfs"="${NTASKS_TOT}" + declare -x "nth_${step}_gfs"=1 # ESMF handles threading for the UFS-weather-model + declare -x "npe_node_${step}_gfs"="${npe_node_max}" + else + declare -x "npe_${step}"="${NTASKS_TOT}" + declare -x "nth_${step}"=1 # ESMF handles threading for the UFS-weather-model + declare -x "npe_node_${step}"="${npe_node_max}" + fi done @@ -663,29 +632,29 @@ elif [[ "${step}" = "fcst" || "${step}" = "efcs" ]]; then declare -x "wtime_${step}_gfs"="06:00:00" ;; *) - echo "FATAL ERROR: Resolution ${CASE} not supported in ${step}" - exit 1 + echo "FATAL ERROR: Resources not defined for job ${job} at resolution ${CASE}" + exit 4 ;; esac unset _CDUMP _CDUMP_LIST unset NTASKS_TOT + ;; -elif [[ ${step} = "ocnpost" ]]; then - + "ocnpost") export wtime_ocnpost="00:30:00" export npe_ocnpost=1 export npe_node_ocnpost=1 export nth_ocnpost=1 export memory_ocnpost="96G" if [[ ${machine} == "JET" ]]; then - # JET only has 88GB of requestable memory per node - # so a second node is required to meet the requiremtn - npe_ocnpost=2 + # JET only has 88GB of requestable memory per node + # so a second node is required to meet the requiremtn + npe_ocnpost=2 fi + ;; -elif [[ "${step}" = "upp" ]]; then - + "upp") case "${CASE}" in "C48" | "C96") export npe_upp=${CASE:1} @@ -694,8 +663,8 @@ elif [[ "${step}" = "upp" ]]; then export npe_upp=120 ;; *) - echo "FATAL ERROR: Resolution '${CASE}' not supported for UPP'" - exit 1 + echo "FATAL ERROR: Resources not defined for job ${job} at resolution ${CASE}" + exit 4 ;; esac export npe_node_upp=${npe_upp} @@ -703,13 +672,13 @@ elif [[ "${step}" = "upp" ]]; then export nth_upp=1 export wtime_upp="00:15:00" - if [[ "${npe_node_upp}" -gt "${npe_node_max}" ]]; then + if (( npe_node_upp > npe_node_max )); then export npe_node_upp=${npe_node_max} fi export is_exclusive=True + ;; -elif [[ ${step} = "atmos_products" ]]; then - + "atmos_products") export wtime_atmos_products="00:15:00" export npe_atmos_products=24 export nth_atmos_products=1 @@ -719,25 +688,25 @@ elif [[ ${step} = "atmos_products" ]]; then export nth_atmos_products_gfs="${nth_atmos_products}" export npe_node_atmos_products_gfs="${npe_node_atmos_products}" export is_exclusive=True + ;; -elif [[ ${step} = "verfozn" ]]; then - + "verfozn") export wtime_verfozn="00:05:00" export npe_verfozn=1 export nth_verfozn=1 export npe_node_verfozn=1 export memory_verfozn="1G" + ;; -elif [[ ${step} = "verfrad" ]]; then - + "verfrad") export wtime_verfrad="00:40:00" export npe_verfrad=1 export nth_verfrad=1 export npe_node_verfrad=1 export memory_verfrad="5G" + ;; -elif [[ ${step} = "vminmon" ]]; then - + "vminmon") export wtime_vminmon="00:05:00" export npe_vminmon=1 export nth_vminmon=1 @@ -747,42 +716,42 @@ elif [[ ${step} = "vminmon" ]]; then export nth_vminmon_gfs=1 export npe_node_vminmon_gfs=1 export memory_vminmon="1G" + ;; -elif [[ ${step} = "tracker" ]]; then - + "tracker") export wtime_tracker="00:10:00" export npe_tracker=1 export nth_tracker=1 export npe_node_tracker=1 export memory_tracker="4G" + ;; -elif [[ ${step} = "genesis" ]]; then - + "genesis") export wtime_genesis="00:25:00" export npe_genesis=1 export nth_genesis=1 export npe_node_genesis=1 export memory_genesis="4G" + ;; -elif [[ ${step} = "genesis_fsu" ]]; then - + "genesis_fsu") export wtime_genesis_fsu="00:10:00" export npe_genesis_fsu=1 export nth_genesis_fsu=1 export npe_node_genesis_fsu=1 export memory_genesis_fsu="4G" + ;; -elif [[ "${step}" = "fit2obs" ]]; then - + "fit2obs") export wtime_fit2obs="00:20:00" export npe_fit2obs=3 export nth_fit2obs=1 export npe_node_fit2obs=1 export memory_fit2obs="20G" if [[ ${machine} == "WCOSS2" ]]; then export npe_node_fit2obs=3 ; fi + ;; -elif [[ "${step}" = "metp" ]]; then - + "metp") export nth_metp=1 export wtime_metp="03:00:00" export npe_metp=4 @@ -791,67 +760,68 @@ elif [[ "${step}" = "metp" ]]; then export npe_metp_gfs=4 export npe_node_metp_gfs=4 export is_exclusive=True + ;; -elif [[ ${step} = "echgres" ]]; then - + "echgres") export wtime_echgres="00:10:00" export npe_echgres=3 export nth_echgres=${npe_node_max} export npe_node_echgres=1 - if [[ "${machine}" = "WCOSS2" ]]; then + if [[ "${machine}" == "WCOSS2" ]]; then export memory_echgres="200GB" fi + ;; -elif [[ ${step} = "init" ]]; then - + "init") export wtime_init="00:30:00" export npe_init=24 export nth_init=1 export npe_node_init=6 - export memory_init="70G" - -elif [[ ${step} = "init_chem" ]]; then + export memory_init="70GB" + ;; + "init_chem") export wtime_init_chem="00:30:00" export npe_init_chem=1 export npe_node_init_chem=1 export is_exclusive=True + ;; -elif [[ ${step} = "mom6ic" ]]; then - + "mom6ic") export wtime_mom6ic="00:30:00" export npe_mom6ic=24 export npe_node_mom6ic=24 export is_exclusive=True - -elif [[ ${step} = "arch" || ${step} = "earc" || ${step} = "getic" ]]; then - - eval "export wtime_${step}='06:00:00'" - eval "export npe_${step}=1" - eval "export npe_node_${step}=1" - eval "export nth_${step}=1" - eval "export memory_${step}=4096M" - if [[ "${machine}" = "WCOSS2" ]]; then - eval "export memory_${step}=50GB" + ;; + + "arch" | "earc" | "getic") + declare -x "wtime_${step}"="06:00:00" + declare -x "npe_${step}"="1" + declare -x "npe_node_${step}"="1" + declare -x "nth_${step}"="1" + declare -x "memory_${step}"="4096M" + if [[ "${machine}" == "WCOSS2" ]]; then + declare -x "memory_${step}"="50GB" fi + ;; -elif [[ ${step} == "cleanup" ]]; then + "cleanup") export wtime_cleanup="01:00:00" export npe_cleanup=1 export npe_node_cleanup=1 export nth_cleanup=1 - export memory_cleanup="4096M" - -elif [[ ${step} = "stage_ic" ]]; then + export memory_cleanu="4096M" + ;; + "stage_ic") export wtime_stage_ic="00:15:00" export npe_stage_ic=1 export npe_node_stage_ic=1 export nth_stage_ic=1 - export is_exclusive=True - -elif [[ "${step}" = "atmensanlinit" ]]; then + export is_exclusive=Tue + ;; + "atmensanlinit") # make below case dependent later export layout_x=1 export layout_y=1 @@ -859,174 +829,172 @@ elif [[ "${step}" = "atmensanlinit" ]]; then export wtime_atmensanlinit="00:10:00" export npe_atmensanlinit=1 export nth_atmensanlinit=1 - npe_node_atmensanlinit=$(echo "${npe_node_max} / ${nth_atmensanlinit}" | bc) - export npe_node_atmensanlinit + export npe_node_atmensanlinit=$(( npe_node_max / nth_atmensanlinit )) export memory_atmensanlinit="3072M" + ;; -elif [[ "${step}" = "atmensanlrun" ]]; then - + "atmensanlrun") # make below case dependent later export layout_x=1 export layout_y=1 export wtime_atmensanlrun="00:30:00" - npe_atmensanlrun=$(echo "${layout_x} * ${layout_y} * 6" | bc) - export npe_atmensanlrun - npe_atmensanlrun_gfs=$(echo "${layout_x} * ${layout_y} * 6" | bc) - export npe_atmensanlrun_gfs + export npe_atmensanlrun=$(( layout_x * layout_y * 6 )) + export npe_atmensanlrun_gfs=$(( layout_x * layout_y * 6 )) export nth_atmensanlrun=1 export nth_atmensanlrun_gfs=${nth_atmensanlrun} - npe_node_atmensanlrun=$(echo "${npe_node_max} / ${nth_atmensanlrun}" | bc) - export npe_node_atmensanlrun + export npe_node_atmensanlrun=$(( npe_node_max / nth_atmensanlrun )) export is_exclusive=True + ;; -elif [[ "${step}" = "atmensanlfinal" ]]; then - + "atmensanlfinal") export wtime_atmensanlfinal="00:30:00" export npe_atmensanlfinal=${npe_node_max} export nth_atmensanlfinal=1 - npe_node_atmensanlfinal=$(echo "${npe_node_max} / ${nth_atmensanlfinal}" | bc) - export npe_node_atmensanlfinal + export npe_node_atmensanlfinal=$(( npe_node_max / nth_atmensanlfinal )) export is_exclusive=True + ;; -elif [[ ${step} = "eobs" || ${step} = "eomg" ]]; then - + "eobs" | "eomg") export wtime_eobs="00:15:00" export wtime_eomg="01:00:00" - if [[ ${CASE} = "C768" ]]; then - export npe_eobs=200 - elif [[ ${CASE} = "C384" ]]; then - export npe_eobs=100 - elif [[ ${CASE} = "C192" || ${CASE} = "C96" || ${CASE} = "C48" ]]; then - export npe_eobs=40 - fi + case ${CASE} in + "C768") export npe_eobs=200;; + "C384") export npe_eobs=100;; + "C192" | "C96" | "C48") export npe_eobs=40;; + *) + echo "FATAL ERROR: Resources not defined for job ${job} at resolution ${CASE}" + exit 4 + ;; + esac export npe_eomg=${npe_eobs} export nth_eobs=2 export nth_eomg=${nth_eobs} - npe_node_eobs=$(echo "${npe_node_max} / ${nth_eobs}" | bc) - export npe_node_eobs + export npe_node_eobs=$(( npe_node_max / nth_eobs )) export is_exclusive=True # The number of tasks and cores used must be the same for eobs # See https://github.com/NOAA-EMC/global-workflow/issues/2092 for details # For S4, this is accomplished by running 10 tasks/node if [[ ${machine} = "S4" ]]; then - export npe_node_eobs=10 + export npe_node_eobs=10 elif [[ ${machine} = "HERCULES" ]]; then - # For Hercules, this is only an issue at C384; use 20 tasks/node - if [[ ${CASE} = "C384" ]]; then - export npe_node_eobs=20 - fi + # For Hercules, this is only an issue at C384; use 20 tasks/node + if [[ ${CASE} = "C384" ]]; then + export npe_node_eobs=20 + fi fi export npe_node_eomg=${npe_node_eobs} + ;; -elif [[ ${step} = "ediag" ]]; then - + "ediag") export wtime_ediag="00:15:00" export npe_ediag=48 export nth_ediag=1 - npe_node_ediag=$(echo "${npe_node_max} / ${nth_ediag}" | bc) - export npe_node_ediag + export npe_node_ediag=$(( npe_node_max / nth_ediag )) export memory_ediag="30GB" + ;; -elif [[ ${step} = "eupd" ]]; then - + "eupd") export wtime_eupd="00:30:00" - if [[ ${CASE} = "C768" ]]; then - export npe_eupd=480 - export nth_eupd=6 - if [[ "${machine}" = "WCOSS2" ]]; then - export npe_eupd=315 - export nth_eupd=14 - fi - elif [[ ${CASE} = "C384" ]]; then - export npe_eupd=270 - export nth_eupd=8 - if [[ "${machine}" = "WCOSS2" ]]; then - export npe_eupd=315 - export nth_eupd=14 - elif [[ ${machine} = "S4" ]]; then - export npe_eupd=160 - export nth_eupd=2 - fi - elif [[ ${CASE} = "C192" || ${CASE} = "C96" || ${CASE} = "C48" ]]; then - export npe_eupd=42 - export nth_eupd=2 - if [[ "${machine}" = "HERA" || "${machine}" = "JET" ]]; then - export nth_eupd=4 - fi - fi - npe_node_eupd=$(echo "${npe_node_max} / ${nth_eupd}" | bc) - export npe_node_eupd + case ${CASE} in + "C768") + export npe_eupd=480 + export nth_eupd=6 + if [[ "${machine}" == "WCOSS2" ]]; then + export npe_eupd=315 + export nth_eupd=14 + fi + ;; + "C384") + export npe_eupd=270 + export nth_eupd=8 + if [[ "${machine}" == "WCOSS2" ]]; then + export npe_eupd=315 + export nth_eupd=14 + elif [[ ${machine} == "S4" ]]; then + export npe_eupd=160 + export nth_eupd=2 + fi + ;; + "C192" | "C96" | "C48") + export npe_eupd=42 + export nth_eupd=2 + if [[ "${machine}" == "HERA" || "${machine}" == "JET" ]]; then + export nth_eupd=4 + fi + ;; + *) + echo "FATAL ERROR: Resources not defined for job ${job} at resolution ${CASE}" + exit 4 + ;; + esac + export npe_node_eupd=$(( npe_node_max / nth_eupd )) export is_exclusive=True + ;; -elif [[ ${step} = "ecen" ]]; then - + "ecen") export wtime_ecen="00:10:00" export npe_ecen=80 export nth_ecen=4 - if [[ "${machine}" = "HERA" ]]; then export nth_ecen=6; fi - if [[ ${CASE} = "C384" || ${CASE} = "C192" || ${CASE} = "C96" || ${CASE} = "C48" ]]; then export nth_ecen=2; fi - npe_node_ecen=$(echo "${npe_node_max} / ${nth_ecen}" | bc) - export npe_node_ecen + if [[ "${machine}" == "HERA" ]]; then export nth_ecen=6; fi + if [[ ${CASE} == "C384" || ${CASE} == "C192" || ${CASE} == "C96" || ${CASE} == "C48" ]]; then + export nth_ecen=2 + fi + export npe_node_ecen=$(( npe_node_max / nth_ecen )) export nth_cycle=${nth_ecen} - npe_node_cycle=$(echo "${npe_node_max} / ${nth_cycle}" | bc) - export npe_node_cycle + export npe_node_cycle=$(( npe_node_max / nth_cycle )) export is_exclusive=True + ;; -elif [[ ${step} = "esfc" ]]; then - + "esfc") export wtime_esfc="00:08:00" export npe_esfc=80 export nth_esfc=1 - npe_node_esfc=$(echo "${npe_node_max} / ${nth_esfc}" | bc) - export npe_node_esfc + export npe_node_esfc=$(( npe_node_max / nth_esfc )) export nth_cycle=${nth_esfc} - npe_node_cycle=$(echo "${npe_node_max} / ${nth_cycle}" | bc) - export npe_node_cycle - export memory_esfc="80GB" - -elif [[ ${step} = "epos" ]]; then + export npe_node_cycle=$(( npe_node_max / nth_cycle )) + export memory_esfc="8GB" + ;; + "epos") export wtime_epos="00:15:00" export npe_epos=80 export nth_epos=1 - npe_node_epos=$(echo "${npe_node_max} / ${nth_epos}" | bc) - export npe_node_epos + export npe_node_epos=$(( npe_node_max / nth_epos )) export is_exclusive=True + ;; -elif [[ ${step} = "postsnd" ]]; then - + "postsnd") export wtime_postsnd="02:00:00" export npe_postsnd=40 export nth_postsnd=8 export npe_node_postsnd=10 export npe_postsndcfp=9 export npe_node_postsndcfp=1 - postsnd_req_cores=$(echo "${npe_node_postsnd} * ${nth_postsnd}" | bc) - if [[ ${postsnd_req_cores} -gt "${npe_node_max}" ]]; then - npe_node_postsnd=$(echo "${npe_node_max} / ${nth_postsnd}" | bc) - export npe_node_postsnd + postsnd_req_cores=$(( npe_node_postsnd * nth_postsnd )) + if (( postsnd_req_cores > npe_node_max )); then + export npe_node_postsnd=$(( npe_node_max / nth_postsnd )) fi export is_exclusive=True + ;; -elif [[ ${step} = "awips" ]]; then - + "awips") export wtime_awips="03:30:00" export npe_awips=1 export npe_node_awips=1 export nth_awips=1 - export memory_awips="3GB" - -elif [[ ${step} = "npoess" ]]; then + export memory_awip="3GB" + ;; + "npoess") export wtime_npoess="03:30:00" export npe_npoess=1 export npe_node_npoess=1 export nth_npoess=1 - export memory_npoess="3GB" - -elif [[ ${step} = "gempak" ]]; then + export memory_npoes="3GB" + ;; + "gempak") export wtime_gempak="03:00:00" export npe_gempak=2 export npe_gempak_gfs=28 @@ -1035,69 +1003,69 @@ elif [[ ${step} = "gempak" ]]; then export nth_gempak=1 export memory_gempak="4GB" export memory_gempak_gfs="2GB" + ;; -elif [[ ${step} = "mos_stn_prep" ]]; then - + "mos_stn_prep") export wtime_mos_stn_prep="00:10:00" export npe_mos_stn_prep=3 export npe_node_mos_stn_prep=3 export nth_mos_stn_prep=1 export memory_mos_stn_prep="5GB" export NTASK="${npe_mos_stn_prep}" - export PTILE="${npe_node_mos_stn_prep}" - -elif [[ ${step} = "mos_grd_prep" ]]; then + export PTILE="${npe_node_mos_stn_pep}" + ;; + "mos_grd_prep") export wtime_mos_grd_prep="00:10:00" export npe_mos_grd_prep=4 export npe_node_mos_grd_prep=4 export nth_mos_grd_prep=1 export memory_mos_grd_prep="16GB" export NTASK="${npe_mos_grd_prep}" - export PTILE="${npe_node_mos_grd_prep}" - -elif [[ ${step} = "mos_ext_stn_prep" ]]; then + export PTILE="${npe_node_mos_grd_pep}" + ;; + "mos_ext_stn_prep") export wtime_mos_ext_stn_prep="00:15:00" export npe_mos_ext_stn_prep=2 export npe_node_mos_ext_stn_prep=2 export nth_mos_ext_stn_prep=1 export memory_mos_ext_stn_prep="5GB" export NTASK="${npe_mos_ext_stn_prep}" - export PTILE="${npe_node_mos_ext_stn_prep}" - -elif [[ ${step} = "mos_ext_grd_prep" ]]; then + export PTILE="${npe_node_mos_ext_stn_pep}" + ;; + "mos_ext_grd_prep") export wtime_mos_ext_grd_prep="00:10:00" export npe_mos_ext_grd_prep=7 export npe_node_mos_ext_grd_prep=7 export nth_mos_ext_grd_prep=1 export memory_mos_ext_grd_prep="3GB" export NTASK="${npe_mos_ext_grd_prep}" - export PTILE="${npe_node_mos_ext_grd_prep}" - -elif [[ ${step} = "mos_stn_fcst" ]]; then + export PTILE="${npe_node_mos_ext_grd_pep}" + ;; + "mos_stn_fcst") export wtime_mos_stn_fcst="00:10:00" export npe_mos_stn_fcst=5 export npe_node_mos_stn_fcst=5 export nth_mos_stn_fcst=1 export memory_mos_stn_fcst="40GB" export NTASK="${npe_mos_stn_fcst}" - export PTILE="${npe_node_mos_stn_fcst}" - -elif [[ ${step} = "mos_grd_fcst" ]]; then + export PTILE="${npe_node_mos_stn_fst}" + ;; + "mos_grd_fcst") export wtime_mos_grd_fcst="00:10:00" export npe_mos_grd_fcst=7 export npe_node_mos_grd_fcst=7 export nth_mos_grd_fcst=1 export memory_mos_grd_fcst="50GB" export NTASK="${npe_mos_grd_fcst}" - export PTILE="${npe_node_mos_grd_fcst}" - -elif [[ ${step} = "mos_ext_stn_fcst" ]]; then + export PTILE="${npe_node_mos_grd_fst}" + ;; + "mos_ext_stn_fcst") export wtime_mos_ext_stn_fcst="00:20:00" export npe_mos_ext_stn_fcst=3 export npe_node_mos_ext_stn_fcst=3 @@ -1106,19 +1074,19 @@ elif [[ ${step} = "mos_ext_stn_fcst" ]]; then export NTASK="${npe_mos_ext_stn_fcst}" export PTILE="${npe_node_mos_ext_stn_fcst}" export prepost=True + ;; -elif [[ ${step} = "mos_ext_grd_fcst" ]]; then - + "mos_ext_grd_fcst") export wtime_mos_ext_grd_fcst="00:10:00" export npe_mos_ext_grd_fcst=7 export npe_node_mos_ext_grd_fcst=7 export nth_mos_ext_grd_fcst=1 export memory_mos_ext_grd_fcst="50GB" export NTASK="${npe_mos_ext_grd_fcst}" - export PTILE="${npe_node_mos_ext_grd_fcst}" - -elif [[ ${step} = "mos_stn_prdgen" ]]; then + export PTILE="${npe_node_mos_ext_grd_fst}" + ;; + "mos_stn_prdgen") export wtime_mos_stn_prdgen="00:10:00" export npe_mos_stn_prdgen=1 export npe_node_mos_stn_prdgen=1 @@ -1127,9 +1095,9 @@ elif [[ ${step} = "mos_stn_prdgen" ]]; then export NTASK="${npe_mos_stn_prdgen}" export PTILE="${npe_node_mos_stn_prdgen}" export prepost=True + ;; -elif [[ ${step} = "mos_grd_prdgen" ]]; then - + "mos_grd_prdgen") export wtime_mos_grd_prdgen="00:40:00" export npe_mos_grd_prdgen=72 export npe_node_mos_grd_prdgen=18 @@ -1137,10 +1105,10 @@ elif [[ ${step} = "mos_grd_prdgen" ]]; then export memory_mos_grd_prdgen="20GB" export NTASK="${npe_mos_grd_prdgen}" export PTILE="${npe_node_mos_grd_prdgen}" - export OMP_NUM_THREADS="${nth_mos_grd_prdgen}" - -elif [[ ${step} = "mos_ext_stn_prdgen" ]]; then + export OMP_NUM_THREADS="${nth_mos_grd_prden}" + ;; + "mos_ext_stn_prdgen") export wtime_mos_ext_stn_prdgen="00:10:00" export npe_mos_ext_stn_prdgen=1 export npe_node_mos_ext_stn_prdgen=1 @@ -1149,9 +1117,9 @@ elif [[ ${step} = "mos_ext_stn_prdgen" ]]; then export NTASK="${npe_mos_ext_stn_prdgen}" export PTILE="${npe_node_mos_ext_stn_prdgen}" export prepost=True + ;; -elif [[ ${step} = "mos_ext_grd_prdgen" ]]; then - + "mos_ext_grd_prdgen") export wtime_mos_ext_grd_prdgen="00:30:00" export npe_mos_ext_grd_prdgen=96 export npe_node_mos_ext_grd_prdgen=6 @@ -1159,10 +1127,10 @@ elif [[ ${step} = "mos_ext_grd_prdgen" ]]; then export memory_mos_ext_grd_prdgen="30GB" export NTASK="${npe_mos_ext_grd_prdgen}" export PTILE="${npe_node_mos_ext_grd_prdgen}" - export OMP_NUM_THREADS="${nth_mos_ext_grd_prdgen}" - -elif [[ ${step} = "mos_wx_prdgen" ]]; then + export OMP_NUM_THREADS="${nth_mos_ext_grd_prden}" + ;; + "mos_wx_prdgen") export wtime_mos_wx_prdgen="00:10:00" export npe_mos_wx_prdgen=4 export npe_node_mos_wx_prdgen=2 @@ -1170,10 +1138,10 @@ elif [[ ${step} = "mos_wx_prdgen" ]]; then export memory_mos_wx_prdgen="10GB" export NTASK="${npe_mos_wx_prdgen}" export PTILE="${npe_node_mos_wx_prdgen}" - export OMP_NUM_THREADS="${nth_mos_wx_prdgen}" - -elif [[ ${step} = "mos_wx_ext_prdgen" ]]; then + export OMP_NUM_THREADS="${nth_mos_wx_prden}" + ;; + "mos_wx_ext_prdgen") export wtime_mos_wx_ext_prdgen="00:10:00" export npe_mos_wx_ext_prdgen=4 export npe_node_mos_wx_ext_prdgen=2 @@ -1182,12 +1150,13 @@ elif [[ ${step} = "mos_wx_ext_prdgen" ]]; then export NTASK="${npe_mos_wx_ext_prdgen}" export PTILE="${npe_node_mos_wx_ext_prdgen}" export OMP_NUM_THREADS="${nth_mos_wx_ext_prdgen}" + ;; -else - - echo "Invalid step = ${step}, ABORT!" - exit 2 + *) + echo "FATAL ERROR: Invalid job ${step} passed to ${BASH_SOURCE[0]}" + exit 1 + ;; -fi +esac -echo "END: config.resources" +echo "END: config.resources" \ No newline at end of file diff --git a/parm/config/gfs/config.ufs b/parm/config/gfs/config.ufs index 46bf89f1af..0a59da47ca 100644 --- a/parm/config/gfs/config.ufs +++ b/parm/config/gfs/config.ufs @@ -480,39 +480,42 @@ if [[ "${skip_gocart}" == "false" ]]; then fi # Set the name of the UFS (previously nems) configure template to use +# Default ufs.configure templates for supported model configurations case "${model_list}" in atm) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.atm.IN" + default_template="${HOMEgfs}/parm/ufs/ufs.configure.atm.IN" ;; atm.aero) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.atm_aero.IN" + default_template="${HOMEgfs}/parm/ufs/ufs.configure.atmaero.IN" ;; atm.wave) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.leapfrog_atm_wav.IN" + default_template="${HOMEgfs}/parm/ufs/ufs.configure.leapfrog_atm_wav.IN" ;; atm.ocean.ice) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.cpld.IN" + default_template="${HOMEgfs}/parm/ufs/ufs.configure.s2s_esmf.IN" ;; atm.ocean.ice.aero) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.cpld_aero.IN" + default_template="${HOMEgfs}/parm/ufs/ufs.configure.s2sa_esmf.IN" ;; atm.ocean.ice.wave) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.cpld_outerwave.IN" + default_template="${HOMEgfs}/parm/ufs/ufs.configure.s2sw_esmf.IN" ;; atm.ocean.ice.wave.aero) - export ufs_configure_template="${HOMEgfs}/parm/ufs/ufs.configure.cpld_aero_outerwave.IN" + default_template="${HOMEgfs}/parm/ufs/ufs.configure.s2swa_esmf.IN" ;; *) - echo "FATAL ERROR: Unable to determine appropriate UFS configure template for ${model_list}" + echo "FATAL ERROR: Unsupported UFSWM configuration for ${model_list}" exit 16 ;; esac +# Allow user to override the default template +export ufs_configure_template=${ufs_configure_template:-${default_template:-"/dev/null"}} +unset model_list default_template + if [[ ! -r "${ufs_configure_template}" ]]; then echo "FATAL ERROR: ${ufs_configure_template} either doesn't exist or is not readable." exit 17 fi -unset model_list - echo "END: config.ufs" diff --git a/parm/product/gefs.0p25.f000.paramlist.a.txt b/parm/product/gefs.0p25.f000.paramlist.a.txt new file mode 100644 index 0000000000..4fdb8f9713 --- /dev/null +++ b/parm/product/gefs.0p25.f000.paramlist.a.txt @@ -0,0 +1,39 @@ +:HGT:surface: +:PRMSL:mean sea level: +:PRES:surface: +:TMP:2 m above ground: +:TMAX:2 m above ground: +:TMIN:2 m above ground: +:RH:2 m above ground: +:DPT:2 m above ground: +:UGRD:10 m above ground: +:VGRD:10 m above ground: +:APCP:surface: +:CRAIN:surface: +:CSNOW:surface: +:CFRZR:surface: +:CICEP:surface: +:PWAT:entire atmosphere (considered as a single layer): +:CAPE:180-0 mb above ground: +:CAPE:surface: +:CIN:180-0 mb above ground: +:CIN:surface: +:CPOFP:surface: +:HLCY:3000-0 m above ground: +:TCDC:entire atmosphere: +:WEASD:surface: +:SNOD:surface: +:ULWRF:top of atmosphere: +:DSWRF:surface: +:DLWRF:surface: +:USWRF:surface: +:ULWRF:surface: +:GUST:surface: +:SHTFL:surface: +:LHTFL:surface: +:ICETK:surface: +:TSOIL:0-0.1 +:SOILW:0-0.1 +:MSLET:mean sea level: +:VIS:surface: +:HGT:cloud ceiling: diff --git a/parm/product/gefs.0p25.f000.paramlist.b.txt b/parm/product/gefs.0p25.f000.paramlist.b.txt new file mode 100644 index 0000000000..b94b4ab8a3 --- /dev/null +++ b/parm/product/gefs.0p25.f000.paramlist.b.txt @@ -0,0 +1,522 @@ +############################# sorted pgrb2a + pgrb2b 201502 +:4LFTX:surface: +:5WAVH:500 mb: +:ABSV:1000 mb: +:ABSV:100 mb: +:ABSV:10 mb: +:ABSV:150 mb: +:ABSV:200 mb: +:ABSV:20 mb: +:ABSV:250 mb: +:ABSV:300 mb: +:ABSV:30 mb: +:ABSV:350 mb: +:ABSV:400 mb: +:ABSV:450 mb: +:ABSV:500 mb: +:ABSV:50 mb: +:ABSV:550 mb: +:ABSV:600 mb: +:ABSV:650 mb: +:ABSV:700 mb: +:ABSV:70 mb: +:ABSV:750 mb: +:ABSV:800 mb: +:ABSV:850 mb: +:ABSV:900 mb: +:ABSV:925 mb: +:ABSV:950 mb: +:ABSV:975 mb: +:BRTMP:top of atmosphere: +:CAPE:255-0 mb above ground: +:CIN:255-0 mb above ground: +:CLWMR:1000 mb: +:CLWMR:100 mb: +:CLWMR:10 mb: +:CLWMR:150 mb: +:CLWMR:200 mb: +:CLWMR:20 mb: +:CLWMR:250 mb: +:CLWMR:300 mb: +:CLWMR:30 mb: +:CLWMR:350 mb: +:CLWMR:400 mb: +:CLWMR:450 mb: +:CLWMR:500 mb: +:CLWMR:50 mb: +:CLWMR:550 mb: +:CLWMR:600 mb: +:CLWMR:650 mb: +:CLWMR:700 mb: +:CLWMR:70 mb: +:CLWMR:750 mb: +:CLWMR:800 mb: +:CLWMR:850 mb: +:CLWMR:900 mb: +:CLWMR:925 mb: +:CLWMR:950 mb: +:CLWMR:975 mb: +:CNWAT:surface: +:CWAT:entire atmosphere (considered as a single layer): +:DPT:30-0 mb above ground: +:FLDCP:surface: +:FRICV:surface: +:HGT:0C isotherm: +:HGT:1000 mb: +:HGT:100 mb: +:HGT:10 mb: +:HGT:1 mb: +:HGT:150 mb: +:HGT:200 mb: +:HGT:20 mb: +:HGT:2 mb: +:HGT:250 mb: +:HGT:300 mb: +:HGT:30 mb: +:HGT:3 mb: +:HGT:350 mb: +:HGT:400 mb: +:HGT:450 mb: +:HGT:500 mb: +:HGT:50 mb: +:HGT:5 mb: +:HGT:550 mb: +:HGT:600 mb: +:HGT:650 mb: +:HGT:700 mb: +:HGT:70 mb: +:HGT:7 mb: +:HGT:750 mb: +:HGT:800 mb: +:HGT:850 mb: +:HGT:900 mb: +:HGT:925 mb: +:HGT:950 mb: +:HGT:975 mb: +:HGT:highest tropospheric freezing level: +:HGT:max wind: +:HGT:PV=-1.5e-06 (Km^2/kg/s) surface: +:HGT:PV=1.5e-06 (Km^2/kg/s) surface: +:HGT:PV=-1e-06 (Km^2/kg/s) surface: +:HGT:PV=1e-06 (Km^2/kg/s) surface: +:HGT:PV=-2e-06 (Km^2/kg/s) surface: +:HGT:PV=2e-06 (Km^2/kg/s) surface: +:HGT:PV=-5e-07 (Km^2/kg/s) surface: +:HGT:PV=5e-07 (Km^2/kg/s) surface: +:HGT:tropopause: +:HINDEX:surface: +:HPBL:surface: +:ICAHT:max wind: +:ICAHT:tropopause: +:ICEC:surface: +:ICIP:300 mb: +:ICIP:400 mb: +:ICIP:500 mb: +:ICIP:600 mb: +:ICIP:700 mb: +:ICIP:800 mb: +:ICSEV:300 mb: +:ICSEV:400 mb: +:ICSEV:500 mb: +:ICSEV:600 mb: +:ICSEV:700 mb: +:ICSEV:800 mb: +:LAND:surface: +:LFTX:surface: +:MNTSF:320 K isentropic level: +:O3MR:100 mb: +:O3MR:10 mb: +:O3MR:125 mb: +:O3MR:150 mb: +:O3MR:1 mb: +:O3MR:200 mb: +:O3MR:20 mb: +:O3MR:250 mb: +:O3MR:2 mb: +:O3MR:300 mb: +:O3MR:30 mb: +:O3MR:350 mb: +:O3MR:3 mb: +:O3MR:400 mb: +:O3MR:50 mb: +:O3MR:5 mb: +:O3MR:70 mb: +:O3MR:7 mb: +:PEVPR:surface: +:PLI:30-0 mb above ground: +:PLPL:255-0 mb above ground: +:POT:0.995 sigma level: +:PRES:80 m above ground: +:PRES:max wind: +:PRES:mean sea level: +:PRES:PV=-1.5e-06 (Km^2/kg/s) surface: +:PRES:PV=1.5e-06 (Km^2/kg/s) surface: +:PRES:PV=-1e-06 (Km^2/kg/s) surface: +:PRES:PV=1e-06 (Km^2/kg/s) surface: +:PRES:PV=-2e-06 (Km^2/kg/s) surface: +:PRES:PV=2e-06 (Km^2/kg/s) surface: +:PRES:PV=-5e-07 (Km^2/kg/s) surface: +:PRES:PV=5e-07 (Km^2/kg/s) surface: +:PRES:tropopause: +:PVORT:310 K isentropic level: +:PVORT:320 K isentropic level: +:PVORT:350 K isentropic level: +:PVORT:450 K isentropic level: +:PVORT:550 K isentropic level: +:PVORT:650 K isentropic level: +:PWAT:30-0 mb above ground: +:RH:0.33-1 sigma layer: +:RH:0.44-0.72 sigma layer: +:RH:0.44-1 sigma layer: +:RH:0.72-0.94 sigma layer: +:RH:0.995 sigma level: +:RH:0C isotherm: +:RH:1000 mb: +:RH:100 mb: +:RH:10 mb: +:RH:120-90 mb above ground: +:RH:150-120 mb above ground: +:RH:150 mb: +:RH:180-150 mb above ground: +:RH:200 mb: +:RH:20 mb: +:RH:250 mb: +:RH:300 mb: +:RH:30-0 mb above ground: +:RH:30 mb: +:RH:350 mb: +:RH:400 mb: +:RH:450 mb: +:RH:500 mb: +:RH:50 mb: +:RH:550 mb: +:RH:600 mb: +:RH:60-30 mb above ground: +:RH:650 mb: +:RH:700 mb: +:RH:70 mb: +:RH:750 mb: +:RH:800 mb: +:RH:850 mb: +:RH:900 mb: +:RH:90-60 mb above ground: +:RH:925 mb: +:RH:950 mb: +:RH:975 mb: +:RH:entire atmosphere (considered as a single layer): +:RH:highest tropospheric freezing level: +:SFCR:surface: +:SNOHF:surface: +:SNOWC:surface: +:SOILL:0-0.1 m below ground: +:SOILL:0.1-0.4 m below ground: +:SOILL:0.4-1 m below ground: +:SOILL:1-2 m below ground: +:SOILW:0.1-0.4 m below ground: +:SOILW:0.4-1 m below ground: +:SOILW:1-2 m below ground: +:SPFH:1000 mb: +:SPFH:100 mb: +:SPFH:10 mb: +:SPFH:1 mb: +:SPFH:120-90 mb above ground: +:SPFH:150-120 mb above ground: +:SPFH:150 mb: +:SPFH:180-150 mb above ground: +:SPFH:200 mb: +:SPFH:20 mb: +:SPFH:2 mb: +:SPFH:250 mb: +:SPFH:2 m above ground: +:SPFH:300 mb: +:SPFH:30-0 mb above ground: +:SPFH:30 mb: +:SPFH:3 mb: +:SPFH:350 mb: +:SPFH:400 mb: +:SPFH:450 mb: +:SPFH:500 mb: +:SPFH:50 mb: +:SPFH:5 mb: +:SPFH:550 mb: +:SPFH:600 mb: +:SPFH:60-30 mb above ground: +:SPFH:650 mb: +:SPFH:700 mb: +:SPFH:70 mb: +:SPFH:7 mb: +:SPFH:750 mb: +:SPFH:800 mb: +:SPFH:80 m above ground: +:SPFH:850 mb: +:SPFH:900 mb: +:SPFH:90-60 mb above ground: +:SPFH:925 mb: +:SPFH:950 mb: +:SPFH:975 mb: +:SUNSD:surface: +:TCDC:475 mb: +:TMP:0.995 sigma level: +:TMP:1000 mb: +:TMP:100 m above ground: +:TMP:100 mb: +:TMP:10 mb: +:TMP:1 mb: +:TMP:120-90 mb above ground: +:TMP:150-120 mb above ground: +:TMP:150 mb: +:TMP:180-150 mb above ground: +:TMP:1829 m above mean sea level: +:TMP:200 mb: +:TMP:20 mb: +:TMP:2 mb: +:TMP:250 mb: +:TMP:2743 m above mean sea level: +:TMP:300 mb: +:TMP:30-0 mb above ground: +:TMP:305 m above mean sea level: +:TMP:30 mb: +:TMP:3 mb: +:TMP:320 K isentropic level: +:TMP:350 mb: +:TMP:3658 m above mean sea level: +:TMP:400 mb: +:TMP:450 mb: +:TMP:450 K isentropic level: +:TMP:4572 m above mean sea level: +:TMP:457 m above mean sea level: +:TMP:500 mb: +:TMP:50 mb: +:TMP:5 mb: +:TMP:550 mb: +:TMP:550 K isentropic level: +:TMP:600 mb: +:TMP:60-30 mb above ground: +:TMP:610 m above mean sea level: +:TMP:650 mb: +:TMP:650 K isentropic level: +:TMP:700 mb: +:TMP:70 mb: +:TMP:7 mb: +:TMP:750 mb: +:TMP:800 mb: +:TMP:80 m above ground: +:TMP:850 mb: +:TMP:900 mb: +:TMP:90-60 mb above ground: +:TMP:914 m above mean sea level: +:TMP:925 mb: +:TMP:950 mb: +:TMP:975 mb: +:TMP:max wind: +:TMP:PV=-1.5e-06 (Km^2/kg/s) surface: +:TMP:PV=1.5e-06 (Km^2/kg/s) surface: +:TMP:PV=-1e-06 (Km^2/kg/s) surface: +:TMP:PV=1e-06 (Km^2/kg/s) surface: +:TMP:PV=-2e-06 (Km^2/kg/s) surface: +:TMP:PV=2e-06 (Km^2/kg/s) surface: +:TMP:PV=-5e-07 (Km^2/kg/s) surface: +:TMP:PV=5e-07 (Km^2/kg/s) surface: +:TMP:surface: +:TMP:tropopause: +:TOZNE:entire atmosphere (considered as a single layer): +:TSOIL:0.1-0.4 m below ground: +:TSOIL:0.4-1 m below ground: +:TSOIL:1-2 m below ground: +:UGRD:0.995 sigma level: +:UGRD:1000 mb: +:UGRD:100 m above ground: +:UGRD:100 mb: +:UGRD:10 mb: +:UGRD:1 mb: +:UGRD:120-90 mb above ground: +:UGRD:150-120 mb above ground: +:UGRD:150 mb: +:UGRD:180-150 mb above ground: +:UGRD:1829 m above mean sea level: +:UGRD:200 mb: +:UGRD:20 mb: +:UGRD:2 mb: +:UGRD:250 mb: +:UGRD:2743 m above mean sea level: +:UGRD:300 mb: +:UGRD:30-0 mb above ground: +:UGRD:305 m above mean sea level: +:UGRD:30 mb: +:UGRD:3 mb: +:UGRD:320 K isentropic level: +:UGRD:350 mb: +:UGRD:3658 m above mean sea level: +:UGRD:400 mb: +:UGRD:450 mb: +:UGRD:450 K isentropic level: +:UGRD:4572 m above mean sea level: +:UGRD:457 m above mean sea level: +:UGRD:500 mb: +:UGRD:50 mb: +:UGRD:5 mb: +:UGRD:550 mb: +:UGRD:550 K isentropic level: +:UGRD:600 mb: +:UGRD:60-30 mb above ground: +:UGRD:610 m above mean sea level: +:UGRD:650 mb: +:UGRD:650 K isentropic level: +:UGRD:700 mb: +:UGRD:70 mb: +:UGRD:7 mb: +:UGRD:750 mb: +:UGRD:800 mb: +:UGRD:80 m above ground: +:UGRD:850 mb: +:UGRD:900 mb: +:UGRD:90-60 mb above ground: +:UGRD:914 m above mean sea level: +:UGRD:925 mb: +:UGRD:950 mb: +:UGRD:975 mb: +:UGRD:max wind: +:UGRD:planetary boundary layer: +:UGRD:PV=-1.5e-06 (Km^2/kg/s) surface: +:UGRD:PV=1.5e-06 (Km^2/kg/s) surface: +:UGRD:PV=-1e-06 (Km^2/kg/s) surface: +:UGRD:PV=1e-06 (Km^2/kg/s) surface: +:UGRD:PV=-2e-06 (Km^2/kg/s) surface: +:UGRD:PV=2e-06 (Km^2/kg/s) surface: +:UGRD:PV=-5e-07 (Km^2/kg/s) surface: +:UGRD:PV=5e-07 (Km^2/kg/s) surface: +:UGRD:tropopause: +:USTM:6000-0 m above ground: +:APTMP:2 m above ground: +:VGRD:0.995 sigma level: +:VGRD:1000 mb: +:VGRD:100 m above ground: +:VGRD:100 mb: +:VGRD:10 mb: +:VGRD:1 mb: +:VGRD:120-90 mb above ground: +:VGRD:150-120 mb above ground: +:VGRD:150 mb: +:VGRD:180-150 mb above ground: +:VGRD:1829 m above mean sea level: +:VGRD:200 mb: +:VGRD:20 mb: +:VGRD:2 mb: +:VGRD:250 mb: +:VGRD:2743 m above mean sea level: +:VGRD:300 mb: +:VGRD:30-0 mb above ground: +:VGRD:305 m above mean sea level: +:VGRD:30 mb: +:VGRD:3 mb: +:VGRD:320 K isentropic level: +:VGRD:350 mb: +:VGRD:3658 m above mean sea level: +:VGRD:400 mb: +:VGRD:450 mb: +:VGRD:450 K isentropic level: +:VGRD:4572 m above mean sea level: +:VGRD:457 m above mean sea level: +:VGRD:500 mb: +:VGRD:50 mb: +:VGRD:5 mb: +:VGRD:550 mb: +:VGRD:550 K isentropic level: +:VGRD:600 mb: +:VGRD:60-30 mb above ground: +:VGRD:610 m above mean sea level: +:VGRD:650 mb: +:VGRD:650 K isentropic level: +:VGRD:700 mb: +:VGRD:70 mb: +:VGRD:7 mb: +:VGRD:750 mb: +:VGRD:800 mb: +:VGRD:80 m above ground: +:VGRD:850 mb: +:VGRD:900 mb: +:VGRD:90-60 mb above ground: +:VGRD:914 m above mean sea level: +:VGRD:925 mb: +:VGRD:950 mb: +:VGRD:975 mb: +:VGRD:max wind: +:VGRD:planetary boundary layer: +:VGRD:PV=-1.5e-06 (Km^2/kg/s) surface: +:VGRD:PV=1.5e-06 (Km^2/kg/s) surface: +:VGRD:PV=-1e-06 (Km^2/kg/s) surface: +:VGRD:PV=1e-06 (Km^2/kg/s) surface: +:VGRD:PV=-2e-06 (Km^2/kg/s) surface: +:VGRD:PV=2e-06 (Km^2/kg/s) surface: +:VGRD:PV=-5e-07 (Km^2/kg/s) surface: +:VGRD:PV=5e-07 (Km^2/kg/s) surface: +:VGRD:tropopause: +:VRATE:planetary boundary layer: +:VSTM:6000-0 m above ground: +:VVEL:0.995 sigma level: +:VVEL:1 mb: +:VVEL:2 mb: +:VVEL:3 mb: +:VVEL:5 mb: +:VVEL:7 mb: +:VVEL:10 mb: +:VVEL:20 mb: +:VVEL:30 mb: +:VVEL:50 mb: +:VVEL:70 mb: +:VVEL:1000 mb: +:VVEL:100 mb: +:VVEL:150 mb: +:VVEL:200 mb: +:VVEL:250 mb: +:VVEL:300 mb: +:VVEL:350 mb: +:VVEL:400 mb: +:VVEL:450 mb: +:VVEL:500 mb: +:VVEL:550 mb: +:VVEL:600 mb: +:VVEL:650 mb: +:VVEL:700 mb: +:VVEL:750 mb: +:VVEL:800 mb: +:VVEL:850 mb: +:VVEL:900 mb: +:VVEL:925 mb: +:VVEL:950 mb: +:VVEL:975 mb: +:VWSH:PV=-1.5e-06 (Km^2/kg/s) surface: +:VWSH:PV=1.5e-06 (Km^2/kg/s) surface: +:VWSH:PV=-1e-06 (Km^2/kg/s) surface: +:VWSH:PV=1e-06 (Km^2/kg/s) surface: +:VWSH:PV=-2e-06 (Km^2/kg/s) surface: +:VWSH:PV=2e-06 (Km^2/kg/s) surface: +:VWSH:PV=-5e-07 (Km^2/kg/s) surface: +:VWSH:PV=5e-07 (Km^2/kg/s) surface: +:VWSH:tropopause: +:WILT:surface: +:PRES:1 hybrid level: +:HGT:1 hybrid level: +:TMP:1 hybrid level: +:RH:1 hybrid level: +:UGRD:1 hybrid level: +:VGRD:1 hybrid level: +:PRES:2 hybrid level: +:HGT:2 hybrid level: +:TMP:2 hybrid level: +:RH:2 hybrid level: +:UGRD:2 hybrid level: +:VGRD:2 hybrid level: +:PRES:3 hybrid level: +:HGT:3 hybrid level: +:TMP:3 hybrid level: +:RH:3 hybrid level: +:UGRD:3 hybrid level: +:VGRD:3 hybrid level: +:PRES:4 hybrid level: +:HGT:4 hybrid level: +:TMP:4 hybrid level: +:RH:4 hybrid level: +:UGRD:4 hybrid level: +:VGRD:4 hybrid level: +;############################ do not leave a blank line at the end diff --git a/parm/product/gefs.0p25.fFFF.paramlist.a.txt b/parm/product/gefs.0p25.fFFF.paramlist.a.txt new file mode 100644 index 0000000000..a4a3ace385 --- /dev/null +++ b/parm/product/gefs.0p25.fFFF.paramlist.a.txt @@ -0,0 +1,38 @@ +:PRMSL:mean sea level: +:PRES:surface: +:TMP:2 m above ground: +:TMAX:2 m above ground: +:TMIN:2 m above ground: +:RH:2 m above ground: +:DPT:2 m above ground: +:UGRD:10 m above ground: +:VGRD:10 m above ground: +:APCP:surface: +:CRAIN:surface: +:CSNOW:surface: +:CFRZR:surface: +:CICEP:surface: +:PWAT:entire atmosphere (considered as a single layer): +:CAPE:180-0 mb above ground: +:CAPE:surface: +:CIN:180-0 mb above ground: +:CIN:surface: +:HLCY:3000-0 m above ground: +:TCDC:entire atmosphere: +:WEASD:surface: +:SNOD:surface: +:ULWRF:top of atmosphere: +:DSWRF:surface: +:CPOFP:surface: +:DLWRF:surface: +:USWRF:surface: +:ULWRF:surface: +:GUST:surface: +:SHTFL:surface: +:LHTFL:surface: +:ICETK:surface: +:TSOIL:0-0.1 +:SOILW:0-0.1 +:MSLET:mean sea level: +:VIS:surface: +:HGT:cloud ceiling: diff --git a/parm/product/gefs.0p25.fFFF.paramlist.b.txt b/parm/product/gefs.0p25.fFFF.paramlist.b.txt new file mode 100644 index 0000000000..f7fdb73ddf --- /dev/null +++ b/parm/product/gefs.0p25.fFFF.paramlist.b.txt @@ -0,0 +1,554 @@ +############################# sorted pgrb2a + pgrb2b 201502 +:4LFTX:surface: +:5WAVH:500 mb: +:ABSV:1000 mb: +:ABSV:100 mb: +:ABSV:10 mb: +:ABSV:150 mb: +:ABSV:200 mb: +:ABSV:20 mb: +:ABSV:250 mb: +:ABSV:300 mb: +:ABSV:30 mb: +:ABSV:350 mb: +:ABSV:400 mb: +:ABSV:450 mb: +:ABSV:500 mb: +:ABSV:50 mb: +:ABSV:550 mb: +:ABSV:600 mb: +:ABSV:650 mb: +:ABSV:700 mb: +:ABSV:70 mb: +:ABSV:750 mb: +:ABSV:800 mb: +:ABSV:850 mb: +:ABSV:900 mb: +:ABSV:925 mb: +:ABSV:950 mb: +:ABSV:975 mb: +:ACPCP:surface: +:ALBDO:surface: +:BRTMP:top of atmosphere: +:CAPE:255-0 mb above ground: +:CDUVB:surface: +:CIN:255-0 mb above ground: +:CLWMR:1000 mb: +:CLWMR:100 mb: +:CLWMR:10 mb: +:CLWMR:150 mb: +:CLWMR:200 mb: +:CLWMR:20 mb: +:CLWMR:250 mb: +:CLWMR:300 mb: +:CLWMR:30 mb: +:CLWMR:350 mb: +:CLWMR:400 mb: +:CLWMR:450 mb: +:CLWMR:500 mb: +:CLWMR:50 mb: +:CLWMR:550 mb: +:CLWMR:600 mb: +:CLWMR:650 mb: +:CLWMR:700 mb: +:CLWMR:70 mb: +:CLWMR:750 mb: +:CLWMR:800 mb: +:CLWMR:850 mb: +:CLWMR:900 mb: +:CLWMR:925 mb: +:CLWMR:950 mb: +:CLWMR:975 mb: +:CNWAT:surface: +:CPRAT:surface: +:CWAT:entire atmosphere (considered as a single layer): +:CWORK:entire atmosphere (considered as a single layer): +:DPT:30-0 mb above ground: +:DUVB:surface: +:FLDCP:surface: +:FRICV:surface: +:GFLUX:surface: +:HGT:0C isotherm: +:HGT:1000 mb: +:HGT:100 mb: +:HGT:10 mb: +:HGT:1 mb: +:HGT:150 mb: +:HGT:200 mb: +:HGT:20 mb: +:HGT:2 mb: +:HGT:250 mb: +:HGT:300 mb: +:HGT:30 mb: +:HGT:3 mb: +:HGT:350 mb: +:HGT:400 mb: +:HGT:450 mb: +:HGT:500 mb: +:HGT:50 mb: +:HGT:5 mb: +:HGT:550 mb: +:HGT:600 mb: +:HGT:650 mb: +:HGT:700 mb: +:HGT:70 mb: +:HGT:7 mb: +:HGT:750 mb: +:HGT:800 mb: +:HGT:850 mb: +:HGT:900 mb: +:HGT:925 mb: +:HGT:950 mb: +:HGT:975 mb: +:HGT:highest tropospheric freezing level: +:HGT:max wind: +:HGT:PV=-1.5e-06 (Km^2/kg/s) surface: +:HGT:PV=1.5e-06 (Km^2/kg/s) surface: +:HGT:PV=-1e-06 (Km^2/kg/s) surface: +:HGT:PV=1e-06 (Km^2/kg/s) surface: +:HGT:PV=-2e-06 (Km^2/kg/s) surface: +:HGT:PV=2e-06 (Km^2/kg/s) surface: +:HGT:PV=-5e-07 (Km^2/kg/s) surface: +:HGT:PV=5e-07 (Km^2/kg/s) surface: +:HGT:surface: +:HGT:tropopause: +:HINDEX:surface: +:HPBL:surface: +:ICAHT:max wind: +:ICAHT:tropopause: +:ICEC:surface: +:ICIP:300 mb: +:ICIP:400 mb: +:ICIP:500 mb: +:ICIP:600 mb: +:ICIP:700 mb: +:ICIP:800 mb: +:ICSEV:300 mb: +:ICSEV:400 mb: +:ICSEV:500 mb: +:ICSEV:600 mb: +:ICSEV:700 mb: +:ICSEV:800 mb: +:LAND:surface: +:LFTX:surface: +:MNTSF:320 K isentropic level: +:NCPCP:surface: +:O3MR:100 mb: +:O3MR:10 mb: +:O3MR:125 mb: +:O3MR:150 mb: +:O3MR:1 mb: +:O3MR:200 mb: +:O3MR:20 mb: +:O3MR:250 mb: +:O3MR:2 mb: +:O3MR:300 mb: +:O3MR:30 mb: +:O3MR:350 mb: +:O3MR:3 mb: +:O3MR:400 mb: +:O3MR:50 mb: +:O3MR:5 mb: +:O3MR:70 mb: +:O3MR:7 mb: +:PEVPR:surface: +:PLI:30-0 mb above ground: +:PLPL:255-0 mb above ground: +:POT:0.995 sigma level: +:PRATE:surface: +:PRES:80 m above ground: +:PRES:convective cloud bottom level: +:PRES:convective cloud top level: +:PRES:high cloud bottom level: +:PRES:high cloud top level: +:PRES:low cloud bottom level: +:PRES:low cloud top level: +:PRES:max wind: +:PRES:mean sea level: +:PRES:middle cloud bottom level: +:PRES:middle cloud top level: +:PRES:PV=-1.5e-06 (Km^2/kg/s) surface: +:PRES:PV=1.5e-06 (Km^2/kg/s) surface: +:PRES:PV=-1e-06 (Km^2/kg/s) surface: +:PRES:PV=1e-06 (Km^2/kg/s) surface: +:PRES:PV=-2e-06 (Km^2/kg/s) surface: +:PRES:PV=2e-06 (Km^2/kg/s) surface: +:PRES:PV=-5e-07 (Km^2/kg/s) surface: +:PRES:PV=5e-07 (Km^2/kg/s) surface: +:PRES:tropopause: +:PVORT:310 K isentropic level: +:PVORT:320 K isentropic level: +:PVORT:350 K isentropic level: +:PVORT:450 K isentropic level: +:PVORT:550 K isentropic level: +:PVORT:650 K isentropic level: +:PWAT:30-0 mb above ground: +:RH:0.33-1 sigma layer: +:RH:0.44-0.72 sigma layer: +:RH:0.44-1 sigma layer: +:RH:0.72-0.94 sigma layer: +:RH:0.995 sigma level: +:RH:0C isotherm: +:RH:1000 mb: +:RH:100 mb: +:RH:10 mb: +:RH:120-90 mb above ground: +:RH:150-120 mb above ground: +:RH:150 mb: +:RH:180-150 mb above ground: +:RH:200 mb: +:RH:20 mb: +:RH:250 mb: +:RH:300 mb: +:RH:30-0 mb above ground: +:RH:30 mb: +:RH:350 mb: +:RH:400 mb: +:RH:450 mb: +:RH:500 mb: +:RH:50 mb: +:RH:550 mb: +:RH:600 mb: +:RH:60-30 mb above ground: +:RH:650 mb: +:RH:700 mb: +:RH:70 mb: +:RH:750 mb: +:RH:800 mb: +:RH:850 mb: +:RH:900 mb: +:RH:90-60 mb above ground: +:RH:925 mb: +:RH:950 mb: +:RH:975 mb: +:RH:entire atmosphere (considered as a single layer): +:RH:highest tropospheric freezing level: +:SFCR:surface: +:SNOWC:surface: +:SNOHF:surface: +:SOILL:0-0.1 m below ground: +:SOILL:0.1-0.4 m below ground: +:SOILL:0.4-1 m below ground: +:SOILL:1-2 m below ground: +:SOILW:0.1-0.4 m below ground: +:SOILW:0.4-1 m below ground: +:SOILW:1-2 m below ground: +:SPFH:1000 mb: +:SPFH:100 mb: +:SPFH:10 mb: +:SPFH:1 mb: +:SPFH:120-90 mb above ground: +:SPFH:150-120 mb above ground: +:SPFH:150 mb: +:SPFH:180-150 mb above ground: +:SPFH:200 mb: +:SPFH:20 mb: +:SPFH:2 mb: +:SPFH:250 mb: +:SPFH:2 m above ground: +:SPFH:300 mb: +:SPFH:30-0 mb above ground: +:SPFH:30 mb: +:SPFH:3 mb: +:SPFH:350 mb: +:SPFH:400 mb: +:SPFH:450 mb: +:SPFH:500 mb: +:SPFH:50 mb: +:SPFH:5 mb: +:SPFH:550 mb: +:SPFH:600 mb: +:SPFH:60-30 mb above ground: +:SPFH:650 mb: +:SPFH:700 mb: +:SPFH:70 mb: +:SPFH:7 mb: +:SPFH:750 mb: +:SPFH:800 mb: +:SPFH:80 m above ground: +:SPFH:850 mb: +:SPFH:900 mb: +:SPFH:90-60 mb above ground: +:SPFH:925 mb: +:SPFH:950 mb: +:SPFH:975 mb: +:SUNSD:surface: +:TCDC:475 mb: +:TCDC:boundary layer cloud layer: +:TCDC:convective cloud layer: +:TCDC:high cloud layer: +:TCDC:low cloud layer: +:TCDC:middle cloud layer: +:TMP:0.995 sigma level: +:TMP:1000 mb: +:TMP:100 m above ground: +:TMP:100 mb: +:TMP:10 mb: +:TMP:1 mb: +:TMP:120-90 mb above ground: +:TMP:150-120 mb above ground: +:TMP:150 mb: +:TMP:180-150 mb above ground: +:TMP:1829 m above mean sea level: +:TMP:200 mb: +:TMP:20 mb: +:TMP:2 mb: +:TMP:250 mb: +:TMP:2743 m above mean sea level: +:TMP:300 mb: +:TMP:30-0 mb above ground: +:TMP:305 m above mean sea level: +:TMP:30 mb: +:TMP:3 mb: +:TMP:320 K isentropic level: +:TMP:350 mb: +:TMP:3658 m above mean sea level: +:TMP:400 mb: +:TMP:450 K isentropic level: +:TMP:450 mb: +:TMP:4572 m above mean sea level: +:TMP:457 m above mean sea level: +:TMP:500 mb: +:TMP:50 mb: +:TMP:5 mb: +:TMP:550 K isentropic level: +:TMP:550 mb: +:TMP:600 mb: +:TMP:60-30 mb above ground: +:TMP:610 m above mean sea level: +:TMP:650 K isentropic level: +:TMP:650 mb: +:TMP:700 mb: +:TMP:70 mb: +:TMP:7 mb: +:TMP:750 mb: +:TMP:800 mb: +:TMP:80 m above ground: +:TMP:850 mb: +:TMP:900 mb: +:TMP:90-60 mb above ground: +:TMP:914 m above mean sea level: +:TMP:925 mb: +:TMP:950 mb: +:TMP:975 mb: +:TMP:high cloud top level: +:TMP:low cloud top level: +:TMP:max wind: +:TMP:middle cloud top level: +:TMP:PV=-1.5e-06 (Km^2/kg/s) surface: +:TMP:PV=1.5e-06 (Km^2/kg/s) surface: +:TMP:PV=-1e-06 (Km^2/kg/s) surface: +:TMP:PV=1e-06 (Km^2/kg/s) surface: +:TMP:PV=-2e-06 (Km^2/kg/s) surface: +:TMP:PV=2e-06 (Km^2/kg/s) surface: +:TMP:PV=-5e-07 (Km^2/kg/s) surface: +:TMP:PV=5e-07 (Km^2/kg/s) surface: +:TMP:surface: +:TMP:tropopause: +:TOZNE:entire atmosphere (considered as a single layer): +:TSOIL:0.1-0.4 m below ground: +:TSOIL:0.4-1 m below ground: +:TSOIL:1-2 m below ground: +:UFLX:surface: +:UGRD:0.995 sigma level: +:UGRD:1000 mb: +:UGRD:100 m above ground: +:UGRD:100 mb: +:UGRD:10 mb: +:UGRD:1 mb: +:UGRD:120-90 mb above ground: +:UGRD:150-120 mb above ground: +:UGRD:150 mb: +:UGRD:180-150 mb above ground: +:UGRD:1829 m above mean sea level: +:UGRD:200 mb: +:UGRD:20 mb: +:UGRD:2 mb: +:UGRD:250 mb: +:UGRD:2743 m above mean sea level: +:UGRD:300 mb: +:UGRD:30-0 mb above ground: +:UGRD:305 m above mean sea level: +:UGRD:30 mb: +:UGRD:3 mb: +:UGRD:320 K isentropic level: +:UGRD:350 mb: +:UGRD:3658 m above mean sea level: +:UGRD:400 mb: +:UGRD:450 K isentropic level: +:UGRD:450 mb: +:UGRD:4572 m above mean sea level: +:UGRD:457 m above mean sea level: +:UGRD:500 mb: +:UGRD:50 mb: +:UGRD:5 mb: +:UGRD:550 K isentropic level: +:UGRD:550 mb: +:UGRD:600 mb: +:UGRD:60-30 mb above ground: +:UGRD:610 m above mean sea level: +:UGRD:650 K isentropic level: +:UGRD:650 mb: +:UGRD:700 mb: +:UGRD:70 mb: +:UGRD:7 mb: +:UGRD:750 mb: +:UGRD:800 mb: +:UGRD:80 m above ground: +:UGRD:850 mb: +:UGRD:900 mb: +:UGRD:90-60 mb above ground: +:UGRD:914 m above mean sea level: +:UGRD:925 mb: +:UGRD:950 mb: +:UGRD:975 mb: +:UGRD:max wind: +:UGRD:planetary boundary layer: +:UGRD:PV=-1.5e-06 (Km^2/kg/s) surface: +:UGRD:PV=1.5e-06 (Km^2/kg/s) surface: +:UGRD:PV=-1e-06 (Km^2/kg/s) surface: +:UGRD:PV=1e-06 (Km^2/kg/s) surface: +:UGRD:PV=-2e-06 (Km^2/kg/s) surface: +:UGRD:PV=2e-06 (Km^2/kg/s) surface: +:UGRD:PV=-5e-07 (Km^2/kg/s) surface: +:UGRD:PV=5e-07 (Km^2/kg/s) surface: +:UGRD:tropopause: +:U-GWD:surface: +:USTM:6000-0 m above ground: +:USWRF:top of atmosphere: +:APTMP:2 m above ground +:VFLX:surface: +:VGRD:0.995 sigma level: +:VGRD:1000 mb: +:VGRD:100 m above ground: +:VGRD:100 mb: +:VGRD:10 mb: +:VGRD:1 mb: +:VGRD:120-90 mb above ground: +:VGRD:150-120 mb above ground: +:VGRD:150 mb: +:VGRD:180-150 mb above ground: +:VGRD:1829 m above mean sea level: +:VGRD:200 mb: +:VGRD:20 mb: +:VGRD:2 mb: +:VGRD:250 mb: +:VGRD:2743 m above mean sea level: +:VGRD:300 mb: +:VGRD:30-0 mb above ground: +:VGRD:305 m above mean sea level: +:VGRD:30 mb: +:VGRD:3 mb: +:VGRD:320 K isentropic level: +:VGRD:350 mb: +:VGRD:3658 m above mean sea level: +:VGRD:400 mb: +:VGRD:450 K isentropic level: +:VGRD:450 mb: +:VGRD:4572 m above mean sea level: +:VGRD:457 m above mean sea level: +:VGRD:500 mb: +:VGRD:50 mb: +:VGRD:5 mb: +:VGRD:550 K isentropic level: +:VGRD:550 mb: +:VGRD:600 mb: +:VGRD:60-30 mb above ground: +:VGRD:610 m above mean sea level: +:VGRD:650 K isentropic level: +:VGRD:650 mb: +:VGRD:700 mb: +:VGRD:70 mb: +:VGRD:7 mb: +:VGRD:750 mb: +:VGRD:800 mb: +:VGRD:80 m above ground: +:VGRD:850 mb: +:VGRD:900 mb: +:VGRD:90-60 mb above ground: +:VGRD:914 m above mean sea level: +:VGRD:925 mb: +:VGRD:950 mb: +:VGRD:975 mb: +:VGRD:max wind: +:VGRD:planetary boundary layer: +:VGRD:PV=-1.5e-06 (Km^2/kg/s) surface: +:VGRD:PV=1.5e-06 (Km^2/kg/s) surface: +:VGRD:PV=-1e-06 (Km^2/kg/s) surface: +:VGRD:PV=1e-06 (Km^2/kg/s) surface: +:VGRD:PV=-2e-06 (Km^2/kg/s) surface: +:VGRD:PV=2e-06 (Km^2/kg/s) surface: +:VGRD:PV=-5e-07 (Km^2/kg/s) surface: +:VGRD:PV=5e-07 (Km^2/kg/s) surface: +:VGRD:tropopause: +:V-GWD:surface: +:VRATE:planetary boundary layer: +:VSTM:6000-0 m above ground: +:VVEL:0.995 sigma level: +:VVEL:1 mb: +:VVEL:2 mb: +:VVEL:3 mb: +:VVEL:5 mb: +:VVEL:7 mb: +:VVEL:10 mb: +:VVEL:20 mb: +:VVEL:30 mb: +:VVEL:50 mb: +:VVEL:70 mb: +:VVEL:1000 mb: +:VVEL:100 mb: +:VVEL:150 mb: +:VVEL:200 mb: +:VVEL:250 mb: +:VVEL:300 mb: +:VVEL:350 mb: +:VVEL:400 mb: +:VVEL:450 mb: +:VVEL:500 mb: +:VVEL:550 mb: +:VVEL:600 mb: +:VVEL:650 mb: +:VVEL:700 mb: +:VVEL:750 mb: +:VVEL:800 mb: +:VVEL:850 mb: +:VVEL:900 mb: +:VVEL:925 mb: +:VVEL:950 mb: +:VVEL:975 mb: +:VWSH:PV=-1.5e-06 (Km^2/kg/s) surface: +:VWSH:PV=1.5e-06 (Km^2/kg/s) surface: +:VWSH:PV=-1e-06 (Km^2/kg/s) surface: +:VWSH:PV=1e-06 (Km^2/kg/s) surface: +:VWSH:PV=-2e-06 (Km^2/kg/s) surface: +:VWSH:PV=2e-06 (Km^2/kg/s) surface: +:VWSH:PV=-5e-07 (Km^2/kg/s) surface: +:VWSH:PV=5e-07 (Km^2/kg/s) surface: +:VWSH:tropopause: +:WATR:surface: +:WILT:surface: +:PRES:1 hybrid level: +:HGT:1 hybrid level: +:TMP:1 hybrid level: +:RH:1 hybrid level: +:UGRD:1 hybrid level: +:VGRD:1 hybrid level: +:PRES:2 hybrid level: +:HGT:2 hybrid level: +:TMP:2 hybrid level: +:RH:2 hybrid level: +:UGRD:2 hybrid level: +:VGRD:2 hybrid level: +:PRES:3 hybrid level: +:HGT:3 hybrid level: +:TMP:3 hybrid level: +:RH:3 hybrid level: +:UGRD:3 hybrid level: +:VGRD:3 hybrid level: +:PRES:4 hybrid level: +:HGT:4 hybrid level: +:TMP:4 hybrid level: +:RH:4 hybrid level: +:UGRD:4 hybrid level: +:VGRD:4 hybrid level: +;############################ do not leave a blank line at the end diff --git a/parm/product/gefs.0p50.f000.paramlist.a.txt b/parm/product/gefs.0p50.f000.paramlist.a.txt new file mode 100644 index 0000000000..ab8e73f552 --- /dev/null +++ b/parm/product/gefs.0p50.f000.paramlist.a.txt @@ -0,0 +1,80 @@ +############################# sorted pgrb2a 201408 +:CAPE:180-0 mb above ground: +:CIN:180-0 mb above ground: +:DLWRF:surface: +:DSWRF:surface: +:HGT:10 mb: +:HGT:100 mb: +:HGT:1000 mb: +:HGT:200 mb: +:HGT:250 mb: +:HGT:300 mb: +:HGT:50 mb: +:HGT:500 mb: +:HGT:700 mb: +:HGT:850 mb: +:HGT:925 mb: +:HGT:surface: +:ICETK:surface: +:LHTFL:surface: +:PRES:surface: +:PRMSL:mean sea level: +:PWAT:entire atmosphere (considered as a single layer): +:RH:10 mb: +:RH:100 mb: +:RH:1000 mb: +:RH:2 m above ground: +:RH:200 mb: +:RH:250 mb: +:RH:50 mb: +:RH:500 mb: +:RH:700 mb: +:RH:850 mb: +:RH:925 mb: +:SHTFL:surface: +:SNOD:surface: +:SOILW:0-0.1 m below ground: +:TMP:10 mb: +:TMP:100 mb: +:TMP:1000 mb: +:TMP:2 m above ground: +:TMP:200 mb: +:TMP:250 mb: +:TMP:50 mb: +:TMP:500 mb: +:TMP:700 mb: +:TMP:850 mb: +:TMP:925 mb: +:TSOIL:0-0.1 m below ground: +:UGRD:10 m above ground: +:UGRD:10 mb: +:UGRD:100 mb: +:UGRD:1000 mb: +:UGRD:200 mb: +:UGRD:250 mb: +:UGRD:300 mb: +:UGRD:400 mb: +:UGRD:50 mb: +:UGRD:500 mb: +:UGRD:700 mb: +:UGRD:850 mb: +:UGRD:925 mb: +:ULWRF:surface: +:ULWRF:top of atmosphere: +:USWRF:surface: +:VGRD:10 m above ground: +:VGRD:10 mb: +:VGRD:100 mb: +:VGRD:1000 mb: +:VGRD:200 mb: +:VGRD:250 mb: +:VGRD:300 mb: +:VGRD:400 mb: +:VGRD:50 mb: +:VGRD:500 mb: +:VGRD:700 mb: +:VGRD:850 mb: +:VGRD:925 mb: +:VVEL:850 mb: +:WEASD:surface: +;############################ do not leave a blank line at the end diff --git a/parm/product/gefs.0p50.f000.paramlist.b.txt b/parm/product/gefs.0p50.f000.paramlist.b.txt new file mode 100644 index 0000000000..8fd65468ae --- /dev/null +++ b/parm/product/gefs.0p50.f000.paramlist.b.txt @@ -0,0 +1,474 @@ +############################# sorted pgrb2a + pgrb2b 201502 +:4LFTX:surface: +:5WAVH:500 mb: +:ABSV:1000 mb: +:ABSV:100 mb: +:ABSV:10 mb: +:ABSV:150 mb: +:ABSV:200 mb: +:ABSV:20 mb: +:ABSV:250 mb: +:ABSV:300 mb: +:ABSV:30 mb: +:ABSV:350 mb: +:ABSV:400 mb: +:ABSV:450 mb: +:ABSV:500 mb: +:ABSV:50 mb: +:ABSV:550 mb: +:ABSV:600 mb: +:ABSV:650 mb: +:ABSV:700 mb: +:ABSV:70 mb: +:ABSV:750 mb: +:ABSV:800 mb: +:ABSV:850 mb: +:ABSV:900 mb: +:ABSV:925 mb: +:ABSV:950 mb: +:ABSV:975 mb: +:BRTMP:top of atmosphere: +:CAPE:255-0 mb above ground: +:CAPE:surface: +:CIN:255-0 mb above ground: +:CIN:surface: +:CLWMR:1000 mb: +:CLWMR:100 mb: +:CLWMR:10 mb: +:CLWMR:150 mb: +:CLWMR:200 mb: +:CLWMR:20 mb: +:CLWMR:250 mb: +:CLWMR:300 mb: +:CLWMR:30 mb: +:CLWMR:350 mb: +:CLWMR:400 mb: +:CLWMR:450 mb: +:CLWMR:500 mb: +:CLWMR:50 mb: +:CLWMR:550 mb: +:CLWMR:600 mb: +:CLWMR:650 mb: +:CLWMR:700 mb: +:CLWMR:70 mb: +:CLWMR:750 mb: +:CLWMR:800 mb: +:CLWMR:850 mb: +:CLWMR:900 mb: +:CLWMR:925 mb: +:CLWMR:950 mb: +:CLWMR:975 mb: +:CNWAT:surface: +:CPOFP:surface: +:CWAT:entire atmosphere (considered as a single layer): +:DPT:2 m above ground: +:DPT:30-0 mb above ground: +:FLDCP:surface: +:FRICV:surface: +:GUST:surface: +:HGT:0C isotherm: +:HGT:1 mb: +:HGT:150 mb: +:HGT:20 mb: +:HGT:2 mb: +:HGT:30 mb: +:HGT:3 mb: +:HGT:350 mb: +:HGT:400 mb: +:HGT:450 mb: +:HGT:5 mb: +:HGT:550 mb: +:HGT:600 mb: +:HGT:650 mb: +:HGT:70 mb: +:HGT:7 mb: +:HGT:750 mb: +:HGT:800 mb: +:HGT:900 mb: +:HGT:950 mb: +:HGT:975 mb: +:HGT:highest tropospheric freezing level: +:HGT:max wind: +:HGT:PV=-1.5e-06 (Km^2/kg/s) surface: +:HGT:PV=1.5e-06 (Km^2/kg/s) surface: +:HGT:PV=-1e-06 (Km^2/kg/s) surface: +:HGT:PV=1e-06 (Km^2/kg/s) surface: +:HGT:PV=-2e-06 (Km^2/kg/s) surface: +:HGT:PV=2e-06 (Km^2/kg/s) surface: +:HGT:PV=-5e-07 (Km^2/kg/s) surface: +:HGT:PV=5e-07 (Km^2/kg/s) surface: +:HGT:tropopause: +:HINDEX:surface: +:HLCY:3000-0 m above ground: +:HPBL:surface: +:ICAHT:max wind: +:ICAHT:tropopause: +:ICEC:surface: +:ICIP:300 mb: +:ICIP:400 mb: +:ICIP:500 mb: +:ICIP:600 mb: +:ICIP:700 mb: +:ICIP:800 mb: +:ICSEV:300 mb: +:ICSEV:400 mb: +:ICSEV:500 mb: +:ICSEV:600 mb: +:ICSEV:700 mb: +:ICSEV:800 mb: +:LAND:surface: +:LFTX:surface: +:MNTSF:320 K isentropic level: +:MSLET:mean sea level: +:O3MR:100 mb: +:O3MR:10 mb: +:O3MR:125 mb: +:O3MR:150 mb: +:O3MR:1 mb: +:O3MR:200 mb: +:O3MR:20 mb: +:O3MR:250 mb: +:O3MR:2 mb: +:O3MR:300 mb: +:O3MR:30 mb: +:O3MR:350 mb: +:O3MR:3 mb: +:O3MR:400 mb: +:O3MR:50 mb: +:O3MR:5 mb: +:O3MR:70 mb: +:O3MR:7 mb: +:PEVPR:surface: +:PLI:30-0 mb above ground: +:PLPL:255-0 mb above ground: +:POT:0.995 sigma level: +:PRES:80 m above ground: +:PRES:max wind: +:PRES:mean sea level: +:PRES:PV=-1.5e-06 (Km^2/kg/s) surface: +:PRES:PV=1.5e-06 (Km^2/kg/s) surface: +:PRES:PV=-1e-06 (Km^2/kg/s) surface: +:PRES:PV=1e-06 (Km^2/kg/s) surface: +:PRES:PV=-2e-06 (Km^2/kg/s) surface: +:PRES:PV=2e-06 (Km^2/kg/s) surface: +:PRES:PV=-5e-07 (Km^2/kg/s) surface: +:PRES:PV=5e-07 (Km^2/kg/s) surface: +:PRES:tropopause: +:PVORT:310 K isentropic level: +:PVORT:320 K isentropic level: +:PVORT:350 K isentropic level: +:PVORT:450 K isentropic level: +:PVORT:550 K isentropic level: +:PVORT:650 K isentropic level: +:PWAT:30-0 mb above ground: +:RH:0.33-1 sigma layer: +:RH:0.44-0.72 sigma layer: +:RH:0.44-1 sigma layer: +:RH:0.72-0.94 sigma layer: +:RH:0.995 sigma level: +:RH:0C isotherm: +:RH:120-90 mb above ground: +:RH:150-120 mb above ground: +:RH:150 mb: +:RH:180-150 mb above ground: +:RH:20 mb: +:RH:300 mb: +:RH:30-0 mb above ground: +:RH:30 mb: +:RH:350 mb: +:RH:400 mb: +:RH:450 mb: +:RH:550 mb: +:RH:600 mb: +:RH:60-30 mb above ground: +:RH:650 mb: +:RH:70 mb: +:RH:750 mb: +:RH:800 mb: +:RH:900 mb: +:RH:90-60 mb above ground: +:RH:950 mb: +:RH:975 mb: +:RH:entire atmosphere (considered as a single layer): +:RH:highest tropospheric freezing level: +:SFCR:surface: +:SNOHF:surface: +:SNOWC:surface: +:SOILL:0-0.1 m below ground: +:SOILL:0.1-0.4 m below ground: +:SOILL:0.4-1 m below ground: +:SOILL:1-2 m below ground: +:SOILW:0.1-0.4 m below ground: +:SOILW:0.4-1 m below ground: +:SOILW:1-2 m below ground: +:SPFH:1000 mb: +:SPFH:100 mb: +:SPFH:10 mb: +:SPFH:1 mb: +:SPFH:120-90 mb above ground: +:SPFH:150-120 mb above ground: +:SPFH:150 mb: +:SPFH:180-150 mb above ground: +:SPFH:200 mb: +:SPFH:20 mb: +:SPFH:2 mb: +:SPFH:250 mb: +:SPFH:2 m above ground: +:SPFH:300 mb: +:SPFH:30-0 mb above ground: +:SPFH:30 mb: +:SPFH:3 mb: +:SPFH:350 mb: +:SPFH:400 mb: +:SPFH:450 mb: +:SPFH:500 mb: +:SPFH:50 mb: +:SPFH:5 mb: +:SPFH:550 mb: +:SPFH:600 mb: +:SPFH:60-30 mb above ground: +:SPFH:650 mb: +:SPFH:700 mb: +:SPFH:70 mb: +:SPFH:7 mb: +:SPFH:750 mb: +:SPFH:800 mb: +:SPFH:80 m above ground: +:SPFH:850 mb: +:SPFH:900 mb: +:SPFH:90-60 mb above ground: +:SPFH:925 mb: +:SPFH:950 mb: +:SPFH:975 mb: +:SUNSD:surface: +:TCDC:475 mb: +:TMP:0.995 sigma level: +:TMP:100 m above ground: +:TMP:1 mb: +:TMP:120-90 mb above ground: +:TMP:150-120 mb above ground: +:TMP:150 mb: +:TMP:180-150 mb above ground: +:TMP:1829 m above mean sea level: +:TMP:20 mb: +:TMP:2 mb: +:TMP:2743 m above mean sea level: +:TMP:300 mb: +:TMP:30-0 mb above ground: +:TMP:305 m above mean sea level: +:TMP:30 mb: +:TMP:3 mb: +:TMP:320 K isentropic level: +:TMP:350 mb: +:TMP:3658 m above mean sea level: +:TMP:400 mb: +:TMP:450 mb: +:TMP:450 K isentropic level: +:TMP:4572 m above mean sea level: +:TMP:457 m above mean sea level: +:TMP:5 mb: +:TMP:550 mb: +:TMP:550 K isentropic level: +:TMP:600 mb: +:TMP:60-30 mb above ground: +:TMP:610 m above mean sea level: +:TMP:650 mb: +:TMP:650 K isentropic level: +:TMP:70 mb: +:TMP:7 mb: +:TMP:750 mb: +:TMP:800 mb: +:TMP:80 m above ground: +:TMP:900 mb: +:TMP:90-60 mb above ground: +:TMP:914 m above mean sea level: +:TMP:950 mb: +:TMP:975 mb: +:TMP:max wind: +:TMP:PV=-1.5e-06 (Km^2/kg/s) surface: +:TMP:PV=1.5e-06 (Km^2/kg/s) surface: +:TMP:PV=-1e-06 (Km^2/kg/s) surface: +:TMP:PV=1e-06 (Km^2/kg/s) surface: +:TMP:PV=-2e-06 (Km^2/kg/s) surface: +:TMP:PV=2e-06 (Km^2/kg/s) surface: +:TMP:PV=-5e-07 (Km^2/kg/s) surface: +:TMP:PV=5e-07 (Km^2/kg/s) surface: +:TMP:surface: +:TMP:tropopause: +:TOZNE:entire atmosphere (considered as a single layer): +:TSOIL:0.1-0.4 m below ground: +:TSOIL:0.4-1 m below ground: +:TSOIL:1-2 m below ground: +:UGRD:0.995 sigma level: +:UGRD:100 m above ground: +:UGRD:1 mb: +:UGRD:120-90 mb above ground: +:UGRD:150-120 mb above ground: +:UGRD:150 mb: +:UGRD:180-150 mb above ground: +:UGRD:1829 m above mean sea level: +:UGRD:20 mb: +:UGRD:2 mb: +:UGRD:2743 m above mean sea level: +:UGRD:30-0 mb above ground: +:UGRD:305 m above mean sea level: +:UGRD:30 mb: +:UGRD:3 mb: +:UGRD:320 K isentropic level: +:UGRD:350 mb: +:UGRD:3658 m above mean sea level: +:UGRD:450 mb: +:UGRD:450 K isentropic level: +:UGRD:4572 m above mean sea level: +:UGRD:457 m above mean sea level: +:UGRD:5 mb: +:UGRD:550 mb: +:UGRD:550 K isentropic level: +:UGRD:600 mb: +:UGRD:60-30 mb above ground: +:UGRD:610 m above mean sea level: +:UGRD:650 mb: +:UGRD:650 K isentropic level: +:UGRD:70 mb: +:UGRD:7 mb: +:UGRD:750 mb: +:UGRD:800 mb: +:UGRD:80 m above ground: +:UGRD:900 mb: +:UGRD:90-60 mb above ground: +:UGRD:914 m above mean sea level: +:UGRD:950 mb: +:UGRD:975 mb: +:UGRD:max wind: +:UGRD:planetary boundary layer: +:UGRD:PV=-1.5e-06 (Km^2/kg/s) surface: +:UGRD:PV=1.5e-06 (Km^2/kg/s) surface: +:UGRD:PV=-1e-06 (Km^2/kg/s) surface: +:UGRD:PV=1e-06 (Km^2/kg/s) surface: +:UGRD:PV=-2e-06 (Km^2/kg/s) surface: +:UGRD:PV=2e-06 (Km^2/kg/s) surface: +:UGRD:PV=-5e-07 (Km^2/kg/s) surface: +:UGRD:PV=5e-07 (Km^2/kg/s) surface: +:UGRD:tropopause: +:USTM:6000-0 m above ground: +:APTMP:2 m above ground: +:VGRD:0.995 sigma level: +:VGRD:100 m above ground: +:VGRD:1 mb: +:VGRD:120-90 mb above ground: +:VGRD:150-120 mb above ground: +:VGRD:150 mb: +:VGRD:180-150 mb above ground: +:VGRD:1829 m above mean sea level: +:VGRD:20 mb: +:VGRD:2 mb: +:VGRD:2743 m above mean sea level: +:VGRD:30-0 mb above ground: +:VGRD:305 m above mean sea level: +:VGRD:30 mb: +:VGRD:3 mb: +:VGRD:320 K isentropic level: +:VGRD:350 mb: +:VGRD:3658 m above mean sea level: +:VGRD:450 mb: +:VGRD:450 K isentropic level: +:VGRD:4572 m above mean sea level: +:VGRD:457 m above mean sea level: +:VGRD:5 mb: +:VGRD:550 mb: +:VGRD:550 K isentropic level: +:VGRD:600 mb: +:VGRD:60-30 mb above ground: +:VGRD:610 m above mean sea level: +:VGRD:650 mb: +:VGRD:650 K isentropic level: +:VGRD:70 mb: +:VGRD:7 mb: +:VGRD:750 mb: +:VGRD:800 mb: +:VGRD:80 m above ground: +:VGRD:900 mb: +:VGRD:90-60 mb above ground: +:VGRD:914 m above mean sea level: +:VGRD:950 mb: +:VGRD:975 mb: +:VGRD:max wind: +:VGRD:planetary boundary layer: +:VGRD:PV=-1.5e-06 (Km^2/kg/s) surface: +:VGRD:PV=1.5e-06 (Km^2/kg/s) surface: +:VGRD:PV=-1e-06 (Km^2/kg/s) surface: +:VGRD:PV=1e-06 (Km^2/kg/s) surface: +:VGRD:PV=-2e-06 (Km^2/kg/s) surface: +:VGRD:PV=2e-06 (Km^2/kg/s) surface: +:VGRD:PV=-5e-07 (Km^2/kg/s) surface: +:VGRD:PV=5e-07 (Km^2/kg/s) surface: +:VGRD:tropopause: +:VIS:surface: +:VRATE:planetary boundary layer: +:VSTM:6000-0 m above ground: +:VVEL:0.995 sigma level: +:VVEL:1 mb: +:VVEL:2 mb: +:VVEL:3 mb: +:VVEL:5 mb: +:VVEL:7 mb: +:VVEL:10 mb: +:VVEL:20 mb: +:VVEL:30 mb: +:VVEL:50 mb: +:VVEL:70 mb: +:VVEL:1000 mb: +:VVEL:100 mb: +:VVEL:150 mb: +:VVEL:200 mb: +:VVEL:250 mb: +:VVEL:300 mb: +:VVEL:350 mb: +:VVEL:400 mb: +:VVEL:450 mb: +:VVEL:500 mb: +:VVEL:550 mb: +:VVEL:600 mb: +:VVEL:650 mb: +:VVEL:700 mb: +:VVEL:750 mb: +:VVEL:800 mb: +:VVEL:900 mb: +:VVEL:925 mb: +:VVEL:950 mb: +:VVEL:975 mb: +:VWSH:PV=-1.5e-06 (Km^2/kg/s) surface: +:VWSH:PV=1.5e-06 (Km^2/kg/s) surface: +:VWSH:PV=-1e-06 (Km^2/kg/s) surface: +:VWSH:PV=1e-06 (Km^2/kg/s) surface: +:VWSH:PV=-2e-06 (Km^2/kg/s) surface: +:VWSH:PV=2e-06 (Km^2/kg/s) surface: +:VWSH:PV=-5e-07 (Km^2/kg/s) surface: +:VWSH:PV=5e-07 (Km^2/kg/s) surface: +:VWSH:tropopause: +:WILT:surface: +:HGT:cloud ceiling: +:PRES:1 hybrid level: +:HGT:1 hybrid level: +:TMP:1 hybrid level: +:RH:1 hybrid level: +:UGRD:1 hybrid level: +:VGRD:1 hybrid level: +:PRES:2 hybrid level: +:HGT:2 hybrid level: +:TMP:2 hybrid level: +:RH:2 hybrid level: +:UGRD:2 hybrid level: +:VGRD:2 hybrid level: +:PRES:3 hybrid level: +:HGT:3 hybrid level: +:TMP:3 hybrid level: +:RH:3 hybrid level: +:UGRD:3 hybrid level: +:VGRD:3 hybrid level: +:PRES:4 hybrid level: +:HGT:4 hybrid level: +:TMP:4 hybrid level: +:RH:4 hybrid level: +:UGRD:4 hybrid level: +:VGRD:4 hybrid level: diff --git a/parm/product/gefs.0p50.fFFF.paramlist.a.txt b/parm/product/gefs.0p50.fFFF.paramlist.a.txt new file mode 100644 index 0000000000..dde635408c --- /dev/null +++ b/parm/product/gefs.0p50.fFFF.paramlist.a.txt @@ -0,0 +1,87 @@ +############################# sorted pgrb2a 201408 +:APCP:surface: +:CAPE:180-0 mb above ground: +:CFRZR:surface: +:CICEP:surface: +:CIN:180-0 mb above ground: +:CRAIN:surface: +:CSNOW:surface: +:DLWRF:surface: +:DSWRF:surface: +:HGT:10 mb: +:HGT:100 mb: +:HGT:1000 mb: +:HGT:200 mb: +:HGT:250 mb: +:HGT:300 mb: +:HGT:50 mb: +:HGT:500 mb: +:HGT:700 mb: +:HGT:850 mb: +:HGT:925 mb: +:LHTFL:surface: +:ICETK:surface: +:PRES:surface: +:PRMSL:mean sea level: +:PWAT:entire atmosphere (considered as a single layer): +:RH:10 mb: +:RH:100 mb: +:RH:1000 mb: +:RH:2 m above ground: +:RH:200 mb: +:RH:250 mb: +:RH:50 mb: +:RH:500 mb: +:RH:700 mb: +:RH:850 mb: +:RH:925 mb: +:SHTFL:surface: +:SNOD:surface: +:SOILW:0-0.1 m below ground: +:TCDC:entire atmosphere: +:TMAX:2 m above ground: +:TMIN:2 m above ground: +:TMP:10 mb: +:TMP:100 mb: +:TMP:1000 mb: +:TMP:2 m above ground: +:TMP:200 mb: +:TMP:250 mb: +:TMP:50 mb: +:TMP:500 mb: +:TMP:700 mb: +:TMP:850 mb: +:TMP:925 mb: +:TSOIL:0-0.1 m below ground: +:UGRD:10 m above ground: +:UGRD:10 mb: +:UGRD:100 mb: +:UGRD:1000 mb: +:UGRD:200 mb: +:UGRD:250 mb: +:UGRD:300 mb: +:UGRD:400 mb: +:UGRD:50 mb: +:UGRD:500 mb: +:UGRD:700 mb: +:UGRD:850 mb: +:UGRD:925 mb: +:ULWRF:surface: +:ULWRF:top of atmosphere: +:USWRF:surface: +:VGRD:10 m above ground: +:VGRD:10 mb: +:VGRD:100 mb: +:VGRD:1000 mb: +:VGRD:200 mb: +:VGRD:250 mb: +:VGRD:300 mb: +:VGRD:400 mb: +:VGRD:50 mb: +:VGRD:500 mb: +:VGRD:700 mb: +:VGRD:850 mb: +:VGRD:925 mb: +:VVEL:850 mb: +:WEASD:surface: +;############################ do not leave a blank line at the end diff --git a/parm/product/gefs.0p50.fFFF.paramlist.b.txt b/parm/product/gefs.0p50.fFFF.paramlist.b.txt new file mode 100644 index 0000000000..28b98db7d5 --- /dev/null +++ b/parm/product/gefs.0p50.fFFF.paramlist.b.txt @@ -0,0 +1,506 @@ +############################# sorted pgrb2a + pgrb2b 201502 +:4LFTX:surface: +:5WAVH:500 mb: +:ABSV:1000 mb: +:ABSV:100 mb: +:ABSV:10 mb: +:ABSV:150 mb: +:ABSV:200 mb: +:ABSV:20 mb: +:ABSV:250 mb: +:ABSV:300 mb: +:ABSV:30 mb: +:ABSV:350 mb: +:ABSV:400 mb: +:ABSV:450 mb: +:ABSV:500 mb: +:ABSV:50 mb: +:ABSV:550 mb: +:ABSV:600 mb: +:ABSV:650 mb: +:ABSV:700 mb: +:ABSV:70 mb: +:ABSV:750 mb: +:ABSV:800 mb: +:ABSV:850 mb: +:ABSV:900 mb: +:ABSV:925 mb: +:ABSV:950 mb: +:ABSV:975 mb: +:ACPCP:surface: +:ALBDO:surface: +:BRTMP:top of atmosphere: +:CAPE:255-0 mb above ground: +:CAPE:surface: +:CDUVB:surface: +:CIN:255-0 mb above ground: +:CIN:surface: +:CLWMR:1000 mb: +:CLWMR:100 mb: +:CLWMR:10 mb: +:CLWMR:150 mb: +:CLWMR:200 mb: +:CLWMR:20 mb: +:CLWMR:250 mb: +:CLWMR:300 mb: +:CLWMR:30 mb: +:CLWMR:350 mb: +:CLWMR:400 mb: +:CLWMR:450 mb: +:CLWMR:500 mb: +:CLWMR:50 mb: +:CLWMR:550 mb: +:CLWMR:600 mb: +:CLWMR:650 mb: +:CLWMR:700 mb: +:CLWMR:70 mb: +:CLWMR:750 mb: +:CLWMR:800 mb: +:CLWMR:850 mb: +:CLWMR:900 mb: +:CLWMR:925 mb: +:CLWMR:950 mb: +:CLWMR:975 mb: +:CNWAT:surface: +:CPOFP:surface: +:CPRAT:surface: +:CWAT:entire atmosphere (considered as a single layer): +:CWORK:entire atmosphere (considered as a single layer): +:DPT:2 m above ground: +:DPT:30-0 mb above ground: +:DUVB:surface: +:FLDCP:surface: +:FRICV:surface: +:GFLUX:surface: +:GUST:surface: +:HGT:0C isotherm: +:HGT:1 mb: +:HGT:150 mb: +:HGT:20 mb: +:HGT:2 mb: +:HGT:30 mb: +:HGT:3 mb: +:HGT:350 mb: +:HGT:400 mb: +:HGT:450 mb: +:HGT:5 mb: +:HGT:550 mb: +:HGT:600 mb: +:HGT:650 mb: +:HGT:70 mb: +:HGT:7 mb: +:HGT:750 mb: +:HGT:800 mb: +:HGT:900 mb: +:HGT:950 mb: +:HGT:975 mb: +:HGT:highest tropospheric freezing level: +:HGT:max wind: +:HGT:PV=-1.5e-06 (Km^2/kg/s) surface: +:HGT:PV=1.5e-06 (Km^2/kg/s) surface: +:HGT:PV=-1e-06 (Km^2/kg/s) surface: +:HGT:PV=1e-06 (Km^2/kg/s) surface: +:HGT:PV=-2e-06 (Km^2/kg/s) surface: +:HGT:PV=2e-06 (Km^2/kg/s) surface: +:HGT:PV=-5e-07 (Km^2/kg/s) surface: +:HGT:PV=5e-07 (Km^2/kg/s) surface: +:HGT:surface: +:HGT:tropopause: +:HINDEX:surface: +:HLCY:3000-0 m above ground: +:HPBL:surface: +:ICAHT:max wind: +:ICAHT:tropopause: +:ICEC:surface: +:ICIP:300 mb: +:ICIP:400 mb: +:ICIP:500 mb: +:ICIP:600 mb: +:ICIP:700 mb: +:ICIP:800 mb: +:ICSEV:300 mb: +:ICSEV:400 mb: +:ICSEV:500 mb: +:ICSEV:600 mb: +:ICSEV:700 mb: +:ICSEV:800 mb: +:LAND:surface: +:LFTX:surface: +:MNTSF:320 K isentropic level: +:MSLET:mean sea level: +:NCPCP:surface: +:O3MR:100 mb: +:O3MR:10 mb: +:O3MR:125 mb: +:O3MR:150 mb: +:O3MR:1 mb: +:O3MR:200 mb: +:O3MR:20 mb: +:O3MR:250 mb: +:O3MR:2 mb: +:O3MR:300 mb: +:O3MR:30 mb: +:O3MR:350 mb: +:O3MR:3 mb: +:O3MR:400 mb: +:O3MR:50 mb: +:O3MR:5 mb: +:O3MR:70 mb: +:O3MR:7 mb: +:PEVPR:surface: +:PLI:30-0 mb above ground: +:PLPL:255-0 mb above ground: +:POT:0.995 sigma level: +:PRATE:surface: +:PRES:80 m above ground: +:PRES:convective cloud bottom level: +:PRES:convective cloud top level: +:PRES:high cloud bottom level: +:PRES:high cloud top level: +:PRES:low cloud bottom level: +:PRES:low cloud top level: +:PRES:max wind: +:PRES:mean sea level: +:PRES:middle cloud bottom level: +:PRES:middle cloud top level: +:PRES:PV=-1.5e-06 (Km^2/kg/s) surface: +:PRES:PV=1.5e-06 (Km^2/kg/s) surface: +:PRES:PV=-1e-06 (Km^2/kg/s) surface: +:PRES:PV=1e-06 (Km^2/kg/s) surface: +:PRES:PV=-2e-06 (Km^2/kg/s) surface: +:PRES:PV=2e-06 (Km^2/kg/s) surface: +:PRES:PV=-5e-07 (Km^2/kg/s) surface: +:PRES:PV=5e-07 (Km^2/kg/s) surface: +:PRES:tropopause: +:PVORT:310 K isentropic level: +:PVORT:320 K isentropic level: +:PVORT:350 K isentropic level: +:PVORT:450 K isentropic level: +:PVORT:550 K isentropic level: +:PVORT:650 K isentropic level: +:PWAT:30-0 mb above ground: +:RH:0.33-1 sigma layer: +:RH:0.44-0.72 sigma layer: +:RH:0.44-1 sigma layer: +:RH:0.72-0.94 sigma layer: +:RH:0.995 sigma level: +:RH:0C isotherm: +:RH:120-90 mb above ground: +:RH:150-120 mb above ground: +:RH:150 mb: +:RH:180-150 mb above ground: +:RH:20 mb: +:RH:300 mb: +:RH:30-0 mb above ground: +:RH:30 mb: +:RH:350 mb: +:RH:400 mb: +:RH:450 mb: +:RH:550 mb: +:RH:600 mb: +:RH:60-30 mb above ground: +:RH:650 mb: +:RH:70 mb: +:RH:750 mb: +:RH:800 mb: +:RH:900 mb: +:RH:90-60 mb above ground: +:RH:950 mb: +:RH:975 mb: +:RH:entire atmosphere (considered as a single layer): +:RH:highest tropospheric freezing level: +:SFCR:surface: +:SNOWC:surface: +:SNOHF:surface: +:SOILL:0-0.1 m below ground: +:SOILL:0.1-0.4 m below ground: +:SOILL:0.4-1 m below ground: +:SOILL:1-2 m below ground: +:SOILW:0.1-0.4 m below ground: +:SOILW:0.4-1 m below ground: +:SOILW:1-2 m below ground: +:SPFH:1000 mb: +:SPFH:100 mb: +:SPFH:10 mb: +:SPFH:1 mb: +:SPFH:120-90 mb above ground: +:SPFH:150-120 mb above ground: +:SPFH:150 mb: +:SPFH:180-150 mb above ground: +:SPFH:200 mb: +:SPFH:20 mb: +:SPFH:2 mb: +:SPFH:250 mb: +:SPFH:2 m above ground: +:SPFH:300 mb: +:SPFH:30-0 mb above ground: +:SPFH:30 mb: +:SPFH:3 mb: +:SPFH:350 mb: +:SPFH:400 mb: +:SPFH:450 mb: +:SPFH:500 mb: +:SPFH:50 mb: +:SPFH:5 mb: +:SPFH:550 mb: +:SPFH:600 mb: +:SPFH:60-30 mb above ground: +:SPFH:650 mb: +:SPFH:700 mb: +:SPFH:70 mb: +:SPFH:7 mb: +:SPFH:750 mb: +:SPFH:800 mb: +:SPFH:80 m above ground: +:SPFH:850 mb: +:SPFH:900 mb: +:SPFH:90-60 mb above ground: +:SPFH:925 mb: +:SPFH:950 mb: +:SPFH:975 mb: +:SUNSD:surface: +:TCDC:475 mb: +:TCDC:boundary layer cloud layer: +:TCDC:convective cloud layer: +:TCDC:high cloud layer: +:TCDC:low cloud layer: +:TCDC:middle cloud layer: +:TMP:0.995 sigma level: +:TMP:100 m above ground: +:TMP:1 mb: +:TMP:120-90 mb above ground: +:TMP:150-120 mb above ground: +:TMP:150 mb: +:TMP:180-150 mb above ground: +:TMP:1829 m above mean sea level: +:TMP:20 mb: +:TMP:2 mb: +:TMP:2743 m above mean sea level: +:TMP:300 mb: +:TMP:30-0 mb above ground: +:TMP:305 m above mean sea level: +:TMP:30 mb: +:TMP:3 mb: +:TMP:320 K isentropic level: +:TMP:350 mb: +:TMP:3658 m above mean sea level: +:TMP:400 mb: +:TMP:450 K isentropic level: +:TMP:450 mb: +:TMP:4572 m above mean sea level: +:TMP:457 m above mean sea level: +:TMP:5 mb: +:TMP:550 K isentropic level: +:TMP:550 mb: +:TMP:600 mb: +:TMP:60-30 mb above ground: +:TMP:610 m above mean sea level: +:TMP:650 K isentropic level: +:TMP:650 mb: +:TMP:70 mb: +:TMP:7 mb: +:TMP:750 mb: +:TMP:800 mb: +:TMP:80 m above ground: +:TMP:900 mb: +:TMP:90-60 mb above ground: +:TMP:914 m above mean sea level: +:TMP:950 mb: +:TMP:975 mb: +:TMP:high cloud top level: +:TMP:low cloud top level: +:TMP:max wind: +:TMP:middle cloud top level: +:TMP:PV=-1.5e-06 (Km^2/kg/s) surface: +:TMP:PV=1.5e-06 (Km^2/kg/s) surface: +:TMP:PV=-1e-06 (Km^2/kg/s) surface: +:TMP:PV=1e-06 (Km^2/kg/s) surface: +:TMP:PV=-2e-06 (Km^2/kg/s) surface: +:TMP:PV=2e-06 (Km^2/kg/s) surface: +:TMP:PV=-5e-07 (Km^2/kg/s) surface: +:TMP:PV=5e-07 (Km^2/kg/s) surface: +:TMP:surface: +:TMP:tropopause: +:TOZNE:entire atmosphere (considered as a single layer): +:TSOIL:0.1-0.4 m below ground: +:TSOIL:0.4-1 m below ground: +:TSOIL:1-2 m below ground: +:UFLX:surface: +:UGRD:0.995 sigma level: +:UGRD:100 m above ground: +:UGRD:1 mb: +:UGRD:120-90 mb above ground: +:UGRD:150-120 mb above ground: +:UGRD:150 mb: +:UGRD:180-150 mb above ground: +:UGRD:1829 m above mean sea level: +:UGRD:20 mb: +:UGRD:2 mb: +:UGRD:2743 m above mean sea level: +:UGRD:30-0 mb above ground: +:UGRD:305 m above mean sea level: +:UGRD:30 mb: +:UGRD:3 mb: +:UGRD:320 K isentropic level: +:UGRD:350 mb: +:UGRD:3658 m above mean sea level: +:UGRD:450 K isentropic level: +:UGRD:450 mb: +:UGRD:4572 m above mean sea level: +:UGRD:457 m above mean sea level: +:UGRD:5 mb: +:UGRD:550 K isentropic level: +:UGRD:550 mb: +:UGRD:600 mb: +:UGRD:60-30 mb above ground: +:UGRD:610 m above mean sea level: +:UGRD:650 K isentropic level: +:UGRD:650 mb: +:UGRD:70 mb: +:UGRD:7 mb: +:UGRD:750 mb: +:UGRD:800 mb: +:UGRD:80 m above ground: +:UGRD:900 mb: +:UGRD:90-60 mb above ground: +:UGRD:914 m above mean sea level: +:UGRD:950 mb: +:UGRD:975 mb: +:UGRD:max wind: +:UGRD:planetary boundary layer: +:UGRD:PV=-1.5e-06 (Km^2/kg/s) surface: +:UGRD:PV=1.5e-06 (Km^2/kg/s) surface: +:UGRD:PV=-1e-06 (Km^2/kg/s) surface: +:UGRD:PV=1e-06 (Km^2/kg/s) surface: +:UGRD:PV=-2e-06 (Km^2/kg/s) surface: +:UGRD:PV=2e-06 (Km^2/kg/s) surface: +:UGRD:PV=-5e-07 (Km^2/kg/s) surface: +:UGRD:PV=5e-07 (Km^2/kg/s) surface: +:UGRD:tropopause: +:U-GWD:surface: +:USTM:6000-0 m above ground: +:USWRF:top of atmosphere: +:APTMP:2 m above ground +:VFLX:surface: +:VGRD:0.995 sigma level: +:VGRD:100 m above ground: +:VGRD:1 mb: +:VGRD:120-90 mb above ground: +:VGRD:150-120 mb above ground: +:VGRD:150 mb: +:VGRD:180-150 mb above ground: +:VGRD:1829 m above mean sea level: +:VGRD:20 mb: +:VGRD:2 mb: +:VGRD:2743 m above mean sea level: +:VGRD:30-0 mb above ground: +:VGRD:305 m above mean sea level: +:VGRD:30 mb: +:VGRD:3 mb: +:VGRD:320 K isentropic level: +:VGRD:350 mb: +:VGRD:3658 m above mean sea level: +:VGRD:450 K isentropic level: +:VGRD:450 mb: +:VGRD:4572 m above mean sea level: +:VGRD:457 m above mean sea level: +:VGRD:5 mb: +:VGRD:550 K isentropic level: +:VGRD:550 mb: +:VGRD:600 mb: +:VGRD:60-30 mb above ground: +:VGRD:610 m above mean sea level: +:VGRD:650 K isentropic level: +:VGRD:650 mb: +:VGRD:70 mb: +:VGRD:7 mb: +:VGRD:750 mb: +:VGRD:800 mb: +:VGRD:80 m above ground: +:VGRD:900 mb: +:VGRD:90-60 mb above ground: +:VGRD:914 m above mean sea level: +:VGRD:950 mb: +:VGRD:975 mb: +:VGRD:max wind: +:VGRD:planetary boundary layer: +:VGRD:PV=-1.5e-06 (Km^2/kg/s) surface: +:VGRD:PV=1.5e-06 (Km^2/kg/s) surface: +:VGRD:PV=-1e-06 (Km^2/kg/s) surface: +:VGRD:PV=1e-06 (Km^2/kg/s) surface: +:VGRD:PV=-2e-06 (Km^2/kg/s) surface: +:VGRD:PV=2e-06 (Km^2/kg/s) surface: +:VGRD:PV=-5e-07 (Km^2/kg/s) surface: +:VGRD:PV=5e-07 (Km^2/kg/s) surface: +:VGRD:tropopause: +:V-GWD:surface: +:VIS:surface: +:VRATE:planetary boundary layer: +:VSTM:6000-0 m above ground: +:VVEL:0.995 sigma level: +:VVEL:1 mb: +:VVEL:2 mb: +:VVEL:3 mb: +:VVEL:5 mb: +:VVEL:7 mb: +:VVEL:10 mb: +:VVEL:20 mb: +:VVEL:30 mb: +:VVEL:50 mb: +:VVEL:70 mb: +:VVEL:1000 mb: +:VVEL:100 mb: +:VVEL:150 mb: +:VVEL:200 mb: +:VVEL:250 mb: +:VVEL:300 mb: +:VVEL:350 mb: +:VVEL:400 mb: +:VVEL:450 mb: +:VVEL:500 mb: +:VVEL:550 mb: +:VVEL:600 mb: +:VVEL:650 mb: +:VVEL:700 mb: +:VVEL:750 mb: +:VVEL:800 mb: +:VVEL:900 mb: +:VVEL:925 mb: +:VVEL:950 mb: +:VVEL:975 mb: +:VWSH:PV=-1.5e-06 (Km^2/kg/s) surface: +:VWSH:PV=1.5e-06 (Km^2/kg/s) surface: +:VWSH:PV=-1e-06 (Km^2/kg/s) surface: +:VWSH:PV=1e-06 (Km^2/kg/s) surface: +:VWSH:PV=-2e-06 (Km^2/kg/s) surface: +:VWSH:PV=2e-06 (Km^2/kg/s) surface: +:VWSH:PV=-5e-07 (Km^2/kg/s) surface: +:VWSH:PV=5e-07 (Km^2/kg/s) surface: +:VWSH:tropopause: +:WATR:surface: +:WILT:surface: +:HGT:cloud ceiling: +:PRES:1 hybrid level: +:HGT:1 hybrid level: +:TMP:1 hybrid level: +:RH:1 hybrid level: +:UGRD:1 hybrid level: +:VGRD:1 hybrid level: +:PRES:2 hybrid level: +:HGT:2 hybrid level: +:TMP:2 hybrid level: +:RH:2 hybrid level: +:UGRD:2 hybrid level: +:VGRD:2 hybrid level: +:PRES:3 hybrid level: +:HGT:3 hybrid level: +:TMP:3 hybrid level: +:RH:3 hybrid level: +:UGRD:3 hybrid level: +:VGRD:3 hybrid level: +:PRES:4 hybrid level: +:HGT:4 hybrid level: +:TMP:4 hybrid level: +:RH:4 hybrid level: +:UGRD:4 hybrid level: +:VGRD:4 hybrid level: diff --git a/parm/product/gefs.1p00.f000.paramlist.a.txt b/parm/product/gefs.1p00.f000.paramlist.a.txt new file mode 120000 index 0000000000..69265297d3 --- /dev/null +++ b/parm/product/gefs.1p00.f000.paramlist.a.txt @@ -0,0 +1 @@ +gefs.0p50.f000.paramlist.a.txt \ No newline at end of file diff --git a/parm/product/gefs.1p00.f000.paramlist.b.txt b/parm/product/gefs.1p00.f000.paramlist.b.txt new file mode 120000 index 0000000000..a51f2079e2 --- /dev/null +++ b/parm/product/gefs.1p00.f000.paramlist.b.txt @@ -0,0 +1 @@ +gefs.0p50.f000.paramlist.b.txt \ No newline at end of file diff --git a/parm/product/gefs.1p00.fFFF.paramlist.a.txt b/parm/product/gefs.1p00.fFFF.paramlist.a.txt new file mode 120000 index 0000000000..c131b24c02 --- /dev/null +++ b/parm/product/gefs.1p00.fFFF.paramlist.a.txt @@ -0,0 +1 @@ +gefs.0p50.fFFF.paramlist.a.txt \ No newline at end of file diff --git a/parm/product/gefs.1p00.fFFF.paramlist.b.txt b/parm/product/gefs.1p00.fFFF.paramlist.b.txt new file mode 120000 index 0000000000..0f2fb179cb --- /dev/null +++ b/parm/product/gefs.1p00.fFFF.paramlist.b.txt @@ -0,0 +1 @@ +gefs.0p50.fFFF.paramlist.b.txt \ No newline at end of file diff --git a/parm/product/gefs.2p50.f000.paramlist.a.txt b/parm/product/gefs.2p50.f000.paramlist.a.txt new file mode 100644 index 0000000000..4d2219ce8c --- /dev/null +++ b/parm/product/gefs.2p50.f000.paramlist.a.txt @@ -0,0 +1,23 @@ +############################# sorted pgrb2a 201408 +:HGT:surface: +:HGT:1000 mb: +:HGT:500 mb: +:PRMSL:mean sea level: +:RH:700 mb: +:TMP:2 m above ground: +:TMP:850 mb: +:UGRD:10 m above ground: +:UGRD:200 mb: +:UGRD:250 mb: +:UGRD:850 mb: +:VGRD:10 m above ground: +:VGRD:200 mb: +:VGRD:250 mb: +:VGRD:850 mb: +:APCP:surface +:CSNOW:surface +:CRAIN:surface +:CICEP:surface +:CFRZR:surface +:ULWRF:top +;############################ do not leave a blank line at the end diff --git a/parm/product/gefs.2p50.f000.paramlist.b.txt b/parm/product/gefs.2p50.f000.paramlist.b.txt new file mode 100644 index 0000000000..f2610c5f77 --- /dev/null +++ b/parm/product/gefs.2p50.f000.paramlist.b.txt @@ -0,0 +1,530 @@ +############################# sorted pgrb2a + pgrb2b 201502 +:4LFTX:surface: +:5WAVH:500 mb: +:ABSV:1000 mb: +:ABSV:100 mb: +:ABSV:10 mb: +:ABSV:150 mb: +:ABSV:200 mb: +:ABSV:20 mb: +:ABSV:250 mb: +:ABSV:300 mb: +:ABSV:30 mb: +:ABSV:350 mb: +:ABSV:400 mb: +:ABSV:450 mb: +:ABSV:500 mb: +:ABSV:50 mb: +:ABSV:550 mb: +:ABSV:600 mb: +:ABSV:650 mb: +:ABSV:700 mb: +:ABSV:70 mb: +:ABSV:750 mb: +:ABSV:800 mb: +:ABSV:850 mb: +:ABSV:900 mb: +:ABSV:925 mb: +:ABSV:950 mb: +:ABSV:975 mb: +:BRTMP:top of atmosphere: +:CAPE:180-0 mb above ground: +:CAPE:255-0 mb above ground: +:CAPE:surface: +:CIN:180-0 mb above ground: +:CIN:255-0 mb above ground: +:CIN:surface: +:CLWMR:1000 mb: +:CLWMR:100 mb: +:CLWMR:10 mb: +:CLWMR:150 mb: +:CLWMR:200 mb: +:CLWMR:20 mb: +:CLWMR:250 mb: +:CLWMR:300 mb: +:CLWMR:30 mb: +:CLWMR:350 mb: +:CLWMR:400 mb: +:CLWMR:450 mb: +:CLWMR:500 mb: +:CLWMR:50 mb: +:CLWMR:550 mb: +:CLWMR:600 mb: +:CLWMR:650 mb: +:CLWMR:700 mb: +:CLWMR:70 mb: +:CLWMR:750 mb: +:CLWMR:800 mb: +:CLWMR:850 mb: +:CLWMR:900 mb: +:CLWMR:925 mb: +:CLWMR:950 mb: +:CLWMR:975 mb: +:CNWAT:surface: +:CPOFP:surface: +:CWAT:entire atmosphere (considered as a single layer): +:DPT:2 m above ground: +:DPT:30-0 mb above ground: +:FLDCP:surface: +:FRICV:surface: +:GUST:surface: +:HGT:0C isotherm: +:HGT:100 mb: +:HGT:10 mb: +:HGT:1 mb: +:HGT:150 mb: +:HGT:200 mb: +:HGT:20 mb: +:HGT:2 mb: +:HGT:250 mb: +:HGT:300 mb: +:HGT:30 mb: +:HGT:3 mb: +:HGT:350 mb: +:HGT:400 mb: +:HGT:450 mb: +:HGT:50 mb: +:HGT:5 mb: +:HGT:550 mb: +:HGT:600 mb: +:HGT:650 mb: +:HGT:700 mb: +:HGT:70 mb: +:HGT:7 mb: +:HGT:750 mb: +:HGT:800 mb: +:HGT:850 mb: +:HGT:900 mb: +:HGT:925 mb: +:HGT:950 mb: +:HGT:975 mb: +:HGT:highest tropospheric freezing level: +:HGT:max wind: +:HGT:PV=-1.5e-06 (Km^2/kg/s) surface: +:HGT:PV=1.5e-06 (Km^2/kg/s) surface: +:HGT:PV=-1e-06 (Km^2/kg/s) surface: +:HGT:PV=1e-06 (Km^2/kg/s) surface: +:HGT:PV=-2e-06 (Km^2/kg/s) surface: +:HGT:PV=2e-06 (Km^2/kg/s) surface: +:HGT:PV=-5e-07 (Km^2/kg/s) surface: +:HGT:PV=5e-07 (Km^2/kg/s) surface: +:HGT:tropopause: +:HINDEX:surface: +:HLCY:3000-0 m above ground: +:HPBL:surface: +:ICAHT:max wind: +:ICAHT:tropopause: +:ICEC:surface: +:ICETK:surface: +:ICIP:300 mb: +:ICIP:400 mb: +:ICIP:500 mb: +:ICIP:600 mb: +:ICIP:700 mb: +:ICIP:800 mb: +:ICSEV:300 mb: +:ICSEV:400 mb: +:ICSEV:500 mb: +:ICSEV:600 mb: +:ICSEV:700 mb: +:ICSEV:800 mb: +:LAND:surface: +:LFTX:surface: +:MNTSF:320 K isentropic level: +:MSLET:mean sea level: +:O3MR:100 mb: +:O3MR:10 mb: +:O3MR:125 mb: +:O3MR:150 mb: +:O3MR:1 mb: +:O3MR:200 mb: +:O3MR:20 mb: +:O3MR:250 mb: +:O3MR:2 mb: +:O3MR:300 mb: +:O3MR:30 mb: +:O3MR:350 mb: +:O3MR:3 mb: +:O3MR:400 mb: +:O3MR:50 mb: +:O3MR:5 mb: +:O3MR:70 mb: +:O3MR:7 mb: +:PEVPR:surface: +:PLI:30-0 mb above ground: +:PLPL:255-0 mb above ground: +:POT:0.995 sigma level: +:PRES:80 m above ground: +:PRES:max wind: +:PRES:mean sea level: +:PRES:PV=-1.5e-06 (Km^2/kg/s) surface: +:PRES:PV=1.5e-06 (Km^2/kg/s) surface: +:PRES:PV=-1e-06 (Km^2/kg/s) surface: +:PRES:PV=1e-06 (Km^2/kg/s) surface: +:PRES:PV=-2e-06 (Km^2/kg/s) surface: +:PRES:PV=2e-06 (Km^2/kg/s) surface: +:PRES:PV=-5e-07 (Km^2/kg/s) surface: +:PRES:PV=5e-07 (Km^2/kg/s) surface: +:PRES:surface: +:PRES:tropopause: +:PVORT:310 K isentropic level: +:PVORT:320 K isentropic level: +:PVORT:350 K isentropic level: +:PVORT:450 K isentropic level: +:PVORT:550 K isentropic level: +:PVORT:650 K isentropic level: +:PWAT:30-0 mb above ground: +:PWAT:entire atmosphere (considered as a single layer): +:RH:0.33-1 sigma layer: +:RH:0.44-0.72 sigma layer: +:RH:0.44-1 sigma layer: +:RH:0.72-0.94 sigma layer: +:RH:0.995 sigma level: +:RH:0C isotherm: +:RH:1000 mb: +:RH:100 mb: +:RH:10 mb: +:RH:120-90 mb above ground: +:RH:150-120 mb above ground: +:RH:150 mb: +:RH:180-150 mb above ground: +:RH:200 mb: +:RH:20 mb: +:RH:250 mb: +:RH:2 m above ground: +:RH:300 mb: +:RH:30-0 mb above ground: +:RH:30 mb: +:RH:350 mb: +:RH:400 mb: +:RH:450 mb: +:RH:500 mb: +:RH:50 mb: +:RH:550 mb: +:RH:600 mb: +:RH:60-30 mb above ground: +:RH:650 mb: +:RH:70 mb: +:RH:750 mb: +:RH:800 mb: +:RH:850 mb: +:RH:900 mb: +:RH:90-60 mb above ground: +:RH:925 mb: +:RH:950 mb: +:RH:975 mb: +:RH:entire atmosphere (considered as a single layer): +:RH:highest tropospheric freezing level: +:SFCR:surface: +:SNOD:surface: +:SNOHF:surface: +:SNOWC:surface: +:SOILL:0-0.1 m below ground: +:SOILL:0.1-0.4 m below ground: +:SOILL:0.4-1 m below ground: +:SOILL:1-2 m below ground: +:SOILW:0-0.1 m below ground: +:SOILW:0.1-0.4 m below ground: +:SOILW:0.4-1 m below ground: +:SOILW:1-2 m below ground: +:SPFH:1000 mb: +:SPFH:100 mb: +:SPFH:10 mb: +:SPFH:1 mb: +:SPFH:120-90 mb above ground: +:SPFH:150-120 mb above ground: +:SPFH:150 mb: +:SPFH:180-150 mb above ground: +:SPFH:200 mb: +:SPFH:20 mb: +:SPFH:2 mb: +:SPFH:250 mb: +:SPFH:2 m above ground: +:SPFH:300 mb: +:SPFH:30-0 mb above ground: +:SPFH:30 mb: +:SPFH:3 mb: +:SPFH:350 mb: +:SPFH:400 mb: +:SPFH:450 mb: +:SPFH:500 mb: +:SPFH:50 mb: +:SPFH:5 mb: +:SPFH:550 mb: +:SPFH:600 mb: +:SPFH:60-30 mb above ground: +:SPFH:650 mb: +:SPFH:700 mb: +:SPFH:70 mb: +:SPFH:7 mb: +:SPFH:750 mb: +:SPFH:800 mb: +:SPFH:80 m above ground: +:SPFH:850 mb: +:SPFH:900 mb: +:SPFH:90-60 mb above ground: +:SPFH:925 mb: +:SPFH:950 mb: +:SPFH:975 mb: +:SUNSD:surface: +:TCDC:475 mb: +:TMP:0.995 sigma level: +:TMP:1000 mb: +:TMP:100 m above ground: +:TMP:100 mb: +:TMP:10 mb: +:TMP:1 mb: +:TMP:120-90 mb above ground: +:TMP:150-120 mb above ground: +:TMP:150 mb: +:TMP:180-150 mb above ground: +:TMP:1829 m above mean sea level: +:TMP:200 mb: +:TMP:20 mb: +:TMP:2 mb: +:TMP:250 mb: +:TMP:2743 m above mean sea level: +:TMP:300 mb: +:TMP:30-0 mb above ground: +:TMP:305 m above mean sea level: +:TMP:30 mb: +:TMP:3 mb: +:TMP:320 K isentropic level: +:TMP:350 mb: +:TMP:3658 m above mean sea level: +:TMP:400 mb: +:TMP:450 mb: +:TMP:450 K isentropic level: +:TMP:4572 m above mean sea level: +:TMP:457 m above mean sea level: +:TMP:500 mb: +:TMP:50 mb: +:TMP:5 mb: +:TMP:550 mb: +:TMP:550 K isentropic level: +:TMP:600 mb: +:TMP:60-30 mb above ground: +:TMP:610 m above mean sea level: +:TMP:650 mb: +:TMP:650 K isentropic level: +:TMP:700 mb: +:TMP:70 mb: +:TMP:7 mb: +:TMP:750 mb: +:TMP:800 mb: +:TMP:80 m above ground: +:TMP:900 mb: +:TMP:90-60 mb above ground: +:TMP:914 m above mean sea level: +:TMP:925 mb: +:TMP:950 mb: +:TMP:975 mb: +:TMP:max wind: +:TMP:PV=-1.5e-06 (Km^2/kg/s) surface: +:TMP:PV=1.5e-06 (Km^2/kg/s) surface: +:TMP:PV=-1e-06 (Km^2/kg/s) surface: +:TMP:PV=1e-06 (Km^2/kg/s) surface: +:TMP:PV=-2e-06 (Km^2/kg/s) surface: +:TMP:PV=2e-06 (Km^2/kg/s) surface: +:TMP:PV=-5e-07 (Km^2/kg/s) surface: +:TMP:PV=5e-07 (Km^2/kg/s) surface: +:TMP:surface: +:TMP:tropopause: +:TOZNE:entire atmosphere (considered as a single layer): +:TSOIL:0-0.1 m below ground: +:TSOIL:0.1-0.4 m below ground: +:TSOIL:0.4-1 m below ground: +:TSOIL:1-2 m below ground: +:UGRD:0.995 sigma level: +:UGRD:1000 mb: +:UGRD:100 m above ground: +:UGRD:100 mb: +:UGRD:10 mb: +:UGRD:1 mb: +:UGRD:120-90 mb above ground: +:UGRD:150-120 mb above ground: +:UGRD:150 mb: +:UGRD:180-150 mb above ground: +:UGRD:1829 m above mean sea level: +:UGRD:20 mb: +:UGRD:2 mb: +:UGRD:2743 m above mean sea level: +:UGRD:300 mb: +:UGRD:30-0 mb above ground: +:UGRD:305 m above mean sea level: +:UGRD:30 mb: +:UGRD:3 mb: +:UGRD:320 K isentropic level: +:UGRD:350 mb: +:UGRD:3658 m above mean sea level: +:UGRD:400 mb: +:UGRD:450 mb: +:UGRD:450 K isentropic level: +:UGRD:4572 m above mean sea level: +:UGRD:457 m above mean sea level: +:UGRD:500 mb: +:UGRD:50 mb: +:UGRD:5 mb: +:UGRD:550 mb: +:UGRD:550 K isentropic level: +:UGRD:600 mb: +:UGRD:60-30 mb above ground: +:UGRD:610 m above mean sea level: +:UGRD:650 mb: +:UGRD:650 K isentropic level: +:UGRD:700 mb: +:UGRD:70 mb: +:UGRD:7 mb: +:UGRD:750 mb: +:UGRD:800 mb: +:UGRD:80 m above ground: +:UGRD:900 mb: +:UGRD:90-60 mb above ground: +:UGRD:914 m above mean sea level: +:UGRD:925 mb: +:UGRD:950 mb: +:UGRD:975 mb: +:UGRD:max wind: +:UGRD:planetary boundary layer: +:UGRD:PV=-1.5e-06 (Km^2/kg/s) surface: +:UGRD:PV=1.5e-06 (Km^2/kg/s) surface: +:UGRD:PV=-1e-06 (Km^2/kg/s) surface: +:UGRD:PV=1e-06 (Km^2/kg/s) surface: +:UGRD:PV=-2e-06 (Km^2/kg/s) surface: +:UGRD:PV=2e-06 (Km^2/kg/s) surface: +:UGRD:PV=-5e-07 (Km^2/kg/s) surface: +:UGRD:PV=5e-07 (Km^2/kg/s) surface: +:UGRD:tropopause: +:USTM:6000-0 m above ground: +:APTMP:2 m above ground: +:VGRD:0.995 sigma level: +:VGRD:1000 mb: +:VGRD:100 m above ground: +:VGRD:100 mb: +:VGRD:10 mb: +:VGRD:1 mb: +:VGRD:120-90 mb above ground: +:VGRD:150-120 mb above ground: +:VGRD:150 mb: +:VGRD:180-150 mb above ground: +:VGRD:1829 m above mean sea level: +:VGRD:20 mb: +:VGRD:2 mb: +:VGRD:2743 m above mean sea level: +:VGRD:300 mb: +:VGRD:30-0 mb above ground: +:VGRD:305 m above mean sea level: +:VGRD:30 mb: +:VGRD:3 mb: +:VGRD:320 K isentropic level: +:VGRD:350 mb: +:VGRD:3658 m above mean sea level: +:VGRD:400 mb: +:VGRD:450 mb: +:VGRD:450 K isentropic level: +:VGRD:4572 m above mean sea level: +:VGRD:457 m above mean sea level: +:VGRD:500 mb: +:VGRD:50 mb: +:VGRD:5 mb: +:VGRD:550 mb: +:VGRD:550 K isentropic level: +:VGRD:600 mb: +:VGRD:60-30 mb above ground: +:VGRD:610 m above mean sea level: +:VGRD:650 mb: +:VGRD:650 K isentropic level: +:VGRD:700 mb: +:VGRD:70 mb: +:VGRD:7 mb: +:VGRD:750 mb: +:VGRD:800 mb: +:VGRD:80 m above ground: +:VGRD:900 mb: +:VGRD:90-60 mb above ground: +:VGRD:914 m above mean sea level: +:VGRD:925 mb: +:VGRD:950 mb: +:VGRD:975 mb: +:VGRD:max wind: +:VGRD:planetary boundary layer: +:VGRD:PV=-1.5e-06 (Km^2/kg/s) surface: +:VGRD:PV=1.5e-06 (Km^2/kg/s) surface: +:VGRD:PV=-1e-06 (Km^2/kg/s) surface: +:VGRD:PV=1e-06 (Km^2/kg/s) surface: +:VGRD:PV=-2e-06 (Km^2/kg/s) surface: +:VGRD:PV=2e-06 (Km^2/kg/s) surface: +:VGRD:PV=-5e-07 (Km^2/kg/s) surface: +:VGRD:PV=5e-07 (Km^2/kg/s) surface: +:VGRD:tropopause: +:VIS:surface: +:VRATE:planetary boundary layer: +:VSTM:6000-0 m above ground: +:VVEL:0.995 sigma level: +:VVEL:1 mb: +:VVEL:2 mb: +:VVEL:3 mb: +:VVEL:5 mb: +:VVEL:7 mb: +:VVEL:10 mb: +:VVEL:20 mb: +:VVEL:30 mb: +:VVEL:50 mb: +:VVEL:70 mb: +:VVEL:1000 mb: +:VVEL:100 mb: +:VVEL:150 mb: +:VVEL:200 mb: +:VVEL:250 mb: +:VVEL:300 mb: +:VVEL:350 mb: +:VVEL:400 mb: +:VVEL:450 mb: +:VVEL:500 mb: +:VVEL:550 mb: +:VVEL:600 mb: +:VVEL:650 mb: +:VVEL:700 mb: +:VVEL:750 mb: +:VVEL:800 mb: +:VVEL:850 mb: +:VVEL:900 mb: +:VVEL:925 mb: +:VVEL:950 mb: +:VVEL:975 mb: +:VWSH:PV=-1.5e-06 (Km^2/kg/s) surface: +:VWSH:PV=1.5e-06 (Km^2/kg/s) surface: +:VWSH:PV=-1e-06 (Km^2/kg/s) surface: +:VWSH:PV=1e-06 (Km^2/kg/s) surface: +:VWSH:PV=-2e-06 (Km^2/kg/s) surface: +:VWSH:PV=2e-06 (Km^2/kg/s) surface: +:VWSH:PV=-5e-07 (Km^2/kg/s) surface: +:VWSH:PV=5e-07 (Km^2/kg/s) surface: +:VWSH:tropopause: +:WEASD:surface: +:WILT:surface: +:HGT:cloud ceiling: +:PRES:1 hybrid level: +:HGT:1 hybrid level: +:TMP:1 hybrid level: +:RH:1 hybrid level: +:UGRD:1 hybrid level: +:VGRD:1 hybrid level: +:PRES:2 hybrid level: +:HGT:2 hybrid level: +:TMP:2 hybrid level: +:RH:2 hybrid level: +:UGRD:2 hybrid level: +:VGRD:2 hybrid level: +:PRES:3 hybrid level: +:HGT:3 hybrid level: +:TMP:3 hybrid level: +:RH:3 hybrid level: +:UGRD:3 hybrid level: +:VGRD:3 hybrid level: +:PRES:4 hybrid level: +:HGT:4 hybrid level: +:TMP:4 hybrid level: +:RH:4 hybrid level: +:UGRD:4 hybrid level: +:VGRD:4 hybrid level: diff --git a/parm/product/gefs.2p50.fFFF.paramlist.a.txt b/parm/product/gefs.2p50.fFFF.paramlist.a.txt new file mode 100644 index 0000000000..11b6a8aef3 --- /dev/null +++ b/parm/product/gefs.2p50.fFFF.paramlist.a.txt @@ -0,0 +1,22 @@ +############################# sorted pgrb2a 201408 +:HGT:1000 mb: +:HGT:500 mb: +:PRMSL:mean sea level: +:RH:700 mb: +:TMP:2 m above ground: +:TMP:850 mb: +:UGRD:10 m above ground: +:UGRD:200 mb: +:UGRD:250 mb: +:UGRD:850 mb: +:VGRD:10 m above ground: +:VGRD:200 mb: +:VGRD:250 mb: +:VGRD:850 mb: +:APCP:surface +:CSNOW:surface +:CRAIN:surface +:CICEP:surface +:CFRZR:surface +:ULWRF:top +;############################ do not leave a blank line at the end diff --git a/parm/product/gefs.2p50.fFFF.paramlist.b.txt b/parm/product/gefs.2p50.fFFF.paramlist.b.txt new file mode 100644 index 0000000000..8c05d49271 --- /dev/null +++ b/parm/product/gefs.2p50.fFFF.paramlist.b.txt @@ -0,0 +1,571 @@ +############################# sorted pgrb2a + pgrb2b 201502 +:4LFTX:surface: +:5WAVH:500 mb: +:ABSV:1000 mb: +:ABSV:100 mb: +:ABSV:10 mb: +:ABSV:150 mb: +:ABSV:200 mb: +:ABSV:20 mb: +:ABSV:250 mb: +:ABSV:300 mb: +:ABSV:30 mb: +:ABSV:350 mb: +:ABSV:400 mb: +:ABSV:450 mb: +:ABSV:500 mb: +:ABSV:50 mb: +:ABSV:550 mb: +:ABSV:600 mb: +:ABSV:650 mb: +:ABSV:700 mb: +:ABSV:70 mb: +:ABSV:750 mb: +:ABSV:800 mb: +:ABSV:850 mb: +:ABSV:900 mb: +:ABSV:925 mb: +:ABSV:950 mb: +:ABSV:975 mb: +:ACPCP:surface: +:ALBDO:surface: +:BRTMP:top of atmosphere: +:CAPE:180-0 mb above ground: +:CAPE:255-0 mb above ground: +:CAPE:surface: +:CDUVB:surface: +:CIN:180-0 mb above ground: +:CIN:255-0 mb above ground: +:CIN:surface: +:CLWMR:1000 mb: +:CLWMR:100 mb: +:CLWMR:10 mb: +:CLWMR:150 mb: +:CLWMR:200 mb: +:CLWMR:20 mb: +:CLWMR:250 mb: +:CLWMR:300 mb: +:CLWMR:30 mb: +:CLWMR:350 mb: +:CLWMR:400 mb: +:CLWMR:450 mb: +:CLWMR:500 mb: +:CLWMR:50 mb: +:CLWMR:550 mb: +:CLWMR:600 mb: +:CLWMR:650 mb: +:CLWMR:700 mb: +:CLWMR:70 mb: +:CLWMR:750 mb: +:CLWMR:800 mb: +:CLWMR:850 mb: +:CLWMR:900 mb: +:CLWMR:925 mb: +:CLWMR:950 mb: +:CLWMR:975 mb: +:CNWAT:surface: +:CPOFP:surface: +:CPRAT:surface: +:CWAT:entire atmosphere (considered as a single layer): +:CWORK:entire atmosphere (considered as a single layer): +:DLWRF:surface: +:DPT:2 m above ground: +:DPT:30-0 mb above ground: +:DSWRF:surface: +:DUVB:surface: +:FLDCP:surface: +:FRICV:surface: +:GFLUX:surface: +:GUST:surface: +:HGT:0C isotherm: +:HGT:100 mb: +:HGT:10 mb: +:HGT:1 mb: +:HGT:150 mb: +:HGT:200 mb: +:HGT:20 mb: +:HGT:2 mb: +:HGT:250 mb: +:HGT:300 mb: +:HGT:30 mb: +:HGT:3 mb: +:HGT:350 mb: +:HGT:400 mb: +:HGT:450 mb: +:HGT:50 mb: +:HGT:5 mb: +:HGT:550 mb: +:HGT:600 mb: +:HGT:650 mb: +:HGT:700 mb: +:HGT:70 mb: +:HGT:7 mb: +:HGT:750 mb: +:HGT:800 mb: +:HGT:850 mb: +:HGT:900 mb: +:HGT:925 mb: +:HGT:950 mb: +:HGT:975 mb: +:HGT:highest tropospheric freezing level: +:HGT:max wind: +:HGT:PV=-1.5e-06 (Km^2/kg/s) surface: +:HGT:PV=1.5e-06 (Km^2/kg/s) surface: +:HGT:PV=-1e-06 (Km^2/kg/s) surface: +:HGT:PV=1e-06 (Km^2/kg/s) surface: +:HGT:PV=-2e-06 (Km^2/kg/s) surface: +:HGT:PV=2e-06 (Km^2/kg/s) surface: +:HGT:PV=-5e-07 (Km^2/kg/s) surface: +:HGT:PV=5e-07 (Km^2/kg/s) surface: +:HGT:surface: +:HGT:tropopause: +:HINDEX:surface: +:HLCY:3000-0 m above ground: +:HPBL:surface: +:ICAHT:max wind: +:ICAHT:tropopause: +:ICEC:surface: +:ICETK:surface: +:ICIP:300 mb: +:ICIP:400 mb: +:ICIP:500 mb: +:ICIP:600 mb: +:ICIP:700 mb: +:ICIP:800 mb: +:ICSEV:300 mb: +:ICSEV:400 mb: +:ICSEV:500 mb: +:ICSEV:600 mb: +:ICSEV:700 mb: +:ICSEV:800 mb: +:LAND:surface: +:LFTX:surface: +:LHTFL:surface: +:MNTSF:320 K isentropic level: +:MSLET:mean sea level: +:NCPCP:surface: +:O3MR:100 mb: +:O3MR:10 mb: +:O3MR:125 mb: +:O3MR:150 mb: +:O3MR:1 mb: +:O3MR:200 mb: +:O3MR:20 mb: +:O3MR:250 mb: +:O3MR:2 mb: +:O3MR:300 mb: +:O3MR:30 mb: +:O3MR:350 mb: +:O3MR:3 mb: +:O3MR:400 mb: +:O3MR:50 mb: +:O3MR:5 mb: +:O3MR:70 mb: +:O3MR:7 mb: +:PEVPR:surface: +:PLI:30-0 mb above ground: +:PLPL:255-0 mb above ground: +:POT:0.995 sigma level: +:PRATE:surface: +:PRES:80 m above ground: +:PRES:convective cloud bottom level: +:PRES:convective cloud top level: +:PRES:high cloud bottom level: +:PRES:high cloud top level: +:PRES:low cloud bottom level: +:PRES:low cloud top level: +:PRES:max wind: +:PRES:mean sea level: +:PRES:middle cloud bottom level: +:PRES:middle cloud top level: +:PRES:PV=-1.5e-06 (Km^2/kg/s) surface: +:PRES:PV=1.5e-06 (Km^2/kg/s) surface: +:PRES:PV=-1e-06 (Km^2/kg/s) surface: +:PRES:PV=1e-06 (Km^2/kg/s) surface: +:PRES:PV=-2e-06 (Km^2/kg/s) surface: +:PRES:PV=2e-06 (Km^2/kg/s) surface: +:PRES:PV=-5e-07 (Km^2/kg/s) surface: +:PRES:PV=5e-07 (Km^2/kg/s) surface: +:PRES:surface: +:PRES:tropopause: +:PVORT:310 K isentropic level: +:PVORT:320 K isentropic level: +:PVORT:350 K isentropic level: +:PVORT:450 K isentropic level: +:PVORT:550 K isentropic level: +:PVORT:650 K isentropic level: +:PWAT:30-0 mb above ground: +:PWAT:entire atmosphere (considered as a single layer): +:RH:0.33-1 sigma layer: +:RH:0.44-0.72 sigma layer: +:RH:0.44-1 sigma layer: +:RH:0.72-0.94 sigma layer: +:RH:0.995 sigma level: +:RH:0C isotherm: +:RH:1000 mb: +:RH:100 mb: +:RH:10 mb: +:RH:120-90 mb above ground: +:RH:150-120 mb above ground: +:RH:150 mb: +:RH:180-150 mb above ground: +:RH:200 mb: +:RH:20 mb: +:RH:250 mb: +:RH:2 m above ground: +:RH:300 mb: +:RH:30-0 mb above ground: +:RH:30 mb: +:RH:350 mb: +:RH:400 mb: +:RH:450 mb: +:RH:500 mb: +:RH:50 mb: +:RH:550 mb: +:RH:600 mb: +:RH:60-30 mb above ground: +:RH:650 mb: +:RH:70 mb: +:RH:750 mb: +:RH:800 mb: +:RH:850 mb: +:RH:900 mb: +:RH:90-60 mb above ground: +:RH:925 mb: +:RH:950 mb: +:RH:975 mb: +:RH:entire atmosphere (considered as a single layer): +:RH:highest tropospheric freezing level: +:SFCR:surface: +:SHTFL:surface: +:SNOD:surface: +:SNOWC:surface: +:SNOHF:surface: +:SOILL:0-0.1 m below ground: +:SOILL:0.1-0.4 m below ground: +:SOILL:0.4-1 m below ground: +:SOILL:1-2 m below ground: +:SOILW:0-0.1 m below ground: +:SOILW:0.1-0.4 m below ground: +:SOILW:0.4-1 m below ground: +:SOILW:1-2 m below ground: +:SPFH:1000 mb: +:SPFH:100 mb: +:SPFH:10 mb: +:SPFH:1 mb: +:SPFH:120-90 mb above ground: +:SPFH:150-120 mb above ground: +:SPFH:150 mb: +:SPFH:180-150 mb above ground: +:SPFH:200 mb: +:SPFH:20 mb: +:SPFH:2 mb: +:SPFH:250 mb: +:SPFH:2 m above ground: +:SPFH:300 mb: +:SPFH:30-0 mb above ground: +:SPFH:30 mb: +:SPFH:3 mb: +:SPFH:350 mb: +:SPFH:400 mb: +:SPFH:450 mb: +:SPFH:500 mb: +:SPFH:50 mb: +:SPFH:5 mb: +:SPFH:550 mb: +:SPFH:600 mb: +:SPFH:60-30 mb above ground: +:SPFH:650 mb: +:SPFH:700 mb: +:SPFH:70 mb: +:SPFH:7 mb: +:SPFH:750 mb: +:SPFH:800 mb: +:SPFH:80 m above ground: +:SPFH:850 mb: +:SPFH:900 mb: +:SPFH:90-60 mb above ground: +:SPFH:925 mb: +:SPFH:950 mb: +:SPFH:975 mb: +:SUNSD:surface: +:TCDC:475 mb: +:TCDC:boundary layer cloud layer: +:TCDC:convective cloud layer: +:TCDC:entire atmosphere: +:TCDC:high cloud layer: +:TCDC:low cloud layer: +:TCDC:middle cloud layer: +:TMAX:2 m above ground: +:TMIN:2 m above ground: +:TMP:0.995 sigma level: +:TMP:1000 mb: +:TMP:100 m above ground: +:TMP:100 mb: +:TMP:10 mb: +:TMP:1 mb: +:TMP:120-90 mb above ground: +:TMP:150-120 mb above ground: +:TMP:150 mb: +:TMP:180-150 mb above ground: +:TMP:1829 m above mean sea level: +:TMP:200 mb: +:TMP:20 mb: +:TMP:2 mb: +:TMP:250 mb: +:TMP:2743 m above mean sea level: +:TMP:300 mb: +:TMP:30-0 mb above ground: +:TMP:305 m above mean sea level: +:TMP:30 mb: +:TMP:3 mb: +:TMP:320 K isentropic level: +:TMP:350 mb: +:TMP:3658 m above mean sea level: +:TMP:400 mb: +:TMP:450 K isentropic level: +:TMP:450 mb: +:TMP:4572 m above mean sea level: +:TMP:457 m above mean sea level: +:TMP:500 mb: +:TMP:50 mb: +:TMP:5 mb: +:TMP:550 K isentropic level: +:TMP:550 mb: +:TMP:600 mb: +:TMP:60-30 mb above ground: +:TMP:610 m above mean sea level: +:TMP:650 K isentropic level: +:TMP:650 mb: +:TMP:700 mb: +:TMP:70 mb: +:TMP:7 mb: +:TMP:750 mb: +:TMP:800 mb: +:TMP:80 m above ground: +:TMP:900 mb: +:TMP:90-60 mb above ground: +:TMP:914 m above mean sea level: +:TMP:925 mb: +:TMP:950 mb: +:TMP:975 mb: +:TMP:high cloud top level: +:TMP:low cloud top level: +:TMP:max wind: +:TMP:middle cloud top level: +:TMP:PV=-1.5e-06 (Km^2/kg/s) surface: +:TMP:PV=1.5e-06 (Km^2/kg/s) surface: +:TMP:PV=-1e-06 (Km^2/kg/s) surface: +:TMP:PV=1e-06 (Km^2/kg/s) surface: +:TMP:PV=-2e-06 (Km^2/kg/s) surface: +:TMP:PV=2e-06 (Km^2/kg/s) surface: +:TMP:PV=-5e-07 (Km^2/kg/s) surface: +:TMP:PV=5e-07 (Km^2/kg/s) surface: +:TMP:surface: +:TMP:tropopause: +:TOZNE:entire atmosphere (considered as a single layer): +:TSOIL:0-0.1 m below ground: +:TSOIL:0.1-0.4 m below ground: +:TSOIL:0.4-1 m below ground: +:TSOIL:1-2 m below ground: +:UFLX:surface: +:UGRD:0.995 sigma level: +:UGRD:1000 mb: +:UGRD:100 m above ground: +:UGRD:100 mb: +:UGRD:10 mb: +:UGRD:1 mb: +:UGRD:120-90 mb above ground: +:UGRD:150-120 mb above ground: +:UGRD:150 mb: +:UGRD:180-150 mb above ground: +:UGRD:1829 m above mean sea level: +:UGRD:20 mb: +:UGRD:2 mb: +:UGRD:2743 m above mean sea level: +:UGRD:300 mb: +:UGRD:30-0 mb above ground: +:UGRD:305 m above mean sea level: +:UGRD:30 mb: +:UGRD:3 mb: +:UGRD:320 K isentropic level: +:UGRD:350 mb: +:UGRD:3658 m above mean sea level: +:UGRD:400 mb: +:UGRD:450 K isentropic level: +:UGRD:450 mb: +:UGRD:4572 m above mean sea level: +:UGRD:457 m above mean sea level: +:UGRD:500 mb: +:UGRD:50 mb: +:UGRD:5 mb: +:UGRD:550 K isentropic level: +:UGRD:550 mb: +:UGRD:600 mb: +:UGRD:60-30 mb above ground: +:UGRD:610 m above mean sea level: +:UGRD:650 K isentropic level: +:UGRD:650 mb: +:UGRD:700 mb: +:UGRD:70 mb: +:UGRD:7 mb: +:UGRD:750 mb: +:UGRD:800 mb: +:UGRD:80 m above ground: +:UGRD:900 mb: +:UGRD:90-60 mb above ground: +:UGRD:914 m above mean sea level: +:UGRD:925 mb: +:UGRD:950 mb: +:UGRD:975 mb: +:UGRD:max wind: +:UGRD:planetary boundary layer: +:UGRD:PV=-1.5e-06 (Km^2/kg/s) surface: +:UGRD:PV=1.5e-06 (Km^2/kg/s) surface: +:UGRD:PV=-1e-06 (Km^2/kg/s) surface: +:UGRD:PV=1e-06 (Km^2/kg/s) surface: +:UGRD:PV=-2e-06 (Km^2/kg/s) surface: +:UGRD:PV=2e-06 (Km^2/kg/s) surface: +:UGRD:PV=-5e-07 (Km^2/kg/s) surface: +:UGRD:PV=5e-07 (Km^2/kg/s) surface: +:UGRD:tropopause: +:U-GWD:surface: +:ULWRF:surface: +:USTM:6000-0 m above ground: +:USWRF:surface: +:USWRF:top of atmosphere: +:APTMP:2 m above ground +:VFLX:surface: +:VGRD:0.995 sigma level: +:VGRD:1000 mb: +:VGRD:100 m above ground: +:VGRD:100 mb: +:VGRD:10 mb: +:VGRD:1 mb: +:VGRD:120-90 mb above ground: +:VGRD:150-120 mb above ground: +:VGRD:150 mb: +:VGRD:180-150 mb above ground: +:VGRD:1829 m above mean sea level: +:VGRD:20 mb: +:VGRD:2 mb: +:VGRD:2743 m above mean sea level: +:VGRD:300 mb: +:VGRD:30-0 mb above ground: +:VGRD:305 m above mean sea level: +:VGRD:30 mb: +:VGRD:3 mb: +:VGRD:320 K isentropic level: +:VGRD:350 mb: +:VGRD:3658 m above mean sea level: +:VGRD:400 mb: +:VGRD:450 K isentropic level: +:VGRD:450 mb: +:VGRD:4572 m above mean sea level: +:VGRD:457 m above mean sea level: +:VGRD:500 mb: +:VGRD:50 mb: +:VGRD:5 mb: +:VGRD:550 K isentropic level: +:VGRD:550 mb: +:VGRD:600 mb: +:VGRD:60-30 mb above ground: +:VGRD:610 m above mean sea level: +:VGRD:650 K isentropic level: +:VGRD:650 mb: +:VGRD:700 mb: +:VGRD:70 mb: +:VGRD:7 mb: +:VGRD:750 mb: +:VGRD:800 mb: +:VGRD:80 m above ground: +:VGRD:900 mb: +:VGRD:90-60 mb above ground: +:VGRD:914 m above mean sea level: +:VGRD:925 mb: +:VGRD:950 mb: +:VGRD:975 mb: +:VGRD:max wind: +:VGRD:planetary boundary layer: +:VGRD:PV=-1.5e-06 (Km^2/kg/s) surface: +:VGRD:PV=1.5e-06 (Km^2/kg/s) surface: +:VGRD:PV=-1e-06 (Km^2/kg/s) surface: +:VGRD:PV=1e-06 (Km^2/kg/s) surface: +:VGRD:PV=-2e-06 (Km^2/kg/s) surface: +:VGRD:PV=2e-06 (Km^2/kg/s) surface: +:VGRD:PV=-5e-07 (Km^2/kg/s) surface: +:VGRD:PV=5e-07 (Km^2/kg/s) surface: +:VGRD:tropopause: +:V-GWD:surface: +:VIS:surface: +:VRATE:planetary boundary layer: +:VSTM:6000-0 m above ground: +:VVEL:0.995 sigma level: +:VVEL:1 mb: +:VVEL:2 mb: +:VVEL:3 mb: +:VVEL:5 mb: +:VVEL:7 mb: +:VVEL:10 mb: +:VVEL:20 mb: +:VVEL:30 mb: +:VVEL:50 mb: +:VVEL:70 mb: +:VVEL:1000 mb: +:VVEL:100 mb: +:VVEL:150 mb: +:VVEL:200 mb: +:VVEL:250 mb: +:VVEL:300 mb: +:VVEL:350 mb: +:VVEL:400 mb: +:VVEL:450 mb: +:VVEL:500 mb: +:VVEL:550 mb: +:VVEL:600 mb: +:VVEL:650 mb: +:VVEL:700 mb: +:VVEL:750 mb: +:VVEL:800 mb: +:VVEL:850 mb: +:VVEL:900 mb: +:VVEL:925 mb: +:VVEL:950 mb: +:VVEL:975 mb: +:VWSH:PV=-1.5e-06 (Km^2/kg/s) surface: +:VWSH:PV=1.5e-06 (Km^2/kg/s) surface: +:VWSH:PV=-1e-06 (Km^2/kg/s) surface: +:VWSH:PV=1e-06 (Km^2/kg/s) surface: +:VWSH:PV=-2e-06 (Km^2/kg/s) surface: +:VWSH:PV=2e-06 (Km^2/kg/s) surface: +:VWSH:PV=-5e-07 (Km^2/kg/s) surface: +:VWSH:PV=5e-07 (Km^2/kg/s) surface: +:VWSH:tropopause: +:WATR:surface: +:WEASD:surface: +:WILT:surface: +:HGT:cloud ceiling: +:PRES:1 hybrid level: +:HGT:1 hybrid level: +:TMP:1 hybrid level: +:RH:1 hybrid level: +:UGRD:1 hybrid level: +:VGRD:1 hybrid level: +:PRES:2 hybrid level: +:HGT:2 hybrid level: +:TMP:2 hybrid level: +:RH:2 hybrid level: +:UGRD:2 hybrid level: +:VGRD:2 hybrid level: +:PRES:3 hybrid level: +:HGT:3 hybrid level: +:TMP:3 hybrid level: +:RH:3 hybrid level: +:UGRD:3 hybrid level: +:VGRD:3 hybrid level: +:PRES:4 hybrid level: +:HGT:4 hybrid level: +:TMP:4 hybrid level: +:RH:4 hybrid level: +:UGRD:4 hybrid level: +:VGRD:4 hybrid level: diff --git a/parm/post/global_1x1_paramlist_g2.anl b/parm/product/gfs.anl.paramlist.a.txt similarity index 100% rename from parm/post/global_1x1_paramlist_g2.anl rename to parm/product/gfs.anl.paramlist.a.txt diff --git a/parm/post/global_1x1_paramlist_g2.f000 b/parm/product/gfs.f000.paramlist.a.txt similarity index 100% rename from parm/post/global_1x1_paramlist_g2.f000 rename to parm/product/gfs.f000.paramlist.a.txt diff --git a/parm/post/global_1x1_paramlist_g2 b/parm/product/gfs.fFFF.paramlist.a.txt similarity index 100% rename from parm/post/global_1x1_paramlist_g2 rename to parm/product/gfs.fFFF.paramlist.a.txt diff --git a/parm/post/global_master-catchup_parmlist_g2 b/parm/product/gfs.fFFF.paramlist.b.txt similarity index 100% rename from parm/post/global_master-catchup_parmlist_g2 rename to parm/product/gfs.fFFF.paramlist.b.txt diff --git a/parm/ufs/fv3/data_table b/parm/ufs/fv3/data_table deleted file mode 100644 index 4ca9128415..0000000000 --- a/parm/ufs/fv3/data_table +++ /dev/null @@ -1 +0,0 @@ -"OCN", "runoff", "runoff", "./INPUT/@[FRUNOFF]", "none" , 1.0 diff --git a/parm/ufs/gocart/ExtData.other b/parm/ufs/gocart/ExtData.other index 789576305e..c58b3e9ae8 100644 --- a/parm/ufs/gocart/ExtData.other +++ b/parm/ufs/gocart/ExtData.other @@ -17,12 +17,12 @@ DU_UTHRES '1' Y E - none none uthres ExtData/n #====== Sulfate Sources ================================================= # Anthropogenic (BF & FF) emissions -- allowed to input as two layers -SU_ANTHROL1 NA N Y %y4-%m2-%d2t12:00:00 none none SO2 ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc -SU_ANTHROL2 NA N Y %y4-%m2-%d2t12:00:00 none none SO2_elev ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc +SU_ANTHROL1 NA N Y %y4-%m2-%d2t12:00:00 none none SO2 ExtData/nexus/CEDS/v2019/monthly/%y4/CEDS_2019_monthly.%y4%m2.nc +SU_ANTHROL2 NA N Y %y4-%m2-%d2t12:00:00 none none SO2_elev ExtData/nexus/CEDS/v2019/monthly/%y4/CEDS_2019_monthly.%y4%m2.nc # Ship emissions -SU_SHIPSO2 NA N Y %y4-%m2-%d2t12:00:00 none none SO2_ship ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc -SU_SHIPSO4 NA N Y %y4-%m2-%d2t12:00:00 none none SO4_ship ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc +SU_SHIPSO2 NA N Y %y4-%m2-%d2t12:00:00 none none SO2_ship ExtData/nexus/CEDS/v2019/monthly/%y4/CEDS_2019_monthly.%y4%m2.nc +SU_SHIPSO4 NA N Y %y4-%m2-%d2t12:00:00 none none SO4_ship ExtData/nexus/CEDS/v2019/monthly/%y4/CEDS_2019_monthly.%y4%m2.nc # Aircraft fuel consumption SU_AIRCRAFT NA Y Y %y4-%m2-%d2t12:00:00 none none none /dev/null @@ -54,20 +54,20 @@ pSO2_OCS NA Y Y %y4-%m2-%d2t12:00:00 none none biofuel /dev/null # --------------- # # VOCs - OFFLINE MEGAN BIOG -OC_ISOPRENE NA N Y %y4-%m2-%d2t12:00:00 none none isoprene ExtData/nexus/MEGAN_OFFLINE_BVOC/v2019-10/%y4/MEGAN.OFFLINE.BIOVOC.%y4.emis.%y4%m2%d2.nc -OC_LIMO NA N Y %y4-%m2-%d2t12:00:00 none none limo ExtData/nexus/MEGAN_OFFLINE_BVOC/v2019-10/%y4/MEGAN.OFFLINE.BIOVOC.%y4.emis.%y4%m2%d2.nc -OC_MTPA NA N Y %y4-%m2-%d2t12:00:00 none none mtpa ExtData/nexus/MEGAN_OFFLINE_BVOC/v2019-10/%y4/MEGAN.OFFLINE.BIOVOC.%y4.emis.%y4%m2%d2.nc -OC_MTPO NA N Y %y4-%m2-%d2t12:00:00 none none mtpo ExtData/nexus/MEGAN_OFFLINE_BVOC/v2019-10/%y4/MEGAN.OFFLINE.BIOVOC.%y4.emis.%y4%m2%d2.nc +OC_ISOPRENE NA N Y %y4-%m2-%d2t12:00:00 none none isoprene ExtData/nexus/MEGAN_OFFLINE_BVOC/v2021-12/MEGAN_OFFLINE_CLIMO_2000_2022_%m2.nc +OC_LIMO NA N Y %y4-%m2-%d2t12:00:00 none none limo ExtData/nexus/MEGAN_OFFLINE_BVOC/v2021-12/MEGAN_OFFLINE_CLIMO_2000_2022_%m2.nc +OC_MTPA NA N Y %y4-%m2-%d2t12:00:00 none none mtpa ExtData/nexus/MEGAN_OFFLINE_BVOC/v2021-12/MEGAN_OFFLINE_CLIMO_2000_2022_%m2.nc +OC_MTPO NA N Y %y4-%m2-%d2t12:00:00 none none mtpo ExtData/nexus/MEGAN_OFFLINE_BVOC/v2021-12/MEGAN_OFFLINE_CLIMO_2000_2022_%m2.nc # Biofuel Source -- Included in AeroCom anthropogenic emissions OC_BIOFUEL NA Y Y %y4-%m2-%d2t12:00:00 none none biofuel /dev/null # Anthropogenic (BF & FF) emissions -- allowed to input as two layers -OC_ANTEOC1 NA N Y %y4-%m2-%d2t12:00:00 none none OC ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc -OC_ANTEOC2 NA N Y %y4-%m2-%d2t12:00:00 none none OC_elev ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc +OC_ANTEOC1 NA N Y %y4-%m2-%d2t12:00:00 none none OC ExtData/nexus/CEDS/v2019/monthly/%y4/CEDS_2019_monthly.%y4%m2.nc +OC_ANTEOC2 NA N Y %y4-%m2-%d2t12:00:00 none none OC_elev ExtData/nexus/CEDS/v2019/monthly/%y4/CEDS_2019_monthly.%y4%m2.nc # EDGAR based ship emissions -OC_SHIP NA N Y %y4-%m2-%d2t12:00:00 none none OC_ship ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc +OC_SHIP NA N Y %y4-%m2-%d2t12:00:00 none none OC_ship ExtData/nexus/CEDS/v2019/monthly/%y4/CEDS_2019_monthly.%y4%m2.nc # Aircraft fuel consumption OC_AIRCRAFT NA N Y %y4-%m2-%d2t12:00:00 none none oc_aviation /dev/null @@ -88,11 +88,11 @@ pSOA_ANTHRO_VOC NA Y Y %y4-%m2-%d2t12:00:00 none none biofuel /dev/null BC_BIOFUEL NA Y Y %y4-%m2-%d2t12:00:00 none none biofuel /dev/null # Anthropogenic (BF & FF) emissions -- allowed to input as two layers -BC_ANTEBC1 NA N Y %y4-%m2-%d2t12:00:00 none none BC ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc -BC_ANTEBC2 NA N Y %y4-%m2-%d2t12:00:00 none none BC_elev ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc +BC_ANTEBC1 NA N Y %y4-%m2-%d2t12:00:00 none none BC ExtData/nexus/CEDS/v2019/monthly/%y4/CEDS_2019_monthly.%y4%m2.nc +BC_ANTEBC2 NA N Y %y4-%m2-%d2t12:00:00 none none BC_elev ExtData/nexus/CEDS/v2019/monthly/%y4/CEDS_2019_monthly.%y4%m2.nc # EDGAR based ship emissions -BC_SHIP NA N Y %y4-%m2-%d2t12:00:00 none none BC_ship ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc +BC_SHIP NA N Y %y4-%m2-%d2t12:00:00 none none BC_ship ExtData/nexus/CEDS/v2019/monthly/%y4/CEDS_2019_monthly.%y4%m2.nc # Aircraft fuel consumption BC_AIRCRAFT NA N Y %y4-%m2-%d2t12:00:00 none none bc_aviation /dev/null @@ -133,11 +133,11 @@ BRC_AVIATION_CRS NA Y Y %y4-%m2-%d2t12:00:00 none none oc_aviation /dev/null pSOA_BIOB_VOC NA Y Y %y4-%m2-%d2t12:00:00 none none biofuel /dev/null # # ======= Nitrate Sources ======== -# EMI_NH3_AG 'kg m-2 s-1' N Y %y4-%m2-%d2T12:00:00 none none NH3_ag ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc +# EMI_NH3_AG 'kg m-2 s-1' N Y %y4-%m2-%d2T12:00:00 none none NH3_ag ExtData/nexus/CEDS/v2019/monthly/%y4/CEDS_2019_monthly.%y4%m2.nc # EMI_NH3_EN 'kg m-2 s-1' N Y %y4-%m2-%d2T12:00:00 none none NH3_en /dev/null -# EMI_NH3_IN 'kg m-2 s-1' N Y %y4-%m2-%d2T12:00:00 none none NH3_in ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc -# EMI_NH3_RE 'kg m-2 s-1' N Y %y4-%m2-%d2T12:00:00 none none NH3_re ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc -# EMI_NH3_TR 'kg m-2 s-1' N Y %y4-%m2-%d2T12:00:00 none none NH3_tr ExtData/nexus/CEDS/v2019/%y4/CEDS.2019.emis.%y4%m2%d2.nc +# EMI_NH3_IN 'kg m-2 s-1' N Y %y4-%m2-%d2T12:00:00 none none NH3_in ExtData/nexus/CEDS/v2019/monthly/%y4/CEDS_2019_monthly.%y4%m2.nc +# EMI_NH3_RE 'kg m-2 s-1' N Y %y4-%m2-%d2T12:00:00 none none NH3_re ExtData/nexus/CEDS/v2019/monthly/%y4/CEDS_2019_monthly.%y4%m2.nc +# EMI_NH3_TR 'kg m-2 s-1' N Y %y4-%m2-%d2T12:00:00 none none NH3_tr ExtData/nexus/CEDS/v2019/monthly/%y4/CEDS_2019_monthly.%y4%m2.nc # EMI_NH3_OC 'kg m-2 s-1' Y Y %y4-%m2-%d2T12:00:00 none none emiss_ocn ExtData/PIESA/sfc/GEIA.emis_NH3.ocean.x576_y361.t12.20080715_12z.nc4 # # -------------------------------------------------------------- diff --git a/parm/ufs/gocart/SU2G_instance_SU.rc b/parm/ufs/gocart/SU2G_instance_SU.rc index e365827760..79484b3068 100644 --- a/parm/ufs/gocart/SU2G_instance_SU.rc +++ b/parm/ufs/gocart/SU2G_instance_SU.rc @@ -7,8 +7,8 @@ aerosol_monochromatic_optics_file: ExtData/monochromatic/optics_SU.v1_3.nc nbins: 4 -# Volcanic pointwise sources -volcano_srcfilen: ExtData/nexus/VOLCANO/v2021-09/%y4/%m2/so2_volcanic_emissions_Carns.%y4%m2%d2.rc +# Volcanic pointwise sources | degassing only | replace with path to historical volcanic emissions for scientific runs +volcano_srcfilen: ExtData/nexus/VOLCANO/v2021-09/so2_volcanic_emissions_CARN_v202005.degassing_only.rc # Heights [m] of LTO, CDS and CRS aviation emissions layers aviation_vertical_layers: 0.0 100.0 9.0e3 10.0e3 diff --git a/parm/ufs/mom6/MOM_input_template_025 b/parm/ufs/mom6/MOM_input_template_025 deleted file mode 100644 index df56a3f486..0000000000 --- a/parm/ufs/mom6/MOM_input_template_025 +++ /dev/null @@ -1,902 +0,0 @@ -! This input file provides the adjustable run-time parameters for version 6 of the Modular Ocean Model (MOM6). -! Where appropriate, parameters use usually given in MKS units. - -! This particular file is for the example in ice_ocean_SIS2/OM4_025. - -! This MOM_input file typically contains only the non-default values that are needed to reproduce this example. -! A full list of parameters for this example can be found in the corresponding MOM_parameter_doc.all file -! which is generated by the model at run-time. -! === module MOM_domains === -TRIPOLAR_N = True ! [Boolean] default = False - ! Use tripolar connectivity at the northern edge of the domain. With - ! TRIPOLAR_N, NIGLOBAL must be even. -NIGLOBAL = @[NX_GLB] ! - ! The total number of thickness grid points in the x-direction in the physical - ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. -NJGLOBAL = @[NY_GLB] ! - ! The total number of thickness grid points in the y-direction in the physical - ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. -NIHALO = 4 ! default = 4 - ! The number of halo points on each side in the x-direction. With - ! STATIC_MEMORY_ this is set as NIHALO_ in MOM_memory.h at compile time; without - ! STATIC_MEMORY_ the default is NIHALO_ in MOM_memory.h (if defined) or 2. -NJHALO = 4 ! default = 4 - ! The number of halo points on each side in the y-direction. With - ! STATIC_MEMORY_ this is set as NJHALO_ in MOM_memory.h at compile time; without - ! STATIC_MEMORY_ the default is NJHALO_ in MOM_memory.h (if defined) or 2. -! LAYOUT = 32, 18 ! - ! The processor layout that was actually used. -! IO_LAYOUT = 1, 1 ! default = 1 - ! The processor layout to be used, or 0,0 to automatically set the io_layout to - ! be the same as the layout. - -! === module MOM === -USE_REGRIDDING = True ! [Boolean] default = False - ! If True, use the ALE algorithm (regridding/remapping). If False, use the - ! layered isopycnal algorithm. -THICKNESSDIFFUSE = True ! [Boolean] default = False - ! If true, interface heights are diffused with a coefficient of KHTH. -THICKNESSDIFFUSE_FIRST = True ! [Boolean] default = False - ! If true, do thickness diffusion before dynamics. This is only used if - ! THICKNESSDIFFUSE is true. -DT = @[DT_DYNAM_MOM6] ! [s] - ! The (baroclinic) dynamics time step. The time-step that is actually used will - ! be an integer fraction of the forcing time-step (DT_FORCING in ocean-only mode - ! or the coupling timestep in coupled mode.) -DT_THERM = @[DT_THERM_MOM6] ! [s] default = 1800.0 - ! The thermodynamic and tracer advection time step. Ideally DT_THERM should be - ! an integer multiple of DT and less than the forcing or coupling time-step, - ! unless THERMO_SPANS_COUPLING is true, in which case DT_THERM can be an integer - ! multiple of the coupling timestep. By default DT_THERM is set to DT. -THERMO_SPANS_COUPLING = @[MOM6_THERMO_SPAN] ! [Boolean] default = False - ! If true, the MOM will take thermodynamic and tracer timesteps that can be - ! longer than the coupling timestep. The actual thermodynamic timestep that is - ! used in this case is the largest integer multiple of the coupling timestep - ! that is less than or equal to DT_THERM. -HFREEZE = 20.0 ! [m] default = -1.0 - ! If HFREEZE > 0, melt potential will be computed. The actual depth - ! over which melt potential is computed will be min(HFREEZE, OBLD) - ! where OBLD is the boundary layer depth. If HFREEZE <= 0 (default) - ! melt potential will not be computed. -USE_PSURF_IN_EOS = False ! [Boolean] default = False - ! If true, always include the surface pressure contributions in equation of - ! state calculations. -FRAZIL = True ! [Boolean] default = False - ! If true, water freezes if it gets too cold, and the accumulated heat deficit - ! is returned in the surface state. FRAZIL is only used if - ! ENABLE_THERMODYNAMICS is true. -DO_GEOTHERMAL = True ! [Boolean] default = False - ! If true, apply geothermal heating. -BOUND_SALINITY = True ! [Boolean] default = False - ! If true, limit salinity to being positive. (The sea-ice model may ask for more - ! salt than is available and drive the salinity negative otherwise.) -MIN_SALINITY = 0.01 ! [PPT] default = 0.01 - ! The minimum value of salinity when BOUND_SALINITY=True. The default is 0.01 - ! for backward compatibility but ideally should be 0. -C_P = 3992.0 ! [J kg-1 K-1] default = 3991.86795711963 - ! The heat capacity of sea water, approximated as a constant. This is only used - ! if ENABLE_THERMODYNAMICS is true. The default value is from the TEOS-10 - ! definition of conservative temperature. -CHECK_BAD_SURFACE_VALS = True ! [Boolean] default = False - ! If true, check the surface state for ridiculous values. -BAD_VAL_SSH_MAX = 50.0 ! [m] default = 20.0 - ! The value of SSH above which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_SSS_MAX = 75.0 ! [PPT] default = 45.0 - ! The value of SSS above which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_SST_MAX = 55.0 ! [deg C] default = 45.0 - ! The value of SST above which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_SST_MIN = -3.0 ! [deg C] default = -2.1 - ! The value of SST below which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -DEFAULT_2018_ANSWERS = True ! [Boolean] default = True - ! This sets the default value for the various _2018_ANSWERS parameters. -WRITE_GEOM = 2 ! default = 1 - ! If =0, never write the geometry and vertical grid files. If =1, write the - ! geometry and vertical grid files only for a new simulation. If =2, always - ! write the geometry and vertical grid files. Other values are invalid. -SAVE_INITIAL_CONDS = False ! [Boolean] default = False - ! If true, write the initial conditions to a file given by IC_OUTPUT_FILE. - -! === module MOM_hor_index === -! Sets the horizontal array index types. - -! === module MOM_fixed_initialization === -INPUTDIR = "INPUT" ! default = "." - ! The directory in which input files are found. - -! === module MOM_grid_init === -GRID_CONFIG = "mosaic" ! - ! A character string that determines the method for defining the horizontal - ! grid. Current options are: - ! mosaic - read the grid from a mosaic (supergrid) - ! file set by GRID_FILE. - ! cartesian - use a (flat) Cartesian grid. - ! spherical - use a simple spherical grid. - ! mercator - use a Mercator spherical grid. -GRID_FILE = "ocean_hgrid.nc" ! - ! Name of the file from which to read horizontal grid data. -GRID_ROTATION_ANGLE_BUGS = False ! [Boolean] default = True - ! If true, use an older algorithm to calculate the sine and - ! cosines needed rotate between grid-oriented directions and - ! true north and east. Differences arise at the tripolar fold -USE_TRIPOLAR_GEOLONB_BUG = False ! [Boolean] default = True - ! If true, use older code that incorrectly sets the longitude in some points - ! along the tripolar fold to be off by 360 degrees. -TOPO_CONFIG = "file" ! - ! This specifies how bathymetry is specified: - ! file - read bathymetric information from the file - ! specified by (TOPO_FILE). - ! flat - flat bottom set to MAXIMUM_DEPTH. - ! bowl - an analytically specified bowl-shaped basin - ! ranging between MAXIMUM_DEPTH and MINIMUM_DEPTH. - ! spoon - a similar shape to 'bowl', but with an vertical - ! wall at the southern face. - ! halfpipe - a zonally uniform channel with a half-sine - ! profile in the meridional direction. - ! benchmark - use the benchmark test case topography. - ! Neverland - use the Neverland test case topography. - ! DOME - use a slope and channel configuration for the - ! DOME sill-overflow test case. - ! ISOMIP - use a slope and channel configuration for the - ! ISOMIP test case. - ! DOME2D - use a shelf and slope configuration for the - ! DOME2D gravity current/overflow test case. - ! Kelvin - flat but with rotated land mask. - ! seamount - Gaussian bump for spontaneous motion test case. - ! dumbbell - Sloshing channel with reservoirs on both ends. - ! shelfwave - exponential slope for shelfwave test case. - ! Phillips - ACC-like idealized topography used in the Phillips config. - ! dense - Denmark Strait-like dense water formation and overflow. - ! USER - call a user modified routine. -TOPO_FILE = "ocean_topog.nc" ! default = "topog.nc" - ! The file from which the bathymetry is read. -TOPO_EDITS_FILE = "All_edits.nc" ! default = "" - ! The file from which to read a list of i,j,z topography overrides. -ALLOW_LANDMASK_CHANGES = @[MOM6_ALLOW_LANDMASK_CHANGES] ! default = "False" - ! If true, allow topography overrides to change ocean points to land -MAXIMUM_DEPTH = 6500.0 ! [m] - ! The maximum depth of the ocean. -MINIMUM_DEPTH = 9.5 ! [m] default = 0.0 - ! If MASKING_DEPTH is unspecified, then anything shallower than MINIMUM_DEPTH is - ! assumed to be land and all fluxes are masked out. If MASKING_DEPTH is - ! specified, then all depths shallower than MINIMUM_DEPTH but deeper than - ! MASKING_DEPTH are rounded to MINIMUM_DEPTH. - -! === module MOM_open_boundary === -! Controls where open boundaries are located, what kind of boundary condition to impose, and what data to apply, -! if any. -MASKING_DEPTH = 0.0 ! [m] default = -9999.0 - ! The depth below which to mask points as land points, for which all fluxes are - ! zeroed out. MASKING_DEPTH is ignored if negative. -CHANNEL_CONFIG = "list" ! default = "none" - ! A parameter that determines which set of channels are - ! restricted to specific widths. Options are: - ! none - All channels have the grid width. - ! global_1deg - Sets 16 specific channels appropriate - ! for a 1-degree model, as used in CM2G. - ! list - Read the channel locations and widths from a - ! text file, like MOM_channel_list in the MOM_SIS - ! test case. - ! file - Read open face widths everywhere from a - ! NetCDF file on the model grid. -CHANNEL_LIST_FILE = "MOM_channels_global_025" ! default = "MOM_channel_list" - ! The file from which the list of narrowed channels is read. - -! === module MOM_verticalGrid === -! Parameters providing information about the vertical grid. -NK = 75 ! [nondim] - ! The number of model layers. - -! === module MOM_tracer_registry === - -! === module MOM_EOS === -DTFREEZE_DP = -7.75E-08 ! [deg C Pa-1] default = 0.0 - ! When TFREEZE_FORM=LINEAR, this is the derivative of the freezing potential - ! temperature with pressure. - -! === module MOM_restart === -PARALLEL_RESTARTFILES = True ! [Boolean] default = False - ! If true, each processor writes its own restart file, otherwise a single - ! restart file is generated - -! === module MOM_tracer_flow_control === -USE_IDEAL_AGE_TRACER = False ! [Boolean] default = False - ! If true, use the ideal_age_example tracer package. - -! === module ideal_age_example === - -! === module MOM_coord_initialization === -COORD_CONFIG = "file" ! - ! This specifies how layers are to be defined: - ! ALE or none - used to avoid defining layers in ALE mode - ! file - read coordinate information from the file - ! specified by (COORD_FILE). - ! BFB - Custom coords for buoyancy-forced basin case - ! based on SST_S, T_BOT and DRHO_DT. - ! linear - linear based on interfaces not layers - ! layer_ref - linear based on layer densities - ! ts_ref - use reference temperature and salinity - ! ts_range - use range of temperature and salinity - ! (T_REF and S_REF) to determine surface density - ! and GINT calculate internal densities. - ! gprime - use reference density (RHO_0) for surface - ! density and GINT calculate internal densities. - ! ts_profile - use temperature and salinity profiles - ! (read from COORD_FILE) to set layer densities. - ! USER - call a user modified routine. -COORD_FILE = "layer_coord.nc" ! - ! The file from which the coordinate densities are read. -REMAP_UV_USING_OLD_ALG = True ! [Boolean] default = True - ! If true, uses the old remapping-via-a-delta-z method for remapping u and v. If - ! false, uses the new method that remaps between grids described by an old and - ! new thickness. -REGRIDDING_COORDINATE_MODE = "HYCOM1" ! default = "LAYER" - ! Coordinate mode for vertical regridding. Choose among the following - ! possibilities: LAYER - Isopycnal or stacked shallow water layers - ! ZSTAR, Z* - stretched geopotential z* - ! SIGMA_SHELF_ZSTAR - stretched geopotential z* ignoring shelf - ! SIGMA - terrain following coordinates - ! RHO - continuous isopycnal - ! HYCOM1 - HyCOM-like hybrid coordinate - ! SLIGHT - stretched coordinates above continuous isopycnal - ! ADAPTIVE - optimize for smooth neutral density surfaces -BOUNDARY_EXTRAPOLATION = True ! [Boolean] default = False - ! When defined, a proper high-order reconstruction scheme is used within - ! boundary cells rather than PCM. E.g., if PPM is used for remapping, a PPM - ! reconstruction will also be used within boundary cells. -ALE_COORDINATE_CONFIG = "HYBRID:hycom1_75_800m.nc,sigma2,FNC1:2,4000,4.5,.01" ! default = "UNIFORM" - ! Determines how to specify the coordinate resolution. Valid options are: - ! PARAM - use the vector-parameter ALE_RESOLUTION - ! UNIFORM[:N] - uniformly distributed - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,dz - ! or FILE:lev.nc,interfaces=zw - ! WOA09[:N] - the WOA09 vertical grid (approximately) - ! FNC1:string - FNC1:dz_min,H_total,power,precision - ! HYBRID:string - read from a file. The string specifies - ! the filename and two variable names, separated - ! by a comma or space, for sigma-2 and dz. e.g. - ! HYBRID:vgrid.nc,sigma2,dz -!ALE_RESOLUTION = 7*2.0, 2*2.01, 2.02, 2.03, 2.05, 2.08, 2.11, 2.15, 2.21, 2.2800000000000002, 2.37, 2.48, 2.61, 2.77, 2.95, 3.17, 3.4299999999999997, 3.74, 4.09, 4.49, 4.95, 5.48, 6.07, 6.74, 7.5, 8.34, 9.280000000000001, 10.33, 11.49, 12.77, 14.19, 15.74, 17.450000000000003, 19.31, 21.35, 23.56, 25.97, 28.580000000000002, 31.41, 34.47, 37.77, 41.32, 45.14, 49.25, 53.65, 58.370000000000005, 63.42, 68.81, 74.56, 80.68, 87.21000000000001, 94.14, 101.51, 109.33, 117.62, 126.4, 135.68, 145.5, 155.87, 166.81, 178.35, 190.51, 203.31, 216.78, 230.93, 245.8, 261.42, 277.83 ! [m] - ! The distribution of vertical resolution for the target - ! grid used for Eulerian-like coordinates. For example, - ! in z-coordinate mode, the parameter is a list of level - ! thicknesses (in m). In sigma-coordinate mode, the list - ! is of non-dimensional fractions of the water column. -!TARGET_DENSITIES = 1010.0, 1014.3034, 1017.8088, 1020.843, 1023.5566, 1025.813, 1027.0275, 1027.9114, 1028.6422, 1029.2795, 1029.852, 1030.3762, 1030.8626, 1031.3183, 1031.7486, 1032.1572, 1032.5471, 1032.9207, 1033.2798, 1033.6261, 1033.9608, 1034.2519, 1034.4817, 1034.6774, 1034.8508, 1035.0082, 1035.1533, 1035.2886, 1035.4159, 1035.5364, 1035.6511, 1035.7608, 1035.8661, 1035.9675, 1036.0645, 1036.1554, 1036.2411, 1036.3223, 1036.3998, 1036.4739, 1036.5451, 1036.6137, 1036.68, 1036.7441, 1036.8062, 1036.8526, 1036.8874, 1036.9164, 1036.9418, 1036.9647, 1036.9857, 1037.0052, 1037.0236, 1037.0409, 1037.0574, 1037.0738, 1037.0902, 1037.1066, 1037.123, 1037.1394, 1037.1558, 1037.1722, 1037.1887, 1037.206, 1037.2241, 1037.2435, 1037.2642, 1037.2866, 1037.3112, 1037.3389, 1037.3713, 1037.4118, 1037.475, 1037.6332, 1037.8104, 1038.0 ! [m] - ! HYBRID target densities for interfaces -REGRID_COMPRESSIBILITY_FRACTION = 0.01 ! [nondim] default = 0.0 - ! When interpolating potential density profiles we can add some artificial - ! compressibility solely to make homogeneous regions appear stratified. -MAXIMUM_INT_DEPTH_CONFIG = "FNC1:5,8000.0,1.0,.01" ! default = "NONE" - ! Determines how to specify the maximum interface depths. - ! Valid options are: - ! NONE - there are no maximum interface depths - ! PARAM - use the vector-parameter MAXIMUM_INTERFACE_DEPTHS - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,Z - ! FNC1:string - FNC1:dz_min,H_total,power,precision -!MAXIMUM_INT_DEPTHS = 0.0, 5.0, 12.75, 23.25, 36.49, 52.480000000000004, 71.22, 92.71000000000001, 116.94000000000001, 143.92000000000002, 173.65, 206.13, 241.36, 279.33000000000004, 320.05000000000007, 363.5200000000001, 409.7400000000001, 458.7000000000001, 510.4100000000001, 564.8700000000001, 622.0800000000002, 682.0300000000002, 744.7300000000002, 810.1800000000003, 878.3800000000003, 949.3300000000004, 1023.0200000000004, 1099.4600000000005, 1178.6500000000005, 1260.5900000000006, 1345.2700000000007, 1432.7000000000007, 1522.8800000000008, 1615.8100000000009, 1711.490000000001, 1809.910000000001, 1911.080000000001, 2015.0000000000011, 2121.670000000001, 2231.080000000001, 2343.2400000000007, 2458.1500000000005, 2575.8100000000004, 2696.2200000000003, 2819.3700000000003, 2945.2700000000004, 3073.9200000000005, 3205.3200000000006, 3339.4600000000005, 3476.3500000000004, 3615.9900000000002, 3758.38, 3903.52, 4051.4, 4202.03, 4355.41, 4511.54, 4670.41, 4832.03, 4996.4, 5163.5199999999995, 5333.379999999999, 5505.989999999999, 5681.3499999999985, 5859.459999999998, 6040.319999999998, 6223.919999999998, 6410.269999999999, 6599.369999999999, 6791.219999999999, 6985.8099999999995, 7183.15, 7383.24, 7586.08, 7791.67, 8000.0 - ! The list of maximum depths for each interface. -MAX_LAYER_THICKNESS_CONFIG = "FNC1:400,31000.0,0.1,.01" ! default = "NONE" - ! Determines how to specify the maximum layer thicknesses. - ! Valid options are: - ! NONE - there are no maximum layer thicknesses - ! PARAM - use the vector-parameter MAX_LAYER_THICKNESS - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,Z - ! FNC1:string - FNC1:dz_min,H_total,power,precision -!MAX_LAYER_THICKNESS = 400.0, 409.63, 410.32, 410.75, 411.07, 411.32, 411.52, 411.7, 411.86, 412.0, 412.13, 412.24, 412.35, 412.45, 412.54, 412.63, 412.71, 412.79, 412.86, 412.93, 413.0, 413.06, 413.12, 413.18, 413.24, 413.29, 413.34, 413.39, 413.44, 413.49, 413.54, 413.58, 413.62, 413.67, 413.71, 413.75, 413.78, 413.82, 413.86, 413.9, 413.93, 413.97, 414.0, 414.03, 414.06, 414.1, 414.13, 414.16, 414.19, 414.22, 414.24, 414.27, 414.3, 414.33, 414.35, 414.38, 414.41, 414.43, 414.46, 414.48, 414.51, 414.53, 414.55, 414.58, 414.6, 414.62, 414.65, 414.67, 414.69, 414.71, 414.73, 414.75, 414.77, 414.79, 414.83 ! [m] - ! The list of maximum thickness for each layer. -REMAPPING_SCHEME = "PPM_H4" ! default = "PLM" - ! This sets the reconstruction scheme used for vertical remapping for all - ! variables. It can be one of the following schemes: PCM (1st-order - ! accurate) - ! PLM (2nd-order accurate) - ! PPM_H4 (3rd-order accurate) - ! PPM_IH4 (3rd-order accurate) - ! PQM_IH4IH3 (4th-order accurate) - ! PQM_IH6IH5 (5th-order accurate) - -! === module MOM_grid === -! Parameters providing information about the lateral grid. - -! === module MOM_state_initialization === -INIT_LAYERS_FROM_Z_FILE = True ! [Boolean] default = False - ! If true, initialize the layer thicknesses, temperatures, and salinities from a - ! Z-space file on a latitude-longitude grid. - -! === module MOM_initialize_layers_from_Z === -TEMP_SALT_Z_INIT_FILE = "MOM6_IC_TS.nc" ! default = "temp_salt_z.nc" - ! The name of the z-space input file used to initialize - ! temperatures (T) and salinities (S). If T and S are not - ! in the same file, TEMP_Z_INIT_FILE and SALT_Z_INIT_FILE - ! must be set. -Z_INIT_FILE_PTEMP_VAR = "temp" ! default = "ptemp" - ! The name of the potential temperature variable in - ! TEMP_Z_INIT_FILE. -Z_INIT_FILE_SALT_VAR = "salt" ! default = "salt" - ! The name of the salinity variable in - ! SALT_Z_INIT_FILE. - -Z_INIT_ALE_REMAPPING = True ! [Boolean] default = False - ! If True, then remap straight to model coordinate from file. -Z_INIT_REMAP_OLD_ALG = True ! [Boolean] default = True - ! If false, uses the preferred remapping algorithm for initialization. If true, - ! use an older, less robust algorithm for remapping. - -! === module MOM_diag_mediator === -!Jiande NUM_DIAG_COORDS = 2 ! default = 1 -NUM_DIAG_COORDS = 1 - ! The number of diagnostic vertical coordinates to use. - ! For each coordinate, an entry in DIAG_COORDS must be provided. -!Jiande DIAG_COORDS = "z Z ZSTAR", "rho2 RHO2 RHO" ! -DIAG_COORDS = "z Z ZSTAR" - ! A list of string tuples associating diag_table modules to - ! a coordinate definition used for diagnostics. Each string - ! is of the form "MODULE_SUFFIX,PARAMETER_SUFFIX,COORDINATE_NAME". -DIAG_COORD_DEF_Z="FILE:@[MOM6_DIAG_COORD_DEF_Z_FILE],interfaces=zw" -DIAG_MISVAL = @[MOM6_DIAG_MISVAL] -!DIAG_COORD_DEF_RHO2 = "FILE:diag_rho2.nc,interfaces=rho2" ! default = "WOA09" - ! Determines how to specify the coordinate resolution. Valid options are: - ! PARAM - use the vector-parameter DIAG_COORD_RES_RHO2 - ! UNIFORM[:N] - uniformly distributed - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,dz - ! or FILE:lev.nc,interfaces=zw - ! WOA09[:N] - the WOA09 vertical grid (approximately) - ! FNC1:string - FNC1:dz_min,H_total,power,precision - ! HYBRID:string - read from a file. The string specifies - ! the filename and two variable names, separated - ! by a comma or space, for sigma-2 and dz. e.g. - ! HYBRID:vgrid.nc,sigma2,dz - -! === module MOM_MEKE === -USE_MEKE = True ! [Boolean] default = False - ! If true, turns on the MEKE scheme which calculates a sub-grid mesoscale eddy - ! kinetic energy budget. -MEKE_GMCOEFF = 1.0 ! [nondim] default = -1.0 - ! The efficiency of the conversion of potential energy into MEKE by the - ! thickness mixing parameterization. If MEKE_GMCOEFF is negative, this - ! conversion is not used or calculated. -MEKE_BGSRC = 1.0E-13 ! [W kg-1] default = 0.0 - ! A background energy source for MEKE. -MEKE_KHMEKE_FAC = 1.0 ! [nondim] default = 0.0 - ! A factor that maps MEKE%Kh to Kh for MEKE itself. -MEKE_ALPHA_RHINES = 0.15 ! [nondim] default = 0.05 - ! If positive, is a coefficient weighting the Rhines scale in the expression for - ! mixing length used in MEKE-derived diffusivity. -MEKE_ALPHA_EADY = 0.15 ! [nondim] default = 0.05 - ! If positive, is a coefficient weighting the Eady length scale in the - ! expression for mixing length used in MEKE-derived diffusivity. - -! === module MOM_lateral_mixing_coeffs === -USE_VARIABLE_MIXING = True ! [Boolean] default = False - ! If true, the variable mixing code will be called. This allows diagnostics to - ! be created even if the scheme is not used. If KHTR_SLOPE_CFF>0 or - ! KhTh_Slope_Cff>0, this is set to true regardless of what is in the parameter - ! file. -RESOLN_SCALED_KH = True ! [Boolean] default = False - ! If true, the Laplacian lateral viscosity is scaled away when the first - ! baroclinic deformation radius is well resolved. -RESOLN_SCALED_KHTH = True ! [Boolean] default = False - ! If true, the interface depth diffusivity is scaled away when the first - ! baroclinic deformation radius is well resolved. -KHTR_SLOPE_CFF = 0.25 ! [nondim] default = 0.0 - ! The nondimensional coefficient in the Visbeck formula for the epipycnal tracer - ! diffusivity -USE_STORED_SLOPES = True ! [Boolean] default = False - ! If true, the isopycnal slopes are calculated once and stored for re-use. This - ! uses more memory but avoids calling the equation of state more times than - ! should be necessary. -INTERPOLATE_RES_FN = False ! [Boolean] default = True - ! If true, interpolate the resolution function to the velocity points from the - ! thickness points; otherwise interpolate the wave speed and calculate the - ! resolution function independently at each point. -GILL_EQUATORIAL_LD = True ! [Boolean] default = False - ! If true, uses Gill's definition of the baroclinic equatorial deformation - ! radius, otherwise, if false, use Pedlosky's definition. These definitions - ! differ by a factor of 2 in front of the beta term in the denominator. Gill's - ! is the more appropriate definition. -INTERNAL_WAVE_SPEED_BETTER_EST = False ! [Boolean] default = True - ! If true, use a more robust estimate of the first mode wave speed as the - ! starting point for iterations. - -! === module MOM_set_visc === -CHANNEL_DRAG = True ! [Boolean] default = False - ! If true, the bottom drag is exerted directly on each layer proportional to the - ! fraction of the bottom it overlies. -PRANDTL_TURB = 1.25 ! [nondim] default = 1.0 - ! The turbulent Prandtl number applied to shear instability. -HBBL = 10.0 ! [m] - ! The thickness of a bottom boundary layer with a viscosity of KVBBL if - ! BOTTOMDRAGLAW is not defined, or the thickness over which near-bottom - ! velocities are averaged for the drag law if BOTTOMDRAGLAW is defined but - ! LINEAR_DRAG is not. -DRAG_BG_VEL = 0.1 ! [m s-1] default = 0.0 - ! DRAG_BG_VEL is either the assumed bottom velocity (with LINEAR_DRAG) or an - ! unresolved velocity that is combined with the resolved velocity to estimate - ! the velocity magnitude. DRAG_BG_VEL is only used when BOTTOMDRAGLAW is - ! defined. -BBL_USE_EOS = True ! [Boolean] default = False - ! If true, use the equation of state in determining the properties of the bottom - ! boundary layer. Otherwise use the layer target potential densities. -BBL_THICK_MIN = 0.1 ! [m] default = 0.0 - ! The minimum bottom boundary layer thickness that can be used with - ! BOTTOMDRAGLAW. This might be Kv/(cdrag*drag_bg_vel) to give Kv as the minimum - ! near-bottom viscosity. -KV = 1.0E-04 ! [m2 s-1] - ! The background kinematic viscosity in the interior. The molecular value, ~1e-6 - ! m2 s-1, may be used. -KV_BBL_MIN = 0.0 ! [m2 s-1] default = 1.0E-04 - ! The minimum viscosities in the bottom boundary layer. -KV_TBL_MIN = 0.0 ! [m2 s-1] default = 1.0E-04 - ! The minimum viscosities in the top boundary layer. - -! === module MOM_thickness_diffuse === -KHTH_MAX_CFL = 0.1 ! [nondimensional] default = 0.8 - ! The maximum value of the local diffusive CFL ratio that is permitted for the - ! thickness diffusivity. 1.0 is the marginally unstable value in a pure layered - ! model, but much smaller numbers (e.g. 0.1) seem to work better for ALE-based - ! models. -USE_GM_WORK_BUG = True ! [Boolean] default = True - ! If true, compute the top-layer work tendency on the u-grid with the incorrect - ! sign, for legacy reproducibility. - -! === module MOM_continuity === - -! === module MOM_continuity_PPM === -ETA_TOLERANCE = 1.0E-06 ! [m] default = 3.75E-09 - ! The tolerance for the differences between the barotropic and baroclinic - ! estimates of the sea surface height due to the fluxes through each face. The - ! total tolerance for SSH is 4 times this value. The default is - ! 0.5*NK*ANGSTROM, and this should not be set less than about - ! 10^-15*MAXIMUM_DEPTH. -ETA_TOLERANCE_AUX = 0.001 ! [m] default = 1.0E-06 - ! The tolerance for free-surface height discrepancies between the barotropic - ! solution and the sum of the layer thicknesses when calculating the auxiliary - ! corrected velocities. By default, this is the same as ETA_TOLERANCE, but can - ! be made larger for efficiency. - -! === module MOM_CoriolisAdv === -CORIOLIS_SCHEME = "SADOURNY75_ENSTRO" ! default = "SADOURNY75_ENERGY" - ! CORIOLIS_SCHEME selects the discretization for the Coriolis terms. Valid - ! values are: - ! SADOURNY75_ENERGY - Sadourny, 1975; energy cons. - ! ARAKAWA_HSU90 - Arakawa & Hsu, 1990 - ! SADOURNY75_ENSTRO - Sadourny, 1975; enstrophy cons. - ! ARAKAWA_LAMB81 - Arakawa & Lamb, 1981; En. + Enst. - ! ARAKAWA_LAMB_BLEND - A blend of Arakawa & Lamb with - ! Arakawa & Hsu and Sadourny energy -BOUND_CORIOLIS = True ! [Boolean] default = False - ! If true, the Coriolis terms at u-points are bounded by the four estimates of - ! (f+rv)v from the four neighboring v-points, and similarly at v-points. This - ! option would have no effect on the SADOURNY Coriolis scheme if it were - ! possible to use centered difference thickness fluxes. - -! === module MOM_PressureForce === - -! === module MOM_PressureForce_AFV === -MASS_WEIGHT_IN_PRESSURE_GRADIENT = True ! [Boolean] default = False - ! If true, use mass weighting when interpolating T/S for integrals near the - ! bathymetry in AFV pressure gradient calculations. - -! === module MOM_hor_visc === -LAPLACIAN = True ! [Boolean] default = False - ! If true, use a Laplacian horizontal viscosity. -AH_VEL_SCALE = 0.01 ! [m s-1] default = 0.0 - ! The velocity scale which is multiplied by the cube of the grid spacing to - ! calculate the biharmonic viscosity. The final viscosity is the largest of this - ! scaled viscosity, the Smagorinsky and Leith viscosities, and AH. -SMAGORINSKY_AH = True ! [Boolean] default = False - ! If true, use a biharmonic Smagorinsky nonlinear eddy viscosity. -SMAG_BI_CONST = 0.06 ! [nondim] default = 0.0 - ! The nondimensional biharmonic Smagorinsky constant, typically 0.015 - 0.06. -USE_LAND_MASK_FOR_HVISC = False ! [Boolean] default = False - ! If true, use Use the land mask for the computation of thicknesses at velocity - ! locations. This eliminates the dependence on arbitrary values over land or - ! outside of the domain. Default is False in order to maintain answers with - ! legacy experiments but should be changed to True for new experiments. - -! === module MOM_vert_friction === -HMIX_FIXED = 0.5 ! [m] - ! The prescribed depth over which the near-surface viscosity and diffusivity are - ! elevated when the bulk mixed layer is not used. -KVML = 1.0E-04 ! [m2 s-1] default = 1.0E-04 - ! The kinematic viscosity in the mixed layer. A typical value is ~1e-2 m2 s-1. - ! KVML is not used if BULKMIXEDLAYER is true. The default is set by KV. -MAXVEL = 6.0 ! [m s-1] default = 3.0E+08 - ! The maximum velocity allowed before the velocity components are truncated. - -! === module MOM_PointAccel === -U_TRUNC_FILE = "U_velocity_truncations" ! default = "" - ! The absolute path to a file into which the accelerations leading to zonal - ! velocity truncations are written. Undefine this for efficiency if this - ! diagnostic is not needed. -V_TRUNC_FILE = "V_velocity_truncations" ! default = "" - ! The absolute path to a file into which the accelerations leading to meridional - ! velocity truncations are written. Undefine this for efficiency if this - ! diagnostic is not needed. - -! === module MOM_barotropic === -BOUND_BT_CORRECTION = True ! [Boolean] default = False - ! If true, the corrective pseudo mass-fluxes into the barotropic solver are - ! limited to values that require less than maxCFL_BT_cont to be accommodated. -BT_PROJECT_VELOCITY = True ! [Boolean] default = False - ! If true, step the barotropic velocity first and project out the velocity - ! tendency by 1+BEBT when calculating the transport. The default (false) is to - ! use a predictor continuity step to find the pressure field, and then to do a - ! corrector continuity step using a weighted average of the old and new - ! velocities, with weights of (1-BEBT) and BEBT. -DYNAMIC_SURFACE_PRESSURE = True ! [Boolean] default = False - ! If true, add a dynamic pressure due to a viscous ice shelf, for instance. -BEBT = 0.2 ! [nondim] default = 0.1 - ! BEBT determines whether the barotropic time stepping uses the forward-backward - ! time-stepping scheme or a backward Euler scheme. BEBT is valid in the range - ! from 0 (for a forward-backward treatment of nonrotating gravity waves) to 1 - ! (for a backward Euler treatment). In practice, BEBT must be greater than about - ! 0.05. -DTBT = -0.9 ! [s or nondim] default = -0.98 - ! The barotropic time step, in s. DTBT is only used with the split explicit time - ! stepping. To set the time step automatically based the maximum stable value - ! use 0, or a negative value gives the fraction of the stable value. Setting - ! DTBT to 0 is the same as setting it to -0.98. The value of DTBT that will - ! actually be used is an integer fraction of DT, rounding down. -BT_USE_OLD_CORIOLIS_BRACKET_BUG = True ! [Boolean] default = False - ! If True, use an order of operations that is not bitwise rotationally symmetric - ! in the meridional Coriolis term of the barotropic solver. - -! === module MOM_mixed_layer_restrat === -MIXEDLAYER_RESTRAT = True ! [Boolean] default = False - ! If true, a density-gradient dependent re-stratifying flow is imposed in the - ! mixed layer. Can be used in ALE mode without restriction but in layer mode can - ! only be used if BULKMIXEDLAYER is true. -FOX_KEMPER_ML_RESTRAT_COEF = 1.0 ! [nondim] default = 0.0 - ! A nondimensional coefficient that is proportional to the ratio of the - ! deformation radius to the dominant lengthscale of the submesoscale mixed layer - ! instabilities, times the minimum of the ratio of the mesoscale eddy kinetic - ! energy to the large-scale geostrophic kinetic energy or 1 plus the square of - ! the grid spacing over the deformation radius, as detailed by Fox-Kemper et al. - ! (2010) -MLE_FRONT_LENGTH = 500.0 ! [m] default = 0.0 - ! If non-zero, is the frontal-length scale used to calculate the upscaling of - ! buoyancy gradients that is otherwise represented by the parameter - ! FOX_KEMPER_ML_RESTRAT_COEF. If MLE_FRONT_LENGTH is non-zero, it is recommended - ! to set FOX_KEMPER_ML_RESTRAT_COEF=1.0. -MLE_USE_PBL_MLD = True ! [Boolean] default = False - ! If true, the MLE parameterization will use the mixed-layer depth provided by - ! the active PBL parameterization. If false, MLE will estimate a MLD based on a - ! density difference with the surface using the parameter MLE_DENSITY_DIFF. -MLE_MLD_DECAY_TIME = 2.592E+06 ! [s] default = 0.0 - ! The time-scale for a running-mean filter applied to the mixed-layer depth used - ! in the MLE restratification parameterization. When the MLD deepens below the - ! current running-mean the running-mean is instantaneously set to the current - ! MLD. - -! === module MOM_diabatic_driver === -! The following parameters are used for diabatic processes. -ENERGETICS_SFC_PBL = True ! [Boolean] default = False - ! If true, use an implied energetics planetary boundary layer scheme to - ! determine the diffusivity and viscosity in the surface boundary layer. -EPBL_IS_ADDITIVE = False ! [Boolean] default = True - ! If true, the diffusivity from ePBL is added to all other diffusivities. - ! Otherwise, the larger of kappa-shear and ePBL diffusivities are used. - -! === module MOM_CVMix_KPP === -! This is the MOM wrapper to CVMix:KPP -! See http://cvmix.github.io/ - -! === module MOM_tidal_mixing === -! Vertical Tidal Mixing Parameterization -INT_TIDE_DISSIPATION = True ! [Boolean] default = False - ! If true, use an internal tidal dissipation scheme to drive diapycnal mixing, - ! along the lines of St. Laurent et al. (2002) and Simmons et al. (2004). -INT_TIDE_PROFILE = "POLZIN_09" ! default = "STLAURENT_02" - ! INT_TIDE_PROFILE selects the vertical profile of energy dissipation with - ! INT_TIDE_DISSIPATION. Valid values are: - ! STLAURENT_02 - Use the St. Laurent et al exponential - ! decay profile. - ! POLZIN_09 - Use the Polzin WKB-stretched algebraic - ! decay profile. -INT_TIDE_DECAY_SCALE = 300.3003003003003 ! [m] default = 500.0 - ! The decay scale away from the bottom for tidal TKE with the new coding when - ! INT_TIDE_DISSIPATION is used. -KAPPA_ITIDES = 6.28319E-04 ! [m-1] default = 6.283185307179586E-04 - ! A topographic wavenumber used with INT_TIDE_DISSIPATION. The default is 2pi/10 - ! km, as in St.Laurent et al. 2002. -KAPPA_H2_FACTOR = 0.84 ! [nondim] default = 1.0 - ! A scaling factor for the roughness amplitude with INT_TIDE_DISSIPATION. -TKE_ITIDE_MAX = 0.1 ! [W m-2] default = 1000.0 - ! The maximum internal tide energy source available to mix above the bottom - ! boundary layer with INT_TIDE_DISSIPATION. -READ_TIDEAMP = True ! [Boolean] default = False - ! If true, read a file (given by TIDEAMP_FILE) containing the tidal amplitude - ! with INT_TIDE_DISSIPATION. -TIDEAMP_FILE = "tidal_amplitude.v20140616.nc" ! default = "tideamp.nc" - ! The path to the file containing the spatially varying tidal amplitudes with - ! INT_TIDE_DISSIPATION. -H2_FILE = "ocean_topog.nc" ! - ! The path to the file containing the sub-grid-scale topographic roughness - ! amplitude with INT_TIDE_DISSIPATION. - -! === module MOM_CVMix_conv === -! Parameterization of enhanced mixing due to convection via CVMix - -! === module MOM_geothermal === -GEOTHERMAL_SCALE = 1.0 ! [W m-2 or various] default = 0.0 - ! The constant geothermal heat flux, a rescaling factor for the heat flux read - ! from GEOTHERMAL_FILE, or 0 to disable the geothermal heating. -GEOTHERMAL_FILE = "geothermal_davies2013_v1.nc" ! default = "" - ! The file from which the geothermal heating is to be read, or blank to use a - ! constant heating rate. -GEOTHERMAL_VARNAME = "geothermal_hf" ! default = "geo_heat" - ! The name of the geothermal heating variable in GEOTHERMAL_FILE. - -! === module MOM_set_diffusivity === -BBL_MIXING_AS_MAX = False ! [Boolean] default = True - ! If true, take the maximum of the diffusivity from the BBL mixing and the other - ! diffusivities. Otherwise, diffusivity from the BBL_mixing is simply added. -USE_LOTW_BBL_DIFFUSIVITY = True ! [Boolean] default = False - ! If true, uses a simple, imprecise but non-coordinate dependent, model of BBL - ! mixing diffusivity based on Law of the Wall. Otherwise, uses the original BBL - ! scheme. -SIMPLE_TKE_TO_KD = True ! [Boolean] default = False - ! If true, uses a simple estimate of Kd/TKE that will work for arbitrary - ! vertical coordinates. If false, calculates Kd/TKE and bounds based on exact - ! energetics for an isopycnal layer-formulation. - -! === module MOM_bkgnd_mixing === -! Adding static vertical background mixing coefficients -KD = 1.5E-05 ! [m2 s-1] - ! The background diapycnal diffusivity of density in the interior. Zero or the - ! molecular value, ~1e-7 m2 s-1, may be used. -KD_MIN = 2.0E-06 ! [m2 s-1] default = 1.5E-07 - ! The minimum diapycnal diffusivity. -HENYEY_IGW_BACKGROUND = True ! [Boolean] default = False - ! If true, use a latitude-dependent scaling for the near surface background - ! diffusivity, as described in Harrison & Hallberg, JPO 2008. -KD_MAX = 0.1 ! [m2 s-1] default = -1.0 - ! The maximum permitted increment for the diapycnal diffusivity from TKE-based - ! parameterizations, or a negative value for no limit. - -! === module MOM_kappa_shear === -! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 -USE_JACKSON_PARAM = True ! [Boolean] default = False - ! If true, use the Jackson-Hallberg-Legg (JPO 2008) shear mixing - ! parameterization. -MAX_RINO_IT = 25 ! [nondim] default = 50 - ! The maximum number of iterations that may be used to estimate the Richardson - ! number driven mixing. -VERTEX_SHEAR = False ! [Boolean] default = False - ! If true, do the calculations of the shear-driven mixing - ! at the cell vertices (i.e., the vorticity points). -KAPPA_SHEAR_ITER_BUG = True ! [Boolean] default = True - ! If true, use an older, dimensionally inconsistent estimate of the derivative - ! of diffusivity with energy in the Newton's method iteration. The bug causes - ! undercorrections when dz > 1 m. -KAPPA_SHEAR_ALL_LAYER_TKE_BUG = True ! [Boolean] default = True - ! If true, report back the latest estimate of TKE instead of the time average - ! TKE when there is mass in all layers. Otherwise always report the time - ! averaged TKE, as is currently done when there are some massless layers. - -! === module MOM_CVMix_shear === -! Parameterization of shear-driven turbulence via CVMix (various options) - -! === module MOM_CVMix_ddiff === -! Parameterization of mixing due to double diffusion processes via CVMix - -! === module MOM_diabatic_aux === -! The following parameters are used for auxiliary diabatic processes. -PRESSURE_DEPENDENT_FRAZIL = False ! [Boolean] default = False - ! If true, use a pressure dependent freezing temperature when making frazil. The - ! default is false, which will be faster but is inappropriate with ice-shelf - ! cavities. -VAR_PEN_SW = True ! [Boolean] default = False - ! If true, use one of the CHL_A schemes specified by OPACITY_SCHEME to determine - ! the e-folding depth of incoming short wave radiation. -CHL_FILE = @[CHLCLIM] ! - ! CHL_FILE is the file containing chl_a concentrations in the variable CHL_A. It - ! is used when VAR_PEN_SW and CHL_FROM_FILE are true. -CHL_VARNAME = "chlor_a" ! default = "CHL_A" - ! Name of CHL_A variable in CHL_FILE. - -! === module MOM_energetic_PBL === -ML_OMEGA_FRAC = 0.001 ! [nondim] default = 0.0 - ! When setting the decay scale for turbulence, use this fraction of the absolute - ! rotation rate blended with the local value of f, as sqrt((1-of)*f^2 + - ! of*4*omega^2). -TKE_DECAY = 0.01 ! [nondim] default = 2.5 - ! TKE_DECAY relates the vertical rate of decay of the TKE available for - ! mechanical entrainment to the natural Ekman depth. -EPBL_MSTAR_SCHEME = "OM4" ! default = "CONSTANT" - ! EPBL_MSTAR_SCHEME selects the method for setting mstar. Valid values are: - ! CONSTANT - Use a fixed mstar given by MSTAR - ! OM4 - Use L_Ekman/L_Obukhov in the sabilizing limit, as in OM4 - ! REICHL_H18 - Use the scheme documented in Reichl & Hallberg, 2018. -MSTAR_CAP = 10.0 ! [nondim] default = -1.0 - ! If this value is positive, it sets the maximum value of mstar allowed in ePBL. - ! (This is not used if EPBL_MSTAR_SCHEME = CONSTANT). -MSTAR2_COEF1 = 0.29 ! [nondim] default = 0.3 - ! Coefficient in computing mstar when rotation and stabilizing effects are both - ! important (used if EPBL_MSTAR_SCHEME = OM4). -MSTAR2_COEF2 = 0.152 ! [nondim] default = 0.085 - ! Coefficient in computing mstar when only rotation limits the total mixing - ! (used if EPBL_MSTAR_SCHEME = OM4) -NSTAR = 0.06 ! [nondim] default = 0.2 - ! The portion of the buoyant potential energy imparted by surface fluxes that is - ! available to drive entrainment at the base of mixed layer when that energy is - ! positive. -EPBL_MLD_BISECTION = True ! [Boolean] default = False - ! If true, use bisection with the iterative determination of the self-consistent - ! mixed layer depth. Otherwise use the false position after a maximum and - ! minimum bound have been evaluated and the returned value or bisection before - ! this. -MSTAR_CONV_ADJ = 0.667 ! [nondim] default = 0.0 - ! Coefficient used for reducing mstar during convection due to reduction of - ! stable density gradient. -USE_MLD_ITERATION = True ! [Boolean] default = False - ! A logical that specifies whether or not to use the distance to the bottom of - ! the actively turbulent boundary layer to help set the EPBL length scale. -EPBL_TRANSITION_SCALE = 0.01 ! [nondim] default = 0.1 - ! A scale for the mixing length in the transition layer at the edge of the - ! boundary layer as a fraction of the boundary layer thickness. -MIX_LEN_EXPONENT = 1.0 ! [nondim] default = 2.0 - ! The exponent applied to the ratio of the distance to the MLD and the MLD depth - ! which determines the shape of the mixing length. This is only used if - ! USE_MLD_ITERATION is True. -USE_LA_LI2016 = @[MOM6_USE_LI2016] ! [nondim] default = False - ! A logical to use the Li et al. 2016 (submitted) formula to determine the - ! Langmuir number. -USE_WAVES = @[MOM6_USE_WAVES] ! [Boolean] default = False - ! If true, enables surface wave modules. -WAVE_METHOD = "SURFACE_BANDS" ! default = "EMPTY" - ! Choice of wave method, valid options include: - ! TEST_PROFILE - Prescribed from surface Stokes drift - ! and a decay wavelength. - ! SURFACE_BANDS - Computed from multiple surface values - ! and decay wavelengths. - ! DHH85 - Uses Donelan et al. 1985 empirical - ! wave spectrum with prescribed values. - ! LF17 - Infers Stokes drift profile from wind - ! speed following Li and Fox-Kemper 2017. -SURFBAND_SOURCE = "COUPLER" ! default = "EMPTY" - ! Choice of SURFACE_BANDS data mode, valid options include: - ! DATAOVERRIDE - Read from NetCDF using FMS DataOverride. - ! COUPLER - Look for variables from coupler pass - ! INPUT - Testing with fixed values. -STK_BAND_COUPLER = 3 ! default = 1 - ! STK_BAND_COUPLER is the number of Stokes drift bands in the coupler. This has - ! to be consistent with the number of Stokes drift bands in WW3, or the model - ! will fail. -SURFBAND_WAVENUMBERS = 0.04, 0.11, 0.3305 ! [rad/m] default = 0.12566 - ! Central wavenumbers for surface Stokes drift bands. -EPBL_LANGMUIR_SCHEME = "ADDITIVE" ! default = "NONE" - ! EPBL_LANGMUIR_SCHEME selects the method for including Langmuir turbulence. - ! Valid values are: - ! NONE - Do not do any extra mixing due to Langmuir turbulence - ! RESCALE - Use a multiplicative rescaling of mstar to account for Langmuir - ! turbulence - ! ADDITIVE - Add a Langmuir turblence contribution to mstar to other - ! contributions -LT_ENHANCE_COEF = 0.044 ! [nondim] default = 0.447 - ! Coefficient for Langmuir enhancement of mstar -LT_ENHANCE_EXP = -1.5 ! [nondim] default = -1.33 - ! Exponent for Langmuir enhancementt of mstar -LT_MOD_LAC1 = 0.0 ! [nondim] default = -0.87 - ! Coefficient for modification of Langmuir number due to MLD approaching Ekman - ! depth. -LT_MOD_LAC4 = 0.0 ! [nondim] default = 0.95 - ! Coefficient for modification of Langmuir number due to ratio of Ekman to - ! stable Obukhov depth. -LT_MOD_LAC5 = 0.22 ! [nondim] default = 0.95 - ! Coefficient for modification of Langmuir number due to ratio of Ekman to - ! unstable Obukhov depth. - -! === module MOM_regularize_layers === - -! === module MOM_opacity === -PEN_SW_NBANDS = 3 ! default = 1 - ! The number of bands of penetrating shortwave radiation. - -! === module MOM_tracer_advect === -TRACER_ADVECTION_SCHEME = "PPM:H3" ! default = "PLM" - ! The horizontal transport scheme for tracers: - ! PLM - Piecewise Linear Method - ! PPM:H3 - Piecewise Parabolic Method (Huyhn 3rd order) - ! PPM - Piecewise Parabolic Method (Colella-Woodward) - -! === module MOM_tracer_hor_diff === -CHECK_DIFFUSIVE_CFL = True ! [Boolean] default = False - ! If true, use enough iterations the diffusion to ensure that the diffusive - ! equivalent of the CFL limit is not violated. If false, always use the greater - ! of 1 or MAX_TR_DIFFUSION_CFL iteration. - -! === module MOM_neutral_diffusion === -! This module implements neutral diffusion of tracers - -! === module MOM_lateral_boundary_diffusion === -! This module implements lateral diffusion of tracers near boundaries - -! === module MOM_sum_output === -MAXTRUNC = 100000 ! [truncations save_interval-1] default = 0 - ! The run will be stopped, and the day set to a very large value if the velocity - ! is truncated more than MAXTRUNC times between energy saves. Set MAXTRUNC to 0 - ! to stop if there is any truncation of velocities. -ENERGYSAVEDAYS = 1.00 ! [days] default = 1.0 - ! The interval in units of TIMEUNIT between saves of the energies of the run and - ! other globally summed diagnostics. - -! === module ocean_model_init === - -! === module MOM_oda_incupd === -ODA_INCUPD = @[ODA_INCUPD] ! [Boolean] default = False - ! If true, oda incremental updates will be applied - ! everywhere in the domain. -ODA_INCUPD_FILE = "mom6_increment.nc" ! The name of the file with the T,S,h increments. - -ODA_TEMPINC_VAR = "Temp" ! default = "ptemp_inc" - ! The name of the potential temperature inc. variable in - ! ODA_INCUPD_FILE. -ODA_SALTINC_VAR = "Salt" ! default = "sal_inc" - ! The name of the salinity inc. variable in - ! ODA_INCUPD_FILE. -ODA_THK_VAR = "h" ! default = "h" - ! The name of the int. depth inc. variable in - ! ODA_INCUPD_FILE. -ODA_INCUPD_UV = true ! -ODA_UINC_VAR = "u" ! default = "u_inc" - ! The name of the zonal vel. inc. variable in - ! ODA_INCUPD_UV_FILE. -ODA_VINC_VAR = "v" ! default = "v_inc" - ! The name of the meridional vel. inc. variable in - ! ODA_INCUPD_UV_FILE. -ODA_INCUPD_NHOURS = @[ODA_INCUPD_NHOURS] ! default=3.0 - -! === module MOM_surface_forcing === -OCEAN_SURFACE_STAGGER = "A" ! default = "C" - ! A case-insensitive character string to indicate the - ! staggering of the surface velocity field that is - ! returned to the coupler. Valid values include - ! 'A', 'B', or 'C'. - -MAX_P_SURF = 0.0 ! [Pa] default = -1.0 - ! The maximum surface pressure that can be exerted by the atmosphere and - ! floating sea-ice or ice shelves. This is needed because the FMS coupling - ! structure does not limit the water that can be frozen out of the ocean and the - ! ice-ocean heat fluxes are treated explicitly. No limit is applied if a - ! negative value is used. -WIND_STAGGER = "A" ! default = "C" - ! A case-insensitive character string to indicate the - ! staggering of the input wind stress field. Valid - ! values are 'A', 'B', or 'C'. -CD_TIDES = 0.0018 ! [nondim] default = 1.0E-04 - ! The drag coefficient that applies to the tides. -GUST_CONST = 0.0 ! [Pa] default = 0.02 - ! The background gustiness in the winds. -FIX_USTAR_GUSTLESS_BUG = False ! [Boolean] default = False - ! If true correct a bug in the time-averaging of the gustless wind friction - ! velocity -USE_RIGID_SEA_ICE = True ! [Boolean] default = False - ! If true, sea-ice is rigid enough to exert a nonhydrostatic pressure that - ! resist vertical motion. -SEA_ICE_RIGID_MASS = 100.0 ! [kg m-2] default = 1000.0 - ! The mass of sea-ice per unit area at which the sea-ice starts to exhibit - ! rigidity -LIQUID_RUNOFF_FROM_DATA = @[MOM6_RIVER_RUNOFF] ! [Boolean] default = False - ! If true, allows liquid river runoff to be specified via - ! the data_table using the component name 'OCN'. -! === module ocean_stochastics === -DO_SPPT = @[DO_OCN_SPPT] ! [Boolean] default = False - ! If true perturb the diabatic tendencies in MOM_diabatic_driver -PERT_EPBL = @[PERT_EPBL] ! [Boolean] default = False - ! If true perturb the KE dissipation and destruction in MOM_energetic_PBL -! === module MOM_restart === -RESTART_CHECKSUMS_REQUIRED = False -! === module MOM_file_parser === diff --git a/parm/ufs/mom6/MOM_input_template_050 b/parm/ufs/mom6/MOM_input_template_050 deleted file mode 100644 index 4c39198c02..0000000000 --- a/parm/ufs/mom6/MOM_input_template_050 +++ /dev/null @@ -1,947 +0,0 @@ -! This input file provides the adjustable run-time parameters for version 6 of the Modular Ocean Model (MOM6). -! Where appropriate, parameters use usually given in MKS units. - -! This particular file is for the example in ice_ocean_SIS2/OM4_05. - -! This MOM_input file typically contains only the non-default values that are needed to reproduce this example. -! A full list of parameters for this example can be found in the corresponding MOM_parameter_doc.all file -! which is generated by the model at run-time. -! === module MOM_domains === -TRIPOLAR_N = True ! [Boolean] default = False - ! Use tripolar connectivity at the northern edge of the domain. With - ! TRIPOLAR_N, NIGLOBAL must be even. -NIGLOBAL = @[NX_GLB] ! - ! The total number of thickness grid points in the x-direction in the physical - ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. -NJGLOBAL = @[NY_GLB] ! - ! The total number of thickness grid points in the y-direction in the physical - ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. -NIHALO = 4 ! default = 4 - ! The number of halo points on each side in the x-direction. With - ! STATIC_MEMORY_ this is set as NIHALO_ in MOM_memory.h at compile time; without - ! STATIC_MEMORY_ the default is NIHALO_ in MOM_memory.h (if defined) or 2. -NJHALO = 4 ! default = 4 - ! The number of halo points on each side in the y-direction. With - ! STATIC_MEMORY_ this is set as NJHALO_ in MOM_memory.h at compile time; without - ! STATIC_MEMORY_ the default is NJHALO_ in MOM_memory.h (if defined) or 2. -! LAYOUT = 21, 20 ! - ! The processor layout that was actually used. -! IO_LAYOUT = 1, 1 ! default = 1 - ! The processor layout to be used, or 0,0 to automatically set the io_layout to - ! be the same as the layout. - -! === module MOM === -USE_REGRIDDING = True ! [Boolean] default = False - ! If True, use the ALE algorithm (regridding/remapping). If False, use the - ! layered isopycnal algorithm. -THICKNESSDIFFUSE = True ! [Boolean] default = False - ! If true, interface heights are diffused with a coefficient of KHTH. -THICKNESSDIFFUSE_FIRST = True ! [Boolean] default = False - ! If true, do thickness diffusion before dynamics. This is only used if - ! THICKNESSDIFFUSE is true. -DT = @[DT_DYNAM_MOM6] ! [s] - ! The (baroclinic) dynamics time step. The time-step that is actually used will - ! be an integer fraction of the forcing time-step (DT_FORCING in ocean-only mode - ! or the coupling timestep in coupled mode.) -DT_THERM = @[DT_THERM_MOM6] ! [s] default = 1800.0 - ! The thermodynamic and tracer advection time step. Ideally DT_THERM should be - ! an integer multiple of DT and less than the forcing or coupling time-step, - ! unless THERMO_SPANS_COUPLING is true, in which case DT_THERM can be an integer - ! multiple of the coupling timestep. By default DT_THERM is set to DT. -THERMO_SPANS_COUPLING = @[MOM6_THERMO_SPAN] ! [Boolean] default = False - ! If true, the MOM will take thermodynamic and tracer timesteps that can be - ! longer than the coupling timestep. The actual thermodynamic timestep that is - ! used in this case is the largest integer multiple of the coupling timestep - ! that is less than or equal to DT_THERM. -HFREEZE = 20.0 ! [m] default = -1.0 - ! If HFREEZE > 0, melt potential will be computed. The actual depth - ! over which melt potential is computed will be min(HFREEZE, OBLD) - ! where OBLD is the boundary layer depth. If HFREEZE <= 0 (default) - ! melt potential will not be computed. -USE_PSURF_IN_EOS = False ! [Boolean] default = False - ! If true, always include the surface pressure contributions in equation of - ! state calculations. -FRAZIL = True ! [Boolean] default = False - ! If true, water freezes if it gets too cold, and the accumulated heat deficit - ! is returned in the surface state. FRAZIL is only used if - ! ENABLE_THERMODYNAMICS is true. -DO_GEOTHERMAL = True ! [Boolean] default = False - ! If true, apply geothermal heating. -BOUND_SALINITY = True ! [Boolean] default = False - ! If true, limit salinity to being positive. (The sea-ice model may ask for more - ! salt than is available and drive the salinity negative otherwise.) -MIN_SALINITY = 0.01 ! [PPT] default = 0.01 - ! The minimum value of salinity when BOUND_SALINITY=True. The default is 0.01 - ! for backward compatibility but ideally should be 0. -C_P = 3992.0 ! [J kg-1 K-1] default = 3991.86795711963 - ! The heat capacity of sea water, approximated as a constant. This is only used - ! if ENABLE_THERMODYNAMICS is true. The default value is from the TEOS-10 - ! definition of conservative temperature. -CHECK_BAD_SURFACE_VALS = True ! [Boolean] default = False - ! If true, check the surface state for ridiculous values. -BAD_VAL_SSH_MAX = 50.0 ! [m] default = 20.0 - ! The value of SSH above which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_SSS_MAX = 75.0 ! [PPT] default = 45.0 - ! The value of SSS above which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_SST_MAX = 55.0 ! [deg C] default = 45.0 - ! The value of SST above which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_SST_MIN = -3.0 ! [deg C] default = -2.1 - ! The value of SST below which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -DEFAULT_2018_ANSWERS = True ! [Boolean] default = True - ! This sets the default value for the various _2018_ANSWERS parameters. -WRITE_GEOM = 2 ! default = 1 - ! If =0, never write the geometry and vertical grid files. If =1, write the - ! geometry and vertical grid files only for a new simulation. If =2, always - ! write the geometry and vertical grid files. Other values are invalid. -SAVE_INITIAL_CONDS = False ! [Boolean] default = False - ! If true, write the initial conditions to a file given by IC_OUTPUT_FILE. - -! === module MOM_hor_index === -! Sets the horizontal array index types. - -! === module MOM_fixed_initialization === -INPUTDIR = "INPUT" ! default = "." - ! The directory in which input files are found. - -! === module MOM_grid_init === -GRID_CONFIG = "mosaic" ! - ! A character string that determines the method for defining the horizontal - ! grid. Current options are: - ! mosaic - read the grid from a mosaic (supergrid) - ! file set by GRID_FILE. - ! cartesian - use a (flat) Cartesian grid. - ! spherical - use a simple spherical grid. - ! mercator - use a Mercator spherical grid. -GRID_FILE = "ocean_hgrid.nc" ! - ! Name of the file from which to read horizontal grid data. -GRID_ROTATION_ANGLE_BUGS = False ! [Boolean] default = True - ! If true, use an older algorithm to calculate the sine and - ! cosines needed rotate between grid-oriented directions and - ! true north and east. Differences arise at the tripolar fold -USE_TRIPOLAR_GEOLONB_BUG = False ! [Boolean] default = True - ! If true, use older code that incorrectly sets the longitude in some points - ! along the tripolar fold to be off by 360 degrees. -TOPO_CONFIG = "file" ! - ! This specifies how bathymetry is specified: - ! file - read bathymetric information from the file - ! specified by (TOPO_FILE). - ! flat - flat bottom set to MAXIMUM_DEPTH. - ! bowl - an analytically specified bowl-shaped basin - ! ranging between MAXIMUM_DEPTH and MINIMUM_DEPTH. - ! spoon - a similar shape to 'bowl', but with an vertical - ! wall at the southern face. - ! halfpipe - a zonally uniform channel with a half-sine - ! profile in the meridional direction. - ! benchmark - use the benchmark test case topography. - ! Neverland - use the Neverland test case topography. - ! DOME - use a slope and channel configuration for the - ! DOME sill-overflow test case. - ! ISOMIP - use a slope and channel configuration for the - ! ISOMIP test case. - ! DOME2D - use a shelf and slope configuration for the - ! DOME2D gravity current/overflow test case. - ! Kelvin - flat but with rotated land mask. - ! seamount - Gaussian bump for spontaneous motion test case. - ! dumbbell - Sloshing channel with reservoirs on both ends. - ! shelfwave - exponential slope for shelfwave test case. - ! Phillips - ACC-like idealized topography used in the Phillips config. - ! dense - Denmark Strait-like dense water formation and overflow. - ! USER - call a user modified routine. -TOPO_FILE = "ocean_topog.nc" ! default = "topog.nc" - ! The file from which the bathymetry is read. -ALLOW_LANDMASK_CHANGES = @[MOM6_ALLOW_LANDMASK_CHANGES] ! default = "False" - ! If true, allow topography overrides to change ocean points to land -MAXIMUM_DEPTH = 6500.0 ! [m] - ! The maximum depth of the ocean. -MINIMUM_DEPTH = 9.5 ! [m] default = 0.0 - ! If MASKING_DEPTH is unspecified, then anything shallower than MINIMUM_DEPTH is - ! assumed to be land and all fluxes are masked out. If MASKING_DEPTH is - ! specified, then all depths shallower than MINIMUM_DEPTH but deeper than - ! MASKING_DEPTH are rounded to MINIMUM_DEPTH. - -! === module MOM_open_boundary === -! Controls where open boundaries are located, what kind of boundary condition to impose, and what data to apply, -! if any. -MASKING_DEPTH = 0.0 ! [m] default = -9999.0 - ! The depth below which to mask points as land points, for which all fluxes are - ! zeroed out. MASKING_DEPTH is ignored if negative. -CHANNEL_CONFIG = "list" ! default = "none" - ! A parameter that determines which set of channels are - ! restricted to specific widths. Options are: - ! none - All channels have the grid width. - ! global_1deg - Sets 16 specific channels appropriate - ! for a 1-degree model, as used in CM2G. - ! list - Read the channel locations and widths from a - ! text file, like MOM_channel_list in the MOM_SIS - ! test case. - ! file - Read open face widths everywhere from a - ! NetCDF file on the model grid. -CHANNEL_LIST_FILE = "MOM_channels_global_025" ! default = "MOM_channel_list" - ! The file from which the list of narrowed channels is read. - -! === module MOM_verticalGrid === -! Parameters providing information about the vertical grid. -NK = 75 ! [nondim] - ! The number of model layers. - -! === module MOM_tracer_registry === - -! === module MOM_EOS === -DTFREEZE_DP = -7.75E-08 ! [deg C Pa-1] default = 0.0 - ! When TFREEZE_FORM=LINEAR, this is the derivative of the freezing potential - ! temperature with pressure. - -! === module MOM_restart === -PARALLEL_RESTARTFILES = True ! [Boolean] default = False - ! If true, each processor writes its own restart file, otherwise a single - ! restart file is generated - -! === module MOM_tracer_flow_control === -USE_IDEAL_AGE_TRACER = False ! [Boolean] default = False - ! If true, use the ideal_age_example tracer package. - -! === module ideal_age_example === - -! === module MOM_coord_initialization === -COORD_CONFIG = "file" ! - ! This specifies how layers are to be defined: - ! ALE or none - used to avoid defining layers in ALE mode - ! file - read coordinate information from the file - ! specified by (COORD_FILE). - ! BFB - Custom coords for buoyancy-forced basin case - ! based on SST_S, T_BOT and DRHO_DT. - ! linear - linear based on interfaces not layers - ! layer_ref - linear based on layer densities - ! ts_ref - use reference temperature and salinity - ! ts_range - use range of temperature and salinity - ! (T_REF and S_REF) to determine surface density - ! and GINT calculate internal densities. - ! gprime - use reference density (RHO_0) for surface - ! density and GINT calculate internal densities. - ! ts_profile - use temperature and salinity profiles - ! (read from COORD_FILE) to set layer densities. - ! USER - call a user modified routine. -COORD_FILE = "layer_coord.nc" ! - ! The file from which the coordinate densities are read. -REMAP_UV_USING_OLD_ALG = True ! [Boolean] default = True - ! If true, uses the old remapping-via-a-delta-z method for remapping u and v. If - ! false, uses the new method that remaps between grids described by an old and - ! new thickness. -REGRIDDING_COORDINATE_MODE = "HYCOM1" ! default = "LAYER" - ! Coordinate mode for vertical regridding. Choose among the following - ! possibilities: LAYER - Isopycnal or stacked shallow water layers - ! ZSTAR, Z* - stretched geopotential z* - ! SIGMA_SHELF_ZSTAR - stretched geopotential z* ignoring shelf - ! SIGMA - terrain following coordinates - ! RHO - continuous isopycnal - ! HYCOM1 - HyCOM-like hybrid coordinate - ! SLIGHT - stretched coordinates above continuous isopycnal - ! ADAPTIVE - optimize for smooth neutral density surfaces -BOUNDARY_EXTRAPOLATION = True ! [Boolean] default = False - ! When defined, a proper high-order reconstruction scheme is used within - ! boundary cells rather than PCM. E.g., if PPM is used for remapping, a PPM - ! reconstruction will also be used within boundary cells. -ALE_COORDINATE_CONFIG = "HYBRID:hycom1_75_800m.nc,sigma2,FNC1:2,4000,4.5,.01" ! default = "UNIFORM" - ! Determines how to specify the coordinate resolution. Valid options are: - ! PARAM - use the vector-parameter ALE_RESOLUTION - ! UNIFORM[:N] - uniformly distributed - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,dz - ! or FILE:lev.nc,interfaces=zw - ! WOA09[:N] - the WOA09 vertical grid (approximately) - ! FNC1:string - FNC1:dz_min,H_total,power,precision - ! HYBRID:string - read from a file. The string specifies - ! the filename and two variable names, separated - ! by a comma or space, for sigma-2 and dz. e.g. - ! HYBRID:vgrid.nc,sigma2,dz -!ALE_RESOLUTION = 7*2.0, 2*2.01, 2.02, 2.03, 2.05, 2.08, 2.11, 2.15, 2.21, 2.2800000000000002, 2.37, 2.48, 2.61, 2.77, 2.95, 3.17, 3.4299999999999997, 3.74, 4.09, 4.49, 4.95, 5.48, 6.07, 6.74, 7.5, 8.34, 9.280000000000001, 10.33, 11.49, 12.77, 14.19, 15.74, 17.450000000000003, 19.31, 21.35, 23.56, 25.97, 28.580000000000002, 31.41, 34.47, 37.77, 41.32, 45.14, 49.25, 53.65, 58.370000000000005, 63.42, 68.81, 74.56, 80.68, 87.21000000000001, 94.14, 101.51, 109.33, 117.62, 126.4, 135.68, 145.5, 155.87, 166.81, 178.35, 190.51, 203.31, 216.78, 230.93, 245.8, 261.42, 277.83 ! [m] - ! The distribution of vertical resolution for the target - ! grid used for Eulerian-like coordinates. For example, - ! in z-coordinate mode, the parameter is a list of level - ! thicknesses (in m). In sigma-coordinate mode, the list - ! is of non-dimensional fractions of the water column. -!TARGET_DENSITIES = 1010.0, 1014.3034, 1017.8088, 1020.843, 1023.5566, 1025.813, 1027.0275, 1027.9114, 1028.6422, 1029.2795, 1029.852, 1030.3762, 1030.8626, 1031.3183, 1031.7486, 1032.1572, 1032.5471, 1032.9207, 1033.2798, 1033.6261, 1033.9608, 1034.2519, 1034.4817, 1034.6774, 1034.8508, 1035.0082, 1035.1533, 1035.2886, 1035.4159, 1035.5364, 1035.6511, 1035.7608, 1035.8661, 1035.9675, 1036.0645, 1036.1554, 1036.2411, 1036.3223, 1036.3998, 1036.4739, 1036.5451, 1036.6137, 1036.68, 1036.7441, 1036.8062, 1036.8526, 1036.8874, 1036.9164, 1036.9418, 1036.9647, 1036.9857, 1037.0052, 1037.0236, 1037.0409, 1037.0574, 1037.0738, 1037.0902, 1037.1066, 1037.123, 1037.1394, 1037.1558, 1037.1722, 1037.1887, 1037.206, 1037.2241, 1037.2435, 1037.2642, 1037.2866, 1037.3112, 1037.3389, 1037.3713, 1037.4118, 1037.475, 1037.6332, 1037.8104, 1038.0 ! [m] - ! HYBRID target densities for interfaces -REGRID_COMPRESSIBILITY_FRACTION = 0.01 ! [nondim] default = 0.0 - ! When interpolating potential density profiles we can add some artificial - ! compressibility solely to make homogeneous regions appear stratified. -MAXIMUM_INT_DEPTH_CONFIG = "FNC1:5,8000.0,1.0,.01" ! default = "NONE" - ! Determines how to specify the maximum interface depths. - ! Valid options are: - ! NONE - there are no maximum interface depths - ! PARAM - use the vector-parameter MAXIMUM_INTERFACE_DEPTHS - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,Z - ! FNC1:string - FNC1:dz_min,H_total,power,precision -!MAXIMUM_INT_DEPTHS = 0.0, 5.0, 12.75, 23.25, 36.49, 52.480000000000004, 71.22, 92.71000000000001, 116.94000000000001, 143.92000000000002, 173.65, 206.13, 241.36, 279.33000000000004, 320.05000000000007, 363.5200000000001, 409.7400000000001, 458.7000000000001, 510.4100000000001, 564.8700000000001, 622.0800000000002, 682.0300000000002, 744.7300000000002, 810.1800000000003, 878.3800000000003, 949.3300000000004, 1023.0200000000004, 1099.4600000000005, 1178.6500000000005, 1260.5900000000006, 1345.2700000000007, 1432.7000000000007, 1522.8800000000008, 1615.8100000000009, 1711.490000000001, 1809.910000000001, 1911.080000000001, 2015.0000000000011, 2121.670000000001, 2231.080000000001, 2343.2400000000007, 2458.1500000000005, 2575.8100000000004, 2696.2200000000003, 2819.3700000000003, 2945.2700000000004, 3073.9200000000005, 3205.3200000000006, 3339.4600000000005, 3476.3500000000004, 3615.9900000000002, 3758.38, 3903.52, 4051.4, 4202.03, 4355.41, 4511.54, 4670.41, 4832.03, 4996.4, 5163.5199999999995, 5333.379999999999, 5505.989999999999, 5681.3499999999985, 5859.459999999998, 6040.319999999998, 6223.919999999998, 6410.269999999999, 6599.369999999999, 6791.219999999999, 6985.8099999999995, 7183.15, 7383.24, 7586.08, 7791.67, 8000.0 - ! The list of maximum depths for each interface. -MAX_LAYER_THICKNESS_CONFIG = "FNC1:400,31000.0,0.1,.01" ! default = "NONE" - ! Determines how to specify the maximum layer thicknesses. - ! Valid options are: - ! NONE - there are no maximum layer thicknesses - ! PARAM - use the vector-parameter MAX_LAYER_THICKNESS - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,Z - ! FNC1:string - FNC1:dz_min,H_total,power,precision -!MAX_LAYER_THICKNESS = 400.0, 409.63, 410.32, 410.75, 411.07, 411.32, 411.52, 411.7, 411.86, 412.0, 412.13, 412.24, 412.35, 412.45, 412.54, 412.63, 412.71, 412.79, 412.86, 412.93, 413.0, 413.06, 413.12, 413.18, 413.24, 413.29, 413.34, 413.39, 413.44, 413.49, 413.54, 413.58, 413.62, 413.67, 413.71, 413.75, 413.78, 413.82, 413.86, 413.9, 413.93, 413.97, 414.0, 414.03, 414.06, 414.1, 414.13, 414.16, 414.19, 414.22, 414.24, 414.27, 414.3, 414.33, 414.35, 414.38, 414.41, 414.43, 414.46, 414.48, 414.51, 414.53, 414.55, 414.58, 414.6, 414.62, 414.65, 414.67, 414.69, 414.71, 414.73, 414.75, 414.77, 414.79, 414.83 ! [m] - ! The list of maximum thickness for each layer. -REMAPPING_SCHEME = "PPM_H4" ! default = "PLM" - ! This sets the reconstruction scheme used for vertical remapping for all - ! variables. It can be one of the following schemes: PCM (1st-order - ! accurate) - ! PLM (2nd-order accurate) - ! PPM_H4 (3rd-order accurate) - ! PPM_IH4 (3rd-order accurate) - ! PQM_IH4IH3 (4th-order accurate) - ! PQM_IH6IH5 (5th-order accurate) - -! === module MOM_grid === -! Parameters providing information about the lateral grid. - -! === module MOM_state_initialization === -INIT_LAYERS_FROM_Z_FILE = True ! [Boolean] default = False - ! If true, initialize the layer thicknesses, temperatures, and salinities from a - ! Z-space file on a latitude-longitude grid. - -! === module MOM_initialize_layers_from_Z === -TEMP_SALT_Z_INIT_FILE = "MOM6_IC_TS.nc" ! default = "temp_salt_z.nc" - ! The name of the z-space input file used to initialize - ! temperatures (T) and salinities (S). If T and S are not - ! in the same file, TEMP_Z_INIT_FILE and SALT_Z_INIT_FILE - ! must be set. -Z_INIT_FILE_PTEMP_VAR = "temp" ! default = "ptemp" - ! The name of the potential temperature variable in - ! TEMP_Z_INIT_FILE. -Z_INIT_FILE_SALT_VAR = "salt" ! default = "salt" - ! The name of the salinity variable in - ! SALT_Z_INIT_FILE. - -Z_INIT_ALE_REMAPPING = True ! [Boolean] default = False - ! If True, then remap straight to model coordinate from file. -Z_INIT_REMAP_OLD_ALG = True ! [Boolean] default = True - ! If false, uses the preferred remapping algorithm for initialization. If true, - ! use an older, less robust algorithm for remapping. - -! === module MOM_diag_mediator === -!Jiande NUM_DIAG_COORDS = 2 ! default = 1 -NUM_DIAG_COORDS = 1 ! default = 1 - ! The number of diagnostic vertical coordinates to use. - ! For each coordinate, an entry in DIAG_COORDS must be provided. -!Jiande DIAG_COORDS = "z Z ZSTAR", "rho2 RHO2 RHO" ! -DIAG_COORDS = "z Z ZSTAR" - ! A list of string tuples associating diag_table modules to - ! a coordinate definition used for diagnostics. Each string - ! is of the form "MODULE_SUFFIX,PARAMETER_SUFFIX,COORDINATE_NAME". -DIAG_COORD_DEF_Z="FILE:interpolate_zgrid_40L.nc,interfaces=zw" -DIAG_MISVAL = -1e34 -!DIAG_COORD_DEF_RHO2 = "RFNC1:35,999.5,1028,1028.5,8.,1038.,0.0078125" ! default = "WOA09" - ! Determines how to specify the coordinate resolution. Valid options are: - ! PARAM - use the vector-parameter DIAG_COORD_RES_RHO2 - ! UNIFORM[:N] - uniformly distributed - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,dz - ! or FILE:lev.nc,interfaces=zw - ! WOA09[:N] - the WOA09 vertical grid (approximately) - ! FNC1:string - FNC1:dz_min,H_total,power,precision - ! HYBRID:string - read from a file. The string specifies - ! the filename and two variable names, separated - ! by a comma or space, for sigma-2 and dz. e.g. - ! HYBRID:vgrid.nc,sigma2,dz - -! === module MOM_MEKE === -USE_MEKE = True ! [Boolean] default = False - ! If true, turns on the MEKE scheme which calculates a sub-grid mesoscale eddy - ! kinetic energy budget. -MEKE_GMCOEFF = 1.0 ! [nondim] default = -1.0 - ! The efficiency of the conversion of potential energy into MEKE by the - ! thickness mixing parameterization. If MEKE_GMCOEFF is negative, this - ! conversion is not used or calculated. -MEKE_BGSRC = 1.0E-13 ! [W kg-1] default = 0.0 - ! A background energy source for MEKE. -MEKE_KHTH_FAC = 0.5 ! [nondim] default = 0.0 - ! A factor that maps MEKE%Kh to KhTh. -MEKE_KHTR_FAC = 0.5 ! [nondim] default = 0.0 - ! A factor that maps MEKE%Kh to KhTr. -MEKE_KHMEKE_FAC = 1.0 ! [nondim] default = 0.0 - ! A factor that maps MEKE%Kh to Kh for MEKE itself. -MEKE_VISCOSITY_COEFF_KU = 1.0 ! [nondim] default = 0.0 - ! If non-zero, is the scaling coefficient in the expression forviscosity used to - ! parameterize harmonic lateral momentum mixing byunresolved eddies represented - ! by MEKE. Can be negative torepresent backscatter from the unresolved eddies. -MEKE_ALPHA_RHINES = 0.15 ! [nondim] default = 0.05 - ! If positive, is a coefficient weighting the Rhines scale in the expression for - ! mixing length used in MEKE-derived diffusivity. -MEKE_ALPHA_EADY = 0.15 ! [nondim] default = 0.05 - ! If positive, is a coefficient weighting the Eady length scale in the - ! expression for mixing length used in MEKE-derived diffusivity. - -! === module MOM_lateral_mixing_coeffs === -USE_VARIABLE_MIXING = True ! [Boolean] default = False - ! If true, the variable mixing code will be called. This allows diagnostics to - ! be created even if the scheme is not used. If KHTR_SLOPE_CFF>0 or - ! KhTh_Slope_Cff>0, this is set to true regardless of what is in the parameter - ! file. -RESOLN_SCALED_KH = True ! [Boolean] default = False - ! If true, the Laplacian lateral viscosity is scaled away when the first - ! baroclinic deformation radius is well resolved. -RESOLN_SCALED_KHTH = True ! [Boolean] default = False - ! If true, the interface depth diffusivity is scaled away when the first - ! baroclinic deformation radius is well resolved. -KHTH_USE_EBT_STRUCT = True ! [Boolean] default = False - ! If true, uses the equivalent barotropic structure as the vertical structure of - ! thickness diffusivity. -KHTR_SLOPE_CFF = 0.25 ! [nondim] default = 0.0 - ! The nondimensional coefficient in the Visbeck formula for the epipycnal tracer - ! diffusivity -USE_STORED_SLOPES = True ! [Boolean] default = False - ! If true, the isopycnal slopes are calculated once and stored for re-use. This - ! uses more memory but avoids calling the equation of state more times than - ! should be necessary. -KH_RES_FN_POWER = 100 ! [nondim] default = 2 - ! The power of dx/Ld in the Kh resolution function. Any positive integer may be - ! used, although even integers are more efficient to calculate. Setting this - ! greater than 100 results in a step-function being used. -INTERPOLATE_RES_FN = False ! [Boolean] default = True - ! If true, interpolate the resolution function to the velocity points from the - ! thickness points; otherwise interpolate the wave speed and calculate the - ! resolution function independently at each point. -GILL_EQUATORIAL_LD = True ! [Boolean] default = False - ! If true, uses Gill's definition of the baroclinic equatorial deformation - ! radius, otherwise, if false, use Pedlosky's definition. These definitions - ! differ by a factor of 2 in front of the beta term in the denominator. Gill's - ! is the more appropriate definition. -INTERNAL_WAVE_SPEED_BETTER_EST = False ! [Boolean] default = True - ! If true, use a more robust estimate of the first mode wave speed as the - ! starting point for iterations. - -! === module MOM_set_visc === -CHANNEL_DRAG = True ! [Boolean] default = False - ! If true, the bottom drag is exerted directly on each layer proportional to the - ! fraction of the bottom it overlies. -PRANDTL_TURB = 1.25 ! [nondim] default = 1.0 - ! The turbulent Prandtl number applied to shear instability. -HBBL = 10.0 ! [m] - ! The thickness of a bottom boundary layer with a viscosity of KVBBL if - ! BOTTOMDRAGLAW is not defined, or the thickness over which near-bottom - ! velocities are averaged for the drag law if BOTTOMDRAGLAW is defined but - ! LINEAR_DRAG is not. -DRAG_BG_VEL = 0.1 ! [m s-1] default = 0.0 - ! DRAG_BG_VEL is either the assumed bottom velocity (with LINEAR_DRAG) or an - ! unresolved velocity that is combined with the resolved velocity to estimate - ! the velocity magnitude. DRAG_BG_VEL is only used when BOTTOMDRAGLAW is - ! defined. -BBL_USE_EOS = True ! [Boolean] default = False - ! If true, use the equation of state in determining the properties of the bottom - ! boundary layer. Otherwise use the layer target potential densities. -BBL_THICK_MIN = 0.1 ! [m] default = 0.0 - ! The minimum bottom boundary layer thickness that can be used with - ! BOTTOMDRAGLAW. This might be Kv/(cdrag*drag_bg_vel) to give Kv as the minimum - ! near-bottom viscosity. -KV = 1.0E-04 ! [m2 s-1] - ! The background kinematic viscosity in the interior. The molecular value, ~1e-6 - ! m2 s-1, may be used. -KV_BBL_MIN = 0.0 ! [m2 s-1] default = 1.0E-04 - ! The minimum viscosities in the bottom boundary layer. -KV_TBL_MIN = 0.0 ! [m2 s-1] default = 1.0E-04 - ! The minimum viscosities in the top boundary layer. - -! === module MOM_thickness_diffuse === -KHTH_MAX_CFL = 0.1 ! [nondimensional] default = 0.8 - ! The maximum value of the local diffusive CFL ratio that is permitted for the - ! thickness diffusivity. 1.0 is the marginally unstable value in a pure layered - ! model, but much smaller numbers (e.g. 0.1) seem to work better for ALE-based - ! models. -KHTH_USE_FGNV_STREAMFUNCTION = True ! [Boolean] default = False - ! If true, use the streamfunction formulation of Ferrari et al., 2010, which - ! effectively emphasizes graver vertical modes by smoothing in the vertical. -FGNV_FILTER_SCALE = 0.1 ! [nondim] default = 1.0 - ! A coefficient scaling the vertical smoothing term in the Ferrari et al., 2010, - ! streamfunction formulation. -USE_GM_WORK_BUG = True ! [Boolean] default = True - ! If true, compute the top-layer work tendency on the u-grid with the incorrect - ! sign, for legacy reproducibility. - -! === module MOM_continuity === - -! === module MOM_continuity_PPM === -ETA_TOLERANCE = 1.0E-06 ! [m] default = 3.75E-09 - ! The tolerance for the differences between the barotropic and baroclinic - ! estimates of the sea surface height due to the fluxes through each face. The - ! total tolerance for SSH is 4 times this value. The default is - ! 0.5*NK*ANGSTROM, and this should not be set less than about - ! 10^-15*MAXIMUM_DEPTH. -ETA_TOLERANCE_AUX = 0.001 ! [m] default = 1.0E-06 - ! The tolerance for free-surface height discrepancies between the barotropic - ! solution and the sum of the layer thicknesses when calculating the auxiliary - ! corrected velocities. By default, this is the same as ETA_TOLERANCE, but can - ! be made larger for efficiency. - -! === module MOM_CoriolisAdv === -CORIOLIS_SCHEME = "SADOURNY75_ENSTRO" ! default = "SADOURNY75_ENERGY" - ! CORIOLIS_SCHEME selects the discretization for the Coriolis terms. Valid - ! values are: - ! SADOURNY75_ENERGY - Sadourny, 1975; energy cons. - ! ARAKAWA_HSU90 - Arakawa & Hsu, 1990 - ! SADOURNY75_ENSTRO - Sadourny, 1975; enstrophy cons. - ! ARAKAWA_LAMB81 - Arakawa & Lamb, 1981; En. + Enst. - ! ARAKAWA_LAMB_BLEND - A blend of Arakawa & Lamb with - ! Arakawa & Hsu and Sadourny energy -BOUND_CORIOLIS = True ! [Boolean] default = False - ! If true, the Coriolis terms at u-points are bounded by the four estimates of - ! (f+rv)v from the four neighboring v-points, and similarly at v-points. This - ! option would have no effect on the SADOURNY Coriolis scheme if it were - ! possible to use centered difference thickness fluxes. - -! === module MOM_PressureForce === - -! === module MOM_PressureForce_AFV === -MASS_WEIGHT_IN_PRESSURE_GRADIENT = True ! [Boolean] default = False - ! If true, use mass weighting when interpolating T/S for integrals near the - ! bathymetry in AFV pressure gradient calculations. - -! === module MOM_hor_visc === -LAPLACIAN = True ! [Boolean] default = False - ! If true, use a Laplacian horizontal viscosity. -KH_VEL_SCALE = 0.01 ! [m s-1] default = 0.0 - ! The velocity scale which is multiplied by the grid spacing to calculate the - ! Laplacian viscosity. The final viscosity is the largest of this scaled - ! viscosity, the Smagorinsky and Leith viscosities, and KH. -KH_SIN_LAT = 2000.0 ! [m2 s-1] default = 0.0 - ! The amplitude of a latitudinally-dependent background viscosity of the form - ! KH_SIN_LAT*(SIN(LAT)**KH_PWR_OF_SINE). -SMAGORINSKY_KH = True ! [Boolean] default = False - ! If true, use a Smagorinsky nonlinear eddy viscosity. -SMAG_LAP_CONST = 0.15 ! [nondim] default = 0.0 - ! The nondimensional Laplacian Smagorinsky constant, often 0.15. -AH_VEL_SCALE = 0.01 ! [m s-1] default = 0.0 - ! The velocity scale which is multiplied by the cube of the grid spacing to - ! calculate the biharmonic viscosity. The final viscosity is the largest of this - ! scaled viscosity, the Smagorinsky and Leith viscosities, and AH. -SMAGORINSKY_AH = True ! [Boolean] default = False - ! If true, use a biharmonic Smagorinsky nonlinear eddy viscosity. -SMAG_BI_CONST = 0.06 ! [nondim] default = 0.0 - ! The nondimensional biharmonic Smagorinsky constant, typically 0.015 - 0.06. -USE_LAND_MASK_FOR_HVISC = False ! [Boolean] default = False - ! If true, use Use the land mask for the computation of thicknesses at velocity - ! locations. This eliminates the dependence on arbitrary values over land or - ! outside of the domain. Default is False in order to maintain answers with - ! legacy experiments but should be changed to True for new experiments. - -! === module MOM_vert_friction === -HMIX_FIXED = 0.5 ! [m] - ! The prescribed depth over which the near-surface viscosity and diffusivity are - ! elevated when the bulk mixed layer is not used. -KVML = 1.0E-04 ! [m2 s-1] default = 1.0E-04 - ! The kinematic viscosity in the mixed layer. A typical value is ~1e-2 m2 s-1. - ! KVML is not used if BULKMIXEDLAYER is true. The default is set by KV. -MAXVEL = 6.0 ! [m s-1] default = 3.0E+08 - ! The maximum velocity allowed before the velocity components are truncated. - -! === module MOM_PointAccel === -U_TRUNC_FILE = "U_velocity_truncations" ! default = "" - ! The absolute path to a file into which the accelerations leading to zonal - ! velocity truncations are written. Undefine this for efficiency if this - ! diagnostic is not needed. -V_TRUNC_FILE = "V_velocity_truncations" ! default = "" - ! The absolute path to a file into which the accelerations leading to meridional - ! velocity truncations are written. Undefine this for efficiency if this - ! diagnostic is not needed. - -! === module MOM_barotropic === -BOUND_BT_CORRECTION = True ! [Boolean] default = False - ! If true, the corrective pseudo mass-fluxes into the barotropic solver are - ! limited to values that require less than maxCFL_BT_cont to be accommodated. -BT_PROJECT_VELOCITY = True ! [Boolean] default = False - ! If true, step the barotropic velocity first and project out the velocity - ! tendency by 1+BEBT when calculating the transport. The default (false) is to - ! use a predictor continuity step to find the pressure field, and then to do a - ! corrector continuity step using a weighted average of the old and new - ! velocities, with weights of (1-BEBT) and BEBT. -DYNAMIC_SURFACE_PRESSURE = True ! [Boolean] default = False - ! If true, add a dynamic pressure due to a viscous ice shelf, for instance. -BEBT = 0.2 ! [nondim] default = 0.1 - ! BEBT determines whether the barotropic time stepping uses the forward-backward - ! time-stepping scheme or a backward Euler scheme. BEBT is valid in the range - ! from 0 (for a forward-backward treatment of nonrotating gravity waves) to 1 - ! (for a backward Euler treatment). In practice, BEBT must be greater than about - ! 0.05. -DTBT = -0.9 ! [s or nondim] default = -0.98 - ! The barotropic time step, in s. DTBT is only used with the split explicit time - ! stepping. To set the time step automatically based the maximum stable value - ! use 0, or a negative value gives the fraction of the stable value. Setting - ! DTBT to 0 is the same as setting it to -0.98. The value of DTBT that will - ! actually be used is an integer fraction of DT, rounding down. -BT_USE_OLD_CORIOLIS_BRACKET_BUG = True ! [Boolean] default = False - ! If True, use an order of operations that is not bitwise rotationally symmetric - ! in the meridional Coriolis term of the barotropic solver. - -! === module MOM_mixed_layer_restrat === -MIXEDLAYER_RESTRAT = True ! [Boolean] default = False - ! If true, a density-gradient dependent re-stratifying flow is imposed in the - ! mixed layer. Can be used in ALE mode without restriction but in layer mode can - ! only be used if BULKMIXEDLAYER is true. -FOX_KEMPER_ML_RESTRAT_COEF = 1.0 ! [nondim] default = 0.0 - ! A nondimensional coefficient that is proportional to the ratio of the - ! deformation radius to the dominant lengthscale of the submesoscale mixed layer - ! instabilities, times the minimum of the ratio of the mesoscale eddy kinetic - ! energy to the large-scale geostrophic kinetic energy or 1 plus the square of - ! the grid spacing over the deformation radius, as detailed by Fox-Kemper et al. - ! (2010) -MLE_FRONT_LENGTH = 200.0 ! [m] default = 0.0 - ! If non-zero, is the frontal-length scale used to calculate the upscaling of - ! buoyancy gradients that is otherwise represented by the parameter - ! FOX_KEMPER_ML_RESTRAT_COEF. If MLE_FRONT_LENGTH is non-zero, it is recommended - ! to set FOX_KEMPER_ML_RESTRAT_COEF=1.0. -MLE_USE_PBL_MLD = True ! [Boolean] default = False - ! If true, the MLE parameterization will use the mixed-layer depth provided by - ! the active PBL parameterization. If false, MLE will estimate a MLD based on a - ! density difference with the surface using the parameter MLE_DENSITY_DIFF. -MLE_MLD_DECAY_TIME = 2.592E+06 ! [s] default = 0.0 - ! The time-scale for a running-mean filter applied to the mixed-layer depth used - ! in the MLE restratification parameterization. When the MLD deepens below the - ! current running-mean the running-mean is instantaneously set to the current - ! MLD. - -! === module MOM_diabatic_driver === -! The following parameters are used for diabatic processes. -ENERGETICS_SFC_PBL = True ! [Boolean] default = False - ! If true, use an implied energetics planetary boundary layer scheme to - ! determine the diffusivity and viscosity in the surface boundary layer. -EPBL_IS_ADDITIVE = False ! [Boolean] default = True - ! If true, the diffusivity from ePBL is added to all other diffusivities. - ! Otherwise, the larger of kappa-shear and ePBL diffusivities are used. - -! === module MOM_CVMix_KPP === -! This is the MOM wrapper to CVMix:KPP -! See http://cvmix.github.io/ - -! === module MOM_tidal_mixing === -! Vertical Tidal Mixing Parameterization -INT_TIDE_DISSIPATION = True ! [Boolean] default = False - ! If true, use an internal tidal dissipation scheme to drive diapycnal mixing, - ! along the lines of St. Laurent et al. (2002) and Simmons et al. (2004). -INT_TIDE_PROFILE = "POLZIN_09" ! default = "STLAURENT_02" - ! INT_TIDE_PROFILE selects the vertical profile of energy dissipation with - ! INT_TIDE_DISSIPATION. Valid values are: - ! STLAURENT_02 - Use the St. Laurent et al exponential - ! decay profile. - ! POLZIN_09 - Use the Polzin WKB-stretched algebraic - ! decay profile. -INT_TIDE_DECAY_SCALE = 300.3003003003003 ! [m] default = 500.0 - ! The decay scale away from the bottom for tidal TKE with the new coding when - ! INT_TIDE_DISSIPATION is used. -KAPPA_ITIDES = 6.28319E-04 ! [m-1] default = 6.283185307179586E-04 - ! A topographic wavenumber used with INT_TIDE_DISSIPATION. The default is 2pi/10 - ! km, as in St.Laurent et al. 2002. -KAPPA_H2_FACTOR = 0.84 ! [nondim] default = 1.0 - ! A scaling factor for the roughness amplitude with INT_TIDE_DISSIPATION. -TKE_ITIDE_MAX = 0.1 ! [W m-2] default = 1000.0 - ! The maximum internal tide energy source available to mix above the bottom - ! boundary layer with INT_TIDE_DISSIPATION. -READ_TIDEAMP = True ! [Boolean] default = False - ! If true, read a file (given by TIDEAMP_FILE) containing the tidal amplitude - ! with INT_TIDE_DISSIPATION. -TIDEAMP_FILE = "tidal_amplitude.nc" ! default = "tideamp.nc" - ! The path to the file containing the spatially varying tidal amplitudes with - ! INT_TIDE_DISSIPATION. -H2_FILE = "ocean_topog.nc" ! - ! The path to the file containing the sub-grid-scale topographic roughness - ! amplitude with INT_TIDE_DISSIPATION. - -! === module MOM_CVMix_conv === -! Parameterization of enhanced mixing due to convection via CVMix - -! === module MOM_geothermal === -GEOTHERMAL_SCALE = 1.0 ! [W m-2 or various] default = 0.0 - ! The constant geothermal heat flux, a rescaling factor for the heat flux read - ! from GEOTHERMAL_FILE, or 0 to disable the geothermal heating. -GEOTHERMAL_FILE = "geothermal_davies2013_v1.nc" ! default = "" - ! The file from which the geothermal heating is to be read, or blank to use a - ! constant heating rate. -GEOTHERMAL_VARNAME = "geothermal_hf" ! default = "geo_heat" - ! The name of the geothermal heating variable in GEOTHERMAL_FILE. - -! === module MOM_set_diffusivity === -BBL_MIXING_AS_MAX = False ! [Boolean] default = True - ! If true, take the maximum of the diffusivity from the BBL mixing and the other - ! diffusivities. Otherwise, diffusivity from the BBL_mixing is simply added. -USE_LOTW_BBL_DIFFUSIVITY = True ! [Boolean] default = False - ! If true, uses a simple, imprecise but non-coordinate dependent, model of BBL - ! mixing diffusivity based on Law of the Wall. Otherwise, uses the original BBL - ! scheme. -SIMPLE_TKE_TO_KD = True ! [Boolean] default = False - ! If true, uses a simple estimate of Kd/TKE that will work for arbitrary - ! vertical coordinates. If false, calculates Kd/TKE and bounds based on exact - ! energetics for an isopycnal layer-formulation. - -! === module MOM_bkgnd_mixing === -! Adding static vertical background mixing coefficients -KD = 1.5E-05 ! [m2 s-1] - ! The background diapycnal diffusivity of density in the interior. Zero or the - ! molecular value, ~1e-7 m2 s-1, may be used. -KD_MIN = 2.0E-06 ! [m2 s-1] default = 1.5E-07 - ! The minimum diapycnal diffusivity. -HENYEY_IGW_BACKGROUND = True ! [Boolean] default = False - ! If true, use a latitude-dependent scaling for the near surface background - ! diffusivity, as described in Harrison & Hallberg, JPO 2008. -KD_MAX = 0.1 ! [m2 s-1] default = -1.0 - ! The maximum permitted increment for the diapycnal diffusivity from TKE-based - ! parameterizations, or a negative value for no limit. - -! === module MOM_kappa_shear === -! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 -USE_JACKSON_PARAM = True ! [Boolean] default = False - ! If true, use the Jackson-Hallberg-Legg (JPO 2008) shear mixing - ! parameterization. -MAX_RINO_IT = 25 ! [nondim] default = 50 - ! The maximum number of iterations that may be used to estimate the Richardson - ! number driven mixing. -VERTEX_SHEAR = False ! [Boolean] default = False - ! If true, do the calculations of the shear-driven mixing - ! at the cell vertices (i.e., the vorticity points). -KAPPA_SHEAR_ITER_BUG = True ! [Boolean] default = True - ! If true, use an older, dimensionally inconsistent estimate of the derivative - ! of diffusivity with energy in the Newton's method iteration. The bug causes - ! undercorrections when dz > 1 m. -KAPPA_SHEAR_ALL_LAYER_TKE_BUG = True ! [Boolean] default = True - ! If true, report back the latest estimate of TKE instead of the time average - ! TKE when there is mass in all layers. Otherwise always report the time - ! averaged TKE, as is currently done when there are some massless layers. - -! === module MOM_CVMix_shear === -! Parameterization of shear-driven turbulence via CVMix (various options) - -! === module MOM_CVMix_ddiff === -! Parameterization of mixing due to double diffusion processes via CVMix - -! === module MOM_diabatic_aux === -! The following parameters are used for auxiliary diabatic processes. -PRESSURE_DEPENDENT_FRAZIL = False ! [Boolean] default = False - ! If true, use a pressure dependent freezing temperature when making frazil. The - ! default is false, which will be faster but is inappropriate with ice-shelf - ! cavities. -VAR_PEN_SW = True ! [Boolean] default = False - ! If true, use one of the CHL_A schemes specified by OPACITY_SCHEME to determine - ! the e-folding depth of incoming short wave radiation. -CHL_FILE = @[CHLCLIM] ! - ! CHL_FILE is the file containing chl_a concentrations in the variable CHL_A. It - ! is used when VAR_PEN_SW and CHL_FROM_FILE are true. -CHL_VARNAME = "chlor_a" ! default = "CHL_A" - ! Name of CHL_A variable in CHL_FILE. - -! === module MOM_energetic_PBL === -ML_OMEGA_FRAC = 0.001 ! [nondim] default = 0.0 - ! When setting the decay scale for turbulence, use this fraction of the absolute - ! rotation rate blended with the local value of f, as sqrt((1-of)*f^2 + - ! of*4*omega^2). -TKE_DECAY = 0.01 ! [nondim] default = 2.5 - ! TKE_DECAY relates the vertical rate of decay of the TKE available for - ! mechanical entrainment to the natural Ekman depth. -EPBL_MSTAR_SCHEME = "OM4" ! default = "CONSTANT" - ! EPBL_MSTAR_SCHEME selects the method for setting mstar. Valid values are: - ! CONSTANT - Use a fixed mstar given by MSTAR - ! OM4 - Use L_Ekman/L_Obukhov in the sabilizing limit, as in OM4 - ! REICHL_H18 - Use the scheme documented in Reichl & Hallberg, 2018. -MSTAR_CAP = 10.0 ! [nondim] default = -1.0 - ! If this value is positive, it sets the maximum value of mstar allowed in ePBL. - ! (This is not used if EPBL_MSTAR_SCHEME = CONSTANT). -MSTAR2_COEF1 = 0.29 ! [nondim] default = 0.3 - ! Coefficient in computing mstar when rotation and stabilizing effects are both - ! important (used if EPBL_MSTAR_SCHEME = OM4). -MSTAR2_COEF2 = 0.152 ! [nondim] default = 0.085 - ! Coefficient in computing mstar when only rotation limits the total mixing - ! (used if EPBL_MSTAR_SCHEME = OM4) -EPBL_MLD_BISECTION = True ! [Boolean] default = False - ! If true, use bisection with the iterative determination of the self-consistent - ! mixed layer depth. Otherwise use the false position after a maximum and - ! minimum bound have been evaluated and the returned value or bisection before - ! this. -NSTAR = 0.06 ! [nondim] default = 0.2 - ! The portion of the buoyant potential energy imparted by surface fluxes that is - ! available to drive entrainment at the base of mixed layer when that energy is - ! positive. -MSTAR_CONV_ADJ = 0.667 ! [nondim] default = 0.0 - ! Coefficient used for reducing mstar during convection due to reduction of - ! stable density gradient. -USE_MLD_ITERATION = True ! [Boolean] default = False - ! A logical that specifies whether or not to use the distance to the bottom of - ! the actively turbulent boundary layer to help set the EPBL length scale. -EPBL_TRANSITION_SCALE = 0.01 ! [nondim] default = 0.1 - ! A scale for the mixing length in the transition layer at the edge of the - ! boundary layer as a fraction of the boundary layer thickness. -MIX_LEN_EXPONENT = 1.0 ! [nondim] default = 2.0 - ! The exponent applied to the ratio of the distance to the MLD and the MLD depth - ! which determines the shape of the mixing length. This is only used if - ! USE_MLD_ITERATION is True. -USE_LA_LI2016 = @[MOM6_USE_LI2016] ! [nondim] default = False - ! A logical to use the Li et al. 2016 (submitted) formula to determine the - ! Langmuir number. -USE_WAVES = @[MOM6_USE_WAVES] ! [Boolean] default = False - ! If true, enables surface wave modules. -WAVE_METHOD = "SURFACE_BANDS" ! default = "EMPTY" - ! Choice of wave method, valid options include: - ! TEST_PROFILE - Prescribed from surface Stokes drift - ! and a decay wavelength. - ! SURFACE_BANDS - Computed from multiple surface values - ! and decay wavelengths. - ! DHH85 - Uses Donelan et al. 1985 empirical - ! wave spectrum with prescribed values. - ! LF17 - Infers Stokes drift profile from wind - ! speed following Li and Fox-Kemper 2017. -SURFBAND_SOURCE = "COUPLER" ! default = "EMPTY" - ! Choice of SURFACE_BANDS data mode, valid options include: - ! DATAOVERRIDE - Read from NetCDF using FMS DataOverride. - ! COUPLER - Look for variables from coupler pass - ! INPUT - Testing with fixed values. -STK_BAND_COUPLER = 3 ! default = 1 - ! STK_BAND_COUPLER is the number of Stokes drift bands in the coupler. This has - ! to be consistent with the number of Stokes drift bands in WW3, or the model - ! will fail. -SURFBAND_WAVENUMBERS = 0.04, 0.11, 0.3305 ! [rad/m] default = 0.12566 - ! Central wavenumbers for surface Stokes drift bands. -EPBL_LANGMUIR_SCHEME = "ADDITIVE" ! default = "NONE" - ! EPBL_LANGMUIR_SCHEME selects the method for including Langmuir turbulence. - ! Valid values are: - ! NONE - Do not do any extra mixing due to Langmuir turbulence - ! RESCALE - Use a multiplicative rescaling of mstar to account for Langmuir - ! turbulence - ! ADDITIVE - Add a Langmuir turblence contribution to mstar to other - ! contributions -LT_ENHANCE_COEF = 0.044 ! [nondim] default = 0.447 - ! Coefficient for Langmuir enhancement of mstar -LT_ENHANCE_EXP = -1.5 ! [nondim] default = -1.33 - ! Exponent for Langmuir enhancementt of mstar -LT_MOD_LAC1 = 0.0 ! [nondim] default = -0.87 - ! Coefficient for modification of Langmuir number due to MLD approaching Ekman - ! depth. -LT_MOD_LAC4 = 0.0 ! [nondim] default = 0.95 - ! Coefficient for modification of Langmuir number due to ratio of Ekman to - ! stable Obukhov depth. -LT_MOD_LAC5 = 0.22 ! [nondim] default = 0.95 - ! Coefficient for modification of Langmuir number due to ratio of Ekman to - ! unstable Obukhov depth. - -! === module MOM_regularize_layers === - -! === module MOM_opacity === -PEN_SW_NBANDS = 3 ! default = 1 - ! The number of bands of penetrating shortwave radiation. - -! === module MOM_tracer_advect === -TRACER_ADVECTION_SCHEME = "PPM:H3" ! default = "PLM" - ! The horizontal transport scheme for tracers: - ! PLM - Piecewise Linear Method - ! PPM:H3 - Piecewise Parabolic Method (Huyhn 3rd order) - ! PPM - Piecewise Parabolic Method (Colella-Woodward) - -! === module MOM_tracer_hor_diff === -KHTR = 50.0 ! [m2 s-1] default = 0.0 - ! The background along-isopycnal tracer diffusivity. -CHECK_DIFFUSIVE_CFL = True ! [Boolean] default = False - ! If true, use enough iterations the diffusion to ensure that the diffusive - ! equivalent of the CFL limit is not violated. If false, always use the greater - ! of 1 or MAX_TR_DIFFUSION_CFL iteration. -MAX_TR_DIFFUSION_CFL = 2.0 ! [nondim] default = -1.0 - ! If positive, locally limit the along-isopycnal tracer diffusivity to keep the - ! diffusive CFL locally at or below this value. The number of diffusive - ! iterations is often this value or the next greater integer. - -! === module MOM_neutral_diffusion === -! This module implements neutral diffusion of tracers -USE_NEUTRAL_DIFFUSION = True ! [Boolean] default = False - ! If true, enables the neutral diffusion module. - -! === module ocean_model_init === -RESTART_CHECKSUMS_REQUIRED = False - -! === module MOM_oda_incupd === -ODA_INCUPD = @[ODA_INCUPD] ! [Boolean] default = False - ! If true, oda incremental updates will be applied - ! everywhere in the domain. -ODA_INCUPD_FILE = "mom6_increment.nc" ! The name of the file with the T,S,h increments. - -ODA_TEMPINC_VAR = "Temp" ! default = "ptemp_inc" - ! The name of the potential temperature inc. variable in - ! ODA_INCUPD_FILE. -ODA_SALTINC_VAR = "Salt" ! default = "sal_inc" - ! The name of the salinity inc. variable in - ! ODA_INCUPD_FILE. -ODA_THK_VAR = "h" ! default = "h" - ! The name of the int. depth inc. variable in - ! ODA_INCUPD_FILE. -ODA_INCUPD_UV = false ! -!ODA_UINC_VAR = "u" ! default = "u_inc" - ! The name of the zonal vel. inc. variable in - ! ODA_INCUPD_UV_FILE. -!ODA_VINC_VAR = "v" ! default = "v_inc" - ! The name of the meridional vel. inc. variable in - ! ODA_INCUPD_UV_FILE. -ODA_INCUPD_NHOURS = @[ODA_INCUPD_NHOURS] ! default=3.0 - -! === module MOM_lateral_boundary_diffusion === -! This module implements lateral diffusion of tracers near boundaries - -! === module MOM_sum_output === -MAXTRUNC = 100000 ! [truncations save_interval-1] default = 0 - ! The run will be stopped, and the day set to a very large value if the velocity - ! is truncated more than MAXTRUNC times between energy saves. Set MAXTRUNC to 0 - ! to stop if there is any truncation of velocities. -ENERGYSAVEDAYS = 1.0 ! [days] default = 1.0 - ! The interval in units of TIMEUNIT between saves of the energies of the run and - ! other globally summed diagnostics. -ENERGYSAVEDAYS_GEOMETRIC = 0.25 ! [days] default = 0.0 - ! The starting interval in units of TIMEUNIT for the first call to save the - ! energies of the run and other globally summed diagnostics. The interval - ! increases by a factor of 2. after each call to write_energy. - -! === module ocean_model_init === - -! === module MOM_surface_forcing === -OCEAN_SURFACE_STAGGER = "A" ! default = "C" - ! A case-insensitive character string to indicate the - ! staggering of the surface velocity field that is - ! returned to the coupler. Valid values include - ! 'A', 'B', or 'C'. - -MAX_P_SURF = 0.0 ! [Pa] default = -1.0 - ! The maximum surface pressure that can be exerted by the atmosphere and - ! floating sea-ice or ice shelves. This is needed because the FMS coupling - ! structure does not limit the water that can be frozen out of the ocean and the - ! ice-ocean heat fluxes are treated explicitly. No limit is applied if a - ! negative value is used. -WIND_STAGGER = "A" ! default = "C" - ! A case-insensitive character string to indicate the - ! staggering of the input wind stress field. Valid - ! values are 'A', 'B', or 'C'. -CD_TIDES = 0.0018 ! [nondim] default = 1.0E-04 - ! The drag coefficient that applies to the tides. -GUST_CONST = 0.0 ! [Pa] default = 0.02 - ! The background gustiness in the winds. -FIX_USTAR_GUSTLESS_BUG = False ! [Boolean] default = False - ! If true correct a bug in the time-averaging of the gustless wind friction - ! velocity -USE_RIGID_SEA_ICE = True ! [Boolean] default = False - ! If true, sea-ice is rigid enough to exert a nonhydrostatic pressure that - ! resist vertical motion. -SEA_ICE_RIGID_MASS = 100.0 ! [kg m-2] default = 1000.0 - ! The mass of sea-ice per unit area at which the sea-ice starts to exhibit - ! rigidity -LIQUID_RUNOFF_FROM_DATA = @[MOM6_RIVER_RUNOFF] ! [Boolean] default = False - ! If true, allows liquid river runoff to be specified via - ! the data_table using the component name 'OCN'. -! === module ocean_stochastics === -DO_SPPT = @[DO_OCN_SPPT] ! [Boolean] default = False - ! If true perturb the diabatic tendencies in MOM_diabatic_driver -PERT_EPBL = @[PERT_EPBL] ! [Boolean] default = False - ! If true perturb the KE dissipation and destruction in MOM_energetic_PBL -! === module MOM_restart === - -! === module MOM_file_parser === diff --git a/parm/ufs/mom6/MOM_input_template_100 b/parm/ufs/mom6/MOM_input_template_100 deleted file mode 100644 index f26d6e4bfb..0000000000 --- a/parm/ufs/mom6/MOM_input_template_100 +++ /dev/null @@ -1,866 +0,0 @@ -! This file was written by the model and records all non-layout or debugging parameters used at run-time. -! === module MOM === - -! === module MOM_unit_scaling === -! Parameters for doing unit scaling of variables. -USE_REGRIDDING = True ! [Boolean] default = False - ! If True, use the ALE algorithm (regridding/remapping). If False, use the - ! layered isopycnal algorithm. -THICKNESSDIFFUSE = True ! [Boolean] default = False - ! If true, interface heights are diffused with a coefficient of KHTH. -THICKNESSDIFFUSE_FIRST = True ! [Boolean] default = False - ! If true, do thickness diffusion before dynamics. This is only used if - ! THICKNESSDIFFUSE is true. -DT = @[DT_DYNAM_MOM6] ! [s] - ! The (baroclinic) dynamics time step. The time-step that is actually used will - ! be an integer fraction of the forcing time-step (DT_FORCING in ocean-only mode - ! or the coupling timestep in coupled mode.) -DT_THERM = @[DT_THERM_MOM6] ! [s] default = 1800.0 - ! The thermodynamic and tracer advection time step. Ideally DT_THERM should be - ! an integer multiple of DT and less than the forcing or coupling time-step, - ! unless THERMO_SPANS_COUPLING is true, in which case DT_THERM can be an integer - ! multiple of the coupling timestep. By default DT_THERM is set to DT. -THERMO_SPANS_COUPLING = @[MOM6_THERMO_SPAN] ! [Boolean] default = False - ! If true, the MOM will take thermodynamic and tracer timesteps that can be - ! longer than the coupling timestep. The actual thermodynamic timestep that is - ! used in this case is the largest integer multiple of the coupling timestep - ! that is less than or equal to DT_THERM. -HFREEZE = 20.0 ! [m] default = -1.0 - ! If HFREEZE > 0, melt potential will be computed. The actual depth - ! over which melt potential is computed will be min(HFREEZE, OBLD) - ! where OBLD is the boundary layer depth. If HFREEZE <= 0 (default) - ! melt potential will not be computed. -DTBT_RESET_PERIOD = -1.0 ! [s] default = 7200.0 - ! The period between recalculations of DTBT (if DTBT <= 0). If DTBT_RESET_PERIOD - ! is negative, DTBT is set based only on information available at - ! initialization. If 0, DTBT will be set every dynamics time step. The default - ! is set by DT_THERM. This is only used if SPLIT is true. -FRAZIL = True ! [Boolean] default = False - ! If true, water freezes if it gets too cold, and the accumulated heat deficit - ! is returned in the surface state. FRAZIL is only used if - ! ENABLE_THERMODYNAMICS is true. -BOUND_SALINITY = True ! [Boolean] default = False - ! If true, limit salinity to being positive. (The sea-ice model may ask for more - ! salt than is available and drive the salinity negative otherwise.) -MIN_SALINITY = 0.01 ! [PPT] default = 0.0 - ! The minimum value of salinity when BOUND_SALINITY=True. -C_P = 3925.0 ! [J kg-1 K-1] default = 3991.86795711963 - ! The heat capacity of sea water, approximated as a constant. This is only used - ! if ENABLE_THERMODYNAMICS is true. The default value is from the TEOS-10 - ! definition of conservative temperature. -USE_PSURF_IN_EOS = False ! [Boolean] default = True - ! If true, always include the surface pressure contributions in equation of - ! state calculations. -CHECK_BAD_SURFACE_VALS = True ! [Boolean] default = False - ! If true, check the surface state for ridiculous values. -BAD_VAL_SSH_MAX = 50.0 ! [m] default = 20.0 - ! The value of SSH above which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_SSS_MAX = 75.0 ! [PPT] default = 45.0 - ! The value of SSS above which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_SST_MAX = 55.0 ! [deg C] default = 45.0 - ! The value of SST above which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -BAD_VAL_SST_MIN = -3.0 ! [deg C] default = -2.1 - ! The value of SST below which a bad value message is triggered, if - ! CHECK_BAD_SURFACE_VALS is true. -DEFAULT_2018_ANSWERS = True ! [Boolean] default = False - ! This sets the default value for the various _2018_ANSWERS parameters. -WRITE_GEOM = 2 ! default = 1 - ! If =0, never write the geometry and vertical grid files. If =1, write the - ! geometry and vertical grid files only for a new simulation. If =2, always - ! write the geometry and vertical grid files. Other values are invalid. -SAVE_INITIAL_CONDS = False ! [Boolean] default = False - ! If true, write the initial conditions to a file given by IC_OUTPUT_FILE. - -! === module MOM_domains === -TRIPOLAR_N = True ! [Boolean] default = False - ! Use tripolar connectivity at the northern edge of the domain. With - ! TRIPOLAR_N, NIGLOBAL must be even. -NIGLOBAL = @[NX_GLB] ! - ! The total number of thickness grid points in the x-direction in the physical - ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. -NJGLOBAL = @[NY_GLB] ! - ! The total number of thickness grid points in the y-direction in the physical - ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. - -! === module MOM_hor_index === -! Sets the horizontal array index types. - -! === module MOM_fixed_initialization === -INPUTDIR = "INPUT" ! default = "." - ! The directory in which input files are found. - -! === module MOM_grid_init === -GRID_CONFIG = "mosaic" ! - ! A character string that determines the method for defining the horizontal - ! grid. Current options are: - ! mosaic - read the grid from a mosaic (supergrid) - ! file set by GRID_FILE. - ! cartesian - use a (flat) Cartesian grid. - ! spherical - use a simple spherical grid. - ! mercator - use a Mercator spherical grid. -GRID_FILE = "ocean_hgrid.nc" ! - ! Name of the file from which to read horizontal grid data. -GRID_ROTATION_ANGLE_BUGS = False ! [Boolean] default = True - ! If true, use an older algorithm to calculate the sine and - ! cosines needed rotate between grid-oriented directions and - ! true north and east. Differences arise at the tripolar fold -USE_TRIPOLAR_GEOLONB_BUG = False ! [Boolean] default = True - ! If true, use older code that incorrectly sets the longitude in some points - ! along the tripolar fold to be off by 360 degrees. -TOPO_CONFIG = "file" ! - ! This specifies how bathymetry is specified: - ! file - read bathymetric information from the file - ! specified by (TOPO_FILE). - ! flat - flat bottom set to MAXIMUM_DEPTH. - ! bowl - an analytically specified bowl-shaped basin - ! ranging between MAXIMUM_DEPTH and MINIMUM_DEPTH. - ! spoon - a similar shape to 'bowl', but with an vertical - ! wall at the southern face. - ! halfpipe - a zonally uniform channel with a half-sine - ! profile in the meridional direction. - ! bbuilder - build topography from list of functions. - ! benchmark - use the benchmark test case topography. - ! Neverworld - use the Neverworld test case topography. - ! DOME - use a slope and channel configuration for the - ! DOME sill-overflow test case. - ! ISOMIP - use a slope and channel configuration for the - ! ISOMIP test case. - ! DOME2D - use a shelf and slope configuration for the - ! DOME2D gravity current/overflow test case. - ! Kelvin - flat but with rotated land mask. - ! seamount - Gaussian bump for spontaneous motion test case. - ! dumbbell - Sloshing channel with reservoirs on both ends. - ! shelfwave - exponential slope for shelfwave test case. - ! Phillips - ACC-like idealized topography used in the Phillips config. - ! dense - Denmark Strait-like dense water formation and overflow. - ! USER - call a user modified routine. -TOPO_EDITS_FILE = "@[TOPOEDITS]" ! default = "" - ! The file from which to read a list of i,j,z topography overrides. -ALLOW_LANDMASK_CHANGES = @[MOM6_ALLOW_LANDMASK_CHANGES] ! default = "False" - ! If true, allow topography overrides to change ocean points to land -MAXIMUM_DEPTH = 6500.0 ! [m] - ! The maximum depth of the ocean. -MINIMUM_DEPTH = 9.5 ! [m] default = 0.0 - ! If MASKING_DEPTH is unspecified, then anything shallower than MINIMUM_DEPTH is - ! assumed to be land and all fluxes are masked out. If MASKING_DEPTH is - ! specified, then all depths shallower than MINIMUM_DEPTH but deeper than - ! MASKING_DEPTH are rounded to MINIMUM_DEPTH. - -! === module MOM_open_boundary === -! Controls where open boundaries are located, what kind of boundary condition to impose, and what data to apply, -! if any. -MASKING_DEPTH = 0.0 ! [m] default = -9999.0 - ! The depth below which to mask points as land points, for which all fluxes are - ! zeroed out. MASKING_DEPTH is ignored if negative. -CHANNEL_CONFIG = "list" ! default = "none" - ! A parameter that determines which set of channels are - ! restricted to specific widths. Options are: - ! none - All channels have the grid width. - ! global_1deg - Sets 16 specific channels appropriate - ! for a 1-degree model, as used in CM2G. - ! list - Read the channel locations and widths from a - ! text file, like MOM_channel_list in the MOM_SIS - ! test case. - ! file - Read open face widths everywhere from a - ! NetCDF file on the model grid. -CHANNEL_LIST_FILE = "MOM_channels_SPEAR" ! default = "MOM_channel_list" - ! The file from which the list of narrowed channels is read. - -! === module MOM_verticalGrid === -! Parameters providing information about the vertical grid. -NK = 75 ! [nondim] - ! The number of model layers. - -! === module MOM_tracer_registry === - -! === module MOM_EOS === -TFREEZE_FORM = "MILLERO_78" ! default = "LINEAR" - ! TFREEZE_FORM determines which expression should be used for the freezing - ! point. Currently, the valid choices are "LINEAR", "MILLERO_78", "TEOS10" - -! === module MOM_restart === -PARALLEL_RESTARTFILES = True ! [Boolean] default = False - ! If true, each processor writes its own restart file, otherwise a single - ! restart file is generated - -! === module MOM_tracer_flow_control === -USE_IDEAL_AGE_TRACER = False ! [Boolean] default = False - ! If true, use the ideal_age_example tracer package. - -! === module ideal_age_example === - -! === module MOM_coord_initialization === -COORD_CONFIG = "file" ! default = "none" - ! This specifies how layers are to be defined: - ! ALE or none - used to avoid defining layers in ALE mode - ! file - read coordinate information from the file - ! specified by (COORD_FILE). - ! BFB - Custom coords for buoyancy-forced basin case - ! based on SST_S, T_BOT and DRHO_DT. - ! linear - linear based on interfaces not layers - ! layer_ref - linear based on layer densities - ! ts_ref - use reference temperature and salinity - ! ts_range - use range of temperature and salinity - ! (T_REF and S_REF) to determine surface density - ! and GINT calculate internal densities. - ! gprime - use reference density (RHO_0) for surface - ! density and GINT calculate internal densities. - ! ts_profile - use temperature and salinity profiles - ! (read from COORD_FILE) to set layer densities. - ! USER - call a user modified routine. -COORD_FILE = "layer_coord.nc" ! - ! The file from which the coordinate densities are read. -REMAP_UV_USING_OLD_ALG = True ! [Boolean] default = False - ! If true, uses the old remapping-via-a-delta-z method for remapping u and v. If - ! false, uses the new method that remaps between grids described by an old and - ! new thickness. -REGRIDDING_COORDINATE_MODE = "HYCOM1" ! default = "LAYER" - ! Coordinate mode for vertical regridding. Choose among the following - ! possibilities: LAYER - Isopycnal or stacked shallow water layers - ! ZSTAR, Z* - stretched geopotential z* - ! SIGMA_SHELF_ZSTAR - stretched geopotential z* ignoring shelf - ! SIGMA - terrain following coordinates - ! RHO - continuous isopycnal - ! HYCOM1 - HyCOM-like hybrid coordinate - ! SLIGHT - stretched coordinates above continuous isopycnal - ! ADAPTIVE - optimize for smooth neutral density surfaces -BOUNDARY_EXTRAPOLATION = True ! [Boolean] default = False - ! When defined, a proper high-order reconstruction scheme is used within - ! boundary cells rather than PCM. E.g., if PPM is used for remapping, a PPM - ! reconstruction will also be used within boundary cells. -ALE_COORDINATE_CONFIG = "HYBRID:hycom1_75_800m.nc,sigma2,FNC1:2,4000,4.5,.01" ! default = "UNIFORM" - ! Determines how to specify the coordinate resolution. Valid options are: - ! PARAM - use the vector-parameter ALE_RESOLUTION - ! UNIFORM[:N] - uniformly distributed - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,dz - ! or FILE:lev.nc,interfaces=zw - ! WOA09[:N] - the WOA09 vertical grid (approximately) - ! FNC1:string - FNC1:dz_min,H_total,power,precision - ! HYBRID:string - read from a file. The string specifies - ! the filename and two variable names, separated - ! by a comma or space, for sigma-2 and dz. e.g. - ! HYBRID:vgrid.nc,sigma2,dz -!ALE_RESOLUTION = 7*2.0, 2*2.01, 2.02, 2.03, 2.05, 2.08, 2.11, 2.15, 2.21, 2.2800000000000002, 2.37, 2.48, 2.61, 2.77, 2.95, 3.17, 3.4299999999999997, 3.74, 4.09, 4.49, 4.95, 5.48, 6.07, 6.74, 7.5, 8.34, 9.280000000000001, 10.33, 11.49, 12.77, 14.19, 15.74, 17.450000000000003, 19.31, 21.35, 23.56, 25.97, 28.580000000000002, 31.41, 34.47, 37.77, 41.32, 45.14, 49.25, 53.65, 58.370000000000005, 63.42, 68.81, 74.56, 80.68, 87.21000000000001, 94.14, 101.51, 109.33, 117.62, 126.4, 135.68, 145.5, 155.87, 166.81, 178.35, 190.51, 203.31, 216.78, 230.93, 245.8, 261.42, 277.83 ! [m] - ! The distribution of vertical resolution for the target - ! grid used for Eulerian-like coordinates. For example, - ! in z-coordinate mode, the parameter is a list of level - ! thicknesses (in m). In sigma-coordinate mode, the list - ! is of non-dimensional fractions of the water column. -!TARGET_DENSITIES = 1010.0, 1014.3034, 1017.8088, 1020.843, 1023.5566, 1025.813, 1027.0275, 1027.9114, 1028.6422, 1029.2795, 1029.852, 1030.3762, 1030.8626, 1031.3183, 1031.7486, 1032.1572, 1032.5471, 1032.9207, 1033.2798, 1033.6261, 1033.9608, 1034.2519, 1034.4817, 1034.6774, 1034.8508, 1035.0082, 1035.1533, 1035.2886, 1035.4159, 1035.5364, 1035.6511, 1035.7608, 1035.8661, 1035.9675, 1036.0645, 1036.1554, 1036.2411, 1036.3223, 1036.3998, 1036.4739, 1036.5451, 1036.6137, 1036.68, 1036.7441, 1036.8062, 1036.8526, 1036.8874, 1036.9164, 1036.9418, 1036.9647, 1036.9857, 1037.0052, 1037.0236, 1037.0409, 1037.0574, 1037.0738, 1037.0902, 1037.1066, 1037.123, 1037.1394, 1037.1558, 1037.1722, 1037.1887, 1037.206, 1037.2241, 1037.2435, 1037.2642, 1037.2866, 1037.3112, 1037.3389, 1037.3713, 1037.4118, 1037.475, 1037.6332, 1037.8104, 1038.0 ! [m] - ! HYBRID target densities for interfaces -MAXIMUM_INT_DEPTH_CONFIG = "FNC1:5,8000.0,1.0,.01" ! default = "NONE" - ! Determines how to specify the maximum interface depths. - ! Valid options are: - ! NONE - there are no maximum interface depths - ! PARAM - use the vector-parameter MAXIMUM_INTERFACE_DEPTHS - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,Z - ! FNC1:string - FNC1:dz_min,H_total,power,precision -!MAXIMUM_INT_DEPTHS = 0.0, 5.0, 12.75, 23.25, 36.49, 52.480000000000004, 71.22, 92.71000000000001, 116.94000000000001, 143.92000000000002, 173.65, 206.13, 241.36, 279.33000000000004, 320.05000000000007, 363.5200000000001, 409.7400000000001, 458.7000000000001, 510.4100000000001, 564.8700000000001, 622.0800000000002, 682.0300000000002, 744.7300000000002, 810.1800000000003, 878.3800000000003, 949.3300000000004, 1023.0200000000004, 1099.4600000000005, 1178.6500000000005, 1260.5900000000006, 1345.2700000000007, 1432.7000000000007, 1522.8800000000008, 1615.8100000000009, 1711.490000000001, 1809.910000000001, 1911.080000000001, 2015.0000000000011, 2121.670000000001, 2231.080000000001, 2343.2400000000007, 2458.1500000000005, 2575.8100000000004, 2696.2200000000003, 2819.3700000000003, 2945.2700000000004, 3073.9200000000005, 3205.3200000000006, 3339.4600000000005, 3476.3500000000004, 3615.9900000000002, 3758.38, 3903.52, 4051.4, 4202.03, 4355.41, 4511.54, 4670.41, 4832.03, 4996.4, 5163.5199999999995, 5333.379999999999, 5505.989999999999, 5681.3499999999985, 5859.459999999998, 6040.319999999998, 6223.919999999998, 6410.269999999999, 6599.369999999999, 6791.219999999999, 6985.8099999999995, 7183.15, 7383.24, 7586.08, 7791.67, 8000.0 - ! The list of maximum depths for each interface. -MAX_LAYER_THICKNESS_CONFIG = "FNC1:400,31000.0,0.1,.01" ! default = "NONE" - ! Determines how to specify the maximum layer thicknesses. - ! Valid options are: - ! NONE - there are no maximum layer thicknesses - ! PARAM - use the vector-parameter MAX_LAYER_THICKNESS - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,Z - ! FNC1:string - FNC1:dz_min,H_total,power,precision -!MAX_LAYER_THICKNESS = 400.0, 409.63, 410.32, 410.75, 411.07, 411.32, 411.52, 411.7, 411.86, 412.0, 412.13, 412.24, 412.35, 412.45, 412.54, 412.63, 412.71, 412.79, 412.86, 412.93, 413.0, 413.06, 413.12, 413.18, 413.24, 413.29, 413.34, 413.39, 413.44, 413.49, 413.54, 413.58, 413.62, 413.67, 413.71, 413.75, 413.78, 413.82, 413.86, 413.9, 413.93, 413.97, 414.0, 414.03, 414.06, 414.1, 414.13, 414.16, 414.19, 414.22, 414.24, 414.27, 414.3, 414.33, 414.35, 414.38, 414.41, 414.43, 414.46, 414.48, 414.51, 414.53, 414.55, 414.58, 414.6, 414.62, 414.65, 414.67, 414.69, 414.71, 414.73, 414.75, 414.77, 414.79, 414.83 ! [m] - ! The list of maximum thickness for each layer. -REMAPPING_SCHEME = "PPM_H4" ! default = "PLM" - ! This sets the reconstruction scheme used for vertical remapping for all - ! variables. It can be one of the following schemes: PCM (1st-order - ! accurate) - ! PLM (2nd-order accurate) - ! PPM_H4 (3rd-order accurate) - ! PPM_IH4 (3rd-order accurate) - ! PQM_IH4IH3 (4th-order accurate) - ! PQM_IH6IH5 (5th-order accurate) - -! === module MOM_grid === -! Parameters providing information about the lateral grid. - -! === module MOM_state_initialization === -INIT_LAYERS_FROM_Z_FILE = True ! [Boolean] default = False - ! If true, initialize the layer thicknesses, temperatures, and salinities from a - ! Z-space file on a latitude-longitude grid. - -! === module MOM_initialize_layers_from_Z === -TEMP_SALT_Z_INIT_FILE = "MOM6_IC_TS.nc" ! default = "temp_salt_z.nc" - ! The name of the z-space input file used to initialize - ! temperatures (T) and salinities (S). If T and S are not - ! in the same file, TEMP_Z_INIT_FILE and SALT_Z_INIT_FILE - ! must be set. -Z_INIT_FILE_PTEMP_VAR = "temp" ! default = "ptemp" - ! The name of the potential temperature variable in - ! TEMP_Z_INIT_FILE. -Z_INIT_FILE_SALT_VAR = "salt" ! default = "salt" - ! The name of the salinity variable in - ! SALT_Z_INIT_FILE. -Z_INIT_ALE_REMAPPING = True ! [Boolean] default = False - ! If True, then remap straight to model coordinate from file. -Z_INIT_REMAP_OLD_ALG = True ! [Boolean] default = False - ! If false, uses the preferred remapping algorithm for initialization. If true, - ! use an older, less robust algorithm for remapping. - -! === module MOM_diag_mediator === -!Jiande NUM_DIAG_COORDS = 2 ! default = 1 -NUM_DIAG_COORDS = 1 - ! The number of diagnostic vertical coordinates to use. - ! For each coordinate, an entry in DIAG_COORDS must be provided. -!Jiande DIAG_COORDS = "z Z ZSTAR", "rho2 RHO2 RHO" ! -DIAG_COORDS = "z Z ZSTAR" - ! A list of string tuples associating diag_table modules to - ! a coordinate definition used for diagnostics. Each string - ! is of the form "MODULE_SUFFIX,PARAMETER_SUFFIX,COORDINATE_NAME". -DIAG_COORD_DEF_Z="FILE:@[MOM6_DIAG_COORD_DEF_Z_FILE],interfaces=zw" -DIAG_MISVAL = @[MOM6_DIAG_MISVAL] -!AVAILABLE_DIAGS_FILE = "available_diags.002160" ! default = "available_diags.000000" - ! A file into which to write a list of all available ocean diagnostics that can - ! be included in a diag_table. -!DIAG_COORD_DEF_Z = "FILE:vgrid_75_2m.nc,dz" ! default = "WOA09" - ! Determines how to specify the coordinate resolution. Valid options are: - ! PARAM - use the vector-parameter DIAG_COORD_RES_Z - ! UNIFORM[:N] - uniformly distributed - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,dz - ! or FILE:lev.nc,interfaces=zw - ! WOA09[:N] - the WOA09 vertical grid (approximately) - ! FNC1:string - FNC1:dz_min,H_total,power,precision - ! HYBRID:string - read from a file. The string specifies - ! the filename and two variable names, separated - ! by a comma or space, for sigma-2 and dz. e.g. - ! HYBRID:vgrid.nc,sigma2,dz -!DIAG_COORD_DEF_RHO2 = "RFNC1:35,999.5,1028,1028.5,8.,1038.,0.0078125" ! default = "WOA09" - ! Determines how to specify the coordinate resolution. Valid options are: - ! PARAM - use the vector-parameter DIAG_COORD_RES_RHO2 - ! UNIFORM[:N] - uniformly distributed - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,dz - ! or FILE:lev.nc,interfaces=zw - ! WOA09[:N] - the WOA09 vertical grid (approximately) - ! FNC1:string - FNC1:dz_min,H_total,power,precision - ! HYBRID:string - read from a file. The string specifies - ! the filename and two variable names, separated - ! by a comma or space, for sigma-2 and dz. e.g. - ! HYBRID:vgrid.nc,sigma2,dz - -! === module MOM_MEKE === -USE_MEKE = True ! [Boolean] default = False - ! If true, turns on the MEKE scheme which calculates a sub-grid mesoscale eddy - ! kinetic energy budget. -MEKE_GMCOEFF = 1.0 ! [nondim] default = -1.0 - ! The efficiency of the conversion of potential energy into MEKE by the - ! thickness mixing parameterization. If MEKE_GMCOEFF is negative, this - ! conversion is not used or calculated. -MEKE_BGSRC = 1.0E-13 ! [W kg-1] default = 0.0 - ! A background energy source for MEKE. -MEKE_KHTH_FAC = 0.8 ! [nondim] default = 0.0 - ! A factor that maps MEKE%Kh to KhTh. -MEKE_KHTR_FAC = 0.8 ! [nondim] default = 0.0 - ! A factor that maps MEKE%Kh to KhTr. -MEKE_ALPHA_RHINES = 0.05 ! [nondim] default = 0.0 - ! If positive, is a coefficient weighting the Rhines scale in the expression for - ! mixing length used in MEKE-derived diffusivity. -MEKE_ALPHA_EADY = 0.05 ! [nondim] default = 0.0 - ! If positive, is a coefficient weighting the Eady length scale in the - ! expression for mixing length used in MEKE-derived diffusivity. - -! === module MOM_lateral_mixing_coeffs === -USE_VARIABLE_MIXING = True ! [Boolean] default = False - ! If true, the variable mixing code will be called. This allows diagnostics to - ! be created even if the scheme is not used. If KHTR_SLOPE_CFF>0 or - ! KhTh_Slope_Cff>0, this is set to true regardless of what is in the parameter - ! file. -RESOLN_SCALED_KH = True ! [Boolean] default = False - ! If true, the Laplacian lateral viscosity is scaled away when the first - ! baroclinic deformation radius is well resolved. -RESOLN_SCALED_KHTH = True ! [Boolean] default = False - ! If true, the interface depth diffusivity is scaled away when the first - ! baroclinic deformation radius is well resolved. -KHTR_SLOPE_CFF = 0.25 ! [nondim] default = 0.0 - ! The nondimensional coefficient in the Visbeck formula for the epipycnal tracer - ! diffusivity -USE_STORED_SLOPES = True ! [Boolean] default = False - ! If true, the isopycnal slopes are calculated once and stored for re-use. This - ! uses more memory but avoids calling the equation of state more times than - ! should be necessary. -KH_RES_FN_POWER = 100 ! [nondim] default = 2 - ! The power of dx/Ld in the Kh resolution function. Any positive integer may be - ! used, although even integers are more efficient to calculate. Setting this - ! greater than 100 results in a step-function being used. -VISC_RES_FN_POWER = 2 ! [nondim] default = 100 - ! The power of dx/Ld in the Kh resolution function. Any positive integer may be - ! used, although even integers are more efficient to calculate. Setting this - ! greater than 100 results in a step-function being used. This function affects - ! lateral viscosity, Kh, and not KhTh. -INTERNAL_WAVE_SPEED_BETTER_EST = False ! [Boolean] default = True - ! If true, use a more robust estimate of the first mode wave speed as the - ! starting point for iterations. - -! === module MOM_set_visc === -CHANNEL_DRAG = True ! [Boolean] default = False - ! If true, the bottom drag is exerted directly on each layer proportional to the - ! fraction of the bottom it overlies. -HBBL = 10.0 ! [m] - ! The thickness of a bottom boundary layer with a viscosity of KVBBL if - ! BOTTOMDRAGLAW is not defined, or the thickness over which near-bottom - ! velocities are averaged for the drag law if BOTTOMDRAGLAW is defined but - ! LINEAR_DRAG is not. -DRAG_BG_VEL = 0.1 ! [m s-1] default = 0.0 - ! DRAG_BG_VEL is either the assumed bottom velocity (with LINEAR_DRAG) or an - ! unresolved velocity that is combined with the resolved velocity to estimate - ! the velocity magnitude. DRAG_BG_VEL is only used when BOTTOMDRAGLAW is - ! defined. -BBL_USE_EOS = True ! [Boolean] default = False - ! If true, use the equation of state in determining the properties of the bottom - ! boundary layer. Otherwise use the layer target potential densities. -BBL_THICK_MIN = 0.1 ! [m] default = 0.0 - ! The minimum bottom boundary layer thickness that can be used with - ! BOTTOMDRAGLAW. This might be Kv/(cdrag*drag_bg_vel) to give Kv as the minimum - ! near-bottom viscosity. -KV = 1.0E-04 ! [m2 s-1] - ! The background kinematic viscosity in the interior. The molecular value, ~1e-6 - ! m2 s-1, may be used. -KV_BBL_MIN = 0.0 ! [m2 s-1] default = 1.0E-04 - ! The minimum viscosities in the bottom boundary layer. -KV_TBL_MIN = 0.0 ! [m2 s-1] default = 1.0E-04 - ! The minimum viscosities in the top boundary layer. - -! === module MOM_thickness_diffuse === -USE_GM_WORK_BUG = True ! [Boolean] default = False - ! If true, compute the top-layer work tendency on the u-grid with the incorrect - ! sign, for legacy reproducibility. - -! === module MOM_dynamics_split_RK2 === - -! === module MOM_continuity === - -! === module MOM_continuity_PPM === -ETA_TOLERANCE = 1.0E-06 ! [m] default = 3.75E-09 - ! The tolerance for the differences between the barotropic and baroclinic - ! estimates of the sea surface height due to the fluxes through each face. The - ! total tolerance for SSH is 4 times this value. The default is - ! 0.5*NK*ANGSTROM, and this should not be set less than about - ! 10^-15*MAXIMUM_DEPTH. -ETA_TOLERANCE_AUX = 0.001 ! [m] default = 1.0E-06 - ! The tolerance for free-surface height discrepancies between the barotropic - ! solution and the sum of the layer thicknesses when calculating the auxiliary - ! corrected velocities. By default, this is the same as ETA_TOLERANCE, but can - ! be made larger for efficiency. - -! === module MOM_CoriolisAdv === -CORIOLIS_SCHEME = "SADOURNY75_ENSTRO" ! default = "SADOURNY75_ENERGY" - ! CORIOLIS_SCHEME selects the discretization for the Coriolis terms. Valid - ! values are: - ! SADOURNY75_ENERGY - Sadourny, 1975; energy cons. - ! ARAKAWA_HSU90 - Arakawa & Hsu, 1990 - ! SADOURNY75_ENSTRO - Sadourny, 1975; enstrophy cons. - ! ARAKAWA_LAMB81 - Arakawa & Lamb, 1981; En. + Enst. - ! ARAKAWA_LAMB_BLEND - A blend of Arakawa & Lamb with - ! Arakawa & Hsu and Sadourny energy -BOUND_CORIOLIS = True ! [Boolean] default = False - ! If true, the Coriolis terms at u-points are bounded by the four estimates of - ! (f+rv)v from the four neighboring v-points, and similarly at v-points. This - ! option would have no effect on the SADOURNY Coriolis scheme if it were - ! possible to use centered difference thickness fluxes. - -! === module MOM_PressureForce === - -! === module MOM_PressureForce_AFV === -MASS_WEIGHT_IN_PRESSURE_GRADIENT = True ! [Boolean] default = False - ! If true, use mass weighting when interpolating T/S for integrals near the - ! bathymetry in AFV pressure gradient calculations. - -! === module MOM_hor_visc === -LAPLACIAN = True ! [Boolean] default = False - ! If true, use a Laplacian horizontal viscosity. -SMAGORINSKY_KH = True ! [Boolean] default = False - ! If true, use a Smagorinsky nonlinear eddy viscosity. -SMAG_LAP_CONST = 0.15 ! [nondim] default = 0.0 - ! The nondimensional Laplacian Smagorinsky constant, often 0.15. -AH_VEL_SCALE = 0.05 ! [m s-1] default = 0.0 - ! The velocity scale which is multiplied by the cube of the grid spacing to - ! calculate the biharmonic viscosity. The final viscosity is the largest of this - ! scaled viscosity, the Smagorinsky and Leith viscosities, and AH. -SMAGORINSKY_AH = True ! [Boolean] default = False - ! If true, use a biharmonic Smagorinsky nonlinear eddy viscosity. -SMAG_BI_CONST = 0.06 ! [nondim] default = 0.0 - ! The nondimensional biharmonic Smagorinsky constant, typically 0.015 - 0.06. -USE_KH_BG_2D = True ! [Boolean] default = False - ! If true, read a file containing 2-d background harmonic viscosities. The final - ! viscosity is the maximum of the other terms and this background value. - -! === module MOM_vert_friction === -HMIX_FIXED = 0.5 ! [m] - ! The prescribed depth over which the near-surface viscosity and diffusivity are - ! elevated when the bulk mixed layer is not used. -KVML = 1.0E-04 ! [m2 s-1] default = 1.0E-04 - ! The kinematic viscosity in the mixed layer. A typical value is ~1e-2 m2 s-1. - ! KVML is not used if BULKMIXEDLAYER is true. The default is set by KV. -MAXVEL = 6.0 ! [m s-1] default = 3.0E+08 - ! The maximum velocity allowed before the velocity components are truncated. - -! === module MOM_barotropic === -BOUND_BT_CORRECTION = True ! [Boolean] default = False - ! If true, the corrective pseudo mass-fluxes into the barotropic solver are - ! limited to values that require less than maxCFL_BT_cont to be accommodated. -BT_PROJECT_VELOCITY = True ! [Boolean] default = False - ! If true, step the barotropic velocity first and project out the velocity - ! tendency by 1+BEBT when calculating the transport. The default (false) is to - ! use a predictor continuity step to find the pressure field, and then to do a - ! corrector continuity step using a weighted average of the old and new - ! velocities, with weights of (1-BEBT) and BEBT. -BT_STRONG_DRAG = True ! [Boolean] default = False - ! If true, use a stronger estimate of the retarding effects of strong bottom - ! drag, by making it implicit with the barotropic time-step instead of implicit - ! with the baroclinic time-step and dividing by the number of barotropic steps. -BEBT = 0.2 ! [nondim] default = 0.1 - ! BEBT determines whether the barotropic time stepping uses the forward-backward - ! time-stepping scheme or a backward Euler scheme. BEBT is valid in the range - ! from 0 (for a forward-backward treatment of nonrotating gravity waves) to 1 - ! (for a backward Euler treatment). In practice, BEBT must be greater than about - ! 0.05. -DTBT = -0.9 ! [s or nondim] default = -0.98 - ! The barotropic time step, in s. DTBT is only used with the split explicit time - ! stepping. To set the time step automatically based the maximum stable value - ! use 0, or a negative value gives the fraction of the stable value. Setting - ! DTBT to 0 is the same as setting it to -0.98. The value of DTBT that will - ! actually be used is an integer fraction of DT, rounding down. - -! === module MOM_mixed_layer_restrat === -MIXEDLAYER_RESTRAT = True ! [Boolean] default = False - ! If true, a density-gradient dependent re-stratifying flow is imposed in the - ! mixed layer. Can be used in ALE mode without restriction but in layer mode can - ! only be used if BULKMIXEDLAYER is true. -FOX_KEMPER_ML_RESTRAT_COEF = 60.0 ! [nondim] default = 0.0 - ! A nondimensional coefficient that is proportional to the ratio of the - ! deformation radius to the dominant lengthscale of the submesoscale mixed layer - ! instabilities, times the minimum of the ratio of the mesoscale eddy kinetic - ! energy to the large-scale geostrophic kinetic energy or 1 plus the square of - ! the grid spacing over the deformation radius, as detailed by Fox-Kemper et al. - ! (2010) -MLE_USE_PBL_MLD = True ! [Boolean] default = False - ! If true, the MLE parameterization will use the mixed-layer depth provided by - ! the active PBL parameterization. If false, MLE will estimate a MLD based on a - ! density difference with the surface using the parameter MLE_DENSITY_DIFF. -MLE_MLD_DECAY_TIME = 2.592E+06 ! [s] default = 0.0 - ! The time-scale for a running-mean filter applied to the mixed-layer depth used - ! in the MLE restratification parameterization. When the MLD deepens below the - ! current running-mean the running-mean is instantaneously set to the current - ! MLD. - -! === module MOM_diabatic_driver === -! The following parameters are used for diabatic processes. -ENERGETICS_SFC_PBL = True ! [Boolean] default = False - ! If true, use an implied energetics planetary boundary layer scheme to - ! determine the diffusivity and viscosity in the surface boundary layer. -EPBL_IS_ADDITIVE = False ! [Boolean] default = True - ! If true, the diffusivity from ePBL is added to all other diffusivities. - ! Otherwise, the larger of kappa-shear and ePBL diffusivities are used. -KD_MIN_TR = 2.0E-06 ! [m2 s-1] default = 2.0E-06 - ! A minimal diffusivity that should always be applied to tracers, especially in - ! massless layers near the bottom. The default is 0.1*KD. - -! === module MOM_CVMix_KPP === -! This is the MOM wrapper to CVMix:KPP -! See http://cvmix.github.io/ - -! === module MOM_tidal_mixing === -! Vertical Tidal Mixing Parameterization -INT_TIDE_DISSIPATION = True ! [Boolean] default = False - ! If true, use an internal tidal dissipation scheme to drive diapycnal mixing, - ! along the lines of St. Laurent et al. (2002) and Simmons et al. (2004). -INT_TIDE_PROFILE = "POLZIN_09" ! default = "STLAURENT_02" - ! INT_TIDE_PROFILE selects the vertical profile of energy dissipation with - ! INT_TIDE_DISSIPATION. Valid values are: - ! STLAURENT_02 - Use the St. Laurent et al exponential - ! decay profile. - ! POLZIN_09 - Use the Polzin WKB-stretched algebraic - ! decay profile. -KAPPA_ITIDES = 6.28319E-04 ! [m-1] default = 6.283185307179586E-04 - ! A topographic wavenumber used with INT_TIDE_DISSIPATION. The default is 2pi/10 - ! km, as in St.Laurent et al. 2002. -KAPPA_H2_FACTOR = 0.84 ! [nondim] default = 1.0 - ! A scaling factor for the roughness amplitude with INT_TIDE_DISSIPATION. -TKE_ITIDE_MAX = 0.1 ! [W m-2] default = 1000.0 - ! The maximum internal tide energy source available to mix above the bottom - ! boundary layer with INT_TIDE_DISSIPATION. -READ_TIDEAMP = True ! [Boolean] default = False - ! If true, read a file (given by TIDEAMP_FILE) containing the tidal amplitude - ! with INT_TIDE_DISSIPATION. -TIDEAMP_FILE = "tidal_amplitude.nc" ! default = "tideamp.nc" - ! The path to the file containing the spatially varying tidal amplitudes with - ! INT_TIDE_DISSIPATION. -H2_FILE = "topog.nc" ! - ! The path to the file containing the sub-grid-scale topographic roughness - ! amplitude with INT_TIDE_DISSIPATION. - -! === module MOM_CVMix_conv === -! Parameterization of enhanced mixing due to convection via CVMix - -! === module MOM_set_diffusivity === -BBL_MIXING_AS_MAX = False ! [Boolean] default = True - ! If true, take the maximum of the diffusivity from the BBL mixing and the other - ! diffusivities. Otherwise, diffusivity from the BBL_mixing is simply added. -USE_LOTW_BBL_DIFFUSIVITY = True ! [Boolean] default = False - ! If true, uses a simple, imprecise but non-coordinate dependent, model of BBL - ! mixing diffusivity based on Law of the Wall. Otherwise, uses the original BBL - ! scheme. -SIMPLE_TKE_TO_KD = True ! [Boolean] default = False - ! If true, uses a simple estimate of Kd/TKE that will work for arbitrary - ! vertical coordinates. If false, calculates Kd/TKE and bounds based on exact - ! energetics for an isopycnal layer-formulation. - -! === module MOM_bkgnd_mixing === -! Adding static vertical background mixing coefficients -KD = 2.0E-05 ! [m2 s-1] default = 0.0 - ! The background diapycnal diffusivity of density in the interior. Zero or the - ! molecular value, ~1e-7 m2 s-1, may be used. -KD_MIN = 2.0E-06 ! [m2 s-1] default = 2.0E-07 - ! The minimum diapycnal diffusivity. -HENYEY_IGW_BACKGROUND = True ! [Boolean] default = False - ! If true, use a latitude-dependent scaling for the near surface background - ! diffusivity, as described in Harrison & Hallberg, JPO 2008. -KD_MAX = 0.1 ! [m2 s-1] default = -1.0 - ! The maximum permitted increment for the diapycnal diffusivity from TKE-based - ! parameterizations, or a negative value for no limit. - -! === module MOM_kappa_shear === -! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 -USE_JACKSON_PARAM = True ! [Boolean] default = False - ! If true, use the Jackson-Hallberg-Legg (JPO 2008) shear mixing - ! parameterization. -MAX_RINO_IT = 25 ! [nondim] default = 50 - ! The maximum number of iterations that may be used to estimate the Richardson - ! number driven mixing. -VERTEX_SHEAR = False ! [Boolean] default = False - ! If true, do the calculations of the shear-driven mixing - ! at the cell vertices (i.e., the vorticity points). -KD_TRUNC_KAPPA_SHEAR = 2.0E-07 ! [m2 s-1] default = 2.0E-07 - ! The value of shear-driven diffusivity that is considered negligible and is - ! rounded down to 0. The default is 1% of KD_KAPPA_SHEAR_0. -KAPPA_SHEAR_ITER_BUG = True ! [Boolean] default = False - ! If true, use an older, dimensionally inconsistent estimate of the derivative - ! of diffusivity with energy in the Newton's method iteration. The bug causes - ! undercorrections when dz > 1 m. -KAPPA_SHEAR_ALL_LAYER_TKE_BUG = True ! [Boolean] default = False - ! If true, report back the latest estimate of TKE instead of the time average - ! TKE when there is mass in all layers. Otherwise always report the time - ! averaged TKE, as is currently done when there are some massless layers. - -! === module MOM_CVMix_shear === -! Parameterization of shear-driven turbulence via CVMix (various options) - -! === module MOM_CVMix_ddiff === -! Parameterization of mixing due to double diffusion processes via CVMix - -! === module MOM_diabatic_aux === -! The following parameters are used for auxiliary diabatic processes. -PRESSURE_DEPENDENT_FRAZIL = False ! [Boolean] default = False - ! If true, use a pressure dependent freezing temperature when making frazil. The - ! default is false, which will be faster but is inappropriate with ice-shelf - ! cavities. -VAR_PEN_SW = True ! [Boolean] default = False - ! If true, use one of the CHL_A schemes specified by OPACITY_SCHEME to determine - ! the e-folding depth of incoming short wave radiation. -CHL_FILE = @[CHLCLIM] ! - ! CHL_FILE is the file containing chl_a concentrations in the variable CHL_A. It - ! is used when VAR_PEN_SW and CHL_FROM_FILE are true. - -! === module MOM_energetic_PBL === -ML_OMEGA_FRAC = 0.001 ! [nondim] default = 0.0 - ! When setting the decay scale for turbulence, use this fraction of the absolute - ! rotation rate blended with the local value of f, as sqrt((1-of)*f^2 + - ! of*4*omega^2). -TKE_DECAY = 0.01 ! [nondim] default = 2.5 - ! TKE_DECAY relates the vertical rate of decay of the TKE available for - ! mechanical entrainment to the natural Ekman depth. -EPBL_MSTAR_SCHEME = "OM4" ! default = "CONSTANT" - ! EPBL_MSTAR_SCHEME selects the method for setting mstar. Valid values are: - ! CONSTANT - Use a fixed mstar given by MSTAR - ! OM4 - Use L_Ekman/L_Obukhov in the sabilizing limit, as in OM4 - ! REICHL_H18 - Use the scheme documented in Reichl & Hallberg, 2018. -MSTAR_CAP = 10.0 ! [nondim] default = -1.0 - ! If this value is positive, it sets the maximum value of mstar allowed in ePBL. - ! (This is not used if EPBL_MSTAR_SCHEME = CONSTANT). -MSTAR2_COEF1 = 0.29 ! [nondim] default = 0.3 - ! Coefficient in computing mstar when rotation and stabilizing effects are both - ! important (used if EPBL_MSTAR_SCHEME = OM4). -MSTAR2_COEF2 = 0.152 ! [nondim] default = 0.085 - ! Coefficient in computing mstar when only rotation limits the total mixing - ! (used if EPBL_MSTAR_SCHEME = OM4) -NSTAR = 0.06 ! [nondim] default = 0.2 - ! The portion of the buoyant potential energy imparted by surface fluxes that is - ! available to drive entrainment at the base of mixed layer when that energy is - ! positive. -MSTAR_CONV_ADJ = 0.667 ! [nondim] default = 0.0 - ! Coefficient used for reducing mstar during convection due to reduction of - ! stable density gradient. -USE_MLD_ITERATION = False ! [Boolean] default = True - ! A logical that specifies whether or not to use the distance to the bottom of - ! the actively turbulent boundary layer to help set the EPBL length scale. -EPBL_TRANSITION_SCALE = 0.01 ! [nondim] default = 0.1 - ! A scale for the mixing length in the transition layer at the edge of the - ! boundary layer as a fraction of the boundary layer thickness. -MIX_LEN_EXPONENT = 1.0 ! [nondim] default = 2.0 - ! The exponent applied to the ratio of the distance to the MLD and the MLD depth - ! which determines the shape of the mixing length. This is only used if - ! USE_MLD_ITERATION is True. -USE_LA_LI2016 = @[MOM6_USE_LI2016] ! [nondim] default = False - ! A logical to use the Li et al. 2016 (submitted) formula to determine the - ! Langmuir number. -USE_WAVES = @[MOM6_USE_WAVES] ! [Boolean] default = False - ! If true, enables surface wave modules. -WAVE_METHOD = "SURFACE_BANDS" ! default = "EMPTY" - ! Choice of wave method, valid options include: - ! TEST_PROFILE - Prescribed from surface Stokes drift - ! and a decay wavelength. - ! SURFACE_BANDS - Computed from multiple surface values - ! and decay wavelengths. - ! DHH85 - Uses Donelan et al. 1985 empirical - ! wave spectrum with prescribed values. - ! LF17 - Infers Stokes drift profile from wind - ! speed following Li and Fox-Kemper 2017. -SURFBAND_SOURCE = "COUPLER" ! default = "EMPTY" - ! Choice of SURFACE_BANDS data mode, valid options include: - ! DATAOVERRIDE - Read from NetCDF using FMS DataOverride. - ! COUPLER - Look for variables from coupler pass - ! INPUT - Testing with fixed values. -STK_BAND_COUPLER = 3 ! default = 1 - ! STK_BAND_COUPLER is the number of Stokes drift bands in the coupler. This has - ! to be consistent with the number of Stokes drift bands in WW3, or the model - ! will fail. -SURFBAND_WAVENUMBERS = 0.04, 0.11, 0.3305 ! [rad/m] default = 0.12566 - ! Central wavenumbers for surface Stokes drift bands. -EPBL_LANGMUIR_SCHEME = "ADDITIVE" ! default = "NONE" - ! EPBL_LANGMUIR_SCHEME selects the method for including Langmuir turbulence. - ! Valid values are: - ! NONE - Do not do any extra mixing due to Langmuir turbulence - ! RESCALE - Use a multiplicative rescaling of mstar to account for Langmuir - ! turbulence - ! ADDITIVE - Add a Langmuir turblence contribution to mstar to other - ! contributions -LT_ENHANCE_COEF = 0.044 ! [nondim] default = 0.447 - ! Coefficient for Langmuir enhancement of mstar -LT_ENHANCE_EXP = -1.5 ! [nondim] default = -1.33 - ! Exponent for Langmuir enhancementt of mstar -LT_MOD_LAC1 = 0.0 ! [nondim] default = -0.87 - ! Coefficient for modification of Langmuir number due to MLD approaching Ekman - ! depth. -LT_MOD_LAC4 = 0.0 ! [nondim] default = 0.95 - ! Coefficient for modification of Langmuir number due to ratio of Ekman to - ! stable Obukhov depth. -LT_MOD_LAC5 = 0.22 ! [nondim] default = 0.95 - ! Coefficient for modification of Langmuir number due to ratio of Ekman to - ! unstable Obukhov depth. - -! === module MOM_regularize_layers === - -! === module MOM_opacity === -PEN_SW_NBANDS = 3 ! default = 1 - ! The number of bands of penetrating shortwave radiation. - -! === module MOM_tracer_advect === -TRACER_ADVECTION_SCHEME = "PPM:H3" ! default = "PLM" - ! The horizontal transport scheme for tracers: - ! PLM - Piecewise Linear Method - ! PPM:H3 - Piecewise Parabolic Method (Huyhn 3rd order) - ! PPM - Piecewise Parabolic Method (Colella-Woodward) - -! === module MOM_tracer_hor_diff === -CHECK_DIFFUSIVE_CFL = True ! [Boolean] default = False - ! If true, use enough iterations the diffusion to ensure that the diffusive - ! equivalent of the CFL limit is not violated. If false, always use the greater - ! of 1 or MAX_TR_DIFFUSION_CFL iteration. - -! === module MOM_neutral_diffusion === -! This module implements neutral diffusion of tracers -USE_NEUTRAL_DIFFUSION = True ! [Boolean] default = False - ! If true, enables the neutral diffusion module. - -! === module MOM_lateral_boundary_diffusion === -! This module implements lateral diffusion of tracers near boundaries - -! === module MOM_sum_output === -CALCULATE_APE = False ! [Boolean] default = True - ! If true, calculate the available potential energy of the interfaces. Setting - ! this to false reduces the memory footprint of high-PE-count models - ! dramatically. -MAXTRUNC = 100000 ! [truncations save_interval-1] default = 0 - ! The run will be stopped, and the day set to a very large value if the velocity - ! is truncated more than MAXTRUNC times between energy saves. Set MAXTRUNC to 0 - ! to stop if there is any truncation of velocities. -ENERGYSAVEDAYS = 0.25 ! [days] default = 1.0 - ! The interval in units of TIMEUNIT between saves of the energies of the run and - ! other globally summed diagnostics. - -! === module ocean_model_init === - -! === module MOM_oda_incupd === -ODA_INCUPD = @[ODA_INCUPD] ! [Boolean] default = False - ! If true, oda incremental updates will be applied - ! everywhere in the domain. -ODA_INCUPD_FILE = "mom6_increment.nc" ! The name of the file with the T,S,h increments. - -ODA_TEMPINC_VAR = "Temp" ! default = "ptemp_inc" - ! The name of the potential temperature inc. variable in - ! ODA_INCUPD_FILE. -ODA_SALTINC_VAR = "Salt" ! default = "sal_inc" - ! The name of the salinity inc. variable in - ! ODA_INCUPD_FILE. -ODA_THK_VAR = "h" ! default = "h" - ! The name of the int. depth inc. variable in - ! ODA_INCUPD_FILE. -ODA_INCUPD_UV = true ! -ODA_UINC_VAR = "u" ! default = "u_inc" - ! The name of the zonal vel. inc. variable in - ! ODA_INCUPD_UV_FILE. -ODA_VINC_VAR = "v" ! default = "v_inc" - ! The name of the meridional vel. inc. variable in - ! ODA_INCUPD_UV_FILE. -ODA_INCUPD_NHOURS = @[ODA_INCUPD_NHOURS] ! default=3.0 - -! === module MOM_surface_forcing === -OCEAN_SURFACE_STAGGER = "A" ! default = "C" - ! A case-insensitive character string to indicate the - ! staggering of the surface velocity field that is - ! returned to the coupler. Valid values include - ! 'A', 'B', or 'C'. - -MAX_P_SURF = 0.0 ! [Pa] default = -1.0 - ! The maximum surface pressure that can be exerted by the atmosphere and - ! floating sea-ice or ice shelves. This is needed because the FMS coupling - ! structure does not limit the water that can be frozen out of the ocean and the - ! ice-ocean heat fluxes are treated explicitly. No limit is applied if a - ! negative value is used. -WIND_STAGGER = "A" ! default = "C" - ! A case-insensitive character string to indicate the - ! staggering of the input wind stress field. Valid - ! values are 'A', 'B', or 'C'. -CD_TIDES = 0.0018 ! [nondim] default = 1.0E-04 - ! The drag coefficient that applies to the tides. -GUST_CONST = 0.02 ! [Pa] default = 0.0 - ! The background gustiness in the winds. -FIX_USTAR_GUSTLESS_BUG = False ! [Boolean] default = True - ! If true correct a bug in the time-averaging of the gustless wind friction - ! velocity -! === module ocean_stochastics === -DO_SPPT = @[DO_OCN_SPPT] ! [Boolean] default = False - ! If true perturb the diabatic tendencies in MOM_diabatic_driver -PERT_EPBL = @[PERT_EPBL] ! [Boolean] default = False - ! If true perturb the KE dissipation and destruction in MOM_energetic_PBL - -! === module MOM_restart === - -! === module MOM_file_parser === diff --git a/parm/ufs/mom6/MOM_input_template_500 b/parm/ufs/mom6/MOM_input_template_500 deleted file mode 100644 index dde805d247..0000000000 --- a/parm/ufs/mom6/MOM_input_template_500 +++ /dev/null @@ -1,592 +0,0 @@ -! This file was written by the model and records the non-default parameters used at run-time. -! === module MOM === - -! === module MOM_unit_scaling === -! Parameters for doing unit scaling of variables. -USE_REGRIDDING = True ! [Boolean] default = False - ! If True, use the ALE algorithm (regridding/remapping). If False, use the - ! layered isopycnal algorithm. -THICKNESSDIFFUSE = True ! [Boolean] default = False - ! If true, interface heights are diffused with a coefficient of KHTH. -THICKNESSDIFFUSE_FIRST = True ! [Boolean] default = False - ! If true, do thickness diffusion before dynamics. This is only used if - ! THICKNESSDIFFUSE is true. -DT = @[DT_DYNAM_MOM6] ! [s] - ! The (baroclinic) dynamics time step. The time-step that is actually used will - ! be an integer fraction of the forcing time-step (DT_FORCING in ocean-only mode - ! or the coupling timestep in coupled mode.) -DT_THERM = @[DT_THERM_MOM6] ! [s] default = 1800.0 - ! The thermodynamic and tracer advection time step. Ideally DT_THERM should be - ! an integer multiple of DT and less than the forcing or coupling time-step, - ! unless THERMO_SPANS_COUPLING is true, in which case DT_THERM can be an integer - ! multiple of the coupling timestep. By default DT_THERM is set to DT. -THERMO_SPANS_COUPLING = @[MOM6_THERMO_SPAN] ! [Boolean] default = False - ! If true, the MOM will take thermodynamic and tracer timesteps that can be - ! longer than the coupling timestep. The actual thermodynamic timestep that is - ! used in this case is the largest integer multiple of the coupling timestep - ! that is less than or equal to DT_THERM. -HFREEZE = 20.0 ! [m] default = -1.0 - ! If HFREEZE > 0, melt potential will be computed. The actual depth - ! over which melt potential is computed will be min(HFREEZE, OBLD) - ! where OBLD is the boundary layer depth. If HFREEZE <= 0 (default) - ! melt potential will not be computed. -FRAZIL = True ! [Boolean] default = False - ! If true, water freezes if it gets too cold, and the accumulated heat deficit - ! is returned in the surface state. FRAZIL is only used if - ! ENABLE_THERMODYNAMICS is true. -BOUND_SALINITY = True ! [Boolean] default = False - ! If true, limit salinity to being positive. (The sea-ice model may ask for more - ! salt than is available and drive the salinity negative otherwise.) - -! === module MOM_domains === -TRIPOLAR_N = True ! [Boolean] default = False - ! Use tripolar connectivity at the northern edge of the domain. With - ! TRIPOLAR_N, NIGLOBAL must be even. -NIGLOBAL = @[NX_GLB] ! - ! The total number of thickness grid points in the x-direction in the physical - ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. -NJGLOBAL = @[NY_GLB] ! - ! The total number of thickness grid points in the y-direction in the physical - ! domain. With STATIC_MEMORY_ this is set in MOM_memory.h at compile time. - -! === module MOM_hor_index === -! Sets the horizontal array index types. - -! === module MOM_fixed_initialization === -INPUTDIR = "INPUT" ! default = "." - ! The directory in which input files are found. - -! === module MOM_grid_init === -GRID_CONFIG = "mosaic" ! - ! A character string that determines the method for defining the horizontal - ! grid. Current options are: - ! mosaic - read the grid from a mosaic (supergrid) - ! file set by GRID_FILE. - ! cartesian - use a (flat) Cartesian grid. - ! spherical - use a simple spherical grid. - ! mercator - use a Mercator spherical grid. -GRID_FILE = "ocean_hgrid.nc" ! - ! Name of the file from which to read horizontal grid data. -GRID_ROTATION_ANGLE_BUGS = False ! [Boolean] default = True - ! If true, use an older algorithm to calculate the sine and - ! cosines needed rotate between grid-oriented directions and - ! true north and east. Differences arise at the tripolar fold -USE_TRIPOLAR_GEOLONB_BUG = False ! [Boolean] default = True - ! If true, use older code that incorrectly sets the longitude in some points - ! along the tripolar fold to be off by 360 degrees. -TOPO_CONFIG = "file" ! - ! This specifies how bathymetry is specified: - ! file - read bathymetric information from the file - ! specified by (TOPO_FILE). - ! flat - flat bottom set to MAXIMUM_DEPTH. - ! bowl - an analytically specified bowl-shaped basin - ! ranging between MAXIMUM_DEPTH and MINIMUM_DEPTH. - ! spoon - a similar shape to 'bowl', but with an vertical - ! wall at the southern face. - ! halfpipe - a zonally uniform channel with a half-sine - ! profile in the meridional direction. - ! bbuilder - build topography from list of functions. - ! benchmark - use the benchmark test case topography. - ! Neverworld - use the Neverworld test case topography. - ! DOME - use a slope and channel configuration for the - ! DOME sill-overflow test case. - ! ISOMIP - use a slope and channel configuration for the - ! ISOMIP test case. - ! DOME2D - use a shelf and slope configuration for the - ! DOME2D gravity current/overflow test case. - ! Kelvin - flat but with rotated land mask. - ! seamount - Gaussian bump for spontaneous motion test case. - ! dumbbell - Sloshing channel with reservoirs on both ends. - ! shelfwave - exponential slope for shelfwave test case. - ! Phillips - ACC-like idealized topography used in the Phillips config. - ! dense - Denmark Strait-like dense water formation and overflow. - ! USER - call a user modified routine. -TOPO_FILE = "ocean_topog.nc" ! default = "topog.nc" - ! The file from which the bathymetry is read. -!MAXIMUM_DEPTH = 5801.341919389728 ! [m] - ! The (diagnosed) maximum depth of the ocean. -MINIMUM_DEPTH = 10.0 ! [m] default = 0.0 - ! If MASKING_DEPTH is unspecified, then anything shallower than MINIMUM_DEPTH is - ! assumed to be land and all fluxes are masked out. If MASKING_DEPTH is - ! specified, then all depths shallower than MINIMUM_DEPTH but deeper than - ! MASKING_DEPTH are rounded to MINIMUM_DEPTH. - -! === module MOM_open_boundary === -! Controls where open boundaries are located, what kind of boundary condition to impose, and what data to apply, -! if any. -MASKING_DEPTH = 0.0 ! [m] default = -9999.0 - ! The depth below which to mask points as land points, for which all fluxes are - ! zeroed out. MASKING_DEPTH is ignored if negative. - -! === module MOM_verticalGrid === -! Parameters providing information about the vertical grid. -NK = 25 ! [nondim] - ! The number of model layers. - -! === module MOM_tracer_registry === - -! === module MOM_EOS === -TFREEZE_FORM = "MILLERO_78" ! default = "LINEAR" - ! TFREEZE_FORM determines which expression should be used for the freezing - ! point. Currently, the valid choices are "LINEAR", "MILLERO_78", "TEOS10" - -! === module MOM_restart === -RESTART_CHECKSUMS_REQUIRED = False -! === module MOM_tracer_flow_control === - -! === module MOM_coord_initialization === -COORD_CONFIG = "file" ! default = "none" - ! This specifies how layers are to be defined: - ! ALE or none - used to avoid defining layers in ALE mode - ! file - read coordinate information from the file - ! specified by (COORD_FILE). - ! BFB - Custom coords for buoyancy-forced basin case - ! based on SST_S, T_BOT and DRHO_DT. - ! linear - linear based on interfaces not layers - ! layer_ref - linear based on layer densities - ! ts_ref - use reference temperature and salinity - ! ts_range - use range of temperature and salinity - ! (T_REF and S_REF) to determine surface density - ! and GINT calculate internal densities. - ! gprime - use reference density (RHO_0) for surface - ! density and GINT calculate internal densities. - ! ts_profile - use temperature and salinity profiles - ! (read from COORD_FILE) to set layer densities. - ! USER - call a user modified routine. -COORD_FILE = "layer_coord25.nc" ! - ! The file from which the coordinate densities are read. -REGRIDDING_COORDINATE_MODE = "HYCOM1" ! default = "LAYER" - ! Coordinate mode for vertical regridding. Choose among the following - ! possibilities: LAYER - Isopycnal or stacked shallow water layers - ! ZSTAR, Z* - stretched geopotential z* - ! SIGMA_SHELF_ZSTAR - stretched geopotential z* ignoring shelf - ! SIGMA - terrain following coordinates - ! RHO - continuous isopycnal - ! HYCOM1 - HyCOM-like hybrid coordinate - ! SLIGHT - stretched coordinates above continuous isopycnal - ! ADAPTIVE - optimize for smooth neutral density surfaces -BOUNDARY_EXTRAPOLATION = True ! [Boolean] default = False - ! When defined, a proper high-order reconstruction scheme is used within - ! boundary cells rather than PCM. E.g., if PPM is used for remapping, a PPM - ! reconstruction will also be used within boundary cells. -ALE_COORDINATE_CONFIG = "HYBRID:hycom1_25.nc,sigma2,FNC1:5,4000,4.5,.01" ! default = "UNIFORM" - ! Determines how to specify the coordinate - ! resolution. Valid options are: - ! PARAM - use the vector-parameter ALE_RESOLUTION - ! UNIFORM[:N] - uniformly distributed - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,dz - ! or FILE:lev.nc,interfaces=zw - ! WOA09[:N] - the WOA09 vertical grid (approximately) - ! FNC1:string - FNC1:dz_min,H_total,power,precision - ! HYBRID:string - read from a file. The string specifies - ! the filename and two variable names, separated - ! by a comma or space, for sigma-2 and dz. e.g. - ! HYBRID:vgrid.nc,sigma2,dz -!ALE_RESOLUTION = 2*5.0, 5.01, 5.07, 5.25, 5.68, 6.55, 8.1, 10.66, 14.620000000000001, 20.450000000000003, 28.73, 40.1, 55.32, 75.23, 100.8, 133.09, 173.26, 222.62, 282.56, 354.62, 440.47, 541.87, 660.76, 799.1800000000001 ! [m] - ! The distribution of vertical resolution for the target - ! grid used for Eulerian-like coordinates. For example, - ! in z-coordinate mode, the parameter is a list of level - ! thicknesses (in m). In sigma-coordinate mode, the list - ! is of non-dimensional fractions of the water column. -!TARGET_DENSITIES = 1010.0, 1020.843017578125, 1027.0274658203125, 1029.279541015625, 1030.862548828125, 1032.1572265625, 1033.27978515625, 1034.251953125, 1034.850830078125, 1035.28857421875, 1035.651123046875, 1035.967529296875, 1036.2410888671875, 1036.473876953125, 1036.6800537109375, 1036.8525390625, 1036.9417724609375, 1037.0052490234375, 1037.057373046875, 1037.1065673828125, 1037.15576171875, 1037.2060546875, 1037.26416015625, 1037.3388671875, 1037.4749755859375, 1038.0 ! [m] - ! HYBRID target densities for itnerfaces -REGRID_COMPRESSIBILITY_FRACTION = 0.01 ! [not defined] default = 0.0 - ! When interpolating potential density profiles we can add - ! some artificial compressibility solely to make homogenous - ! regions appear stratified. -MAXIMUM_INT_DEPTH_CONFIG = "FNC1:5,8000.0,1.0,.125" ! default = "NONE" - ! Determines how to specify the maximum interface depths. - ! Valid options are: - ! NONE - there are no maximum interface depths - ! PARAM - use the vector-parameter MAXIMUM_INTERFACE_DEPTHS - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,Z - ! FNC1:string - FNC1:dz_min,H_total,power,precision -!MAXIMUM_INT_DEPTHS = 0.0, 5.0, 36.25, 93.75, 177.5, 287.5, 423.75, 586.25, 775.0, 990.0, 1231.25, 1498.75, 1792.5, 2112.5, 2458.75, 2831.25, 3230.0, 3655.0, 4106.25, 4583.75, 5087.5, 5617.5, 6173.75, 6756.25, 7365.0, 8000.0 ! [m] - ! The list of maximum depths for each interface. -MAX_LAYER_THICKNESS_CONFIG = "FNC1:400,31000.0,0.1,.01" ! default = "NONE" - ! Determines how to specify the maximum layer thicknesses. - ! Valid options are: - ! NONE - there are no maximum layer thicknesses - ! PARAM - use the vector-parameter MAX_LAYER_THICKNESS - ! FILE:string - read from a file. The string specifies - ! the filename and variable name, separated - ! by a comma or space, e.g. FILE:lev.nc,Z - ! FNC1:string - FNC1:dz_min,H_total,power,precision -!MAX_LAYER_THICKNESS = 400.0, 1094.2, 1144.02, 1174.81, 1197.42, 1215.4099999999999, 1230.42, 1243.3200000000002, 1254.65, 1264.78, 1273.94, 1282.31, 1290.02, 1297.17, 1303.85, 1310.1, 1316.0, 1321.5700000000002, 1326.85, 1331.87, 1336.67, 1341.25, 1345.6399999999999, 1349.85, 1353.88 ! [m] - ! The list of maximum thickness for each layer. -REMAPPING_SCHEME = "PPM_H4" ! default = "PLM" - ! This sets the reconstruction scheme used for vertical remapping for all - ! variables. It can be one of the following schemes: PCM (1st-order - ! accurate) - ! PLM (2nd-order accurate) - ! PPM_H4 (3rd-order accurate) - ! PPM_IH4 (3rd-order accurate) - ! PQM_IH4IH3 (4th-order accurate) - ! PQM_IH6IH5 (5th-order accurate) - -! === module MOM_grid === -! Parameters providing information about the lateral grid. - -! === module MOM_state_initialization === -INIT_LAYERS_FROM_Z_FILE = True ! [Boolean] default = False - ! If true, initialize the layer thicknesses, temperatures, and salinities from a - ! Z-space file on a latitude-longitude grid. - -! === module MOM_initialize_layers_from_Z === -TEMP_SALT_Z_INIT_FILE = "" ! default = "temp_salt_z.nc" - ! The name of the z-space input file used to initialize - ! temperatures (T) and salinities (S). If T and S are not - ! in the same file, TEMP_Z_INIT_FILE and SALT_Z_INIT_FILE - ! must be set. -TEMP_Z_INIT_FILE = "woa18_decav_t00_01.nc" ! default = "" - ! The name of the z-space input file used to initialize - ! temperatures, only. -SALT_Z_INIT_FILE = "woa18_decav_s00_01.nc" ! default = "" - ! The name of the z-space input file used to initialize - ! temperatures, only. -Z_INIT_FILE_PTEMP_VAR = "t_an" ! default = "ptemp" - ! The name of the potential temperature variable in - ! TEMP_Z_INIT_FILE. -Z_INIT_FILE_SALT_VAR = "s_an" ! default = "salt" - ! The name of the salinity variable in - ! SALT_Z_INIT_FILE. -Z_INIT_ALE_REMAPPING = True ! [Boolean] default = False - ! If True, then remap straight to model coordinate from file. - -! === module MOM_diag_mediator === -NUM_DIAG_COORDS = 1 - ! The number of diagnostic vertical coordinates to use. - ! For each coordinate, an entry in DIAG_COORDS must be provided. -DIAG_COORDS = "z Z ZSTAR" - ! A list of string tuples associating diag_table modules to - ! a coordinate definition used for diagnostics. Each string - ! is of the form "MODULE_SUFFIX,PARAMETER_SUFFIX,COORDINATE_NAME". -DIAG_COORD_DEF_Z="FILE:@[MOM6_DIAG_COORD_DEF_Z_FILE],interfaces=zw" -DIAG_MISVAL = @[MOM6_DIAG_MISVAL] - -! === module MOM_MEKE === -USE_MEKE = True ! [Boolean] default = False - ! If true, turns on the MEKE scheme which calculates a sub-grid mesoscale eddy - ! kinetic energy budget. - -! === module MOM_lateral_mixing_coeffs === -USE_VARIABLE_MIXING = True ! [Boolean] default = False - ! If true, the variable mixing code will be called. This allows diagnostics to - ! be created even if the scheme is not used. If KHTR_SLOPE_CFF>0 or - ! KhTh_Slope_Cff>0, this is set to true regardless of what is in the parameter - ! file. -! === module MOM_set_visc === -CHANNEL_DRAG = True ! [Boolean] default = False - ! If true, the bottom drag is exerted directly on each layer proportional to the - ! fraction of the bottom it overlies. -HBBL = 10.0 ! [m] - ! The thickness of a bottom boundary layer with a viscosity of KVBBL if - ! BOTTOMDRAGLAW is not defined, or the thickness over which near-bottom - ! velocities are averaged for the drag law if BOTTOMDRAGLAW is defined but - ! LINEAR_DRAG is not. -KV = 1.0E-04 ! [m2 s-1] - ! The background kinematic viscosity in the interior. The molecular value, ~1e-6 - ! m2 s-1, may be used. - -! === module MOM_continuity === - -! === module MOM_continuity_PPM === - -! === module MOM_CoriolisAdv === -CORIOLIS_SCHEME = "SADOURNY75_ENSTRO" ! default = "SADOURNY75_ENERGY" - ! CORIOLIS_SCHEME selects the discretization for the Coriolis terms. Valid - ! values are: - ! SADOURNY75_ENERGY - Sadourny, 1975; energy cons. - ! ARAKAWA_HSU90 - Arakawa & Hsu, 1990 - ! SADOURNY75_ENSTRO - Sadourny, 1975; enstrophy cons. - ! ARAKAWA_LAMB81 - Arakawa & Lamb, 1981; En. + Enst. - ! ARAKAWA_LAMB_BLEND - A blend of Arakawa & Lamb with - ! Arakawa & Hsu and Sadourny energy -BOUND_CORIOLIS = True ! [Boolean] default = False - ! If true, the Coriolis terms at u-points are bounded by the four estimates of - ! (f+rv)v from the four neighboring v-points, and similarly at v-points. This - ! option would have no effect on the SADOURNY Coriolis scheme if it were - ! possible to use centered difference thickness fluxes. - -! === module MOM_PressureForce === - -! === module MOM_PressureForce_AFV === -MASS_WEIGHT_IN_PRESSURE_GRADIENT = True ! [Boolean] default = False - ! If true, use mass weighting when interpolating T/S for integrals near the - ! bathymetry in AFV pressure gradient calculations. - -! === module MOM_hor_visc === -LAPLACIAN = True ! [Boolean] default = False - ! If true, use a Laplacian horizontal viscosity. -KH_VEL_SCALE = 0.01 ! [m s-1] default = 0.0 - ! The velocity scale which is multiplied by the grid spacing to calculate the - ! Laplacian viscosity. The final viscosity is the largest of this scaled - ! viscosity, the Smagorinsky and Leith viscosities, and KH. -KH_SIN_LAT = 2000.0 ! [m2 s-1] default = 0.0 - ! The amplitude of a latitudinally-dependent background viscosity of the form - ! KH_SIN_LAT*(SIN(LAT)**KH_PWR_OF_SINE). -SMAGORINSKY_KH = True ! [Boolean] default = False - ! If true, use a Smagorinsky nonlinear eddy viscosity. -SMAG_LAP_CONST = 0.15 ! [nondim] default = 0.0 - ! The nondimensional Laplacian Smagorinsky constant, often 0.15. -AH_VEL_SCALE = 0.01 ! [m s-1] default = 0.0 - ! The velocity scale which is multiplied by the cube of the grid spacing to - ! calculate the biharmonic viscosity. The final viscosity is the largest of this - ! scaled viscosity, the Smagorinsky and Leith viscosities, and AH. -SMAGORINSKY_AH = True ! [Boolean] default = False - ! If true, use a biharmonic Smagorinsky nonlinear eddy viscosity. -SMAG_BI_CONST = 0.06 ! [nondim] default = 0.0 - ! The nondimensional biharmonic Smagorinsky constant, typically 0.015 - 0.06. -USE_LAND_MASK_FOR_HVISC = True ! [Boolean] default = False - ! If true, use Use the land mask for the computation of thicknesses at velocity - ! locations. This eliminates the dependence on arbitrary values over land or - ! outside of the domain. - -! === module MOM_vert_friction === -HMIX_FIXED = 0.5 ! [m] - ! The prescribed depth over which the near-surface viscosity and diffusivity are - ! elevated when the bulk mixed layer is not used. -KVML = 1.0E-04 ! [m2 s-1] default = 1.0E-04 - ! The kinematic viscosity in the mixed layer. A typical value is ~1e-2 m2 s-1. - ! KVML is not used if BULKMIXEDLAYER is true. The default is set by KV. -MAXVEL = 6.0 ! [m s-1] default = 3.0E+08 - ! The maximum velocity allowed before the velocity components are truncated. - -! === module MOM_barotropic === -BOUND_BT_CORRECTION = True ! [Boolean] default = False - ! If true, the corrective pseudo mass-fluxes into the barotropic solver are - ! limited to values that require less than maxCFL_BT_cont to be accommodated. -BT_PROJECT_VELOCITY = True ! [Boolean] default = False - ! If true, step the barotropic velocity first and project out the velocity - ! tendency by 1+BEBT when calculating the transport. The default (false) is to - ! use a predictor continuity step to find the pressure field, and then to do a - ! corrector continuity step using a weighted average of the old and new - ! velocities, with weights of (1-BEBT) and BEBT. -DYNAMIC_SURFACE_PRESSURE = False ! [Boolean] default = False - ! If true, add a dynamic pressure due to a viscous ice shelf, for instance. -BEBT = 0.2 ! [nondim] default = 0.1 - ! BEBT determines whether the barotropic time stepping uses the forward-backward - ! time-stepping scheme or a backward Euler scheme. BEBT is valid in the range - ! from 0 (for a forward-backward treatment of nonrotating gravity waves) to 1 - ! (for a backward Euler treatment). In practice, BEBT must be greater than about - ! 0.05. -DTBT = -0.9 ! [s or nondim] default = -0.98 - ! The barotropic time step, in s. DTBT is only used with the split explicit time - ! stepping. To set the time step automatically based the maximum stable value - ! use 0, or a negative value gives the fraction of the stable value. Setting - ! DTBT to 0 is the same as setting it to -0.98. The value of DTBT that will - ! actually be used is an integer fraction of DT, rounding down. - -! === module MOM_mixed_layer_restrat === -MIXEDLAYER_RESTRAT = False ! [Boolean] default = False - ! If true, a density-gradient dependent re-stratifying flow is imposed in the - ! mixed layer. Can be used in ALE mode without restriction but in layer mode can - ! only be used if BULKMIXEDLAYER is true. -FOX_KEMPER_ML_RESTRAT_COEF = 60.0 ! [nondim] default = 0.0 - ! A nondimensional coefficient that is proportional to the ratio of the - ! deformation radius to the dominant lengthscale of the submesoscale mixed layer - ! instabilities, times the minimum of the ratio of the mesoscale eddy kinetic - ! energy to the large-scale geostrophic kinetic energy or 1 plus the square of - ! the grid spacing over the deformation radius, as detailed by Fox-Kemper et al. - ! (2010) -MLE_FRONT_LENGTH = 200.0 ! [m] default = 0.0 - ! If non-zero, is the frontal-length scale used to calculate the upscaling of - ! buoyancy gradients that is otherwise represented by the parameter - ! FOX_KEMPER_ML_RESTRAT_COEF. If MLE_FRONT_LENGTH is non-zero, it is recommended - ! to set FOX_KEMPER_ML_RESTRAT_COEF=1.0. -MLE_USE_PBL_MLD = True ! [Boolean] default = False - ! If true, the MLE parameterization will use the mixed-layer depth provided by - ! the active PBL parameterization. If false, MLE will estimate a MLD based on a - ! density difference with the surface using the parameter MLE_DENSITY_DIFF. -MLE_MLD_DECAY_TIME = 2.592E+06 ! [s] default = 0.0 - ! The time-scale for a running-mean filter applied to the mixed-layer depth used - ! in the MLE restratification parameterization. When the MLD deepens below the - ! current running-mean the running-mean is instantaneously set to the current - ! MLD. - -! === module MOM_diabatic_driver === -! The following parameters are used for diabatic processes. -ENERGETICS_SFC_PBL = True ! [Boolean] default = False - ! If true, use an implied energetics planetary boundary layer scheme to - ! determine the diffusivity and viscosity in the surface boundary layer. -EPBL_IS_ADDITIVE = False ! [Boolean] default = True - ! If true, the diffusivity from ePBL is added to all other diffusivities. - ! Otherwise, the larger of kappa-shear and ePBL diffusivities are used. - -! === module MOM_CVMix_KPP === -! This is the MOM wrapper to CVMix:KPP -! See http://cvmix.github.io/ - -! === module MOM_tidal_mixing === -! Vertical Tidal Mixing Parameterization - -! === module MOM_CVMix_conv === -! Parameterization of enhanced mixing due to convection via CVMix - -! === module MOM_set_diffusivity === - -! === module MOM_bkgnd_mixing === -! Adding static vertical background mixing coefficients -KD = 1.5E-05 ! [m2 s-1] default = 0.0 - ! The background diapycnal diffusivity of density in the interior. Zero or the - ! molecular value, ~1e-7 m2 s-1, may be used. -KD_MIN = 2.0E-06 ! [m2 s-1] default = 2.0E-07 - ! The minimum diapycnal diffusivity. -HENYEY_IGW_BACKGROUND = True ! [Boolean] default = False - ! If true, use a latitude-dependent scaling for the near surface background - ! diffusivity, as described in Harrison & Hallberg, JPO 2008. - -! === module MOM_kappa_shear === -! Parameterization of shear-driven turbulence following Jackson, Hallberg and Legg, JPO 2008 -USE_JACKSON_PARAM = True ! [Boolean] default = False - ! If true, use the Jackson-Hallberg-Legg (JPO 2008) shear mixing - ! parameterization. -MAX_RINO_IT = 25 ! [nondim] default = 50 - ! The maximum number of iterations that may be used to estimate the Richardson - ! number driven mixing. - -! === module MOM_CVMix_shear === -! Parameterization of shear-driven turbulence via CVMix (various options) - -! === module MOM_CVMix_ddiff === -! Parameterization of mixing due to double diffusion processes via CVMix - -! === module MOM_diabatic_aux === -! The following parameters are used for auxiliary diabatic processes. - -! === module MOM_energetic_PBL === -EPBL_USTAR_MIN = 1.45842E-18 ! [m s-1] - ! The (tiny) minimum friction velocity used within the ePBL code, derived from - ! OMEGA and ANGSTROM.. -USE_LA_LI2016 = @[MOM6_USE_LI2016] ! [nondim] default = False - ! A logical to use the Li et al. 2016 (submitted) formula to determine the - ! Langmuir number. -USE_WAVES = @[MOM6_USE_WAVES] ! [Boolean] default = False - ! If true, enables surface wave modules. -WAVE_METHOD = "SURFACE_BANDS" ! default = "EMPTY" - ! Choice of wave method, valid options include: - ! TEST_PROFILE - Prescribed from surface Stokes drift - ! and a decay wavelength. - ! SURFACE_BANDS - Computed from multiple surface values - ! and decay wavelengths. - ! DHH85 - Uses Donelan et al. 1985 empirical - ! wave spectrum with prescribed values. - ! LF17 - Infers Stokes drift profile from wind - ! speed following Li and Fox-Kemper 2017. -SURFBAND_SOURCE = "COUPLER" ! default = "EMPTY" - ! Choice of SURFACE_BANDS data mode, valid options include: - ! DATAOVERRIDE - Read from NetCDF using FMS DataOverride. - ! COUPLER - Look for variables from coupler pass - ! INPUT - Testing with fixed values. -STK_BAND_COUPLER = 3 ! default = 1 - ! STK_BAND_COUPLER is the number of Stokes drift bands in the coupler. This has - ! to be consistent with the number of Stokes drift bands in WW3, or the model - ! will fail. -SURFBAND_WAVENUMBERS = 0.04, 0.11, 0.3305 ! [rad/m] default = 0.12566 - ! Central wavenumbers for surface Stokes drift bands. -EPBL_LANGMUIR_SCHEME = "ADDITIVE" ! default = "NONE" - ! EPBL_LANGMUIR_SCHEME selects the method for including Langmuir turbulence. - ! Valid values are: - ! NONE - Do not do any extra mixing due to Langmuir turbulence - ! RESCALE - Use a multiplicative rescaling of mstar to account for Langmuir - ! turbulence - ! ADDITIVE - Add a Langmuir turblence contribution to mstar to other - ! contributions -LT_ENHANCE_COEF = 0.044 ! [nondim] default = 0.447 - ! Coefficient for Langmuir enhancement of mstar -LT_ENHANCE_EXP = -1.5 ! [nondim] default = -1.33 - ! Exponent for Langmuir enhancementt of mstar -LT_MOD_LAC1 = 0.0 ! [nondim] default = -0.87 - ! Coefficient for modification of Langmuir number due to MLD approaching Ekman - ! depth. -LT_MOD_LAC4 = 0.0 ! [nondim] default = 0.95 - ! Coefficient for modification of Langmuir number due to ratio of Ekman to - ! stable Obukhov depth. -LT_MOD_LAC5 = 0.22 ! [nondim] default = 0.95 - ! Coefficient for modification of Langmuir number due to ratio of Ekman to - ! unstable Obukhov depth. - -! === module MOM_regularize_layers === - -! === module MOM_opacity === - -! === module MOM_tracer_advect === -TRACER_ADVECTION_SCHEME = "PPM:H3" ! default = "PLM" - ! The horizontal transport scheme for tracers: - ! PLM - Piecewise Linear Method - ! PPM:H3 - Piecewise Parabolic Method (Huyhn 3rd order) - ! PPM - Piecewise Parabolic Method (Colella-Woodward) - -! === module MOM_tracer_hor_diff === -KHTR = 50.0 ! [m2 s-1] default = 0.0 - ! The background along-isopycnal tracer diffusivity. -CHECK_DIFFUSIVE_CFL = True ! [Boolean] default = False - ! If true, use enough iterations the diffusion to ensure that the diffusive - ! equivalent of the CFL limit is not violated. If false, always use the greater - ! of 1 or MAX_TR_DIFFUSION_CFL iteration. -MAX_TR_DIFFUSION_CFL = 2.0 ! [nondim] default = -1.0 - ! If positive, locally limit the along-isopycnal tracer diffusivity to keep the - ! diffusive CFL locally at or below this value. The number of diffusive - ! iterations is often this value or the next greater integer. - -! === module MOM_neutral_diffusion === -! This module implements neutral diffusion of tracers -USE_NEUTRAL_DIFFUSION = True ! [Boolean] default = False - ! If true, enables the neutral diffusion module. - -! === module MOM_sum_output === -MAXTRUNC = 1000 ! [truncations save_interval-1] default = 0 - ! The run will be stopped, and the day set to a very large value if the velocity - ! is truncated more than MAXTRUNC times between energy saves. Set MAXTRUNC to 0 - ! to stop if there is any truncation of velocities. - -! === module ocean_model_init === - -! === module MOM_oda_incupd === -ODA_INCUPD = @[ODA_INCUPD] ! [Boolean] default = False - ! If true, oda incremental updates will be applied - ! everywhere in the domain. -ODA_INCUPD_FILE = "mom6_increment.nc" ! The name of the file with the T,S,h increments. - -ODA_TEMPINC_VAR = "Temp" ! default = "ptemp_inc" - ! The name of the potential temperature inc. variable in - ! ODA_INCUPD_FILE. -ODA_SALTINC_VAR = "Salt" ! default = "sal_inc" - ! The name of the salinity inc. variable in - ! ODA_INCUPD_FILE. -ODA_THK_VAR = "h" ! default = "h" - ! The name of the int. depth inc. variable in - ! ODA_INCUPD_FILE. -ODA_INCUPD_UV = true ! -ODA_UINC_VAR = "u" ! default = "u_inc" - ! The name of the zonal vel. inc. variable in - ! ODA_INCUPD_UV_FILE. -ODA_VINC_VAR = "v" ! default = "v_inc" - ! The name of the meridional vel. inc. variable in - ! ODA_INCUPD_UV_FILE. -ODA_INCUPD_NHOURS = @[ODA_INCUPD_NHOURS] ! default=3.0 - -! === module MOM_surface_forcing === -OCEAN_SURFACE_STAGGER = "A" ! default = "C" - ! A case-insensitive character string to indicate the - ! staggering of the surface velocity field that is - ! returned to the coupler. Valid values include - ! 'A', 'B', or 'C'. - -MAX_P_SURF = 0.0 ! [Pa] default = -1.0 - ! The maximum surface pressure that can be exerted by the atmosphere and - ! floating sea-ice or ice shelves. This is needed because the FMS coupling - ! structure does not limit the water that can be frozen out of the ocean and the - ! ice-ocean heat fluxes are treated explicitly. No limit is applied if a - ! negative value is used. -WIND_STAGGER = "A" ! default = "C" - ! A case-insensitive character string to indicate the - ! staggering of the input wind stress field. Valid - ! values are 'A', 'B', or 'C'. -! === module MOM_restart === - -! === module MOM_file_parser === diff --git a/parm/ufs/ufs.configure.atm.IN b/parm/ufs/ufs.configure.atm.IN deleted file mode 100644 index 3457d8cf53..0000000000 --- a/parm/ufs/ufs.configure.atm.IN +++ /dev/null @@ -1,22 +0,0 @@ -# ESMF # -logKindFlag: @[esmf_logkind] -globalResourceControl: true - -EARTH_component_list: ATM -EARTH_attributes:: - Verbosity = 0 -:: - -# ATM # -ATM_model: @[atm_model] -ATM_petlist_bounds: @[atm_petlist_bounds] -ATM_omp_num_threads: @[atm_omp_num_threads] -ATM_attributes:: - Verbosity = 0 - Diagnostic = 0 -:: - -# Run Sequence # -runSeq:: - ATM -:: diff --git a/parm/ufs/ufs.configure.atm_aero.IN b/parm/ufs/ufs.configure.atm_aero.IN deleted file mode 100644 index 629cc156ce..0000000000 --- a/parm/ufs/ufs.configure.atm_aero.IN +++ /dev/null @@ -1,40 +0,0 @@ -############################################# -#### UFS Run-Time Configuration File ##### -############################################# - -# ESMF # -logKindFlag: @[esmf_logkind] -globalResourceControl: true - -# EARTH # -EARTH_component_list: ATM CHM -EARTH_attributes:: - Verbosity = 0 -:: - -# ATM # -ATM_model: @[atm_model] -ATM_petlist_bounds: @[atm_petlist_bounds] -ATM_omp_num_threads: @[atm_omp_num_threads] -ATM_attributes:: - Verbosity = 0 -:: - -# CHM # -CHM_model: @[chm_model] -CHM_petlist_bounds: @[chm_petlist_bounds] -CHM_omp_num_threads: @[chm_omp_num_threads] -CHM_attributes:: - Verbosity = 0 -:: - -# Run Sequence # -runSeq:: - @@[coupling_interval_fast_sec] - ATM phase1 - ATM -> CHM - CHM - CHM -> ATM - ATM phase2 - @ -:: diff --git a/parm/ufs/ufs.configure.blocked_atm_wav.IN b/parm/ufs/ufs.configure.blocked_atm_wav.IN deleted file mode 100644 index b68aa2e735..0000000000 --- a/parm/ufs/ufs.configure.blocked_atm_wav.IN +++ /dev/null @@ -1,41 +0,0 @@ -############################################# -#### UFS Run-Time Configuration File ##### -############################################# - -# ESMF # -logKindFlag: @[esmf_logkind] -globalResourceControl: true - -# EARTH # -EARTH_component_list: ATM WAV -EARTH_attributes:: - Verbosity = max -:: - -# ATM # -ATM_model: @[atm_model] -ATM_petlist_bounds: @[atm_petlist_bounds] -ATM_omp_num_threads: @[atm_omp_num_threads] -ATM_attributes:: - Verbosity = max - DumpFields = true -:: - -# WAV # -WAV_model: @[wav_model] -WAV_petlist_bounds: @[wav_petlist_bounds] -WAV_omp_num_threads: @[wav_omp_num_threads] -WAV_attributes:: - Verbosity = max -:: - - - -# Run Sequence # -runSeq:: - @@[coupling_interval_sec] - ATM -> WAV - ATM - WAV - @ -:: diff --git a/parm/ufs/ufs.configure.cpld.IN b/parm/ufs/ufs.configure.cpld.IN deleted file mode 100644 index e473fb2a03..0000000000 --- a/parm/ufs/ufs.configure.cpld.IN +++ /dev/null @@ -1,122 +0,0 @@ -############################################# -#### UFS Run-Time Configuration File ##### -############################################# - -# ESMF # -logKindFlag: @[esmf_logkind] -globalResourceControl: true - -# EARTH # -EARTH_component_list: MED ATM OCN ICE -EARTH_attributes:: - Verbosity = 0 -:: - -# MED # -MED_model: @[med_model] -MED_petlist_bounds: @[med_petlist_bounds] -MED_omp_num_threads: @[med_omp_num_threads] -:: - -# ATM # -ATM_model: @[atm_model] -ATM_petlist_bounds: @[atm_petlist_bounds] -ATM_omp_num_threads: @[atm_omp_num_threads] -ATM_attributes:: - Verbosity = 0 - DumpFields = @[DumpFields] - ProfileMemory = false - OverwriteSlice = true -:: - -# OCN # -OCN_model: @[ocn_model] -OCN_petlist_bounds: @[ocn_petlist_bounds] -OCN_omp_num_threads: @[ocn_omp_num_threads] -OCN_attributes:: - Verbosity = 0 - DumpFields = @[DumpFields] - ProfileMemory = false - OverwriteSlice = true - mesh_ocn = @[MESH_OCN_ICE] - use_coldstart = @[use_coldstart] - use_mommesh = @[use_mommesh] -:: - -# ICE # -ICE_model: @[ice_model] -ICE_petlist_bounds: @[ice_petlist_bounds] -ICE_omp_num_threads: @[ice_omp_num_threads] -ICE_attributes:: - Verbosity = 0 - DumpFields = @[DumpFields] - ProfileMemory = false - OverwriteSlice = true - mesh_ice = @[MESH_OCN_ICE] - eps_imesh = @[eps_imesh] - stop_n = @[RESTART_N] - stop_option = nhours - stop_ymd = -999 -:: - -# CMEPS warm run sequence -runSeq:: -@@[coupling_interval_slow_sec] - MED med_phases_prep_ocn_avg - MED -> OCN :remapMethod=redist - OCN - @@[coupling_interval_fast_sec] - MED med_phases_prep_atm - MED med_phases_prep_ice - MED -> ATM :remapMethod=redist - MED -> ICE :remapMethod=redist - ATM - ICE - ATM -> MED :remapMethod=redist - MED med_phases_post_atm - ICE -> MED :remapMethod=redist - MED med_phases_post_ice - MED med_phases_ocnalb_run - MED med_phases_prep_ocn_accum - @ - OCN -> MED :remapMethod=redist - MED med_phases_post_ocn - MED med_phases_restart_write -@ -:: - -# CMEPS variables - -DRIVER_attributes:: -:: -MED_attributes:: - ATM_model = @[atm_model] - ICE_model = @[ice_model] - OCN_model = @[ocn_model] - coupling_mode = @[CPLMODE] - history_tile_atm = @[ATMTILESIZE] - pio_rearranger = box - ocean_albedo_limit = @[ocean_albedo_limit] -:: -ALLCOMP_attributes:: - ScalarFieldCount = 2 - ScalarFieldIdxGridNX = 1 - ScalarFieldIdxGridNY = 2 - ScalarFieldName = cpl_scalars - start_type = @[RUNTYPE] - restart_dir = RESTART/ - case_name = ufs.cpld - restart_n = @[RESTART_N] - restart_option = nhours - restart_ymd = -999 - dbug_flag = @[cap_dbug_flag] - stop_n = @[FHMAX] - stop_option = nhours - stop_ymd = -999 - orb_eccen = 1.e36 - orb_iyear = 2000 - orb_iyear_align = 2000 - orb_mode = fixed_year - orb_mvelp = 1.e36 - orb_obliq = 1.e36 -:: diff --git a/parm/ufs/ufs.configure.cpld_aero.IN b/parm/ufs/ufs.configure.cpld_aero.IN deleted file mode 100644 index d90d377006..0000000000 --- a/parm/ufs/ufs.configure.cpld_aero.IN +++ /dev/null @@ -1,134 +0,0 @@ -############################################# -#### UFS Run-Time Configuration File ##### -############################################# - -# ESMF # -logKindFlag: @[esmf_logkind] -globalResourceControl: true - -# EARTH # -EARTH_component_list: MED ATM CHM OCN ICE -EARTH_attributes:: - Verbosity = 0 -:: - -# MED # -MED_model: @[med_model] -MED_petlist_bounds: @[med_petlist_bounds] -MED_omp_num_threads: @[med_omp_num_threads] -:: - -# ATM # -ATM_model: @[atm_model] -ATM_petlist_bounds: @[atm_petlist_bounds] -ATM_omp_num_threads: @[atm_omp_num_threads] -ATM_attributes:: - Verbosity = 0 - DumpFields = @[DumpFields] - ProfileMemory = false - OverwriteSlice = true -:: - -# CHM # -CHM_model: @[chm_model] -CHM_petlist_bounds: @[chm_petlist_bounds] -CHM_omp_num_threads: @[chm_omp_num_threads] -CHM_attributes:: - Verbosity = 0 -:: - -# OCN # -OCN_model: @[ocn_model] -OCN_petlist_bounds: @[ocn_petlist_bounds] -OCN_omp_num_threads: @[ocn_omp_num_threads] -OCN_attributes:: - Verbosity = 0 - DumpFields = @[DumpFields] - ProfileMemory = false - OverwriteSlice = true - mesh_ocn = @[MESH_OCN_ICE] - use_coldstart = @[use_coldstart] - use_mommesh = @[use_mommesh] -:: - -# ICE # -ICE_model: @[ice_model] -ICE_petlist_bounds: @[ice_petlist_bounds] -ICE_omp_num_threads: @[ice_omp_num_threads] -ICE_attributes:: - Verbosity = 0 - DumpFields = @[DumpFields] - ProfileMemory = false - OverwriteSlice = true - mesh_ice = @[MESH_OCN_ICE] - eps_imesh = @[eps_imesh] - stop_n = @[RESTART_N] - stop_option = nhours - stop_ymd = -999 -:: - -# CMEPS warm run sequence -runSeq:: -@@[coupling_interval_slow_sec] - MED med_phases_prep_ocn_avg - MED -> OCN :remapMethod=redist - OCN - @@[coupling_interval_fast_sec] - MED med_phases_prep_atm - MED med_phases_prep_ice - MED -> ATM :remapMethod=redist - MED -> ICE :remapMethod=redist - ATM phase1 - ATM -> CHM - CHM - CHM -> ATM - ATM phase2 - ICE - ATM -> MED :remapMethod=redist - MED med_phases_post_atm - ICE -> MED :remapMethod=redist - MED med_phases_post_ice - MED med_phases_ocnalb_run - MED med_phases_prep_ocn_accum - @ - OCN -> MED :remapMethod=redist - MED med_phases_post_ocn - MED med_phases_restart_write -@ -:: - -# CMEPS variables - -DRIVER_attributes:: -:: -MED_attributes:: - ATM_model = @[atm_model] - ICE_model = @[ice_model] - OCN_model = @[ocn_model] - coupling_mode = @[CPLMODE] - history_tile_atm = @[ATMTILESIZE] - pio_rearranger = box - ocean_albedo_limit = @[ocean_albedo_limit] -:: -ALLCOMP_attributes:: - ScalarFieldCount = 2 - ScalarFieldIdxGridNX = 1 - ScalarFieldIdxGridNY = 2 - ScalarFieldName = cpl_scalars - start_type = @[RUNTYPE] - restart_dir = RESTART/ - case_name = ufs.cpld - restart_n = @[RESTART_N] - restart_option = nhours - restart_ymd = -999 - dbug_flag = @[cap_dbug_flag] - stop_n = @[FHMAX] - stop_option = nhours - stop_ymd = -999 - orb_eccen = 1.e36 - orb_iyear = 2000 - orb_iyear_align = 2000 - orb_mode = fixed_year - orb_mvelp = 1.e36 - orb_obliq = 1.e36 -:: diff --git a/parm/ufs/ufs.configure.cpld_aero_outerwave.IN b/parm/ufs/ufs.configure.cpld_aero_outerwave.IN deleted file mode 100644 index 23e7751112..0000000000 --- a/parm/ufs/ufs.configure.cpld_aero_outerwave.IN +++ /dev/null @@ -1,151 +0,0 @@ -############################################# -#### UFS Run-Time Configuration File ##### -############################################# - -# ESMF # -logKindFlag: @[esmf_logkind] -globalResourceControl: true - -# EARTH # -EARTH_component_list: MED ATM CHM OCN ICE WAV -EARTH_attributes:: - Verbosity = 0 -:: - -# MED # -MED_model: @[med_model] -MED_petlist_bounds: @[med_petlist_bounds] -MED_omp_num_threads: @[med_omp_num_threads] -:: - -# ATM # -ATM_model: @[atm_model] -ATM_petlist_bounds: @[atm_petlist_bounds] -ATM_omp_num_threads: @[atm_omp_num_threads] -ATM_attributes:: - Verbosity = 0 - DumpFields = @[DumpFields] - ProfileMemory = false - OverwriteSlice = true -:: - -# CHM # -CHM_model: @[chm_model] -CHM_petlist_bounds: @[chm_petlist_bounds] -CHM_omp_num_threads: @[chm_omp_num_threads] -CHM_attributes:: - Verbosity = 0 -:: - -# OCN # -OCN_model: @[ocn_model] -OCN_petlist_bounds: @[ocn_petlist_bounds] -OCN_omp_num_threads: @[ocn_omp_num_threads] -OCN_attributes:: - Verbosity = 0 - DumpFields = @[DumpFields] - ProfileMemory = false - OverwriteSlice = true - mesh_ocn = @[MESH_OCN_ICE] - use_coldstart = @[use_coldstart] - use_mommesh = @[use_mommesh] -:: - -# ICE # -ICE_model: @[ice_model] -ICE_petlist_bounds: @[ice_petlist_bounds] -ICE_omp_num_threads: @[ice_omp_num_threads] -ICE_attributes:: - Verbosity = 0 - DumpFields = @[DumpFields] - ProfileMemory = false - OverwriteSlice = true - mesh_ice = @[MESH_OCN_ICE] - eps_imesh = @[eps_imesh] - stop_n = @[RESTART_N] - stop_option = nhours - stop_ymd = -999 -:: - -# WAV # -WAV_model: @[wav_model] -WAV_petlist_bounds: @[wav_petlist_bounds] -WAV_omp_num_threads: @[wav_omp_num_threads] -WAV_attributes:: - Verbosity = 0 - OverwriteSlice = false - mesh_wav = @[MESH_WAV] -:: - -# CMEPS warm run sequence -runSeq:: -@@[coupling_interval_slow_sec] - MED med_phases_prep_wav_avg - MED med_phases_prep_ocn_avg - MED -> WAV :remapMethod=redist - MED -> OCN :remapMethod=redist - WAV - OCN - @@[coupling_interval_fast_sec] - MED med_phases_prep_atm - MED med_phases_prep_ice - MED -> ATM :remapMethod=redist - MED -> ICE :remapMethod=redist - ATM phase1 - ATM -> CHM - CHM - CHM -> ATM - ATM phase2 - ICE - ATM -> MED :remapMethod=redist - MED med_phases_post_atm - ICE -> MED :remapMethod=redist - MED med_phases_post_ice - MED med_phases_ocnalb_run - MED med_phases_prep_ocn_accum - MED med_phases_prep_wav_accum - @ - OCN -> MED :remapMethod=redist - WAV -> MED :remapMethod=redist - MED med_phases_post_ocn - MED med_phases_post_wav - MED med_phases_restart_write -@ -:: - -# CMEPS variables - -DRIVER_attributes:: -:: -MED_attributes:: - ATM_model = @[atm_model] - ICE_model = @[ice_model] - OCN_model = @[ocn_model] - WAV_model = @[wav_model] - coupling_mode = @[CPLMODE] - history_tile_atm = @[ATMTILESIZE] - pio_rearranger = box - ocean_albedo_limit = @[ocean_albedo_limit] -:: -ALLCOMP_attributes:: - ScalarFieldCount = 2 - ScalarFieldIdxGridNX = 1 - ScalarFieldIdxGridNY = 2 - ScalarFieldName = cpl_scalars - start_type = @[RUNTYPE] - restart_dir = RESTART/ - case_name = ufs.cpld - restart_n = @[RESTART_N] - restart_option = nhours - restart_ymd = -999 - dbug_flag = @[cap_dbug_flag] - stop_n = @[FHMAX] - stop_option = nhours - stop_ymd = -999 - orb_eccen = 1.e36 - orb_iyear = 2000 - orb_iyear_align = 2000 - orb_mode = fixed_year - orb_mvelp = 1.e36 - orb_obliq = 1.e36 -:: diff --git a/parm/ufs/ufs.configure.cpld_aero_wave.IN b/parm/ufs/ufs.configure.cpld_aero_wave.IN deleted file mode 100644 index ab0f6a9f8d..0000000000 --- a/parm/ufs/ufs.configure.cpld_aero_wave.IN +++ /dev/null @@ -1,151 +0,0 @@ -############################################# -#### UFS Run-Time Configuration File ##### -############################################# - -# ESMF # -logKindFlag: @[esmf_logkind] -globalResourceControl: true - -# EARTH # -EARTH_component_list: MED ATM CHM OCN ICE WAV -EARTH_attributes:: - Verbosity = 0 -:: - -# MED # -MED_model: @[med_model] -MED_petlist_bounds: @[med_petlist_bounds] -MED_omp_num_threads: @[med_omp_num_threads] -:: - -# ATM # -ATM_model: @[atm_model] -ATM_petlist_bounds: @[atm_petlist_bounds] -ATM_omp_num_threads: @[atm_omp_num_threads] -ATM_attributes:: - Verbosity = 0 - DumpFields = @[DumpFields] - ProfileMemory = false - OverwriteSlice = true -:: - -# CHM # -CHM_model: @[chm_model] -CHM_petlist_bounds: @[chm_petlist_bounds] -CHM_omp_num_threads: @[chm_omp_num_threads] -CHM_attributes:: - Verbosity = 0 -:: - -# OCN # -OCN_model: @[ocn_model] -OCN_petlist_bounds: @[ocn_petlist_bounds] -OCN_omp_num_threads: @[ocn_omp_num_threads] -OCN_attributes:: - Verbosity = 0 - DumpFields = @[DumpFields] - ProfileMemory = false - OverwriteSlice = true - mesh_ocn = @[MESH_OCN_ICE] - use_coldstart = @[use_coldstart] - use_mommesh = @[use_mommesh] -:: - -# ICE # -ICE_model: @[ice_model] -ICE_petlist_bounds: @[ice_petlist_bounds] -ICE_omp_num_threads: @[ice_omp_num_threads] -ICE_attributes:: - Verbosity = 0 - DumpFields = @[DumpFields] - ProfileMemory = false - OverwriteSlice = true - mesh_ice = @[MESH_OCN_ICE] - eps_imesh = @[eps_imesh] - stop_n = @[RESTART_N] - stop_option = nhours - stop_ymd = -999 -:: - -# WAV # -WAV_model: @[wav_model] -WAV_petlist_bounds: @[wav_petlist_bounds] -WAV_omp_num_threads: @[wav_omp_num_threads] -WAV_attributes:: - Verbosity = 0 - OverwriteSlice = false - mesh_wav = @[MESH_WAV] -:: - -# CMEPS warm run sequence -runSeq:: -@@[coupling_interval_slow_sec] - MED med_phases_prep_ocn_avg - MED -> OCN :remapMethod=redist - OCN - @@[coupling_interval_fast_sec] - MED med_phases_prep_atm - MED med_phases_prep_ice - MED med_phases_prep_wav_accum - MED med_phases_prep_wav_avg - MED -> ATM :remapMethod=redist - MED -> ICE :remapMethod=redist - MED -> WAV :remapMethod=redist - ATM phase1 - ATM -> CHM - CHM - CHM -> ATM - ATM phase2 - ICE - WAV - ATM -> MED :remapMethod=redist - MED med_phases_post_atm - ICE -> MED :remapMethod=redist - MED med_phases_post_ice - WAV -> MED :remapMethod=redist - MED med_phases_post_wav - MED med_phases_ocnalb_run - MED med_phases_prep_ocn_accum - @ - OCN -> MED :remapMethod=redist - MED med_phases_post_ocn - MED med_phases_restart_write -@ -:: - -# CMEPS variables - -DRIVER_attributes:: -:: -MED_attributes:: - ATM_model = @[atm_model] - ICE_model = @[ice_model] - OCN_model = @[ocn_model] - WAV_model = @[wav_model] - coupling_mode = @[CPLMODE] - history_tile_atm = @[ATMTILESIZE] - pio_rearranger = box - ocean_albedo_limit = @[ocean_albedo_limit] -:: -ALLCOMP_attributes:: - ScalarFieldCount = 2 - ScalarFieldIdxGridNX = 1 - ScalarFieldIdxGridNY = 2 - ScalarFieldName = cpl_scalars - start_type = @[RUNTYPE] - restart_dir = RESTART/ - case_name = ufs.cpld - restart_n = @[RESTART_N] - restart_option = nhours - restart_ymd = -999 - dbug_flag = @[cap_dbug_flag] - stop_n = @[FHMAX] - stop_option = nhours - stop_ymd = -999 - orb_eccen = 1.e36 - orb_iyear = 2000 - orb_iyear_align = 2000 - orb_mode = fixed_year - orb_mvelp = 1.e36 - orb_obliq = 1.e36 -:: diff --git a/parm/ufs/ufs.configure.cpld_outerwave.IN b/parm/ufs/ufs.configure.cpld_outerwave.IN deleted file mode 100644 index 9a45d5ff9a..0000000000 --- a/parm/ufs/ufs.configure.cpld_outerwave.IN +++ /dev/null @@ -1,139 +0,0 @@ -############################################# -#### UFS Run-Time Configuration File ##### -############################################# - -# ESMF # -logKindFlag: @[esmf_logkind] -globalResourceControl: true - -# EARTH # -EARTH_component_list: MED ATM OCN ICE WAV -EARTH_attributes:: - Verbosity = 0 -:: - -# MED # -MED_model: @[med_model] -MED_petlist_bounds: @[med_petlist_bounds] -MED_omp_num_threads: @[med_omp_num_threads] -:: - -# ATM # -ATM_model: @[atm_model] -ATM_petlist_bounds: @[atm_petlist_bounds] -ATM_omp_num_threads: @[atm_omp_num_threads] -ATM_attributes:: - Verbosity = 0 - DumpFields = @[DumpFields] - ProfileMemory = false - OverwriteSlice = true -:: - -# OCN # -OCN_model: @[ocn_model] -OCN_petlist_bounds: @[ocn_petlist_bounds] -OCN_omp_num_threads: @[ocn_omp_num_threads] -OCN_attributes:: - Verbosity = 0 - DumpFields = @[DumpFields] - ProfileMemory = false - OverwriteSlice = true - mesh_ocn = @[MESH_OCN_ICE] - use_coldstart = @[use_coldstart] - use_mommesh = @[use_mommesh] -:: - -# ICE # -ICE_model: @[ice_model] -ICE_petlist_bounds: @[ice_petlist_bounds] -ICE_omp_num_threads: @[ice_omp_num_threads] -ICE_attributes:: - Verbosity = 0 - DumpFields = @[DumpFields] - ProfileMemory = false - OverwriteSlice = true - mesh_ice = @[MESH_OCN_ICE] - eps_imesh = @[eps_imesh] - stop_n = @[RESTART_N] - stop_option = nhours - stop_ymd = -999 -:: - -# WAV # -WAV_model: @[wav_model] -WAV_petlist_bounds: @[wav_petlist_bounds] -WAV_omp_num_threads: @[wav_omp_num_threads] -WAV_attributes:: - Verbosity = 0 - OverwriteSlice = false - mesh_wav = @[MESH_WAV] -:: - -# CMEPS warm run sequence -runSeq:: -@@[coupling_interval_slow_sec] - MED med_phases_prep_wav_avg - MED med_phases_prep_ocn_avg - MED -> WAV :remapMethod=redist - MED -> OCN :remapMethod=redist - WAV - OCN - @@[coupling_interval_fast_sec] - MED med_phases_prep_atm - MED med_phases_prep_ice - MED -> ATM :remapMethod=redist - MED -> ICE :remapMethod=redist - ATM - ICE - ATM -> MED :remapMethod=redist - MED med_phases_post_atm - ICE -> MED :remapMethod=redist - MED med_phases_post_ice - MED med_phases_ocnalb_run - MED med_phases_prep_ocn_accum - MED med_phases_prep_wav_accum - @ - OCN -> MED :remapMethod=redist - WAV -> MED :remapMethod=redist - MED med_phases_post_ocn - MED med_phases_post_wav - MED med_phases_restart_write -@ -:: - -# CMEPS variables - -DRIVER_attributes:: -:: -MED_attributes:: - ATM_model = @[atm_model] - ICE_model = @[ice_model] - OCN_model = @[ocn_model] - WAV_model = @[wav_model] - coupling_mode = @[CPLMODE] - history_tile_atm = @[ATMTILESIZE] - pio_rearranger = box - ocean_albedo_limit = @[ocean_albedo_limit] -:: -ALLCOMP_attributes:: - ScalarFieldCount = 2 - ScalarFieldIdxGridNX = 1 - ScalarFieldIdxGridNY = 2 - ScalarFieldName = cpl_scalars - start_type = @[RUNTYPE] - restart_dir = RESTART/ - case_name = ufs.cpld - restart_n = @[RESTART_N] - restart_option = nhours - restart_ymd = -999 - dbug_flag = @[cap_dbug_flag] - stop_n = @[FHMAX] - stop_option = nhours - stop_ymd = -999 - orb_eccen = 1.e36 - orb_iyear = 2000 - orb_iyear_align = 2000 - orb_mode = fixed_year - orb_mvelp = 1.e36 - orb_obliq = 1.e36 -:: diff --git a/parm/ufs/ufs.configure.cpld_wave.IN b/parm/ufs/ufs.configure.cpld_wave.IN deleted file mode 100644 index 37a462a5d4..0000000000 --- a/parm/ufs/ufs.configure.cpld_wave.IN +++ /dev/null @@ -1,139 +0,0 @@ -############################################# -#### UFS Run-Time Configuration File ##### -############################################# - -# ESMF # -logKindFlag: @[esmf_logkind] -globalResourceControl: true - -# EARTH # -EARTH_component_list: MED ATM OCN ICE WAV -EARTH_attributes:: - Verbosity = 0 -:: - -# MED # -MED_model: @[med_model] -MED_petlist_bounds: @[med_petlist_bounds] -MED_omp_num_threads: @[med_omp_num_threads] -:: - -# ATM # -ATM_model: @[atm_model] -ATM_petlist_bounds: @[atm_petlist_bounds] -ATM_omp_num_threads: @[atm_omp_num_threads] -ATM_attributes:: - Verbosity = 0 - DumpFields = @[DumpFields] - ProfileMemory = false - OverwriteSlice = true -:: - -# OCN # -OCN_model: @[ocn_model] -OCN_petlist_bounds: @[ocn_petlist_bounds] -OCN_omp_num_threads: @[ocn_omp_num_threads] -OCN_attributes:: - Verbosity = 0 - DumpFields = @[DumpFields] - ProfileMemory = false - OverwriteSlice = true - mesh_ocn = @[MESH_OCN_ICE] - use_coldstart = @[use_coldstart] - use_mommesh = @[use_mommesh] -:: - -# ICE # -ICE_model: @[ice_model] -ICE_petlist_bounds: @[ice_petlist_bounds] -ICE_omp_num_threads: @[ice_omp_num_threads] -ICE_attributes:: - Verbosity = 0 - DumpFields = @[DumpFields] - ProfileMemory = false - OverwriteSlice = true - mesh_ice = @[MESH_OCN_ICE] - eps_imesh = @[eps_imesh] - stop_n = @[RESTART_N] - stop_option = nhours - stop_ymd = -999 -:: - -# WAV # -WAV_model: @[wav_model] -WAV_petlist_bounds: @[wav_petlist_bounds] -WAV_omp_num_threads: @[wav_omp_num_threads] -WAV_attributes:: - Verbosity = 0 - OverwriteSlice = false - mesh_wav = @[MESH_WAV] -:: - -# CMEPS warm run sequence -runSeq:: -@@[coupling_interval_slow_sec] - MED med_phases_prep_ocn_avg - MED -> OCN :remapMethod=redist - OCN - @@[coupling_interval_fast_sec] - MED med_phases_prep_atm - MED med_phases_prep_ice - MED med_phases_prep_wav_accum - MED med_phases_prep_wav_avg - MED -> ATM :remapMethod=redist - MED -> ICE :remapMethod=redist - MED -> WAV :remapMethod=redist - ATM - ICE - WAV - ATM -> MED :remapMethod=redist - MED med_phases_post_atm - ICE -> MED :remapMethod=redist - MED med_phases_post_ice - WAV -> MED :remapMethod=redist - MED med_phases_post_wav - MED med_phases_ocnalb_run - MED med_phases_prep_ocn_accum - @ - OCN -> MED :remapMethod=redist - MED med_phases_post_ocn - MED med_phases_restart_write -@ -:: - -# CMEPS variables - -DRIVER_attributes:: -:: -MED_attributes:: - ATM_model = @[atm_model] - ICE_model = @[ice_model] - OCN_model = @[ocn_model] - WAV_model = @[wav_model] - coupling_mode = @[CPLMODE] - history_tile_atm = @[ATMTILESIZE] - pio_rearranger = box - ocean_albedo_limit = @[ocean_albedo_limit] -:: -ALLCOMP_attributes:: - ScalarFieldCount = 2 - ScalarFieldIdxGridNX = 1 - ScalarFieldIdxGridNY = 2 - ScalarFieldName = cpl_scalars - start_type = @[RUNTYPE] - restart_dir = RESTART/ - case_name = ufs.cpld - restart_n = @[RESTART_N] - restart_option = nhours - restart_ymd = -999 - dbug_flag = @[cap_dbug_flag] - stop_n = @[FHMAX] - stop_option = nhours - stop_ymd = -999 - orb_eccen = 1.e36 - orb_iyear = 2000 - orb_iyear_align = 2000 - orb_mode = fixed_year - orb_mvelp = 1.e36 - orb_obliq = 1.e36 -:: diff --git a/parm/ufs/ufs.configure.leapfrog_atm_wav.IN b/parm/ufs/ufs.configure.leapfrog_atm_wav.IN deleted file mode 100644 index ec22c9478c..0000000000 --- a/parm/ufs/ufs.configure.leapfrog_atm_wav.IN +++ /dev/null @@ -1,41 +0,0 @@ -############################################# -#### UFS Run-Time Configuration File ##### -############################################# - -# ESMF # -logKindFlag: @[esmf_logkind] -globalResourceControl: true - -# EARTH # -EARTH_component_list: ATM WAV -EARTH_attributes:: - Verbosity = max -:: - -# ATM # -ATM_model: @[atm_model] -ATM_petlist_bounds: @[atm_petlist_bounds] -ATM_omp_num_threads: @[atm_omp_num_threads] -ATM_attributes:: - Verbosity = max - DumpFields = true -:: - -# WAV # -WAV_model: @[wav_model] -WAV_petlist_bounds: @[wav_petlist_bounds] -WAV_omp_num_threads: @[wav_omp_num_threads] -WAV_attributes:: - Verbosity = max -:: - - - -# Run Sequence # -runSeq:: - @@[coupling_interval_slow_sec] - ATM - ATM -> WAV - WAV - @ -:: diff --git a/scripts/exglobal_atmos_products.sh b/scripts/exglobal_atmos_products.sh index 5f0b1db6cf..5ebc7432f0 100755 --- a/scripts/exglobal_atmos_products.sh +++ b/scripts/exglobal_atmos_products.sh @@ -13,6 +13,10 @@ INTERP_ATMOS_SFLUXSH=${INTERP_ATMOS_SFLUXSH:-"${HOMEgfs}/ush/interp_atmos_sflux. downset=${downset:-1} # No. of groups of pressure grib2 products to create npe_atmos_products=${npe_atmos_products:-8} # no. of processors available to process each group +# WGNE related options +WGNE=${WGNE:-NO} # Create WGNE products +FHMAX_WGNE=${FHMAX_WGNE:-0} # WGNE products are created for first FHMAX_WGNE forecast hours (except 0) + cd "${DATA}" || exit 1 # Set paramlist files based on FORECAST_HOUR (-1, 0, 3, 6, etc.) @@ -167,14 +171,18 @@ done # for (( nset=1 ; nset <= downset ; nset++ )) #--------------------------------------------------------------- +# Create the index file for the sflux master, if it exists. +FLUX_FILE="${COM_ATMOS_MASTER}/${PREFIX}sfluxgrb${fhr3}.grib2" +if [[ -s "${FLUX_FILE}" ]]; then + ${WGRIB2} -s "${FLUX_FILE}" > "${FLUX_FILE}.idx" +fi + # Section creating slfux grib2 interpolated products # Create 1-degree sflux grib2 output # move to COM and index it if [[ "${FLXGF:-}" == "YES" ]]; then # Files needed by ${INTERP_ATMOS_SFLUXSH} - FLUX_FILE="${COM_ATMOS_MASTER}/${PREFIX}sfluxgrb${fhr3}.grib2" - input_file="${FLUX_FILE}" output_file_prefix="sflux_${fhr3}" grid_string="1p00" @@ -190,6 +198,15 @@ if [[ "${FLXGF:-}" == "YES" ]]; then done fi +# Section creating 0.25 degree WGNE products for nset=1, and fhr <= FHMAX_WGNE +if [[ "${WGNE:-}" == "YES" ]]; then + grp="" # TODO: this should be "a" when we eventually rename the pressure grib2 files per EE2 convention + if (( FORECAST_HOUR > 0 & FORECAST_HOUR <= FHMAX_WGNE )); then + # TODO: 597 is the message number for APCP in GFSv16. GFSv17 may change this as more messages are added. This can be controlled via config.atmos_products + ${WGRIB2} "${COM_ATMOS_GRIB_0p25}/${PREFIX}pgrb2${grp}.0p25.${fhr3}" -d "${APCP_MSG:-597}" -grib "${COM_ATMOS_GRIB_0p25}/${PREFIX}wgne.${fhr3}" + fi +fi + #--------------------------------------------------------------- # Start sending DBN alerts @@ -200,18 +217,21 @@ if [[ "${SENDDBN:-}" == "YES" ]]; then if [[ "${RUN}" == "gfs" ]]; then "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2B_0P25" "${job}" "${COM_ATMOS_GRIB_0p25}/${PREFIX}pgrb2b.0p25.${fhr3}" "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2B_0P25_WIDX" "${job}" "${COM_ATMOS_GRIB_0p25}/${PREFIX}pgrb2b.0p25.${fhr3}.idx" - if [[ -s "${COM_ATMOS_GRIB_0p50}/${PREFIX}pgrb2.0p50.f${fhr3}" ]]; then + if [[ -s "${COM_ATMOS_GRIB_0p50}/${PREFIX}pgrb2.0p50.${fhr3}" ]]; then "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2_0P5" "${job}" "${COM_ATMOS_GRIB_0p50}/${PREFIX}pgrb2.0p50.${fhr3}" "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2_0P5_WIDX" "${job}" "${COM_ATMOS_GRIB_0p50}/${PREFIX}pgrb2.0p50.${fhr3}.idx" "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2B_0P5" "${job}" "${COM_ATMOS_GRIB_0p50}/${PREFIX}pgrb2b.0p50.${fhr3}" "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2B_0P5_WIDX" "${job}" "${COM_ATMOS_GRIB_0p50}/${PREFIX}pgrb2b.0p50.${fhr3}.idx" fi - if [[ -s "${COM_ATMOS_GRIB_1p00}/${PREFIX}pgrb2.1p00.f${fhr3}" ]]; then + if [[ -s "${COM_ATMOS_GRIB_1p00}/${PREFIX}pgrb2.1p00.${fhr3}" ]]; then "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2_1P0" "${job}" "${COM_ATMOS_GRIB_1p00}/${PREFIX}pgrb2.1p00.${fhr3}" "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2_1P0_WIDX" "${job}" "${COM_ATMOS_GRIB_1p00}/${PREFIX}pgrb2.1p00.${fhr3}.idx" "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2B_1P0" "${job}" "${COM_ATMOS_GRIB_1p00}/${PREFIX}pgrb2b.1p00.${fhr3}" "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_PGB2B_1P0_WIDX" "${job}" "${COM_ATMOS_GRIB_1p00}/${PREFIX}pgrb2b.1p00.${fhr3}.idx" fi + if [[ "${WGNE:-}" == "YES" ]] && [[ -s "${COM_ATMOS_GRIB_0p25}/${PREFIX}wgne.${fhr3}" ]] ; then + "${DBNROOT}/bin/dbn_alert" MODEL "${RUN^^}_WGNE" "${job}" "${COM_ATMOS_GRIB_0p25}/${PREFIX}wgne.${fhr3}" + fi fi if [[ "${fhr3}" == "anl" ]]; then diff --git a/scripts/exglobal_forecast.sh b/scripts/exglobal_forecast.sh index c50cde74f1..eebc9e59c3 100755 --- a/scripts/exglobal_forecast.sh +++ b/scripts/exglobal_forecast.sh @@ -83,7 +83,7 @@ source "${HOMEgfs}/ush/preamble.sh" source "${HOMEgfs}/ush/forecast_predet.sh" # include functions for variable definition source "${HOMEgfs}/ush/forecast_det.sh" # include functions for run type determination source "${HOMEgfs}/ush/forecast_postdet.sh" # include functions for variables after run type determination -source "${HOMEgfs}/ush/ufs_configure.sh" # include functions for ufs.configure processing +source "${HOMEgfs}/ush/parsing_ufs_configure.sh" # include functions for ufs_configure processing source "${HOMEgfs}/ush/parsing_model_configure_FV3.sh" # Coupling control switches, for coupling purpose, off by default diff --git a/sorc/build_all.sh b/sorc/build_all.sh index 23cf420f1d..c337374428 100755 --- a/sorc/build_all.sh +++ b/sorc/build_all.sh @@ -129,7 +129,7 @@ build_opts["ww3prepost"]="${_verbose_opt} ${_build_ufs_opt}" # Optional DA builds if [[ "${_build_ufsda}" == "YES" ]]; then - if [[ "${MACHINE_ID}" != "orion" && "${MACHINE_ID}" != "hera" ]]; then + if [[ "${MACHINE_ID}" != "orion" && "${MACHINE_ID}" != "hera.intel" && "${MACHINE_ID}" != "hercules" ]]; then echo "NOTE: The GDAS App is not supported on ${MACHINE_ID}. Disabling build." else build_jobs["gdas"]=8 diff --git a/sorc/gdas.cd b/sorc/gdas.cd index f44a6d500d..6044d09962 160000 --- a/sorc/gdas.cd +++ b/sorc/gdas.cd @@ -1 +1 @@ -Subproject commit f44a6d500dda2aba491e4fa12c0bee428ddb7b80 +Subproject commit 6044d099626f568a1a671ea86398e2aedfaf72f4 diff --git a/sorc/link_workflow.sh b/sorc/link_workflow.sh index d7604bf9ba..2e190e3285 100755 --- a/sorc/link_workflow.sh +++ b/sorc/link_workflow.sh @@ -150,25 +150,25 @@ for file in finddate.sh make_ntc_bull.pl make_NTC_file.pl make_tif.sh month_name ${LINK_OR_COPY} "${HOMEgfs}/sorc/gfs_utils.fd/ush/${file}" . done -# TODO: Link these ufs.configure templates from ufs-weather-model -#cd "${HOMEgfs}/parm/ufs" || exit 1 -#declare -a ufs_configure_files=("ufs.configure.atm.IN" \ -# "ufs.configure.atm_aero.IN" \ -# "ufs.configure.atmw.IN" \ -# "ufs.configure.blocked_atm_wav_2way.IN" \ -# "ufs.configure.blocked_atm_wav.IN" \ -# "ufs.configure.cpld_agrid.IN" \ -# "ufs.configure.cpld_esmfthreads.IN" \ -# "ufs.configure.cpld.IN" \ -# "ufs.configure.cpld_noaero.IN" \ -# "ufs.configure.cpld_noaero_nowave.IN" \ -# "ufs.configure.cpld_noaero_outwav.IN" \ -# "ufs.configure.leapfrog_atm_wav.IN") -#for file in "${ufs_configure_files[@]}"; do -# [[ -s "${file}" ]] && rm -f "${file}" -# ${LINK_OR_COPY} "${HOMEgfs}/sorc/ufs_model.fd/tests/parm/${file}" . -#done +# Link these templates from ufs-weather-model +cd "${HOMEgfs}/parm/ufs" || exit 1 +declare -a ufs_templates=("model_configure.IN" \ + "MOM_input_025.IN" "MOM_input_050.IN" "MOM_input_100.IN" "MOM_input_500.IN" \ + "MOM6_data_table.IN" \ + "ice_in.IN" \ + "ufs.configure.atm.IN" \ + "ufs.configure.atmaero.IN" \ + "ufs.configure.leapfrog_atm_wav.IN" \ + "ufs.configure.s2s_esmf.IN" \ + "ufs.configure.s2sa_esmf.IN" \ + "ufs.configure.s2sw_esmf.IN" \ + "ufs.configure.s2swa_esmf.IN" ) +for file in "${ufs_templates[@]}"; do + [[ -s "${file}" ]] && rm -f "${file}" + ${LINK_OR_COPY} "${HOMEgfs}/sorc/ufs_model.fd/tests/parm/${file}" . +done +# Link the script from ufs-weather-model that parses the templates cd "${HOMEgfs}/ush" || exit 1 [[ -s "atparse.bash" ]] && rm -f "atparse.bash" ${LINK_OR_COPY} "${HOMEgfs}/sorc/ufs_model.fd/tests/atparse.bash" . diff --git a/ush/forecast_postdet.sh b/ush/forecast_postdet.sh index f47755f854..02f69c63ed 100755 --- a/ush/forecast_postdet.sh +++ b/ush/forecast_postdet.sh @@ -44,11 +44,11 @@ FV3_postdet(){ done fi - # Need a coupler.res when doing IAU + # Need a coupler.res when doing IAU # FIXME: This is needed for warm_start, regardless of IAU. if [[ ${DOIAU} = "YES" ]]; then rm -f "${DATA}/INPUT/coupler.res" cat >> "${DATA}/INPUT/coupler.res" << EOF - 2 (Calendar: no_calendar=0, thirty_day_months=1, julian=2, gregorian=3, noleap=4) + 3 (Calendar: no_calendar=0, thirty_day_months=1, julian=2, gregorian=3, noleap=4) ${gPDY:0:4} ${gPDY:4:2} ${gPDY:6:2} ${gcyc} 0 0 Model start time: year, month, day, hour, minute, second ${sPDY:0:4} ${sPDY:4:2} ${sPDY:6:2} ${scyc} 0 0 Current model time: year, month, day, hour, minute, second EOF @@ -93,7 +93,9 @@ EOF ${NLN} "${file}" "${DATA}/INPUT/${file2}" done - local hour_rst=$(nhour "${CDATE_RST}" "${current_cycle}") + local hour_rst + hour_rst=$(nhour "${CDATE_RST}" "${current_cycle}") + # shellcheck disable=SC2034 IAU_FHROT=$((IAU_OFFSET+hour_rst)) if [[ ${DOIAU} = "YES" ]]; then IAUFHRS=-1 @@ -516,7 +518,7 @@ FV3_out() { ${NCP} "${DATA}/input.nml" "${COM_CONF}/ufs.input.nml" ${NCP} "${DATA}/model_configure" "${COM_CONF}/ufs.model_configure" ${NCP} "${DATA}/ufs.configure" "${COM_CONF}/ufs.ufs.configure" - ${NCP} "${DATA}/diag_table" "${COM_CONF}/ufs.diag_table" + ${NCP} "${DATA}/diag_table" "${COM_CONF}/ufs.diag_table" fi echo "SUB ${FUNCNAME[0]}: Output data for FV3 copied" } @@ -540,10 +542,9 @@ WW3_postdet() { fi - #if wave mesh is not the same as the ocn/ice mesh, linkk it in the file - local comparemesh=${MESH_OCN_ICE:-"mesh.mx${ICERES}.nc"} - if [[ "${MESH_WAV}" = "${comparemesh}" ]]; then - echo "Wave is on same mesh as ocean/ice" + #if wave mesh is not the same as the ocean mesh, link it in the file + if [[ "${MESH_WAV}" == "${MESH_OCN:-mesh.mx${OCNRES}.nc}" ]]; then + echo "Wave is on same mesh as ocean" else ${NLN} "${FIXwave}/${MESH_WAV}" "${DATA}/" fi @@ -879,31 +880,6 @@ MOM6_out() { CICE_postdet() { echo "SUB ${FUNCNAME[0]}: CICE after run type determination" - # TODO: These settings should be elevated to config.ice - histfreq_n=${histfreq_n:-6} - dumpfreq_n=${dumpfreq_n:-1000} # Set this to a really large value, as cice, mom6 and cmeps restart interval is controlled by ufs.configure - dumpfreq=${dumpfreq:-"y"} # "h","d","m" or "y" for restarts at intervals of "hours", "days", "months" or "years" - - if [[ "${RUN}" =~ "gdas" ]]; then - cice_hist_avg=".false., .false., .false., .false., .false." # DA needs instantaneous - else - cice_hist_avg=".true., .true., .true., .true., .true." # P8 wants averaged over histfreq_n - fi - - FRAZIL_FWSALT=${FRAZIL_FWSALT:-".true."} - ktherm=${ktherm:-2} - tfrz_option=${tfrz_option:-"'mushy'"} - tr_pond_lvl=${tr_pond_lvl:-".true."} # Use level melt ponds tr_pond_lvl=true - - # restart_pond_lvl (if tr_pond_lvl=true): - # -- if true, initialize the level ponds from restart (if runtype=continue) - # -- if false, re-initialize level ponds to zero (if runtype=initial or continue) - restart_pond_lvl=${restart_pond_lvl:-".false."} - - ice_grid_file=${ice_grid_file:-"grid_cice_NEMS_mx${ICERES}.nc"} - ice_kmt_file=${ice_kmt_file:-"kmtu_cice_NEMS_mx${ICERES}.nc"} - export MESH_OCN_ICE=${MESH_OCN_ICE:-"mesh.mx${ICERES}.nc"} - # Copy CICE ICs echo "Link CICE ICs" cice_restart_file="${COM_ICE_RESTART_PREV}/${sPDY}.${scyc}0000.cice_model.res.nc" @@ -917,9 +893,9 @@ CICE_postdet() { echo "${DATA}/cice_model.res.nc" > "${DATA}/ice.restart_file" echo "Link CICE fixed files" - ${NLN} "${FIXcice}/${ICERES}/${ice_grid_file}" "${DATA}/" - ${NLN} "${FIXcice}/${ICERES}/${ice_kmt_file}" "${DATA}/" - ${NLN} "${FIXcice}/${ICERES}/${MESH_OCN_ICE}" "${DATA}/" + ${NLN} "${FIXcice}/${ICERES}/${CICE_GRID}" "${DATA}/" + ${NLN} "${FIXcice}/${ICERES}/${CICE_MASK}" "${DATA}/" + ${NLN} "${FIXcice}/${ICERES}/${MESH_ICE}" "${DATA}/" # Link CICE output files if [[ ! -d "${COM_ICE_HISTORY}" ]]; then mkdir -p "${COM_ICE_HISTORY}"; fi @@ -941,7 +917,7 @@ CICE_postdet() { if [[ 10#${fhr} -eq 0 ]]; then ${NLN} "${COM_ICE_HISTORY}/iceic${vdate}.${ENSMEM}.${current_cycle}.nc" "${DATA}/CICE_OUTPUT/iceh_ic.${vdatestr}.nc" else - (( interval = fhr - last_fhr )) # Umm.. isn't this histfreq_n? + (( interval = fhr - last_fhr )) # Umm.. isn't this CICE_HISTFREQ_N in hours (currently set to FHOUT)? ${NLN} "${COM_ICE_HISTORY}/ice${vdate}.${ENSMEM}.${current_cycle}.nc" "${DATA}/CICE_OUTPUT/iceh_$(printf "%0.2d" "${interval}")h.${vdatestr}.nc" fi last_fhr=${fhr} diff --git a/ush/hpssarch_gen.sh b/ush/hpssarch_gen.sh index c34fff1a84..db39c2eac5 100755 --- a/ush/hpssarch_gen.sh +++ b/ush/hpssarch_gen.sh @@ -92,7 +92,7 @@ if [[ ${type} = "gfs" ]]; then # This uses the bash extended globbing option { echo "./logs/${PDY}${cyc}/gfs!(arch).log" - echo "${COM_ATMOS_HISTORY/${ROTDIR}\//}/input.nml" + echo "${COM_CONF/${ROTDIR}\//}/ufs.input.nml" if [[ ${MODE} = "cycled" ]]; then if [[ -s "${COM_ATMOS_ANALYSIS}/${head}gsistat" ]]; then @@ -368,7 +368,10 @@ if [[ ${type} == "gdas" ]]; then echo "./logs/${PDY}${cyc}/gdas${fstep}.log" fi done - echo "./logs/${PDY}${cyc}/gdaspost*.log" + echo "./logs/${PDY}${cyc}/gdas*prod*.log" + if [[ "${WRITE_DOPOST}" == ".false." ]]; then + echo "./logs/${PDY}${cyc}/gdas*upp*.log" + fi fh=0 while [[ ${fh} -le 9 ]]; do @@ -407,10 +410,13 @@ if [[ ${type} == "gdas" ]]; then fi subtyplist="gome_metop-b omi_aura ompslp_npp ompsnp_n20 ompsnp_npp ompstc8_n20 ompstc8_npp sbuv2_n19" for subtype in ${subtyplist}; do - echo "${COM_ATMOS_OZNMON/${ROTDIR}\//}/${type}/${subtype}.anl.${PDY}${cyc}.ieee_d${suffix}" - echo "${COM_ATMOS_OZNMON/${ROTDIR}\//}/${type}/${subtype}.anl.ctl" - echo "${COM_ATMOS_OZNMON/${ROTDIR}\//}/${type}/${subtype}.ges.${PDY}${cyc}.ieee_d${suffix}" - echo "${COM_ATMOS_OZNMON/${ROTDIR}\//}/${type}/${subtype}.ges.ctl" + # On occassion, data is not available for some of these satellites. Check for existence. + if [[ -s "${COM_ATMOS_OZNMON/${ROTDIR}\//}/${type}/${subtype}.ges.${PDY}${cyc}.ieee_d${suffix}" ]]; then + echo "${COM_ATMOS_OZNMON/${ROTDIR}\//}/${type}/${subtype}.anl.${PDY}${cyc}.ieee_d${suffix}" + echo "${COM_ATMOS_OZNMON/${ROTDIR}\//}/${type}/${subtype}.anl.ctl" + echo "${COM_ATMOS_OZNMON/${ROTDIR}\//}/${type}/${subtype}.ges.${PDY}${cyc}.ieee_d${suffix}" + echo "${COM_ATMOS_OZNMON/${ROTDIR}\//}/${type}/${subtype}.ges.ctl" + fi done echo "${COM_ATMOS_OZNMON/${ROTDIR}\//}/${type}/stdout.${type}.tar.gz" done @@ -612,10 +618,19 @@ if [[ ${type} == "enkfgdas" || ${type} == "enkfgfs" ]]; then fi fi done # loop over FHR - for fstep in eobs ecen esfc eupd efcs epos ; do + for fstep in efcs epos ; do echo "logs/${PDY}${cyc}/${RUN}${fstep}*.log" done + # eobs, ecen, esfc, and eupd are not run on the first cycle + for fstep in eobs ecen esfc eupd ; do + for log in "${ROTDIR}/logs/${PDY}${cyc}/${RUN}${fstep}"*".log"; do + if [[ -s "${log}" ]]; then + echo "logs/${PDY}${cyc}/${RUN}${fstep}*.log" + fi + done + done + # eomg* are optional jobs for log in "${ROTDIR}/logs/${PDY}${cyc}/${RUN}eomg"*".log"; do if [[ -s "${log}" ]]; then diff --git a/ush/parsing_model_configure_DATM.sh b/ush/parsing_model_configure_DATM.sh deleted file mode 100755 index ecd3fa6dd6..0000000000 --- a/ush/parsing_model_configure_DATM.sh +++ /dev/null @@ -1,38 +0,0 @@ -#! /usr/bin/env bash - -##### -## "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 <> "${DATA}/model_configure" +echo "Rendered model_configure" +cat "${DATA}/model_configure" -quilting: ${QUILTING} -quilting_restart: .true. -write_groups: ${WRITE_GROUP:-1} -write_tasks_per_group: ${WRTTASK_PER_GROUP:-24} -itasks: 1 -output_history: ${OUTPUT_HISTORY:-".true."} -history_file_on_native_grid: .false. -write_dopost: ${WRITE_DOPOST:-".false."} -write_nsflip: ${WRITE_NSFLIP:-".false."} -num_files: ${NUM_FILES:-2} -filename_base: 'atm' 'sfc' -output_grid: ${OUTPUT_GRID} -output_file: '${OUTPUT_FILETYPE_ATM}' '${OUTPUT_FILETYPE_SFC}' -zstandard_level: 0 -ichunk2d: ${ichunk2d:-0} -jchunk2d: ${jchunk2d:-0} -ichunk3d: ${ichunk3d:-0} -jchunk3d: ${jchunk3d:-0} -kchunk3d: ${kchunk3d:-0} -ideflate: ${ideflate:-1} -quantize_mode: 'quantize_bitround' -quantize_nsd: ${QUANTIZE_NSD:-0} -imo: ${LONB_IMO} -jmo: ${LATB_JMO} -output_fh: ${FV3_OUTPUT_FH} -iau_offset: ${IAU_OFFSET:-0} -EOF - -echo "$(cat model_configure)" } diff --git a/ush/parsing_namelists_CICE.sh b/ush/parsing_namelists_CICE.sh index 6ef743ebc9..3f1798d3e9 100755 --- a/ush/parsing_namelists_CICE.sh +++ b/ush/parsing_namelists_CICE.sh @@ -2,6 +2,8 @@ # parsing namelist of CICE +# Disable variable not used warnings +# shellcheck disable=SC2034 CICE_namelists(){ # "warm_start" here refers to whether CICE model is warm starting or not. @@ -37,374 +39,80 @@ if (( $(( NY_GLB % NPY )) == 0 )); then else local block_size_y=$(( (NY_GLB / NPY) + 1 )) fi -local max_blocks=-1 local sec stepsperhr npt sec=$(to_seconds "${current_cycle:8:2}0000") stepsperhr=$((3600/ICETIM)) npt=$((FHMAX*stepsperhr)) # Need this in order for dump_last to work -cat > ice_in <> "${DATA}/ice_in" +echo "Rendered ice_in:" +cat "${DATA}/ice_in" } diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index 0d759e7570..83e0c10525 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -14,7 +14,7 @@ FV3_namelists(){ # setup the tables DIAG_TABLE=${DIAG_TABLE:-${HOMEgfs}/parm/ufs/fv3/diag_table} DIAG_TABLE_APPEND=${DIAG_TABLE_APPEND:-${HOMEgfs}/parm/ufs/fv3/diag_table_aod} -DATA_TABLE=${DATA_TABLE:-${HOMEgfs}/parm/ufs/fv3/data_table} +DATA_TABLE=${DATA_TABLE:-${HOMEgfs}/parm/ufs/MOM6_data_table.IN} FIELD_TABLE=${FIELD_TABLE:-${HOMEgfs}/parm/ufs/fv3/field_table} # ensure non-prognostic tracers are set diff --git a/ush/parsing_namelists_MOM6.sh b/ush/parsing_namelists_MOM6.sh index 8059096363..ca93edb526 100755 --- a/ush/parsing_namelists_MOM6.sh +++ b/ush/parsing_namelists_MOM6.sh @@ -1,15 +1,14 @@ #! /usr/bin/env bash +# Disable variable not used warnings +# shellcheck disable=SC2034 MOM6_namelists(){ # MOM6 namelists generation -if [[ "${cplwav}" == ".true." ]] ; then - local MOM6_USE_WAVES='True' -else - local MOM6_USE_WAVES='False' -fi - +# ================================================================ +# input.nml +# --------- cat >> input.nml <> input.nml <> input.nml <> input.nml < "${DATA}/INPUT/MOM_input" -rm "${DATA}/INPUT/MOM_input_template_${OCNRES}" +# ================================================================ +# MOM_input +# --------- +# Prepare local variables for use in MOM_input.IN from UFSWM +# The ones already defined are left commented as a reminder +# == MOM_domains section == +# NX_GLB +# NY_GLB +# == MOM section == +# DT_DYNAM_MOM6 +# DT_THERM_MOM6 +# MOM6_THERMO_SPAN +# == MOM_grid_init section == +local MOM6_TOPOEDITS=${TOPOEDITS} +# MOM6_ALLOW_LANDMASK_CHANGES +# == MOM_diag_mediator section == +# MOM6_DIAG_COORD_DEF_Z_FILE +# MOM6_DIAG_MISVAL +# == MOM_diabatic_aux section == +local MOM6_CHLCLIM=${CHLCLIM} +# == MOM_energetic_PBL section == +# MOM6_USE_LI2016 +if [[ "${cplwav}" == ".true." ]] ; then + local MOM6_USE_WAVES="True" +else + local MOM6_USE_WAVES="False" +fi +# == MOM_oda_incupd section == +local ODA_TEMPINC_VAR="Temp" +local ODA_SALTINC_VAR="Salt" +local ODA_THK_VAR="h" +local ODA_INCUPD_UV="True" +local ODA_UINC_VAR="u" +local ODA_VINC_VAR="v" +# ODA_INCUPD +# ODA_INCUPD_NHOURS +# == MOM_surface_forcing section == +# MOM6_RIVER_RUNOFF +# == ocean_stochastics section == +if [[ "${DO_OCN_SPPT}" == "YES" ]]; then + local DO_OCN_SPPT="True" # TODO: This is problematic if DO_OCN_SPPT is going to be used elsewhere +else + local DO_OCN_SPPT="False" +fi +if [[ "${DO_OCN_PERT_EPBL}" == "YES" ]]; then + local PERT_EPBL="True" +else + local PERT_EPBL="False" +fi +# Ensure the template exists +local template=${MOM6_INPUT_TEMPLATE:-"${HOMEgfs}/parm/ufs/MOM_input_${OCNRES}.IN"} +if [[ ! -f "${template}" ]]; then + echo "FATAL ERROR: template '${template}' does not exist, ABORT!" + exit 1 +fi +rm -f "${DATA}/INPUT/MOM_input" +atparse < "${template}" >> "${DATA}/INPUT/MOM_input" +echo "Rendered MOM_input:" +cat "${DATA}/INPUT/MOM_input" -#data table for runoff: -DATA_TABLE=${DATA_TABLE:-${HOMEgfs}/parm/ufs/fv3/data_table} -${NCP} "${DATA_TABLE}" "${DATA}/data_table_template" -sed -e "s/@\[FRUNOFF\]/${FRUNOFF}/g" "${DATA}/data_table_template" > "${DATA}/data_table" -rm "${DATA}/data_table_template" +# ================================================================ +# data_table +# ---------- +# Prepare local variables for use in MOM6_data_table.IN from UFSWM +local MOM6_FRUNOFF=${FRUNOFF} + +# Ensure the template exists +local template=${MOM6_DATA_TABLE_TEMPLATE:-"${HOMEgfs}/parm/ufs/MOM6_data_table.IN"} +if [[ ! -f "${template}" ]]; then + echo "FATAL ERROR: template '${template}' does not exist, ABORT!" + exit 1 +fi +rm -f "${DATA}/data_table" +atparse < "${template}" >> "${DATA}/data_table" +echo "Rendered data_table:" +cat "${DATA}/data_table" } diff --git a/ush/ufs_configure.sh b/ush/parsing_ufs_configure.sh similarity index 93% rename from ush/ufs_configure.sh rename to ush/parsing_ufs_configure.sh index 8898d11162..2071586905 100755 --- a/ush/ufs_configure.sh +++ b/ush/parsing_ufs_configure.sh @@ -17,8 +17,10 @@ writing_ufs_configure() { echo "SUB ${FUNCNAME[0]}: ufs.configure.sh begins" # Setup ufs.configure -local DumpFields=${NEMSDumpFields:-false} +local esmf_logkind=${esmf_logkind:-"ESMF_LOGKIND_MULTI"} #options: ESMF_LOGKIND_MULTI_ON_ERROR, ESMF_LOGKIND_MULTI, ESMF_LOGKIND_NONE +local DumpFields=${DumpFields:-false} local cap_dbug_flag=${cap_dbug_flag:-0} + # Determine "cmeps_run_type" based on the availability of the mediator restart file # If it is a warm_start, we already copied the mediator restart to DATA, if it was present # If the mediator restart was not present, despite being a "warm_start", we put out a WARNING @@ -29,7 +31,6 @@ else local cmeps_run_type='startup' fi -local esmf_logkind=${esmf_logkind:-"ESMF_LOGKIND_MULTI"} #options: ESMF_LOGKIND_MULTI_ON_ERROR, ESMF_LOGKIND_MULTI, ESMF_LOGKIND_NONE # Atm-related local atm_model="fv3" @@ -53,12 +54,14 @@ if [[ "${cplflx}" = ".true." ]]; then local ocn_petlist_bounds="${ATMPETS} $(( ATMPETS+OCNPETS-1 ))" local ocn_omp_num_threads="${OCNTHREADS}" local RUNTYPE="${cmeps_run_type}" + local CMEPS_RESTART_DIR="RESTART/" local CPLMODE="${cplmode}" local coupling_interval_fast_sec="${CPL_FAST}" local RESTART_N="${restart_interval}" local ocean_albedo_limit=0.06 local ATMTILESIZE="${CASE:1}" local ocean_albedo_limit=0.06 + local pio_rearranger=${pio_rearranger:-"box"} fi if [[ "${cplice}" = ".true." ]]; then @@ -66,7 +69,6 @@ if [[ "${cplice}" = ".true." ]]; then local ice_model="cice6" local ice_petlist_bounds="$(( ATMPETS+OCNPETS )) $(( ATMPETS+OCNPETS+ICEPETS-1 ))" local ice_omp_num_threads="${ICETHREADS}" - local MESH_OCN_ICE=${MESH_OCN_ICE:-"mesh.mx${ICERES}.nc"} local FHMAX="${FHMAX_GFS}" # TODO: How did this get in here hard-wired to FHMAX_GFS? fi @@ -76,6 +78,7 @@ if [[ "${cplwav}" = ".true." ]]; then local wav_petlist_bounds="$(( ATMPETS+OCNPETS+ICEPETS )) $(( ATMPETS+OCNPETS+ICEPETS+WAVPETS-1 ))" local wav_omp_num_threads="${WAVTHREADS}" local MULTIGRID="${waveMULTIGRID}" + local WW3_user_sets_restname="false" fi @@ -84,7 +87,7 @@ if [[ "${cplchm}" = ".true." ]]; then local chm_model="gocart" local chm_petlist_bounds="0 $(( CHMPETS-1 ))" local chm_omp_num_threads="${CHMTHREADS}" - local coupling_interval_fast_sec="${CPL_FAST}" + local coupling_interval_sec="${CPL_FAST}" fi diff --git a/ush/preamble.sh b/ush/preamble.sh index be64684aa8..d10d7541c8 100644 --- a/ush/preamble.sh +++ b/ush/preamble.sh @@ -16,6 +16,8 @@ # TRACE (YES/NO): Whether to echo every command (set -x) [default: "YES"] # STRICT (YES/NO): Whether to exit immediately on error or undefined variable # (set -eu) [default: "YES"] +# POSTAMBLE_CMD (empty/set): A command to run at the end of the job +# [default: empty] # ####### set +x @@ -70,6 +72,24 @@ postamble() { start_time="${2}" rc="${3}" + # Execute postamble command + # + # Commands can be added to the postamble by appending them to $POSTAMBLE_CMD: + # POSTAMBLE_CMD="new_thing; ${POSTAMBLE_CMD:-}" # (before existing commands) + # POSTAMBLE_CMD="${POSTAMBLE_CMD:-}; new_thing" # (after existing commands) + # + # Always use this form so previous POSTAMBLE_CMD are not overwritten. This should + # only be used for commands that execute conditionally (i.e. on certain machines + # or jobs). Global changes should just be added to this function. + # These commands will be called when EACH SCRIPT terminates, so be mindful. Please + # consult with global-workflow CMs about permanent changes to $POSTAMBLE_CMD or + # this postamble function. + # + + if [[ -v 'POSTAMBLE_CMD' ]]; then + ${POSTAMBLE_CMD} + fi + # Calculate the elapsed time end_time=$(date +%s) end_time_human=$(date -d@"${end_time}" -u +%H:%M:%S) diff --git a/workflow/applications/gefs.py b/workflow/applications/gefs.py index b2369e8dfc..9e8bb5c67e 100644 --- a/workflow/applications/gefs.py +++ b/workflow/applications/gefs.py @@ -14,7 +14,7 @@ def _get_app_configs(self): """ Returns the config_files that are involved in gefs """ - configs = ['stage_ic', 'fcst'] + configs = ['stage_ic', 'fcst', 'atmos_products'] if self.nens > 0: configs += ['efcs'] @@ -45,4 +45,6 @@ def get_task_names(self): if self.nens > 0: tasks += ['efcs'] + tasks += ['atmprod'] + return {f"{self._base['CDUMP']}": tasks} diff --git a/workflow/rocoto/gefs_tasks.py b/workflow/rocoto/gefs_tasks.py index c46d9ad452..154383f627 100644 --- a/workflow/rocoto/gefs_tasks.py +++ b/workflow/rocoto/gefs_tasks.py @@ -7,6 +7,7 @@ class GEFSTasks(Tasks): def __init__(self, app_config: AppConfig, cdump: str) -> None: super().__init__(app_config, cdump) + self.nmem = self._base['NMEM_ENS'] def stage_ic(self): @@ -132,7 +133,7 @@ def efcs(self): efcsenvars = self.envars.copy() efcsenvars.append(rocoto.create_envar(name='ENSGRP', value='#grp#')) - groups = self._get_hybgroups(self._base['NMEM_ENS'], self._configs['efcs']['NMEM_EFCSGRP']) + groups = self._get_hybgroups(self.nmem, self._configs['efcs']['NMEM_EFCSGRP']) var_dict = {'grp': groups} resources = self.get_resource('efcs') @@ -157,3 +158,50 @@ def efcs(self): task = rocoto.create_task(metatask_dict) return task + + def atmprod(self): + atm_master_path = self._template_to_rocoto_cycstring(self._base["COM_ATMOS_MASTER_TMPL"], {'MEMDIR': 'mem#member#'}) + deps = [] + data = f'{atm_master_path}/{self.cdump}.t@Hz.master.grb2f#fhr#' + dep_dict = {'type': 'data', 'data': data, 'age': 120} + deps.append(rocoto.add_dependency(dep_dict)) + dependencies = rocoto.create_dependency(dep=deps) + + atm_prod_envars = self.envars.copy() + postenvar_dict = {'ENSMEM': '#member#', + 'MEMDIR': 'mem#member#', + 'FHRLST': '#fhr#', + } + for key, value in postenvar_dict.items(): + atm_prod_envars.append(rocoto.create_envar(name=key, value=str(value))) + + resources = self.get_resource('atmos_products') + + task_name = f'atm_prod_mem#member#_f#fhr#' + task_dict = {'task_name': task_name, + 'resources': resources, + 'dependency': dependencies, + 'envars': atm_prod_envars, + 'cycledef': 'gefs', + 'command': f'{self.HOMEgfs}/jobs/rocoto/atmos_products.sh', + 'job_name': f'{self.pslot}_{task_name}_@H', + 'log': f'{self.rotdir}/logs/@Y@m@d@H/{task_name}.log', + 'maxtries': '&MAXTRIES;' + } + + fhr_var_dict = {'fhr': ' '.join([str(fhr).zfill(3) for fhr in + self._get_forecast_hours('gefs', self._configs['atmos_products'])])} + fhr_metatask_dict = {'task_name': 'atm_prod_#member#', + 'task_dict': task_dict, + 'var_dict': fhr_var_dict + } + + member_var_dict = {'member': ' '.join([str(mem).zfill(3) for mem in range(0, self.nmem + 1)])} + member_metatask_dict = {'task_name': 'atm_prod', + 'task_dict': fhr_metatask_dict, + 'var_dict': member_var_dict + } + + task = rocoto.create_task(member_metatask_dict) + + return task diff --git a/workflow/rocoto/gfs_tasks.py b/workflow/rocoto/gfs_tasks.py index 0f5e184192..36d5ab0def 100644 --- a/workflow/rocoto/gfs_tasks.py +++ b/workflow/rocoto/gfs_tasks.py @@ -929,22 +929,7 @@ def atmanlprod(self): @staticmethod def _get_ufs_postproc_grps(cdump, config): - fhmin = config['FHMIN'] - fhmax = config['FHMAX'] - fhout = config['FHOUT'] - - # Get a list of all forecast hours - fhrs = [] - if cdump in ['gdas']: - fhrs = range(fhmin, fhmax + fhout, fhout) - elif cdump in ['gfs']: - fhmax = np.max( - [config['FHMAX_GFS_00'], config['FHMAX_GFS_06'], config['FHMAX_GFS_12'], config['FHMAX_GFS_18']]) - fhout = config['FHOUT_GFS'] - fhmax_hf = config['FHMAX_HF_GFS'] - fhout_hf = config['FHOUT_HF_GFS'] - fhrs_hf = range(fhmin, fhmax_hf + fhout_hf, fhout_hf) - fhrs = list(fhrs_hf) + list(range(fhrs_hf[-1] + fhout, fhmax + fhout, fhout)) + fhrs = Tasks._get_forecast_hours(cdump, config) nfhrs_per_grp = config.get('NFHRS_PER_GROUP', 1) ngrps = len(fhrs) // nfhrs_per_grp if len(fhrs) % nfhrs_per_grp == 0 else len(fhrs) // nfhrs_per_grp + 1 diff --git a/workflow/rocoto/tasks.py b/workflow/rocoto/tasks.py index 1c79de0c19..d16a009eff 100644 --- a/workflow/rocoto/tasks.py +++ b/workflow/rocoto/tasks.py @@ -4,6 +4,7 @@ from applications.applications import AppConfig import rocoto.rocoto as rocoto from wxflow import Template, TemplateConstants, to_timedelta +from typing import List __all__ = ['Tasks'] @@ -123,6 +124,27 @@ def _template_to_rocoto_cycstring(self, template: str, subs_dict: dict = {}) -> TemplateConstants.DOLLAR_CURLY_BRACE, rocoto_conversion_dict.get) + @staticmethod + def _get_forecast_hours(cdump, config) -> List[str]: + fhmin = config['FHMIN'] + fhmax = config['FHMAX'] + fhout = config['FHOUT'] + + # Get a list of all forecast hours + fhrs = [] + if cdump in ['gdas']: + fhrs = range(fhmin, fhmax + fhout, fhout) + elif cdump in ['gfs', 'gefs']: + fhmax = np.max( + [config['FHMAX_GFS_00'], config['FHMAX_GFS_06'], config['FHMAX_GFS_12'], config['FHMAX_GFS_18']]) + fhout = config['FHOUT_GFS'] + fhmax_hf = config['FHMAX_HF_GFS'] + fhout_hf = config['FHOUT_HF_GFS'] + fhrs_hf = range(fhmin, fhmax_hf + fhout_hf, fhout_hf) + fhrs = list(fhrs_hf) + list(range(fhrs_hf[-1] + fhout, fhmax + fhout, fhout)) + + return fhrs + def get_resource(self, task_name): """ Given a task name (task_name) and its configuration (task_names),