diff --git a/components/eamxx/cime_config/namelist_defaults_scream.xml b/components/eamxx/cime_config/namelist_defaults_scream.xml index f09d10b0b32..ef11b40431a 100644 --- a/components/eamxx/cime_config/namelist_defaults_scream.xml +++ b/components/eamxx/cime_config/namelist_defaults_scream.xml @@ -232,6 +232,7 @@ be lost if SCREAM_HACK_XML is not enabled. 7.0 0.1 0.1 + false diff --git a/components/eamxx/src/physics/shoc/eamxx_shoc_process_interface.cpp b/components/eamxx/src/physics/shoc/eamxx_shoc_process_interface.cpp index 657f9487611..9a99d0f1599 100644 --- a/components/eamxx/src/physics/shoc/eamxx_shoc_process_interface.cpp +++ b/components/eamxx/src/physics/shoc/eamxx_shoc_process_interface.cpp @@ -91,6 +91,25 @@ void SHOCMacrophysics::set_grids(const std::shared_ptr grids add_field("ustar", scalar2d, m/s, grid_name, ps); add_field("obklen", scalar2d, m, grid_name, ps); + // Extra SHOC output diagnostics + if (m_params.get("extra_shoc_diags", false)) { + + // Diagnostic output - mid point grid + add_field("brunt", scalar3d_mid, pow(s,-1), grid_name, ps); + add_field("shoc_mix", scalar3d_mid, m, grid_name, ps); + add_field("isotropy", scalar3d_mid, s, grid_name, ps); + + // Diagnostic output - interface grid + add_field("wthl_sec", scalar3d_int, K*(m/s), grid_name, ps); + add_field("thl_sec", scalar3d_int, pow(K,2), grid_name, ps); + add_field("wqw_sec", scalar3d_int, (kg/kg)*(m/s), grid_name, ps); + add_field("qw_sec", scalar3d_int, pow(kg/kg,2), grid_name, ps); + add_field("uw_sec", scalar3d_int, pow(m/s,2), grid_name, ps); + add_field("vw_sec", scalar3d_int, pow(m/s,2), grid_name, ps); + add_field("w3", scalar3d_int, pow(m/s,3), grid_name, ps); + + } // Extra SHOC output diagnostics + // Tracer group add_group("tracers", grid_name, ps, Bundling::Required); @@ -495,6 +514,41 @@ void SHOCMacrophysics::run_impl (const double dt) default_policy, shoc_postprocess); Kokkos::fence(); + + // Extra SHOC output diagnostics + if (m_params.get("extra_shoc_diags", false)) { + + const auto& shoc_mix = get_field_out("shoc_mix").get_view(); + Kokkos::deep_copy(shoc_mix,history_output.shoc_mix); + + const auto& brunt = get_field_out("brunt").get_view(); + Kokkos::deep_copy(brunt,history_output.brunt); + + const auto& w3 = get_field_out("w3").get_view(); + Kokkos::deep_copy(w3,history_output.w3); + + const auto& isotropy = get_field_out("isotropy").get_view(); + Kokkos::deep_copy(isotropy,history_output.isotropy); + + const auto& wthl_sec = get_field_out("wthl_sec").get_view(); + Kokkos::deep_copy(wthl_sec,history_output.wthl_sec); + + const auto& wqw_sec = get_field_out("wqw_sec").get_view(); + Kokkos::deep_copy(wqw_sec,history_output.wqw_sec); + + const auto& uw_sec = get_field_out("uw_sec").get_view(); + Kokkos::deep_copy(uw_sec,history_output.uw_sec); + + const auto& vw_sec = get_field_out("vw_sec").get_view(); + Kokkos::deep_copy(vw_sec,history_output.vw_sec); + + const auto& qw_sec = get_field_out("qw_sec").get_view(); + Kokkos::deep_copy(qw_sec,history_output.qw_sec); + + const auto& thl_sec = get_field_out("thl_sec").get_view(); + Kokkos::deep_copy(thl_sec,history_output.thl_sec); + + } // Extra SHOC output diagnostics } // ========================================================================================= void SHOCMacrophysics::finalize_impl()