Skip to content

Commit

Permalink
EAMxx: fix usage of ekat's Units
Browse files Browse the repository at this point in the history
  • Loading branch information
bartgol committed May 16, 2024
1 parent 2f58938 commit 1f470ad
Show file tree
Hide file tree
Showing 35 changed files with 189 additions and 272 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,8 @@ void SurfaceCouplingExporter::set_grids(const std::shared_ptr<const GridsManager
m_num_cols = m_grid->get_num_local_dofs(); // Number of columns on this rank
m_num_levs = m_grid->get_num_vertical_levels(); // Number of levels per column

const auto m2 = m*m;
const auto s2 = s*s;
auto Wm2 = W/m2;
Wm2.set_string("W/m2");

// The units of mixing ratio Q are technically non-dimensional.
// Nevertheless, for output reasons, we like to see 'kg/kg'.
auto Qunit = kg/kg;
Qunit.set_string("kg/kg");
Units m2 (m*m,"m2");
Units s2 (s*s,"s2");

// Define the different field layouts that will be used for this process
using namespace ShortFieldTagsNames;
Expand All @@ -50,16 +43,16 @@ void SurfaceCouplingExporter::set_grids(const std::shared_ptr<const GridsManager
add_field<Required>("pseudo_density", scalar3d_layout_mid, Pa, grid_name, ps);
add_field<Required>("phis", scalar2d_layout, m2/s2, grid_name);
add_field<Required>("p_mid", scalar3d_layout_mid, Pa, grid_name, ps);
add_field<Required>("qv", scalar3d_layout_mid, Qunit, grid_name, "tracers", ps);
add_field<Required>("qv", scalar3d_layout_mid, kg/kg, grid_name, "tracers", ps);
add_field<Required>("T_mid", scalar3d_layout_mid, K, grid_name, ps);
// TODO: Switch horiz_winds to using U and V, note right now there is an issue with when the subfields are created, so can't switch yet.
add_field<Required>("horiz_winds", vector3d_layout, m/s, grid_name);
add_field<Required>("sfc_flux_dir_nir", scalar2d_layout, Wm2, grid_name);
add_field<Required>("sfc_flux_dir_vis", scalar2d_layout, Wm2, grid_name);
add_field<Required>("sfc_flux_dif_nir", scalar2d_layout, Wm2, grid_name);
add_field<Required>("sfc_flux_dif_vis", scalar2d_layout, Wm2, grid_name);
add_field<Required>("sfc_flux_sw_net" , scalar2d_layout, Wm2, grid_name);
add_field<Required>("sfc_flux_lw_dn" , scalar2d_layout, Wm2, grid_name);
add_field<Required>("sfc_flux_dir_nir", scalar2d_layout, W/m2, grid_name);
add_field<Required>("sfc_flux_dir_vis", scalar2d_layout, W/m2, grid_name);
add_field<Required>("sfc_flux_dif_nir", scalar2d_layout, W/m2, grid_name);
add_field<Required>("sfc_flux_dif_vis", scalar2d_layout, W/m2, grid_name);
add_field<Required>("sfc_flux_sw_net" , scalar2d_layout, W/m2, grid_name);
add_field<Required>("sfc_flux_lw_dn" , scalar2d_layout, W/m2, grid_name);
add_field<Required>("precip_liq_surf_mass", scalar2d_layout, kg/m2, grid_name);
add_field<Required>("precip_ice_surf_mass", scalar2d_layout, kg/m2, grid_name);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,8 @@ void SurfaceCouplingImporter::set_grids(const std::shared_ptr<const GridsManager

// The units of mixing ratio Q are technically non-dimensional.
// Nevertheless, for output reasons, we like to see 'kg/kg'.
auto Qunit = kg/kg;
Qunit.set_string("kg/kg");
auto nondim = Units::nondimensional();
auto Wm2 = W / m / m;
Wm2.set_string("W/m2)");
const auto m2 = m*m;
Units m2 (m*m,"m2");

// Define the different field layouts that will be used for this process
using namespace ShortFieldTagsNames;
Expand All @@ -51,7 +47,7 @@ void SurfaceCouplingImporter::set_grids(const std::shared_ptr<const GridsManager
add_field<Computed>("surf_mom_flux", vector2d_layout, N/m2, grid_name);
add_field<Computed>("surf_radiative_T", scalar2d_layout, K, grid_name);
add_field<Computed>("T_2m", scalar2d_layout, K, grid_name);
add_field<Computed>("qv_2m", scalar2d_layout, Qunit, grid_name);
add_field<Computed>("qv_2m", scalar2d_layout, kg/kg, grid_name);
add_field<Computed>("wind_speed_10m", scalar2d_layout, m/s, grid_name);
add_field<Computed>("snow_depth_land", scalar2d_layout, m, grid_name);
add_field<Computed>("ocnfrac", scalar2d_layout, nondim, grid_name);
Expand Down
11 changes: 4 additions & 7 deletions components/eamxx/src/diagnostics/atm_density.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,6 @@ void AtmDensityDiagnostic::set_grids(const std::shared_ptr<const GridsManager> g
using namespace ekat::units;
using namespace ShortFieldTagsNames;

auto Q = kg/kg;
Q.set_string("kg/kg");

// Boiler Plate
auto grid = grids_manager->get_grid("Physics");
const auto& grid_name = grid->name();
Expand All @@ -29,10 +26,10 @@ void AtmDensityDiagnostic::set_grids(const std::shared_ptr<const GridsManager> g
FieldLayout scalar3d_layout_mid { {COL,LEV}, {m_num_cols,m_num_levs} };

// The fields required for this diagnostic to be computed
add_field<Required>("T_mid", scalar3d_layout_mid, K, grid_name, SCREAM_PACK_SIZE);
add_field<Required>("pseudo_density", scalar3d_layout_mid, Pa, grid_name, SCREAM_PACK_SIZE);
add_field<Required>("p_mid", scalar3d_layout_mid, Pa, grid_name, SCREAM_PACK_SIZE);
add_field<Required>("qv", scalar3d_layout_mid, Q, grid_name, SCREAM_PACK_SIZE);
add_field<Required>("T_mid", scalar3d_layout_mid, K, grid_name, SCREAM_PACK_SIZE);
add_field<Required>("pseudo_density", scalar3d_layout_mid, Pa, grid_name, SCREAM_PACK_SIZE);
add_field<Required>("p_mid", scalar3d_layout_mid, Pa, grid_name, SCREAM_PACK_SIZE);
add_field<Required>("qv", scalar3d_layout_mid, kg/kg, grid_name, SCREAM_PACK_SIZE);

// Construct and allocate the diagnostic field
FieldIdentifier fid (name(), scalar3d_layout_mid, kg/(m*m*m), grid_name);
Expand Down
16 changes: 7 additions & 9 deletions components/eamxx/src/diagnostics/dry_static_energy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,8 @@ void DryStaticEnergyDiagnostic::set_grids(const std::shared_ptr<const GridsManag
using namespace ekat::units;
using namespace ShortFieldTagsNames;

auto Q = kg/kg;
Q.set_string("kg/kg");
const auto m2 = m*m;
const auto s2 = s*s;
auto m2 = pow(m,2);
auto s2 = pow(s,2);

auto grid = grids_manager->get_grid("Physics");
const auto& grid_name = grid->name();
Expand All @@ -35,11 +33,11 @@ void DryStaticEnergyDiagnostic::set_grids(const std::shared_ptr<const GridsManag
constexpr int ps = Pack::n;

// The fields required for this diagnostic to be computed
add_field<Required>("T_mid", scalar3d_layout_mid, K, grid_name, ps);
add_field<Required>("pseudo_density", scalar3d_layout_mid, Pa, grid_name, ps);
add_field<Required>("p_mid", scalar3d_layout_mid, Pa, grid_name, ps);
add_field<Required>("qv", scalar3d_layout_mid, Q, grid_name, ps);
add_field<Required>("phis", scalar2d_layout_col, m2/s2, grid_name, ps);
add_field<Required>("T_mid", scalar3d_layout_mid, K, grid_name, ps);
add_field<Required>("pseudo_density", scalar3d_layout_mid, Pa, grid_name, ps);
add_field<Required>("p_mid", scalar3d_layout_mid, Pa, grid_name, ps);
add_field<Required>("qv", scalar3d_layout_mid, kg/kg, grid_name, ps);
add_field<Required>("phis", scalar2d_layout_col, m2/s2, grid_name, ps);

// Construct and allocate the diagnostic field
FieldIdentifier fid (name(), scalar3d_layout_mid, m2/s2, grid_name);
Expand Down
6 changes: 2 additions & 4 deletions components/eamxx/src/diagnostics/longwave_cloud_forcing.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,7 @@ void LongwaveCloudForcingDiagnostic::set_grids(const std::shared_ptr<const Grids
using namespace ekat::units;
using namespace ShortFieldTagsNames;

const auto m2 = m*m;
auto radflux_units = W/(m2);
radflux_units.set_string("W/m2");
Units m2 (m*m,"m2");

auto grid = grids_manager->get_grid("Physics");
const auto& grid_name = grid->name();
Expand All @@ -35,7 +33,7 @@ void LongwaveCloudForcingDiagnostic::set_grids(const std::shared_ptr<const Grids
add_field<Required>("LW_clrsky_flux_up", scalar3d_layout_mid, W/m2, grid_name);

// Construct and allocate the diagnostic field
FieldIdentifier fid (name(), scalar2d_layout_col, radflux_units, grid_name);
FieldIdentifier fid (name(), scalar2d_layout_col, W/m2, grid_name);
m_diagnostic_output = Field(fid);
auto& C_ap = m_diagnostic_output.get_header().get_alloc_properties();
C_ap.request_allocation();
Expand Down
5 changes: 2 additions & 3 deletions components/eamxx/src/diagnostics/number_path.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,7 @@ void NumberPathDiagnostic::set_grids(
const std::shared_ptr<const GridsManager> grids_manager) {
using namespace ekat::units;

auto out_units = kg / (kg * m * m);
out_units.set_string("kg/(kg m2)");
auto m2 = pow(m,2);

auto grid = grids_manager->get_grid("Physics");
const auto &grid_name = grid->name();
Expand All @@ -56,7 +55,7 @@ void NumberPathDiagnostic::set_grids(
add_field<Required>(m_nname, scalar3d, 1 / kg, grid_name);

// Construct and allocate the diagnostic field
FieldIdentifier fid(name(), scalar2d, out_units, grid_name);
FieldIdentifier fid(name(), scalar2d, kg/(kg*m2), grid_name);
m_diagnostic_output = Field(fid);
m_diagnostic_output.allocate_view();
}
Expand Down
5 changes: 1 addition & 4 deletions components/eamxx/src/diagnostics/potential_temperature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,6 @@ void PotentialTemperatureDiagnostic::set_grids(const std::shared_ptr<const Grids
using namespace ekat::units;
using namespace ShortFieldTagsNames;

auto Q = kg/kg;
Q.set_string("kg/kg");

auto grid = grids_manager->get_grid("Physics");
const auto& grid_name = grid->name();
m_num_cols = grid->get_num_local_dofs(); // Number of columns on this rank
Expand All @@ -51,7 +48,7 @@ void PotentialTemperatureDiagnostic::set_grids(const std::shared_ptr<const Grids
add_field<Required>("p_mid", scalar3d_layout_mid, Pa, grid_name, ps);
// Only needed for LiqPotentialTemperature, but put it here for ease
// TODO: only request it if it is needed
add_field<Required>("qc", scalar3d_layout_mid, Q, grid_name, ps);
add_field<Required>("qc", scalar3d_layout_mid, kg/kg, grid_name, ps);

// Construct and allocate the diagnostic field
FieldIdentifier fid (name(), scalar3d_layout_mid, K, grid_name);
Expand Down
12 changes: 5 additions & 7 deletions components/eamxx/src/diagnostics/relative_humidity.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@ void RelativeHumidityDiagnostic::set_grids(const std::shared_ptr<const GridsMana
using namespace ShortFieldTagsNames;

auto nondim = Units::nondimensional();
auto Q = nondim;
Q.set_string("kg/kg");

auto grid = grids_manager->get_grid("Physics");
const auto& grid_name = grid->name();
Expand All @@ -29,11 +27,11 @@ void RelativeHumidityDiagnostic::set_grids(const std::shared_ptr<const GridsMana
FieldLayout scalar3d_layout_mid { {COL,LEV}, {m_num_cols,m_num_levs} };

// The fields required for this diagnostic to be computed
add_field<Required>("T_mid", scalar3d_layout_mid, K, grid_name, SCREAM_PACK_SIZE);
add_field<Required>("p_dry_mid", scalar3d_layout_mid, Pa, grid_name, SCREAM_PACK_SIZE);
add_field<Required>("qv", scalar3d_layout_mid, Q, grid_name, SCREAM_PACK_SIZE);
add_field<Required>("pseudo_density", scalar3d_layout_mid, Pa, grid_name, SCREAM_PACK_SIZE);
add_field<Required>("pseudo_density_dry", scalar3d_layout_mid, Pa, grid_name, SCREAM_PACK_SIZE);
add_field<Required>("T_mid", scalar3d_layout_mid, K, grid_name, SCREAM_PACK_SIZE);
add_field<Required>("p_dry_mid", scalar3d_layout_mid, Pa, grid_name, SCREAM_PACK_SIZE);
add_field<Required>("qv", scalar3d_layout_mid, kg/kg, grid_name, SCREAM_PACK_SIZE);
add_field<Required>("pseudo_density", scalar3d_layout_mid, Pa, grid_name, SCREAM_PACK_SIZE);
add_field<Required>("pseudo_density_dry", scalar3d_layout_mid, Pa, grid_name, SCREAM_PACK_SIZE);

// Construct and allocate the diagnostic field
FieldIdentifier fid (name(), scalar3d_layout_mid, nondim, grid_name);
Expand Down
6 changes: 2 additions & 4 deletions components/eamxx/src/diagnostics/sea_level_pressure.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,8 @@ void SeaLevelPressureDiagnostic::set_grids(const std::shared_ptr<const GridsMana
using namespace ekat::units;
using namespace ShortFieldTagsNames;

auto Q = kg/kg;
Q.set_string("kg/kg");
const auto m2 = m*m;
const auto s2 = s*s;
const auto m2 = pow(m,2);
const auto s2 = pow(s,2);

auto grid = grids_manager->get_grid("Physics");
const auto& grid_name = grid->name();
Expand Down
13 changes: 6 additions & 7 deletions components/eamxx/src/diagnostics/shortwave_cloud_forcing.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@ void ShortwaveCloudForcingDiagnostic::set_grids(const std::shared_ptr<const Grid
using namespace ekat::units;
using namespace ShortFieldTagsNames;

auto radflux_units = W/(m*m);
radflux_units.set_string("W/m2");
Units m2 (m*m,"m2");

auto grid = grids_manager->get_grid("Physics");
const auto& grid_name = grid->name();
Expand All @@ -29,13 +28,13 @@ void ShortwaveCloudForcingDiagnostic::set_grids(const std::shared_ptr<const Grid
FieldLayout scalar3d_layout_mid { {COL,LEV}, {m_num_cols,m_num_levs} };

// The fields required for this diagnostic to be computed
add_field<Required>("SW_flux_dn", scalar3d_layout_mid, radflux_units, grid_name);
add_field<Required>("SW_flux_up", scalar3d_layout_mid, radflux_units, grid_name);
add_field<Required>("SW_clrsky_flux_dn", scalar3d_layout_mid, radflux_units, grid_name);
add_field<Required>("SW_clrsky_flux_up", scalar3d_layout_mid, radflux_units, grid_name);
add_field<Required>("SW_flux_dn", scalar3d_layout_mid, W/m2, grid_name);
add_field<Required>("SW_flux_up", scalar3d_layout_mid, W/m2, grid_name);
add_field<Required>("SW_clrsky_flux_dn", scalar3d_layout_mid, W/m2, grid_name);
add_field<Required>("SW_clrsky_flux_up", scalar3d_layout_mid, W/m2, grid_name);

// Construct and allocate the diagnostic field
FieldIdentifier fid (name(), scalar2d_layout_col, radflux_units, grid_name);
FieldIdentifier fid (name(), scalar2d_layout_col, W/m2, grid_name);
m_diagnostic_output = Field(fid);
auto& C_ap = m_diagnostic_output.get_header().get_alloc_properties();
C_ap.request_allocation();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,8 @@ SurfaceUpwardLatentHeatFlux(const ekat::Comm& comm, const ekat::ParameterList& p
void SurfaceUpwardLatentHeatFlux::
set_grids (const std::shared_ptr<const GridsManager> grids_manager)
{
const auto m2 = ekat::units::m * ekat::units::m;
const auto W = ekat::units::W;
auto radflux_units = W/(m2);
radflux_units.set_string("W/m2");
using namespace ekat::units;
Units m2(m*m,"m2");

const auto surf_evap_units = ekat::units::kg / m2 / ekat::units::s;

Expand All @@ -38,7 +36,7 @@ set_grids (const std::shared_ptr<const GridsManager> grids_manager)
add_field<Required>("surf_evap", scalar2d_layout_mid, surf_evap_units, grid_name);

// Construct and allocate the diagnostic field
FieldIdentifier fid(name(), scalar2d_layout_mid, radflux_units, grid_name);
FieldIdentifier fid(name(), scalar2d_layout_mid, W/m2, grid_name);
// handle parent class member variables
m_diagnostic_output = Field(fid);
m_diagnostic_output.get_header().get_alloc_properties().request_allocation();
Expand Down
12 changes: 3 additions & 9 deletions components/eamxx/src/diagnostics/vapor_flux.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,6 @@ void VaporFluxDiagnostic::set_grids(const std::shared_ptr<const GridsManager> gr
using namespace ekat::units;
using namespace ShortFieldTagsNames;

auto Q = kg/kg;
Q.set_string("kg/kg");

auto vel = m/s;
vel.set_string("m/s");

auto grid = grids_manager->get_grid("Physics");
const auto& grid_name = grid->name();
m_num_cols = grid->get_num_local_dofs(); // Number of columns on this rank
Expand All @@ -52,9 +46,9 @@ void VaporFluxDiagnostic::set_grids(const std::shared_ptr<const GridsManager> gr
auto vector3d = grid->get_3d_vector_layout(true,2);

// The fields required for this diagnostic to be computed
add_field<Required>("pseudo_density", scalar3d, Pa, grid_name);
add_field<Required>("qv", scalar3d, Q, grid_name);
add_field<Required>("horiz_winds", vector3d, m/s, grid_name);
add_field<Required>("pseudo_density", scalar3d, Pa, grid_name);
add_field<Required>("qv", scalar3d, kg/kg, grid_name);
add_field<Required>("horiz_winds", vector3d, m/s, grid_name);

// Construct and allocate the diagnostic field
FieldIdentifier fid (name(), scalar2d, kg/m/s, grid_name);
Expand Down
8 changes: 3 additions & 5 deletions components/eamxx/src/diagnostics/vertical_layer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,8 @@ set_grids(const std::shared_ptr<const GridsManager> grids_manager)
using namespace ekat::units;
using namespace ShortFieldTagsNames;

auto Q = kg/kg;
Q.set_string("kg/kg");
auto m2 = m*m;
auto s2 = s*s;
auto m2 = pow(m,2);
auto s2 = pow(s,2);

auto grid = grids_manager->get_grid("Physics");
const auto& grid_name = grid->name();
Expand All @@ -48,7 +46,7 @@ set_grids(const std::shared_ptr<const GridsManager> grids_manager)
add_field<Required>("T_mid", scalar3d_layout_mid, K, grid_name, ps);
add_field<Required>("pseudo_density", scalar3d_layout_mid, Pa, grid_name, ps);
add_field<Required>("p_mid", scalar3d_layout_mid, Pa, grid_name, ps);
add_field<Required>("qv", scalar3d_layout_mid, Q, grid_name, ps);
add_field<Required>("qv", scalar3d_layout_mid, kg/kg, grid_name, ps);

// Only need phis if computing geopotential_*
if (not m_only_compute_dz and not m_from_sea_level) {
Expand Down
7 changes: 2 additions & 5 deletions components/eamxx/src/diagnostics/virtual_temperature.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,6 @@ void VirtualTemperatureDiagnostic::set_grids(const std::shared_ptr<const GridsMa
using namespace ekat::units;
using namespace ShortFieldTagsNames;

auto Q = kg/kg;
Q.set_string("kg/kg");

auto grid = grids_manager->get_grid("Physics");
const auto& grid_name = grid->name();
m_num_cols = grid->get_num_local_dofs(); // Number of columns on this rank
Expand All @@ -27,8 +24,8 @@ void VirtualTemperatureDiagnostic::set_grids(const std::shared_ptr<const GridsMa
constexpr int ps = Pack::n;

// The fields required for this diagnostic to be computed
add_field<Required>("T_mid", scalar3d_layout_mid, K, grid_name, ps);
add_field<Required>("qv", scalar3d_layout_mid, Q, grid_name, ps);
add_field<Required>("T_mid", scalar3d_layout_mid, K, grid_name, ps);
add_field<Required>("qv", scalar3d_layout_mid, kg/kg, grid_name, ps);

// Construct and allocate the diagnostic field
FieldIdentifier fid (name(), scalar3d_layout_mid, K, grid_name);
Expand Down
8 changes: 3 additions & 5 deletions components/eamxx/src/diagnostics/water_path.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,7 @@ set_grids(const std::shared_ptr<const GridsManager> grids_manager)
{
using namespace ekat::units;

const auto m2 = m*m;
auto Q = kg/kg;
Q.set_string("kg/kg");
auto m2 = pow (m,2);

auto grid = grids_manager->get_grid("Physics");
const auto& grid_name = grid->name();
Expand All @@ -55,8 +53,8 @@ set_grids(const std::shared_ptr<const GridsManager> grids_manager)
auto scalar3d = grid->get_3d_scalar_layout(true);

// The fields required for this diagnostic to be computed
add_field<Required>("pseudo_density", scalar3d, Pa, grid_name);
add_field<Required>(m_qname, scalar3d, Q, grid_name);
add_field<Required>("pseudo_density", scalar3d, Pa, grid_name);
add_field<Required>(m_qname, scalar3d, kg/kg, grid_name);

// Construct and allocate the diagnostic field
FieldIdentifier fid (name(), scalar2d, kg/m2, grid_name);
Expand Down
6 changes: 2 additions & 4 deletions components/eamxx/src/dynamics/homme/eamxx_homme_fv_phys.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -238,19 +238,17 @@ ::fv_phys_rrtmgp_active_gases_init (const std::shared_ptr<const GridsManager>& g
if (trace_gases_workaround.is_restart()) return; // always false b/c it hasn't been set yet
using namespace ekat::units;
using namespace ShortFieldTagsNames;
auto molmol = mol/mol;
molmol.set_string("mol/mol");
const auto& rgn = m_cgll_grid->name();
const auto& pgn = m_phys_grid->name();
const auto rnc = m_cgll_grid->get_num_local_dofs();
const auto pnc = m_phys_grid->get_num_local_dofs();
const auto nlev = m_cgll_grid->get_num_vertical_levels();
constexpr int ps = SCREAM_SMALL_PACK_SIZE;
for (const auto& e : trace_gases_workaround.get_active_gases()) {
add_field<Required>(e, FieldLayout({COL,LEV},{rnc,nlev}), molmol, rgn, ps);
add_field<Required>(e, FieldLayout({COL,LEV},{rnc,nlev}), mol/mol, rgn, ps);
// 'Updated' rather than just 'Computed' so that it gets written to the
// restart file.
add_field<Updated >(e, FieldLayout({COL,LEV},{pnc,nlev}), molmol, pgn, ps);
add_field<Updated >(e, FieldLayout({COL,LEV},{pnc,nlev}), mol/mol, pgn, ps);
}
trace_gases_workaround.set_remapper(gm->create_remapper(m_cgll_grid, m_dyn_grid));
}
Expand Down
Loading

0 comments on commit 1f470ad

Please sign in to comment.