From 20a1a629daf8191a0c14dce9bc7ee5bc26188c96 Mon Sep 17 00:00:00 2001 From: masih Date: Tue, 28 Mar 2023 11:56:32 -0600 Subject: [PATCH 01/14] add fire behavior component --- .gitmodules | 4 ++++ fire_behavior | 1 + 2 files changed, 5 insertions(+) create mode 160000 fire_behavior diff --git a/.gitmodules b/.gitmodules index a3775fc12d..b4a4c635e4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -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/fire_behavior b/fire_behavior new file mode 160000 index 0000000000..50457c2d5a --- /dev/null +++ b/fire_behavior @@ -0,0 +1 @@ +Subproject commit 50457c2d5ace0ae101c2339b8fcca76a73a27f5f From e83fb09beaf8ac8c462512fa9ca4a9688436b179 Mon Sep 17 00:00:00 2001 From: Dan Rosen Date: Thu, 6 Apr 2023 16:02:35 -0600 Subject: [PATCH 02/14] Add fire_behavior component and ATMF app --- CMakeLists.txt | 19 +++++++++++++++++-- cmake/configure_apps.cmake | 4 +++- driver/UFSDriver.F90 | 14 +++++++++++++- fire_behavior | 2 +- 4 files changed, 34 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ea8664a18a..bfc0b771b9 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 ATML LND S2S S2SA S2SW S2SWA S2SWAL HAFS HAFSW HAFS-ALL NG-GODAS) +list(APPEND VALID_APPS ATM ATMAERO ATMAQ ATMW ATML ATMF LND S2S S2SA S2SW S2SWA S2SWAL HAFS HAFSW 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 @@ -150,7 +152,7 @@ if(FMS) elseif (APP MATCHES "^(S2S|S2SA|S2SW|S2SWA|S2SWAL|NG-GODAS)$") add_library(fms ALIAS FMS::fms_r8) endif() - if(APP MATCHES "^(ATM|ATMAERO|ATMAQ|ATMW|ATML|LND|HAFS|HAFS-ALL)$") + if(APP MATCHES "^(ATM|ATMAERO|ATMAQ|ATMW|ATML|ATMF|LND|HAFS|HAFS-ALL)$") if(32BIT) add_library(fms ALIAS FMS::fms_r4) else() @@ -251,6 +253,13 @@ if(NOAHMP) add_subdirectory(NOAHMP-interface) endif() +############################################################################### +### Fire Components [FIRE_BEHAVIOR] +############################################################################### +if(FIRE_BEHAVIOR) + add_subdirectory(fire_behavior) +endif() + ############################################################################### ### UFS Library ############################################################################### @@ -329,6 +338,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/cmake/configure_apps.cmake b/cmake/configure_apps.cmake index d02ea508e5..f4972b6ed0 100644 --- a/cmake/configure_apps.cmake +++ b/cmake/configure_apps.cmake @@ -13,7 +13,7 @@ ############################################################################### ### Configure Application Components ############################################################################### -if(APP MATCHES "^(ATM|ATMW|ATMAQ|ATML)$") +if(APP MATCHES "^(ATM|ATMW|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) @@ -27,6 +27,8 @@ if(APP MATCHES "^(ATM|ATMW|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 e94b792f4f..9353ffa394 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.) ! | | @@ -78,6 +78,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 @@ -451,6 +455,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 index 50457c2d5a..0b0124c118 160000 --- a/fire_behavior +++ b/fire_behavior @@ -1 +1 @@ -Subproject commit 50457c2d5ace0ae101c2339b8fcca76a73a27f5f +Subproject commit 0b0124c118b02953816e3c86e2e791f2117d561c From 3adf53d1e4b3948f3f625e01d368bae7e962a3e4 Mon Sep 17 00:00:00 2001 From: Dan Rosen Date: Mon, 10 Apr 2023 09:28:58 -0600 Subject: [PATCH 03/14] Update fire behavior component with build fix --- fire_behavior | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fire_behavior b/fire_behavior index 0b0124c118..79152b28ec 160000 --- a/fire_behavior +++ b/fire_behavior @@ -1 +1 @@ -Subproject commit 0b0124c118b02953816e3c86e2e791f2117d561c +Subproject commit 79152b28ec90c1cb809f75ae073711fec3ad1c49 From 42a7fc2cd7d70a98ee70e7141dbd73968d180fcd Mon Sep 17 00:00:00 2001 From: Dan Rosen Date: Thu, 13 Apr 2023 15:25:03 -0600 Subject: [PATCH 04/14] Update UFSATM to fire behavior coupled fields --- .gitmodules | 2 +- FV3 | 2 +- fire_behavior | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index b4a4c635e4..11f7ae829a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,6 @@ [submodule "FV3"] path = FV3 - url = https://github.com/NOAA-EMC/fv3atm + url = https://github.com/esmf-org/fv3atm branch = develop [submodule "WW3"] path = WW3 diff --git a/FV3 b/FV3 index bcd12a46ff..34923f0e71 160000 --- a/FV3 +++ b/FV3 @@ -1 +1 @@ -Subproject commit bcd12a46ff6c581e5e966d1885dc5a28fdc7819d +Subproject commit 34923f0e71c55562254067936a1856349805e717 diff --git a/fire_behavior b/fire_behavior index 79152b28ec..4e9b4e64d2 160000 --- a/fire_behavior +++ b/fire_behavior @@ -1 +1 @@ -Subproject commit 79152b28ec90c1cb809f75ae073711fec3ad1c49 +Subproject commit 4e9b4e64d2868cf1d411d2e41ab42d4a843f50a3 From 21e104cc0c70b4da88bf686ce9c84e82ace230e2 Mon Sep 17 00:00:00 2001 From: Dan Rosen Date: Thu, 20 Apr 2023 16:13:01 -0600 Subject: [PATCH 05/14] Update fire behavior component for zorl --- fire_behavior | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fire_behavior b/fire_behavior index 4e9b4e64d2..10703a726f 160000 --- a/fire_behavior +++ b/fire_behavior @@ -1 +1 @@ -Subproject commit 4e9b4e64d2868cf1d411d2e41ab42d4a843f50a3 +Subproject commit 10703a726f4d10f29e35aa5b8dcb4ece6ae5d55d From 4c3673faee37607771501f5d3961cb32965d58ca Mon Sep 17 00:00:00 2001 From: Dan Rosen Date: Thu, 18 May 2023 16:49:16 -0600 Subject: [PATCH 06/14] Update fire behavior component for compiler flags --- fire_behavior | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fire_behavior b/fire_behavior index 10703a726f..f70ffcc48e 160000 --- a/fire_behavior +++ b/fire_behavior @@ -1 +1 @@ -Subproject commit 10703a726f4d10f29e35aa5b8dcb4ece6ae5d55d +Subproject commit f70ffcc48e85ae920769a63855fc3bd0e9044a99 From ef3cf1154171f5bb654e0c7598581d732cdc3c9c Mon Sep 17 00:00:00 2001 From: masih Date: Tue, 19 Sep 2023 09:51:20 -0600 Subject: [PATCH 07/14] use recent fire behavior version --- CMakeLists.txt | 1 + fire_behavior | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bfc0b771b9..5adfaf1a15 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -257,6 +257,7 @@ 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() diff --git a/fire_behavior b/fire_behavior index f70ffcc48e..3c7e21fc40 160000 --- a/fire_behavior +++ b/fire_behavior @@ -1 +1 @@ -Subproject commit f70ffcc48e85ae920769a63855fc3bd0e9044a99 +Subproject commit 3c7e21fc402c0eeb1649a642a12b76ba8cdb58b2 From 1c5d19f2c24af64be3f18f9336dfac39bd56a1aa Mon Sep 17 00:00:00 2001 From: Dan Rosen Date: Fri, 22 Sep 2023 16:27:22 -0600 Subject: [PATCH 08/14] Update components FV3 and fire_behavior --- FV3 | 2 +- fire_behavior | 2 +- tests/parm/fd_nems.yaml | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/FV3 b/FV3 index 34923f0e71..8fea4784f7 160000 --- a/FV3 +++ b/FV3 @@ -1 +1 @@ -Subproject commit 34923f0e71c55562254067936a1856349805e717 +Subproject commit 8fea4784f7d98967340ac1a2c626fac73eeccf88 diff --git a/fire_behavior b/fire_behavior index 3c7e21fc40..f0ec6eb02a 160000 --- a/fire_behavior +++ b/fire_behavior @@ -1 +1 @@ -Subproject commit 3c7e21fc402c0eeb1649a642a12b76ba8cdb58b2 +Subproject commit f0ec6eb02ad32c7436f390bdb9529574c77244ee diff --git a/tests/parm/fd_nems.yaml b/tests/parm/fd_nems.yaml index d5d70f28f1..9acde17540 100644 --- a/tests/parm/fd_nems.yaml +++ b/tests/parm/fd_nems.yaml @@ -812,6 +812,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 From 2685aa2239af62734d39bdd88bfd1f598ba3d56c Mon Sep 17 00:00:00 2001 From: Dan Rosen Date: Wed, 4 Oct 2023 11:16:14 -0600 Subject: [PATCH 09/14] Roll back fire_behavior for one-way coupling --- fire_behavior | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fire_behavior b/fire_behavior index f0ec6eb02a..3c7e21fc40 160000 --- a/fire_behavior +++ b/fire_behavior @@ -1 +1 @@ -Subproject commit f0ec6eb02ad32c7436f390bdb9529574c77244ee +Subproject commit 3c7e21fc402c0eeb1649a642a12b76ba8cdb58b2 From a9ec7a37ad5eaf27d04457735cb8007ff38970af Mon Sep 17 00:00:00 2001 From: masih Date: Wed, 18 Oct 2023 15:33:40 -0600 Subject: [PATCH 10/14] Update components FV3 and fire_behavior --- FV3 | 2 +- fire_behavior | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/FV3 b/FV3 index c6475fece7..9b9133806e 160000 --- a/FV3 +++ b/FV3 @@ -1 +1 @@ -Subproject commit c6475fece749e0d16a4a564e28c4015e9deafabf +Subproject commit 9b9133806e619a4814a492a3f964ea1b8cba249c diff --git a/fire_behavior b/fire_behavior index 3c7e21fc40..1057f5feee 160000 --- a/fire_behavior +++ b/fire_behavior @@ -1 +1 @@ -Subproject commit 3c7e21fc402c0eeb1649a642a12b76ba8cdb58b2 +Subproject commit 1057f5feee3528a773ab485f9267c95bc9e26a5d From 9af518e95252e27462711643e6737e9c9d74723e Mon Sep 17 00:00:00 2001 From: masih Date: Fri, 20 Oct 2023 11:15:53 -0600 Subject: [PATCH 11/14] add fire exports to field dictionary --- tests/parm/fd_nems.yaml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/parm/fd_nems.yaml b/tests/parm/fd_nems.yaml index b7a1b8f1b2..654d2baf06 100644 --- a/tests/parm/fd_nems.yaml +++ b/tests/parm/fd_nems.yaml @@ -1160,3 +1160,16 @@ alias: mean_sensi_heat_flx_lnd_to_atm canonical_units: W m-2 description: land export to atm - atm/lnd sensible heat flux + # + #----------------------------------- + # 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 + From 75d28a14cd2fdb02b227a69159b05ce873b0e129 Mon Sep 17 00:00:00 2001 From: masih Date: Tue, 2 Jan 2024 15:39:36 -0700 Subject: [PATCH 12/14] fire_behavior smoke coupling * added smoke_fire to fd_nems * added smoke connectors to FV3 and fire_behavior --- FV3 | 2 +- fire_behavior | 2 +- tests/parm/fd_nems.yaml | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/FV3 b/FV3 index 9b9133806e..0105f66bf5 160000 --- a/FV3 +++ b/FV3 @@ -1 +1 @@ -Subproject commit 9b9133806e619a4814a492a3f964ea1b8cba249c +Subproject commit 0105f66bf57c5601c651b701c0f0451d30d8e406 diff --git a/fire_behavior b/fire_behavior index 1057f5feee..5463669191 160000 --- a/fire_behavior +++ b/fire_behavior @@ -1 +1 @@ -Subproject commit 1057f5feee3528a773ab485f9267c95bc9e26a5d +Subproject commit 546366919157905661e4ecf11395f6efa3fd1fe6 diff --git a/tests/parm/fd_nems.yaml b/tests/parm/fd_nems.yaml index 654d2baf06..00caf65cd1 100644 --- a/tests/parm/fd_nems.yaml +++ b/tests/parm/fd_nems.yaml @@ -1172,4 +1172,7 @@ - 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 From beef32622f83a56e49da6763987e51672b0deed9 Mon Sep 17 00:00:00 2001 From: Daniel Rosen Date: Thu, 28 Mar 2024 10:22:28 -0600 Subject: [PATCH 13/14] Add ATM FBH coupling test to rt.conf * new test cpld_regional_atm_fbh * new ufs.configure template cpld_atm_fbh * new namelist.fire template (fire_behavior config) * new model_configure template for fire * new input.nml for regional fire * new diag_table, field_table, data_table for fire * new input configure script for regional_fire_run --- tests/default_vars.sh | 21 ++ tests/fv3_conf/regional_fire_run.IN | 12 + tests/parm/diag_table/diag_table_fire | 377 +++++++++++++++++++++++ tests/parm/field_table/field_table_fire | 70 +++++ tests/parm/input_regional_fire.nml.IN | 300 ++++++++++++++++++ tests/parm/model_configure_fire.IN | 71 +++++ tests/parm/namelist.fire.IN | 40 +++ tests/parm/ufs.configure.cpld_atm_fbh.IN | 41 +++ tests/rt.conf | 4 + tests/rt_utils.sh | 10 +- tests/run_test.sh | 4 + tests/tests/cpld_regional_atm_fbh | 136 ++++++++ 12 files changed, 1085 insertions(+), 1 deletion(-) create mode 100644 tests/fv3_conf/regional_fire_run.IN create mode 100644 tests/parm/diag_table/diag_table_fire create mode 100644 tests/parm/field_table/field_table_fire create mode 100644 tests/parm/input_regional_fire.nml.IN create mode 100644 tests/parm/model_configure_fire.IN create mode 100644 tests/parm/namelist.fire.IN create mode 100644 tests/parm/ufs.configure.cpld_atm_fbh.IN create mode 100644 tests/tests/cpld_regional_atm_fbh diff --git a/tests/default_vars.sh b/tests/default_vars.sh index 01b67e2731..1b135a0a77 100755 --- a/tests/default_vars.sh +++ b/tests/default_vars.sh @@ -26,6 +26,7 @@ OCN_tasks_cpl_dflt=20 ICE_tasks_cpl_dflt=10 WAV_tasks_cpl_dflt=20 + FBH_tasks_cpl_dflt=1 THRD_cpl_thrd=2 INPES_cpl_thrd=3; JNPES_cpl_thrd=4; WPG_cpl_thrd=6 @@ -93,6 +94,7 @@ med_omp_num_threads=1 ocn_omp_num_threads=1 wav_omp_num_threads=1 + fbh_omp_num_threads=1 if [[ $MACHINE_ID = wcoss2 || $MACHINE_ID = acorn ]]; then @@ -731,6 +733,24 @@ export WW3_IC5='F' 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 @@ -813,6 +833,7 @@ export THRD=$THRD_cpl_dflt OCN_tasks=$OCN_tasks_cpl_dflt ICE_tasks=$ICE_tasks_cpl_dflt WAV_tasks=$WAV_tasks_cpl_dflt +FBH_tasks=$FBH_tasks_cpl_dflt # Set CICE6 component defaults export_cice6 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/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 854c935c7a..c185e9399c 100644 --- a/tests/rt.conf +++ b/tests/rt.conf @@ -422,3 +422,7 @@ RUN | cpld_debug_pdlib_p8 | + hera ### CDEPS Data Atmosphere test ### COMPILE | datm_cdeps | gnu | -DAPP=NG-GODAS | + hera hercules | fv3 | RUN | datm_cdeps_control_cfsr | + hera | 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 238f8ed695..33ca742f9c 100755 --- a/tests/rt_utils.sh +++ b/tests/rt_utils.sh @@ -31,7 +31,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} @@ -77,6 +77,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} echo "ATM_petlist_bounds: ${atm_petlist_bounds:-}" @@ -87,6 +94,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:-}" # TASKS is now set to UFS_TASKS diff --git a/tests/run_test.sh b/tests/run_test.sh index d4ea64068c..b94f46427a 100755 --- a/tests/run_test.sh +++ b/tests/run_test.sh @@ -296,6 +296,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/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 + From 3cb35b5ff2ee4d0a59d28aeacad22e3ec9bf66e2 Mon Sep 17 00:00:00 2001 From: masih Date: Mon, 20 May 2024 10:29:48 -0600 Subject: [PATCH 14/14] fixes to exports to fire behavior and rt test * fixed coupling flags to write fire exports * export: 2-m temp and q, surface pressure and rain * minor fixes in RT for fire Co-authored-by: Dan Rosen --- FV3 | 2 +- fire_behavior | 2 +- tests/default_vars.sh | 7 +++++++ tests/test_changes.list | 1 + 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/FV3 b/FV3 index cff40a1a13..82903d1209 160000 --- a/FV3 +++ b/FV3 @@ -1 +1 @@ -Subproject commit cff40a1a137881c5633e2dae1a4c1cd6a1620d58 +Subproject commit 82903d12098531d8b8ff74b7d65d1b5dcf239bf2 diff --git a/fire_behavior b/fire_behavior index 8b2cae955c..05cad173fe 160000 --- a/fire_behavior +++ b/fire_behavior @@ -1 +1 @@ -Subproject commit 8b2cae955c07a6cbcf7c40b83a93ea2401c9d926 +Subproject commit 05cad173feeb598431e3ef5f17c2df6562c8d101 diff --git a/tests/default_vars.sh b/tests/default_vars.sh index 1b135a0a77..a7ca7234dd 100755 --- a/tests/default_vars.sh +++ b/tests/default_vars.sh @@ -324,6 +324,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 CDEPS_INLINE=false @@ -794,6 +795,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 CDEPS_INLINE=false @@ -993,6 +995,7 @@ export FV3=false 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 @@ -1069,6 +1072,7 @@ export FV3=false 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 @@ -1087,6 +1091,7 @@ export FV3=true 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 @@ -1105,6 +1110,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 @@ -1177,6 +1183,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/test_changes.list b/tests/test_changes.list index e69de29bb2..509fd8a203 100644 --- a/tests/test_changes.list +++ b/tests/test_changes.list @@ -0,0 +1 @@ +cpld_regional_atm_fbh intel