diff --git a/.gitmodules b/.gitmodules index a3775fc12d..461f4e0d52 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +1,7 @@ [submodule "FV3"] path = FV3 - url = https://github.com/NOAA-EMC/fv3atm - branch = develop + url = https://github.com/esmf-org/fv3atm + branch = feature/ufs_fire_cpl [submodule "WW3"] path = WW3 url = https://github.com/NOAA-EMC/WW3 @@ -16,8 +16,8 @@ branch = develop [submodule "CMEPS"] path = CMEPS-interface/CMEPS - url = https://github.com/NOAA-EMC/CMEPS - branch = emc/develop + url = https://github.com/esmf-org/CMEPS + branch = feature/ufs_fire_cpl [submodule "HYCOM"] path = HYCOM-interface/HYCOM url = https://github.com/NOAA-EMC/HYCOM-src @@ -46,3 +46,7 @@ path = NOAHMP-interface/noahmp url = https://github.com/NOAA-EMC/noahmp branch = develop +[submodule "fire_behavior"] + path = fire_behavior + url = https://github.com/NCAR/fire_behavior + branch = develop diff --git a/CMEPS-interface/CMEPS b/CMEPS-interface/CMEPS index 2d837b16af..31c4981d77 160000 --- a/CMEPS-interface/CMEPS +++ b/CMEPS-interface/CMEPS @@ -1 +1 @@ -Subproject commit 2d837b16af326b09ff4018daab4de84f4deff7ec +Subproject commit 31c4981d77d7f06dbc911fa162099e2c27c323e5 diff --git a/CMakeLists.txt b/CMakeLists.txt index e5fdd1e83a..042b9cf9ec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,7 +16,7 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMakeModules/Modules) ############################################################################### # Valid applications and choices -list(APPEND VALID_APPS ATM ATMAERO ATMAQ ATMW ATMWM ATML LND S2S S2SA S2SW S2SWA S2SWAL ATM_DS2S ATM_DS2S-PCICE HAFS HAFSW HAFS-MOM6 HAFS-MOM6W HAFS-ALL NG-GODAS) +list(APPEND VALID_APPS ATM ATMAERO ATMAQ ATMW ATMWM ATML ATMF LND S2S S2SA S2SW S2SWA S2SWAL ATM_DS2S ATM_DS2S-PCICE HAFS HAFSW HAFS-MOM6 HAFS-MOM6W HAFS-ALL NG-GODAS) set(APP NONE CACHE BOOL "Application Name") if(NOT (APP IN_LIST VALID_APPS)) message(FATAL_ERROR "${APP} is not a valid application.\nValid Applications are: ${VALID_APPS}") @@ -34,6 +34,7 @@ set(STOCH_PHYS OFF CACHE BOOL "Enable Stochastic Physics") set(CMEPS OFF CACHE BOOL "Enable CMEPS") set(CDEPS OFF CACHE BOOL "Enable CDEPS") set(NOAHMP OFF CACHE BOOL "Enable NOAHMP") +set(FIRE_BEHAVIOR OFF CACHE BOOL "Enable Fire Behavior") # Configure selected application specific components message("") @@ -52,6 +53,7 @@ message("STOCH_PHYS ....... ${STOCH_PHYS}") message("CDEPS ............ ${CDEPS}") message("CMEPS ............ ${CMEPS}") message("NOAHMP ........... ${NOAHMP}") +message("FIRE_BEHAVIOR .... ${FIRE_BEHAVIOR}") ############################################################################### ### Build Options @@ -155,7 +157,7 @@ if(FMS) elseif (APP MATCHES "^(S2S|S2SA|S2SW|S2SWA|S2SWAL|ATM_DS2S|ATM_DS2S-PCICE|NG-GODAS|HAFS-MOM6|HAFS-MOM6W)$") add_library(fms ALIAS FMS::fms_r8) endif() - if(APP MATCHES "^(ATM|ATMAERO|ATMAQ|ATMWM|ATMW|ATML|HAFS|HAFS-ALL)$") + if(APP MATCHES "^(ATM|ATMAERO|ATMAQ|ATMWM|ATMW|ATML|ATMF|HAFS|HAFS-ALL)$") if(32BIT) add_library(fms ALIAS FMS::fms_r4) else() @@ -260,6 +262,14 @@ if(NOAHMP) add_subdirectory(NOAHMP-interface) endif() +############################################################################### +### Fire Components [FIRE_BEHAVIOR] +############################################################################### +if(FIRE_BEHAVIOR) + set(NUOPC "ON" CACHE STRING "Build fire_behavior with NUOPC cap" FORCE) + add_subdirectory(fire_behavior) +endif() + ############################################################################### ### UFS Library ############################################################################### @@ -339,6 +349,12 @@ if(NOAHMP) list(APPEND _ufs_libs_public noahmp) endif() +if(FIRE_BEHAVIOR) + add_dependencies(ufs fire_behavior_nuopc) + list(APPEND _ufs_defs_private FRONT_FIRE_BEHAVIOR=fire_behavior_nuopc) + list(APPEND _ufs_libs_public fire_behavior_nuopc) +endif() + target_compile_definitions(ufs PRIVATE "${_ufs_defs_private}") target_link_libraries(ufs PUBLIC "${_ufs_libs_public}") diff --git a/FV3 b/FV3 index 07c26d1efa..5dda3bcf17 160000 --- a/FV3 +++ b/FV3 @@ -1 +1 @@ -Subproject commit 07c26d1efae47445e4c36ff98942494788e7dc49 +Subproject commit 5dda3bcf17eb061f9d26d855f2cbc4adc81fa9d6 diff --git a/cmake/configure_apps.cmake b/cmake/configure_apps.cmake index b6db3a5759..a63601f62f 100644 --- a/cmake/configure_apps.cmake +++ b/cmake/configure_apps.cmake @@ -13,7 +13,7 @@ ############################################################################### ### Configure Application Components ############################################################################### -if(APP MATCHES "^(ATM|ATMW|ATMWM|ATMAQ|ATML)$") +if(APP MATCHES "^(ATM|ATMW|ATMWM|ATMAQ|ATML|ATMF)$") set(FMS ON CACHE BOOL "Enable FMS" FORCE) set(FV3 ON CACHE BOOL "Enable FV3" FORCE) set(STOCH_PHYS ON CACHE BOOL "Enable Stochastic Physics" FORCE) @@ -31,6 +31,8 @@ if(APP MATCHES "^(ATM|ATMW|ATMWM|ATMAQ|ATML)$") set(CMEPS ON CACHE BOOL "Enable CMEPS" FORCE) set(NOAHMP ON CACHE BOOL "Enable NOAHMP" FORCE) message("Configuring UFS app in Atmosphere with Air Quality mode") + elseif(APP MATCHES "ATMF") + set(FIRE_BEHAVIOR ON CACHE BOOL "Enable Fire Behavior" FORCE) else() message("Configuring UFS app in Atmosphere Only mode") endif() diff --git a/driver/UFSDriver.F90 b/driver/UFSDriver.F90 index 53c51d818b..2b07308aa1 100644 --- a/driver/UFSDriver.F90 +++ b/driver/UFSDriver.F90 @@ -23,7 +23,7 @@ MODULE UFSDriver ! UFS Driver component ! /|\ ! / | \ -! ATM/OCN/ICE/WAV/LND/IPM/HYD .. components +! ATM/OCN/ICE/WAV/LND/IPM/HYD/FIR .. components ! | | | ! | | (CICE, etc.) ! | | @@ -81,6 +81,10 @@ MODULE UFSDriver #endif #ifdef FRONT_NOAHMP use FRONT_NOAHMP, only: NOAHMP_SS => SetServices +#endif + ! - Handle build time FIR options: +#ifdef FRONT_FIRE_BEHAVIOR + use FRONT_FIRE_BEHAVIOR, only: FIRE_BEHAVIOR_SS => SetServices #endif #ifdef FRONT_LIS use FRONT_LIS, only: LIS_SS => SetServices @@ -471,6 +475,14 @@ subroutine SetModelServices(driver, rc) found_comp = .true. end if #endif +#ifdef FRONT_FIRE_BEHAVIOR + if (trim(model) == "fire_behavior") then + call NUOPC_DriverAddComp(driver, trim(prefix), FIRE_BEHAVIOR_SS, & + petList=petList, comp=comp, rc=rc) + if (ChkErr(rc,__LINE__,u_FILE_u)) return + found_comp = .true. + end if +#endif #ifdef FRONT_LIS if (trim(model) == "lis") then !TODO: Remove bail code and pass info and SetVM to DriverAddComp diff --git a/fire_behavior b/fire_behavior new file mode 160000 index 0000000000..05cad173fe --- /dev/null +++ b/fire_behavior @@ -0,0 +1 @@ +Subproject commit 05cad173feeb598431e3ef5f17c2df6562c8d101 diff --git a/tests/default_vars.sh b/tests/default_vars.sh index 0742cb3bd8..be04b3ccb5 100644 --- a/tests/default_vars.sh +++ b/tests/default_vars.sh @@ -34,6 +34,7 @@ export OCN_tasks_cpl_dflt=20 export ICE_tasks_cpl_dflt=10 export WAV_tasks_cpl_dflt=20 + export FBH_tasks_cpl_dflt=1 export THRD_cpl_thrd=2 export INPES_cpl_thrd=3 @@ -116,6 +117,7 @@ export med_omp_num_threads=1 export ocn_omp_num_threads=1 export wav_omp_num_threads=1 + export fbh_omp_num_threads=1 if [[ ${MACHINE_ID} = wcoss2 || ${MACHINE_ID} = acorn ]]; then @@ -497,6 +499,7 @@ export FV3=true export S2S=false export HAFS=false export AQM=false +export FIRE_BEHAVIOR=false export DATM_CDEPS=false export DOCN_CDEPS=false export DICE_CDEPS=false @@ -1022,6 +1025,24 @@ export_ww3() { export WW3_user_sets_restname="true" } +export_fire_behavior() { +export fbh_model=fire_behavior +export FIRE_BEHAVIOR=true +export FIRE_NML=namelist.fire.IN +export CPLFIRE=false +export DT_FIRE=${DT_ATMOS} +export OUTPUT_FS="$(printf "%02d" $(( ${OUTPUT_FH}*3600 )))" +export fire_atm_feedback=1.0 +export fire_lsm_zcoupling=false +export fire_lsm_zcoupling_ref=60.0 +export fire_num_ignitions=1 +export fire_print_msg=0 +export fire_upwinding=9 +export fire_viscosity=0.4 +export fire_wind_height=5.0 +} + + # Defaults for the coupled 5-component export_cmeps() { export UFS_CONFIGURE=ufs.configure.s2swa_fast_esmf.IN @@ -1065,6 +1086,7 @@ export FV3=true export S2S=true export HAFS=false export AQM=false +export FIRE_BEHAVIOR=false export DATM_CDEPS=false export DOCN_CDEPS=false export DICE_CDEPS=false @@ -1106,6 +1128,7 @@ export THRD=${THRD_cpl_dflt} export OCN_tasks=${OCN_tasks_cpl_dflt} export ICE_tasks=${ICE_tasks_cpl_dflt} export WAV_tasks=${WAV_tasks_cpl_dflt} +export FBH_tasks=${FBH_tasks_cpl_dflt} # Set tiled file defaults export_tiled @@ -1251,6 +1274,7 @@ export_datm_cdeps () export S2S=false export HAFS=false export AQM=false + export FIRE_BEHAVIOR=false export DATM_CDEPS=true export DOCN_CDEPS=false export CDEPS_INLINE=false @@ -1328,6 +1352,7 @@ export_hafs_datm_cdeps () export S2S=false export HAFS=true export AQM=false + export FIRE_BEHAVIOR=false export DATM_CDEPS=true export DOCN_CDEPS=false export CDEPS_INLINE=false @@ -1347,6 +1372,7 @@ export_hafs_docn_cdeps () export S2S=false export HAFS=true export AQM=false + export FIRE_BEHAVIOR=false export DOCN_CDEPS=true export CDEPS_INLINE=false export INPES=${INPES_dflt} @@ -1366,6 +1392,7 @@ export_hafs_regional () export S2S=false export HAFS=true export AQM=false + export FIRE_BEHAVIOR=false export DATM_CDEPS=false export DOCN_CDEPS=false export CDEPS_INLINE=false @@ -1439,6 +1466,7 @@ export FV3=true export S2S=false export HAFS=true export AQM=false +export FIRE_BEHAVIOR=false export DATM_CDEPS=false export DOCN_CDEPS=false export CDEPS_INLINE=false diff --git a/tests/fv3_conf/regional_fire_run.IN b/tests/fv3_conf/regional_fire_run.IN new file mode 100644 index 0000000000..10fb6e2a8c --- /dev/null +++ b/tests/fv3_conf/regional_fire_run.IN @@ -0,0 +1,12 @@ +rm -rf INPUT RESTART +mkdir INPUT RESTART + +rsync -arv @[INPUTDATA_ROOT]/FIRE_BEHAVIOR_input_data/@[FIRE_NAME]/. . +rsync -arv @[INPUTDATA_ROOT]/FV3_fire_input_data/@[FIRE_NAME]/. . + +rsync -arv @[INPUTDATA_ROOT]/FV3_regional_input_data/. . +rsync -arv @[INPUTDATA_ROOT]/FV3_fix . +ln -sf FV3_fix/* . +ln -sf FV3_fix/fix_co2_proj/* . + +touch data_table diff --git a/tests/parm/diag_table/diag_table_fire b/tests/parm/diag_table/diag_table_fire new file mode 100644 index 0000000000..530377aab2 --- /dev/null +++ b/tests/parm/diag_table/diag_table_fire @@ -0,0 +1,377 @@ +20200813.18Z.C3336.32bit.non-hydro.regional +2020 08 13 18 00 00 + +"grid_spec", -1, "months", 1, "days", "time" +"atmos_static", -1, "hours", 1, "hours", "time" +#"atmos_4xdaily", 1, "hours", 1, "days", "time" +"fv3_history", 1, "years", 1, "hours", "time" +"fv3_history2d", 1, "years", 1, "hours", "time" + +# +#======================= +# ATMOSPHERE DIAGNOSTICS +#======================= +### +# grid_spec +### + "dynamics", "grid_lon", "grid_lon", "grid_spec", "all", .false., "none", 2, + "dynamics", "grid_lat", "grid_lat", "grid_spec", "all", .false., "none", 2, + "dynamics", "grid_lont", "grid_lont", "grid_spec", "all", .false., "none", 2, + "dynamics", "grid_latt", "grid_latt", "grid_spec", "all", .false., "none", 2, + "dynamics", "area", "area", "grid_spec", "all", .false., "none", 2, +### +# 4x daily output +### +# "dynamics", "slp", "slp", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "vort850", "vort850", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "vort200", "vort200", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "us", "us", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "u1000", "u1000", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "u850", "u850", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "u700", "u700", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "u500", "u500", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "u200", "u200", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "u100", "u100", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "u50", "u50", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "u10", "u10", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "vs", "vs", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "v1000", "v1000", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "v850", "v850", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "v700", "v700", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "v500", "v500", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "v200", "v200", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "v100", "v100", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "v50", "v50", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "v10", "v10", "atmos_4xdaily", "all", .false., "none", 2 +#### +# "dynamics", "tm", "tm", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "t1000", "t1000", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "t850", "t850", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "t700", "t700", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "t500", "t500", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "t200", "t200", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "t100", "t100", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "t50", "t50", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "t10", "t10", "atmos_4xdaily", "all", .false., "none", 2 +#### +# "dynamics", "z1000", "z1000", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "z850", "z850", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "z700", "z700", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "z500", "z500", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "z200", "z200", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "z100", "z100", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "z50", "z50", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "z10", "z10", "atmos_4xdaily", "all", .false., "none", 2 +#### +# "dynamics", "w1000", "w1000", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "w850", "w850", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "w700", "w700", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "w500", "w500", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "w200", "w200", "atmos_4xdaily", "all", .false., "none", 2 +#### +# "dynamics", "q1000", "q1000", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "q850", "q850", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "q700", "q700", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "q500", "q500", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "q200", "q200", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "q100", "q100", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "q50", "q50", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "q10", "q10", "atmos_4xdaily", "all", .false., "none", 2 +#### +# "dynamics", "rh1000", "rh1000", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "rh850", "rh850", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "rh700", "rh700", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "rh500", "rh500", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "rh200", "rh200", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "omg1000", "omg1000", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "omg850", "omg850", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "omg700", "omg700", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "omg500", "omg500", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "omg200", "omg200", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "omg100", "omg100", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "omg50", "omg50", "atmos_4xdaily", "all", .false., "none", 2 +# "dynamics", "omg10", "omg10", "atmos_4xdaily", "all", .false., "none", 2 +### +# gfs static data +### + "dynamics", "pk", "pk", "atmos_static", "all", .false., "none", 2 + "dynamics", "bk", "bk", "atmos_static", "all", .false., "none", 2 + "dynamics", "hyam", "hyam", "atmos_static", "all", .false., "none", 2 + "dynamics", "hybm", "hybm", "atmos_static", "all", .false., "none", 2 + "dynamics", "zsurf", "zsurf", "atmos_static", "all", .false., "none", 2 +### +# FV3 variabls needed for NGGPS evaluation +### +"gfs_dyn", "ucomp", "ugrd", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "vcomp", "vgrd", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "sphum", "spfh", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "temp", "tmp", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "liq_wat", "clwmr", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "o3mr", "o3mr", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "delp", "dpres", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "delz", "delz", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "w", "dzdt", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "ice_wat", "icmr", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "rainwat", "rwmr", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "snowwat", "snmr", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "graupel", "grle", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "ps", "pressfc", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "hs", "hgtsfc", "fv3_history", "all", .false., "none", 2 +# Reflectivity from Thompson microphysics +"gfs_phys", "refl_10cm" "refl_10cm" "fv3_history", "all", .false., "none", 2 +"gfs_phys", "cldfra", "cldfra", "fv3_history", "all", .false., "none", 2 +#"gfs_dyn", "ice_nc", "nicp", "fv3_history", "all", .false., "none", 2 +#"gfs_dyn", "rain_nc", "ntrnc", "fv3_history", "all", .false., "none", 2 + +"gfs_dyn", "wmaxup", "upvvelmax", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "wmaxdn", "dnvvelmax", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "uhmax03", "uhmax03", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "uhmax25", "uhmax25", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "uhmin03", "uhmin03", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "uhmin25", "uhmin25", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "maxvort01", "maxvort01", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "maxvort02", "maxvort02", "fv3_history", "all", .false., "none", 2 +"gfs_dyn", "maxvorthy1", "maxvorthy1", "fv3_history", "all", .false., "none", 2 + +"gfs_phys", "frzr", "frzr", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "frzrb", "frzrb", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "frozr", "frozr", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "frozrb", "frozrb", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "tsnowp", "tsnowp", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "tsnowpb", "tsnowpb", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "rhonewsn", "rhonewsn", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "ALBDO_ave", "albdo_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "cnvprcp_ave", "cprat_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "cnvprcpb_ave", "cpratb_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "totprcp_ave", "prate_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "totprcpb_ave", "prateb_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "DLWRF", "dlwrf_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "DLWRFI", "dlwrf", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "ULWRF", "ulwrf_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "ULWRFI", "ulwrf", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "DSWRF", "dswrf_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "DSWRFI", "dswrf", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "USWRF", "uswrf_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "USWRFI", "uswrf", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "DSWRFtoa", "dswrf_avetoa","fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "USWRFtoa", "uswrf_avetoa","fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "ULWRFtoa", "ulwrf_avetoa","fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "gflux_ave", "gflux_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "hpbl", "hpbl", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "lhtfl_ave", "lhtfl_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "shtfl_ave", "shtfl_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "pwat", "pwat", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "soilm", "soilm", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "TCDC_aveclm", "tcdc_aveclm", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "TCDC_avebndcl", "tcdc_avebndcl", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "TCDC_avehcl", "tcdc_avehcl", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "TCDC_avelcl", "tcdc_avelcl", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "TCDC_avemcl", "tcdc_avemcl", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "TCDCcnvcl", "tcdccnvcl", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "PREScnvclt", "prescnvclt", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "PREScnvclb", "prescnvclb", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "PRES_avehct", "pres_avehct", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "PRES_avehcb", "pres_avehcb", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "TEMP_avehct", "tmp_avehct", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "PRES_avemct", "pres_avemct", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "PRES_avemcb", "pres_avemcb", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "TEMP_avemct", "tmp_avemct", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "PRES_avelct", "pres_avelct", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "PRES_avelcb", "pres_avelcb", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "TEMP_avelct", "tmp_avelct", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "u-gwd_ave", "u-gwd_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "v-gwd_ave", "v-gwd_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "dusfc", "uflx_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "dvsfc", "vflx_ave", "fv3_history2d", "all", .false., "none", 2 +#"gfs_phys", "cnvw", "cnvcldwat", "fv3_history2d", "all", .false., "none", 2 + +"gfs_phys", "psurf", "pressfc", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "u10m", "ugrd10m", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "v10m", "vgrd10m", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "crain", "crain", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "tprcp", "tprcp", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "hgtsfc", "orog", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "weasd", "weasd", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "f10m", "f10m", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "q2m", "spfh2m", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "t2m", "tmp2m", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "tsfc", "tmpsfc", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "vtype", "vtype", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "stype", "sotyp", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "slmsksfc", "land", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "vfracsfc", "veg", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "zorlsfc", "sfcr", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "uustar", "fricv", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "soilt1", "soilt1" "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "soilt2", "soilt2" "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "soilt3", "soilt3" "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "soilt4", "soilt4" "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "soilt5", "soilt5" "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "soilt6", "soilt6" "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "soilt7", "soilt7" "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "soilt8", "soilt8" "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "soilt9", "soilt9" "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "soilw1", "soilw1" "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "soilw2", "soilw2" "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "soilw3", "soilw3" "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "soilw4", "soilw4" "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "soilw5", "soilw5" "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "soilw6", "soilw6" "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "soilw7", "soilw7" "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "soilw8", "soilw8" "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "soilw9", "soilw9" "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "slc_1", "soill1", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "slc_2", "soill2", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "slc_3", "soill3", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "slc_4", "soill4", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "slc_5", "soill5", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "slc_6", "soill6", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "slc_7", "soill7", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "slc_8", "soill8", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "slc_9", "soill9", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "slope", "sltyp", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "alnsf", "alnsf", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "alnwf", "alnwf", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "alvsf", "alvsf", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "alvwf", "alvwf", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "canopy", "cnwat", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "facsf", "facsf", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "facwf", "facwf", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "ffhh", "ffhh", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "ffmm", "ffmm", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "fice", "icec", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "hice", "icetk", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "snoalb", "snoalb", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "shdmax", "shdmax", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "shdmin", "shdmin", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "snowd", "snod", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "tg3", "tg3", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "tisfc", "tisfc", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "tref", "tref", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "z_c", "zc", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "c_0", "c0", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "c_d", "cd", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "w_0", "w0", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "w_d", "wd", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "xt", "xt", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "xz", "xz", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "dt_cool", "dtcool", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "xs", "xs", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "xu", "xu", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "xv", "xv", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "xtts", "xtts", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "xzts", "xzts", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "d_conv", "dconv", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "qrain", "qrain", "fv3_history2d", "all", .false., "none", 2 + +"gfs_phys", "acond", "acond", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "cduvb_ave", "cduvb_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "cpofp", "cpofp", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "duvb_ave", "duvb_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "csdlf_ave", "csdlf", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "csusf_ave", "csusf", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "csusf_avetoa", "csusftoa", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "csdsf_ave", "csdsf", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "csulf_ave", "csulf", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "csulf_avetoa", "csulftoa", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "cwork_ave", "cwork_aveclm", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "evbs_ave", "evbs_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "evcw_ave", "evcw_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "fldcp", "fldcp", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "hgt_hyblev1", "hgt_hyblev1", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "spfh_hyblev1", "spfh_hyblev1", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "ugrd_hyblev1", "ugrd_hyblev1", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "vgrd_hyblev1", "vgrd_hyblev1", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "tmp_hyblev1", "tmp_hyblev1", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "gfluxi", "gflux", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "lhtfl", "lhtfl", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "shtfl", "shtfl", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "pevpr", "pevpr", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "pevpr_ave", "pevpr_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "sbsno_ave", "sbsno_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "sfexc", "sfexc", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "snohf", "snohf", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "snowc_ave", "snowc_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "spfhmax2m", "spfhmax_max2m", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "spfhmin2m", "spfhmin_min2m", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "tmpmax2m", "tmax_max2m", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "tmpmin2m", "tmin_min2m", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "ssrun_acc", "ssrun_acc", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "sunsd_acc", "sunsd_acc", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "watr_acc", "watr_acc", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "wilt", "wilt", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "vbdsf_ave", "vbdsf_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "vddsf_ave", "vddsf_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "nbdsf_ave", "nbdsf_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "nddsf_ave", "nddsf_ave", "fv3_history2d", "all", .false., "none", 2 +"gfs_phys", "trans_ave", "trans_ave", "fv3_history2d", "all", .false., "none", 2 +# Aerosols (CCN, IN) from Thompson microphysics +"gfs_phys", "nwfa", "nwfa", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "nifa", "nifa", "fv3_history", "all", .false., "none", 2 +"gfs_sfc", "nwfa2d", "nwfa2d", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "nifa2d", "nifa2d", "fv3_history2d", "all", .false., "none", 2 +# Cloud effective radii from Thompson and WSM6 microphysics +"gfs_phys", "cleffr", "cleffr", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "cieffr", "cieffr", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "cseffr", "cseffr", "fv3_history", "all", .false., "none", 2 +# Prognostic/diagnostic variables from MYNN +"gfs_phys", "QC_BL", "qc_bl", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "CLDFRA_BL", "cldfra_bl", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "EL_PBL", "el_pbl", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "QKE", "qke", "fv3_history", "all", .false., "none", 2 +"gfs_sfc", "maxmf", "maxmf", "fv3_history2d", "all", .false., "none", 2 +#"gfs_sfc", "nupdraft", "nupdrafts", "fv3_history2d", "all", .false., "none", 2 +#"gfs_sfc", "ktop_shallow", "ktop_shallow", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "zol", "zol", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "flhc", "flhc", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "flqc", "flqc", "fv3_history2d", "all", .false., "none", 2 +# Prognostic/diagnostic variables from RUC LSM +"gfs_sfc", "snowfall_acc", "snowfall_acc", "fv3_history2d", "all", .false., "none", 2 +"gfs_sfc", "swe_snowfall_acc", "swe_snowfall_acc", "fv3_history2d", "all", .false., "none", 2 +# Stochastic physics +"gfs_phys", "sppt_wts", "sppt_wts", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "skebu_wts", "skebu_wts", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "skebv_wts", "skebv_wts", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "shum_wts", "shum_wts", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "spp_wts_pbl", "spp_wts_pbl", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "spp_wts_sfc", "spp_wts_sfc", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "spp_wts_mp", "spp_wts_mp", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "spp_wts_rad", "spp_wts_rad", "fv3_history", "all", .false., "none", 2 +"gfs_phys", "spp_wts_gwd", "spp_wts_gwd", "fv3_history", "all", .false., "none", 2 + +# Additional entries from user-specified SRW settings (e.g. UFS-FIRE) +"gfs_phys","fsmoke","fsmoke","fv3_history","all",.false.,"none",2 + +#============================================================================================= +# +#====> This file can be used with diag_manager/v2.0a (or higher) <==== +# +# +# FORMATS FOR FILE ENTRIES (not all input values are used) +# ------------------------ +# +#"file_name", output_freq, "output_units", format, "time_units", "long_name", +# +# +#output_freq: > 0 output frequency in "output_units" +# = 0 output frequency every time step +# =-1 output frequency at end of run +# +#output_units = units used for output frequency +# (years, months, days, minutes, hours, seconds) +# +#time_units = units used to label the time axis +# (days, minutes, hours, seconds) +# +# +# FORMAT FOR FIELD ENTRIES (not all input values are used) +# ------------------------ +# +#"module_name", "field_name", "output_name", "file_name" "time_sampling", time_avg, "other_opts", packing +# +#time_avg = .true. or .false. +# +#packing = 1 double precision +# = 2 float +# = 4 packed 16-bit integers +# = 8 packed 1-byte (not tested?) diff --git a/tests/parm/fd_ufs.yaml b/tests/parm/fd_ufs.yaml index c0189f0bdf..4e79151812 100644 --- a/tests/parm/fd_ufs.yaml +++ b/tests/parm/fd_ufs.yaml @@ -830,6 +830,8 @@ canonical_units: tbd - standard_name: inst_rainfall_amount canonical_units: tbd + - standard_name: accumulated_lwe_thickness_of_precipitation_amount + canonical_units: tbd - standard_name: inst_land_sea_mask canonical_units: tbd - standard_name: inst_temp_height_surface @@ -1264,3 +1266,18 @@ alias: inst_func_of_roughness_length_and_vfrac canonical_units: 1 description: land export + # + #----------------------------------- + # section: fire behavior + #----------------------------------- + # + - standard_name: hflx_fire + canonical_units: K m s-1 + description: kinematic surface upward sensible heat flux of fire + # + - standard_name: evap_fire + canonical_units: Kg Kg-1 m s-1 + description: kinematic surface upward latent heat flux of fire + # + - standard_name: smoke_fire + canonical_units: kg m-2 diff --git a/tests/parm/field_table/field_table_fire b/tests/parm/field_table/field_table_fire new file mode 100644 index 0000000000..8d340fc7fa --- /dev/null +++ b/tests/parm/field_table/field_table_fire @@ -0,0 +1,70 @@ +# added by FRE: sphum must be present in atmos +# specific humidity for moist runs + "TRACER", "atmos_mod", "sphum" + "longname", "specific humidity" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic cloud water mixing ratio + "TRACER", "atmos_mod", "liq_wat" + "longname", "cloud water mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic ice water mixing ratio + "TRACER", "atmos_mod", "ice_wat" + "longname", "cloud ice mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic rain water mixing ratio + "TRACER", "atmos_mod", "rainwat" + "longname", "rain water mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic snow water mixing ratio + "TRACER", "atmos_mod", "snowwat" + "longname", "snow water mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic graupel mixing ratio + "TRACER", "atmos_mod", "graupel" + "longname", "graupel mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# prognostic cloud water number concentration + "TRACER", "atmos_mod", "water_nc" + "longname", "cloud liquid water number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic cloud ice number concentration + "TRACER", "atmos_mod", "ice_nc" + "longname", "cloud ice water number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic rain number concentration + "TRACER", "atmos_mod", "rain_nc" + "longname", "rain number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic ozone mixing ratio tracer + "TRACER", "atmos_mod", "o3mr" + "longname", "ozone mixing ratio" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=1.e30" / +# water- and ice-friendly aerosols (Thompson) + "TRACER", "atmos_mod", "liq_aero" + "longname", "water-friendly aerosol number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / + "TRACER", "atmos_mod", "ice_aero" + "longname", "ice-friendly aerosol number concentration" + "units", "/kg" + "profile_type", "fixed", "surface_value=0.0" / +# prognostic subgrid scale turbulent kinetic energy + "TRACER", "atmos_mod", "sgs_tke" + "longname", "subgrid scale turbulent kinetic energy" + "units", "m2/s2" + "profile_type", "fixed", "surface_value=0.0" / +# smoke tracer for UFS_FIRE + "TRACER", "atmos_mod", "fsmoke" + "longname", "fire smoke" + "units", "kg/kg" + "profile_type", "fixed", "surface_value=0.0" / diff --git a/tests/parm/input_regional_fire.nml.IN b/tests/parm/input_regional_fire.nml.IN new file mode 100644 index 0000000000..1b9957aa24 --- /dev/null +++ b/tests/parm/input_regional_fire.nml.IN @@ -0,0 +1,300 @@ +&amip_interp_nml + data_set = 'reynolds_oi' + date_out_of_range = 'climo' + interp_oi_sst = .true. + no_anom_sst = .false. + use_ncep_ice = .false. + use_ncep_sst = .true. +/ + +&atmos_model_nml + blocksize = @[BLOCKSIZE] + ccpp_suite = '@[CCPP_SUITE]' + chksum_debug = .false. + dycore_only = .false. +/ + +&cires_ugwp_nml + knob_ugwp_azdir = 2, 4, 4, 4 + knob_ugwp_doaxyz = 1 + knob_ugwp_doheat = 1 + knob_ugwp_dokdis = 1 + knob_ugwp_effac = 1, 1, 1, 1 + knob_ugwp_ndx4lh = 1 + knob_ugwp_solver = 2 + knob_ugwp_source = 1, 1, 0, 0 + knob_ugwp_stoch = 0, 0, 0, 0 + knob_ugwp_version = 0 + knob_ugwp_wvspec = 1, 25, 25, 25 + launch_level = 25 +/ + +&diag_manager_nml + max_output_fields = 450 + prepend_date = .false. +/ + +&external_ic_nml + checker_tr = .false. + filtered_terrain = .true. + gfs_dwinds = .true. + levp = @[NPZP] + nt_checker = 0 +/ + +&fms_io_nml + checksum_required = .false. + max_files_r = 100 + max_files_w = 100 +/ + +&fms_nml + clock_grain = 'ROUTINE' + domains_stack_size = 12000000 + print_memory_usage = .false. +/ + +&fv_core_nml + a_imp = 1.0 + adjust_dry_mass = .false. + bc_update_interval = @[BC_UPDATE_INTERVAL] + beta = 0.0 + consv_am = .false. + consv_te = 0.0 + d2_bg = 0.0 + d2_bg_k1 = 0.2 + d2_bg_k2 = 0.04 + d4_bg = 0.12 + d_con = 0.5 + d_ext = 0.0 + dddmp = 0.1 + delt_max = 0.008 + dnats = @[DNATS] + do_sat_adj = @[DO_SAT_ADJ] + do_schmidt = .true. + do_vort_damp = .true. + dwind_2d = .false. + dz_min = 2 + external_eta = .true. + external_ic = @[EXTERNAL_IC] + fill = .true. + full_zs_filter = @[FULL_ZS_FILTER] + fv_debug = .false. + fv_sg_adj = 300 + gfs_phil = .false. + hord_dp = 6 + hord_mt = 6 + hord_tm = 6 + hord_tr = 8 + hord_vt = 6 + hydrostatic = .false. + io_layout = 1, 1 + k_split = @[K_SPLIT] + ke_bg = 0.0 + kord_mt = 9 + kord_tm = -9 + kord_tr = 9 + kord_wz = 9 + layout = @[INPES], @[JNPES] + make_nh = .true. + mountain = @[MOUNTAIN] + n_split = @[N_SPLIT] + n_sponge = 9 + n_zs_filter = @[N_ZS_FILTER] + na_init = @[NA_INIT] + ncep_ic = .false. + nggps_ic = @[NGGPS_IC] + no_dycore = .false. + nord = 3 + nord_tr = 0 + npx = @[NPX] + npy = @[NPY] + npz = @[NPZ] + nrows_blend = @[NROWS_BLEND] + ntiles = @[NTILES] + nudge_qv = .false. + nwat = @[NWAT] + p_fac = 0.1 + phys_hydrostatic = .false. + print_freq = 6 + psm_bc = 1 + range_warn = .true. + read_increment = .false. + regional = @[REGIONAL] + regional_bcs_from_gsi = .false. + res_latlon_dynamics = 'fv3_increment.nc' + reset_eta = .false. + rf_cutoff = 2000.0 + stretch_fac = @[STRETCH_FAC] + target_lat = @[TARGET_LAT] + target_lon = @[TARGET_LON] + tau = 5.0 + use_hydro_pressure = .false. + vtdm4 = 0.02 + warm_start = @[WARM_START] + write_restart_with_bcs = .false. + z_tracer = .true. +/ + +&fv_grid_nml + grid_file = 'INPUT/grid_spec.nc' +/ + +&gfs_physics_nml + bl_mynn_edmf = 1 + bl_mynn_edmf_mom = 1 + bl_mynn_tkeadvect = .true. + cal_pre = .false. + cdmbgwd = 3.5, 1.0 + cnvcld = .false. + cnvgwd = .false. + cplflx = @[CPLFLX] + cpl_fire = @[CPLFIRE] + cpl_imp_mrg = @[CPL_IMP_MRG] + cpl_imp_dbg = @[CPL_IMP_DBG] + debug = .false. + diag_log = .true. + do_deep = .false. + do_gsl_drag_ls_bl = .true. + do_gsl_drag_ss = .true. + do_gsl_drag_tofd = .true. + do_mynnedmf = .true. + do_mynnsfclay = .true. + dspheat = .true. + effr_in = .true. + fhcyc = @[FHCYC] + fhlwr = @[FHLWR] + fhswr = @[FHSWR] + fhzero = 1.0 + gwd_opt = 3 + h2o_phys = .true. + hybedmf = .false. + iaer = 5111 + ialb = 2 + iau_delthrs = 6 + iau_inc_files = '' + iaufhrs = 30 + icliq_sw = 2 + icloud_bl = 1 + ico2 = 2 + iems = 2 + imfdeepcnv = -1 + imfshalcnv = -1 + imp_physics = @[IMP_PHYSICS] + iopt_alb = 2 + iopt_btr = 1 + iopt_crs = 1 + iopt_dveg = 2 + iopt_frz = 1 + iopt_inf = 1 + iopt_rad = 1 + iopt_run = 1 + iopt_sfc = 1 + iopt_snf = 4 + iopt_stc = 1 + iopt_tbot = 2 + iopt_trs = 2 + iovr = 3 + isncond_opt = 2 + isncovr_opt = 3 + isol = 2 + isot = 1 + isubc_lw = 2 + isubc_sw = 2 + ivegsrc = 1 + kice = 9 + ldiag3d = .false. + lheatstrg = .false. + lradar = .true. + lsm = 3 + lsoil = 9 + lsoil_lsm = 9 + ltaerosol = .true. + lwhtr = .true. + mosaic_lu = 0 + mosaic_soil = 0 + nsfullradar_diag = 3600 + oz_phys = .false. + oz_phys_2015 = .true. + pdfcld = .false. + pre_rad = .false. + print_diff_pgr = .false. + prslrd0 = 0.0 + random_clds = .false. + redrag = .true. + satmedmf = .false. + sfclay_compute_flux = .true. + shal_cnv = .false. + swhtr = .true. + thsfc_loc = .false. + trans_trac = .true. + ttendlim = -999 + use_ufo = .true. +/ + +&interpolator_nml + interp_method = 'conserve_great_circle' +/ + +&nam_sfcperts +/ + +&nam_sppperts +/ + +&nam_stochy +/ + +&namsfc + fabsl = 99999 + faisl = 99999 + faiss = 99999 + fnacna = '' + fnaisc = '../../../../../epicufsrt/contrib/UFS_SRW_data/develop/fix/fix_am/CFSR.SEAICE.1982.2012.monthly.clim.grb' + fnglac = '../../../../../epicufsrt/contrib/UFS_SRW_data/develop/fix/fix_am/global_glacier.2x2.grb' + fnmskh = '../../../../../epicufsrt/contrib/UFS_SRW_data/develop/fix/fix_am/seaice_newland.grb' + fnmxic = '../../../../../epicufsrt/contrib/UFS_SRW_data/develop/fix/fix_am/global_maxice.2x2.grb' + fnsmcc = '../../../../../epicufsrt/contrib/UFS_SRW_data/develop/fix/fix_am/global_soilmgldas.t126.384.190.grb' + fnsnoa = '' + fnsnoc = '../../../../../epicufsrt/contrib/UFS_SRW_data/develop/fix/fix_am/global_snoclim.1.875.grb' + fntsfa = '' + fntsfc = '../../../../../epicufsrt/contrib/UFS_SRW_data/develop/fix/fix_am/RTGSST.1982.2012.monthly.clim.grb' + fnzorc = 'igbp' + fsicl = 99999 + fsics = 99999 + fslpl = 99999 + fsmcl = 99999, 99999, 99999 + fsnol = 99999 + fsnos = 99999 + fsotl = 99999 + ftsfl = 99999 + ftsfs = 90 + fvetl = 99999 + fvmnl = 99999 + fvmxl = 99999 + ldebug = .true. +/ + +&namsfc_dict + fnabsc = '../fix_lam/C3336.maximum_snow_albedo.tileX.nc' + fnalbc = '../fix_lam/C3336.snowfree_albedo.tileX.nc' + fnalbc2 = '../fix_lam/C3336.facsf.tileX.nc' + fnslpc = '../fix_lam/C3336.slope_type.tileX.nc' + fnsotc = '../fix_lam/C3336.soil_type.tileX.nc' + fntg3c = '../fix_lam/C3336.substrate_temperature.tileX.nc' + fnvegc = '../fix_lam/C3336.vegetation_greenness.tileX.nc' + fnvetc = '../fix_lam/C3336.vegetation_type.tileX.nc' + fnvmnc = '../fix_lam/C3336.vegetation_greenness.tileX.nc' + fnvmxc = '../fix_lam/C3336.vegetation_greenness.tileX.nc' +/ + +&surf_map_nml + cd2 = -1 + cd4 = 0.12 + max_slope = 0.4 + n_del2_strong = 0 + n_del2_weak = 2 + n_del4 = 1 + peak_fac = 1.0 + zero_ocean = .false. +/ diff --git a/tests/parm/model_configure_fire.IN b/tests/parm/model_configure_fire.IN new file mode 100644 index 0000000000..61fe2986a7 --- /dev/null +++ b/tests/parm/model_configure_fire.IN @@ -0,0 +1,71 @@ +start_year: @[SYEAR] +start_month: @[SMONTH] +start_day: @[SDAY] +start_hour: @[SHOUR] +start_minute: 0 +start_second: 0 +nhours_fcst: @[FHMAX] +fhrot: 0 +RUN_CONTINUE: .false. +ENS_SPS: .false. +dt_atmos: @[DT_ATMOS] +calendar: 'julian' +memuse_verbose: .false. +restart_interval: @[RESTART_INTERVAL] +output_1st_tstep_rst: .false. +write_dopost: @[WRITE_DOPOST] +ideflate: @[IDEFLATE] +nbits: 0 +ichunk2d: -1 +jchunk2d: -1 +ichunk3d: -1 +jchunk3d: -1 +kchunk3d: -1 +itasks: 1 +quilting: @[QUILTING] + +# +# Write-component (quilting) computational parameters. +# +write_groups: @[WRITE_GROUP] +write_tasks_per_group: @[WRTTASK_PER_GROUP] +num_files: @[NUM_FILES] +filename_base: @[FILENAME_BASE] +output_file: @[OUTPUT_FILE] +# +# Write-component output frequency parameter definitions: +# +# output_fh: Output frequency in hours. +# nsout: Output frequency in time steps (positive values override "output_fh"). +# +output_fh: @[OUTPUT_FH] +nsout: -1 +# +# Coordinate system used by the output grid. +# +output_grid: @[OUTPUT_GRID] +# +# Parameter definitions for an output grid of type "lambert_conformal": +# +# cen_lon: Longitude of center of grid (degrees). +# cen_lat: Latitude of center of grid (degrees). +# stdlat1: Latitude of first standard parallel (degrees). +# stdlat2: Latitude of second standard parallel (degrees). +# nx: Number of grid cells along x-axis in Lambert conformal (x,y) plane. +# ny: Number of grid cells along y-axis in Lambert conformal (x,y) plane. +# lon1: Longitude of center of grid cell at bottom-left corner of grid (degrees). +# lat1: Latitude of center of grid cell at bottom-left corner of grid (degrees). +# dx: Grid cell size in x direction (meters). +# dy: Grid cell size in y direction (meters). +# +cen_lon: @[CEN_LON] +cen_lat: @[CEN_LAT] +stdlat1: @[STDLAT1] +stdlat2: @[STDLAT2] +nx: @[NX] +ny: @[NY] +lon1: @[LON1] +lat1: @[LAT1] +dx: @[DX] +dy: @[DY] + diff --git a/tests/parm/namelist.fire.IN b/tests/parm/namelist.fire.IN new file mode 100644 index 0000000000..aa9a71ceaa --- /dev/null +++ b/tests/parm/namelist.fire.IN @@ -0,0 +1,40 @@ +&atm + interval_atm = @[DT_ATMOS] + kde = @[NPZP] +/ + +&fire + fire_atm_feedback = @[fire_atm_feedback] + fire_ignition_end_lat1 = @[fire_ignition_end_lat1] + fire_ignition_end_lon1 = @[fire_ignition_end_lon1] + fire_ignition_end_time1 = @[fire_ignition_end_time1] + fire_ignition_radius1 = @[fire_ignition_radius1] + fire_ignition_ros1 = @[fire_ignition_ros1] + fire_ignition_start_lat1 = @[fire_ignition_start_lat1] + fire_ignition_start_lon1 = @[fire_ignition_start_lon1] + fire_ignition_start_time1 = @[fire_ignition_start_time1] + fire_lsm_zcoupling = @[fire_lsm_zcoupling] + fire_lsm_zcoupling_ref = @[fire_lsm_zcoupling_ref] + fire_num_ignitions = @[fire_num_ignitions] + fire_print_msg = @[fire_print_msg] + fire_upwinding = @[fire_upwinding] + fire_viscosity = @[fire_viscosity] + fire_wind_height = @[fire_wind_height] +/ + +&time + dt = @[DT_FIRE] + end_day = @[EDAY] + end_hour = @[EHOUR] + end_minute = 0 + end_month = @[EMONTH] + end_second = 0 + end_year = @[EYEAR] + interval_output = @[OUTPUT_FS] + start_day = @[SDAY] + start_hour = @[SHOUR] + start_minute = 0 + start_month = @[SMONTH] + start_second = 0 + start_year = @[SYEAR] +/ diff --git a/tests/parm/ufs.configure.cpld_atm_fbh.IN b/tests/parm/ufs.configure.cpld_atm_fbh.IN new file mode 100644 index 0000000000..6b586d6585 --- /dev/null +++ b/tests/parm/ufs.configure.cpld_atm_fbh.IN @@ -0,0 +1,41 @@ +############################################## +##### UFS Run-Time Configuration File ###### +############################################## + +# ESMF # +logKindFlag: ESMF_LOGKIND_MULTI +globalResourceControl: true + +# EARTH # +EARTH_component_list: ATM FBH +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 = 1 + Diagnostic = 0 +:: + +# FBH # +FBH_model: @[fbh_model] +FBH_petlist_bounds: @[fbh_petlist_bounds] +FBH_omp_num_threads: @[fbh_omp_num_threads] +FBH_attributes:: + Verbosity = 1 + Diagnostic = 0 +:: + +# Run Sequence # +runSeq:: +@@[coupling_interval_sec] + ATM -> FBH + FBH -> ATM :remapmethod=conserve + ATM + FBH +@ +:: diff --git a/tests/rt.conf b/tests/rt.conf index 6e731bfec2..c35b129b57 100644 --- a/tests/rt.conf +++ b/tests/rt.conf @@ -434,3 +434,7 @@ RUN | cpld_debug_pdlib_p8 | + hera hercules ### CDEPS Data Atmosphere test ### COMPILE | datm_cdeps | gnu | -DAPP=NG-GODAS | + hera hercules | fv3 | RUN | datm_cdeps_control_cfsr | + hera hercules | baseline | + +### ATM-FBH test ### +COMPILE | atm_fbh | intel | -DAPP=ATMF -DCCPP_SUITES=FV3_HRRR -D32BIT=ON | - wcoss2 noaacloud acorn | fv3 | +RUN | cpld_regional_atm_fbh | - wcoss2 noaacloud acorn | baseline | diff --git a/tests/rt_utils.sh b/tests/rt_utils.sh index 403ecc4506..e344a6303d 100755 --- a/tests/rt_utils.sh +++ b/tests/rt_utils.sh @@ -32,7 +32,7 @@ function compute_petbounds_and_tasks() { fi local n=0 - unset atm_petlist_bounds ocn_petlist_bounds ice_petlist_bounds wav_petlist_bounds chm_petlist_bounds med_petlist_bounds aqm_petlist_bounds + unset atm_petlist_bounds ocn_petlist_bounds ice_petlist_bounds wav_petlist_bounds chm_petlist_bounds med_petlist_bounds aqm_petlist_bounds fbh_petlist_bounds # ATM ATM_io_tasks=${ATM_io_tasks:-0} @@ -78,6 +78,13 @@ function compute_petbounds_and_tasks() { n=$((n + LND_tasks)) fi + # FBH + if [[ ${FBH_tasks:-0} -gt 0 ]]; then + FBH_tasks=$((FBH_tasks * fbh_omp_num_threads)) + fbh_petlist_bounds="${n} $((n + FBH_tasks - 1))" + n=$((n + FBH_tasks)) + fi + UFS_tasks=${n} if [[ ${RTVERBOSE} == true ]]; then @@ -89,6 +96,7 @@ function compute_petbounds_and_tasks() { echo "MED_petlist_bounds: ${med_petlist_bounds:-}" echo "AQM_petlist_bounds: ${aqm_petlist_bounds:-}" echo "LND_petlist_bounds: ${lnd_petlist_bounds:-}" + echo "FBH_petlist_bounds: ${fbh_petlist_bounds:-}" echo "UFS_tasks : ${UFS_tasks:-}" fi diff --git a/tests/run_test.sh b/tests/run_test.sh index e2dcb31196..179ab4b871 100755 --- a/tests/run_test.sh +++ b/tests/run_test.sh @@ -325,6 +325,10 @@ if [[ ${CDEPS_INLINE} = 'true' ]]; then atparse < "${PATHRT}/parm/${CDEPS_INLINE_CONFIGURE:-stream.config.IN}" > stream.config fi +if [[ $FIRE_BEHAVIOR = 'true' ]]; then + atparse < ${PATHRT}/parm/${FIRE_NML:-namelist.fire.IN} > namelist.fire +fi + TPN=$(( TPN / THRD )) if (( TASKS < TPN )); then TPN=${TASKS} diff --git a/tests/test_changes.list b/tests/test_changes.list index 5a47c8d8b2..3af1fe2411 100644 --- a/tests/test_changes.list +++ b/tests/test_changes.list @@ -1,2 +1,3 @@ control_wam intel control_wam_debug intel +cpld_regional_atm_fbh intel diff --git a/tests/tests/cpld_regional_atm_fbh b/tests/tests/cpld_regional_atm_fbh new file mode 100644 index 0000000000..8e995d5a43 --- /dev/null +++ b/tests/tests/cpld_regional_atm_fbh @@ -0,0 +1,136 @@ +############################################################################### +# +# FV3 regional control (hi-res 3km, small domain) test +# +############################################################################### + +export TEST_DESCR="Compare FV3 regional with FIRE BEHAVIOR control results with previous trunk version" + +export CNTL_DIR=cpld_regional_atm_fbh + +export LIST_FILES="dynf000.nc \ + dynf003.nc \ + phyf000.nc \ + phyf003.nc \ + fire_output_2020-08-13_18:00:00.nc \ + fire_output_2020-08-13_21:00:00.nc" + +# default configuration +export_fv3 +export_fire_behavior + +# models +export atm_model=fv3 +export fbh_model=fire_behavior + +# simulation window +export SYEAR=2020 +export SMONTH=8 +export SDAY=13 +export SHOUR=18 +export EYEAR=2020 +export EMONTH=8 +export EDAY=13 +export EHOUR=21 + +# time steps +export coupling_interval_sec=36 +export DT_ATMOS=36 +export DT_FIRE=0.5 + +# model configuration +export FHMAX=3 +export RESTART_INTERVAL=0 +export QUILTING=.true. +export WRITE_GROUP=1 +export WRTTASK_PER_GROUP=5 +export NUM_FILES=2 +export FILENAME_BASE="'dyn' 'phy'" +export OUTPUT_FILE="'netcdf' 'netcdf'" +export WRITE_DOPOST=.false. +export IDEFLATE=0 +export OUTPUT_GRID="'lambert_conformal'" +export CEN_LON=-105.6041 +export CEN_LAT=39.01736 +export LON1=-109.0989 +export LAT1=36.2794 +export STDLAT1=39.01736 +export STDLAT2=39.01736 +export NX=207 +export NY=197 +export DX=3000.0 +export DY=3000.0 + +# atmosphere configuration (fv3atm) +export BLOCKSIZE=40 +export CCPP_SUITE='FV3_HRRR' +export INPES='5' +export JNPES='5' +export NPX=211 +export NPY=201 +export NPZ=64 +export NTILES=1 +export K_SPLIT=2 +export N_SPLIT=5 +export NWAT=6 +export NA_INIT=1 +export DNATS=0 +export EXTERNAL_IC=.true. +export NGGPS_IC=.true. +export MOUNTAIN=.false. +export DO_SAT_ADJ=.false. +export WARM_START=.false. +export TARGET_LAT=39.01737 +export TARGET_LON=-105.6041 +export STRETCH_FAC=0.999 +export REGIONAL=.true. +export BC_UPDATE_INTERVAL=3 +export NROWS_BLEND=10 +export FULL_ZS_FILTER=.false. +export N_ZS_FILTER=0 +export NPZP=65 +export FHCYC=0.0 +export IMP_PHYSICS=8 +export FHSWR=1200.0 +export FHLWR=1200.0 +export CPLFLX=.false. +export CPL_IMP_MRG=.false. +export CPL_IMP_DBG=.false. +export CPLFIRE=.true. + +# fire configuration (fire_behavior) +export FIRE_NAME=cameron_peak_fire +export fire_atm_feedback=1.0 +export fire_ignition_end_lat1=40.609 +export fire_ignition_end_lon1=-105.879 +export fire_ignition_end_time1=7000 +export fire_ignition_radius1=250 +export fire_ignition_ros1=0.05 +export fire_ignition_start_lat1=40.609 +export fire_ignition_start_lon1=-105.879 +export fire_ignition_start_time1=6480 +export fire_lsm_zcoupling=.false. +export fire_lsm_zcoupling_ref=60.0 +export fire_num_ignitions=1 +export fire_print_msg=0 +export fire_upwinding=9 +export fire_viscosity=0.4 +export fire_wind_height=5.0 + +# output configuration +export OUTPUT_FH='1 -1' +export OUTPUT_FS=3600 + +# tasks +export ATM_compute_tasks=$(( INPES*JNPES*NTILES )) +export FBH_tasks=1 + +# configuration files +export INPUT_NML=input_regional_fire.nml.IN +export MODEL_CONFIGURE=model_configure_fire.IN +export UFS_CONFIGURE=ufs.configure.cpld_atm_fbh.IN +export FV3_RUN="regional_fire_run.IN" +export DIAG_TABLE=diag_table_fire +export FIELD_TABLE=field_table_fire +export FIRE_NML=namelist.fire.IN +