Skip to content

Commit c3fb462

Browse files
committed
Several renames wrt bundling
- Bundling enum -> MonolithicAlloc - m_bundle field -> m_monolithic_field - m_fields (in field group) -> m_individual_fields - All comments updated
1 parent 94b7259 commit c3fb462

21 files changed

+244
-246
lines changed

components/eamxx/src/control/atmosphere_driver.cpp

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,7 @@ namespace control {
5858
* Note: at this stage, atm procs that act on non-ref grid(s) should be able to create their
5959
* remappers. The AD will *not* take care of remapping inputs/outputs of the process.
6060
* 4) Register all fields and all groups from all atm procs inside the field managers, and proceed
61-
* to allocate fields. Each field manager (there is one FM per grid) will take care of
62-
* accommodating all requests for packing as well as (if possible) bundling of groups.
63-
* For more details, see the documentation in the share/field/field_request.hpp header.
61+
* to allocate fields. For more details, see the documentation in the share/field/field_request.hpp header.
6462
* 5) Set all the fields into the atm procs. Before this point, all the atm procs had were the
6563
* FieldIdentifiers for their input/output fields and FieldGroupInfo for their input/output
6664
* field groups. Now, we pass actual Field and FieldGroup objects to them, where both the
@@ -405,7 +403,7 @@ void AtmosphereDriver::reset_accumulated_fields ()
405403
}
406404

407405
auto accum_group = m_field_mgr->get_field_group("ACCUMULATED", grid_name);
408-
for (auto f_it : accum_group.m_fields) {
406+
for (auto f_it : accum_group.m_individual_fields) {
409407
auto& track = f_it.second->get_header().get_tracking();
410408
f_it.second->deep_copy(zero);
411409
track.set_accum_start_time(m_current_ts);
@@ -645,8 +643,8 @@ void AtmosphereDriver::create_fields()
645643
m_field_mgr->add_to_group(fid, "RESTART");
646644
}
647645
for (const auto& g : m_atm_process_group->get_groups_in()) {
648-
if (g.m_bundle) {
649-
m_field_mgr->add_to_group(g.m_bundle->get_header().get_identifier(), "RESTART");
646+
if (g.m_monolithic_field) {
647+
m_field_mgr->add_to_group(g.m_monolithic_field->get_header().get_identifier(), "RESTART");
650648
} else {
651649
for (const auto& fn : g.m_info->m_fields_names) {
652650
m_field_mgr->add_to_group(fn, g.grid_name(), "RESTART");
@@ -1174,19 +1172,19 @@ void AtmosphereDriver::set_initial_conditions ()
11741172
// ...then the input groups
11751173
m_atm_logger->debug(" [EAMxx] Processing input groups ...");
11761174
for (const auto& g : m_atm_process_group->get_groups_in()) {
1177-
if (g.m_bundle) {
1178-
process_ic_field(*g.m_bundle);
1175+
if (g.m_monolithic_field) {
1176+
process_ic_field(*g.m_monolithic_field);
11791177
}
1180-
for (auto it : g.m_fields) {
1178+
for (auto it : g.m_individual_fields) {
11811179
process_ic_field(*it.second);
11821180
}
11831181
}
11841182
m_atm_logger->debug(" [EAMxx] Processing input groups ... done!");
11851183

1186-
// Some fields might be the subfield of a group's bundled field. In that case,
1187-
// we only need to init one: either the bundled field, or all the individual subfields.
1184+
// Some fields might be the subfield of a group's monolithic field. In that case,
1185+
// we only need to init one: either the monolithic field, or all the individual subfields.
11881186
// So loop over the fields that appear to require loading from file, and remove
1189-
// them from the list if they are the subfield of a bundled field already inited
1187+
// them from the list if they are the subfield of a groups monolithic field already inited
11901188
// (perhaps via initialize_constant_field, or copied from another field).
11911189
for (auto& it1 : ic_fields_names) {
11921190
const auto& grid_name = it1.first;
@@ -1290,17 +1288,17 @@ void AtmosphereDriver::set_initial_conditions ()
12901288
}
12911289
m_atm_logger->debug(" [EAMxx] Processing fields to copy ... done!");
12921290

1293-
// It is possible to have a bundled group G1=(f1,f2,f3),
1291+
// It is possible to have a monolithically allocated group G1=(f1,f2,f3),
12941292
// where the IC are read from file for f1, f2, and f3. In that case,
1295-
// the time stamp for the bundled G1 has not be inited, but the data
1293+
// the time stamp for the monolithic field of G1 has not be inited, but the data
12961294
// is valid (all entries have been inited). Let's fix that.
12971295
m_atm_logger->debug(" [EAMxx] Processing subfields ...");
12981296
for (const auto& g : m_atm_process_group->get_groups_in()) {
1299-
if (g.m_bundle) {
1300-
auto& track = g.m_bundle->get_header().get_tracking();
1297+
if (g.m_monolithic_field) {
1298+
auto& track = g.m_monolithic_field->get_header().get_tracking();
13011299
if (not track.get_time_stamp().is_valid()) {
1302-
// The bundled field has not been inited. Check if all the subfields
1303-
// have been inited. If so, init the timestamp of the bundled field too.
1300+
// The groups monolithic field has not been inited. Check if all the subfields
1301+
// have been inited. If so, init the timestamp of the monlithic field too.
13041302
const auto& children = track.get_children();
13051303
bool all_inited = children.size()>0; // If no children, then something is off, so mark as not good
13061304
for (auto wp : children) {
@@ -1678,7 +1676,7 @@ void AtmosphereDriver::run (const int dt) {
16781676
}
16791677

16801678
auto rescale_group = m_field_mgr->get_field_group("DIVIDE_BY_DT", gname);
1681-
for (auto f_it : rescale_group.m_fields) {
1679+
for (auto f_it : rescale_group.m_individual_fields) {
16821680
f_it.second->scale(Real(1) / dt);
16831681
}
16841682
}

components/eamxx/src/control/tests/dummy_atm_proc.hpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,8 @@ class DummyProcess : public scream::AtmosphereProcess {
9393
});
9494
} else if (m_name=="Group to Group") {
9595
const auto& g = get_group_out("The Group");
96-
const auto view_B = g.m_fields.at("B")->get_view<Real**>();
97-
const auto view_C = g.m_fields.at("C")->get_view<Real**>();
96+
const auto view_B = g.m_individual_fields.at("B")->get_view<Real**>();
97+
const auto view_C = g.m_individual_fields.at("C")->get_view<Real**>();
9898

9999
Kokkos::parallel_for(policy,KOKKOS_LAMBDA(const int idx) {
100100
const int icol = idx / nlevs;
@@ -105,8 +105,8 @@ class DummyProcess : public scream::AtmosphereProcess {
105105
});
106106
} else {
107107
const auto& g = get_group_in("The Group");
108-
const auto view_B = g.m_fields.at("B")->get_view<const Real**>();
109-
const auto view_C = g.m_fields.at("C")->get_view<const Real**>();
108+
const auto view_B = g.m_individual_fields.at("B")->get_view<const Real**>();
109+
const auto view_C = g.m_individual_fields.at("C")->get_view<const Real**>();
110110
const auto view_A = get_field_out("A").get_view<Real**>();
111111

112112
Kokkos::parallel_for(policy,KOKKOS_LAMBDA(const int idx) {
@@ -128,7 +128,7 @@ class DummyProcess : public scream::AtmosphereProcess {
128128

129129
std::string m_name;
130130

131-
DummyType m_dummy_type;
131+
DummyType m_dummy_type;
132132
};
133133

134134
} // namespace scream

components/eamxx/src/dynamics/homme/eamxx_homme_fv_phys.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ void HommeDynamics::fv_phys_dyn_to_fv_phys (const bool restart) {
111111
t.T_mid = Homme::ExecView<Real***>("T_mid_tmp", nelem, npg, npacks*N);
112112
t.horiz_winds = Homme::ExecView<Real****>("horiz_winds_tmp", nelem, npg, 2, npacks*N);
113113
// Really need just the first tracer.
114-
const auto qsize = get_group_out("tracers", pgn).m_bundle->get_view<Real***>().extent_int(1);
114+
const auto qsize = get_group_out("tracers", pgn).m_monolithic_field->get_view<Real***>().extent_int(1);
115115
t.tracers = Homme::ExecView<Real****>("tracers_tmp", nelem, npg, qsize, npacks*N);
116116
remap_dyn_to_fv_phys(&t);
117117
assert(ncols == nelem*npg);
@@ -138,7 +138,7 @@ void HommeDynamics::fv_phys_dyn_to_fv_phys (const bool restart) {
138138
auto f = get_field_out(n,pgn);
139139
f.get_header().get_tracking().update_time_stamp(timestamp());
140140
}
141-
auto Q = get_group_out("tracers",pgn).m_bundle;
141+
auto Q = get_group_out("tracers",pgn).m_monolithic_field;
142142
Q->get_header().get_tracking().update_time_stamp(timestamp());
143143
}
144144
update_pressure(m_phys_grid);
@@ -169,7 +169,7 @@ void HommeDynamics::remap_dyn_to_fv_phys (GllFvRemapTmp* t) const {
169169
const auto npg = m_phys_grid_pgN*m_phys_grid_pgN;
170170
const auto& gn = m_phys_grid->name();
171171
const auto nlev = get_field_out("T_mid", gn).get_view<Real**>().extent_int(1);
172-
const auto nq = get_group_out("tracers").m_bundle->get_view<Real***>().extent_int(1);
172+
const auto nq = get_group_out("tracers").m_monolithic_field->get_view<Real***>().extent_int(1);
173173
assert(get_field_out("T_mid", gn).get_view<Real**>().extent_int(0) == nelem*npg);
174174
assert(get_field_out("horiz_winds", gn).get_view<Real***>().extent_int(1) == 2);
175175

@@ -189,7 +189,7 @@ void HommeDynamics::remap_dyn_to_fv_phys (GllFvRemapTmp* t) const {
189189
t ? t->horiz_winds.data() : get_field_out("horiz_winds", gn).get_view<Real***>().data(),
190190
nelem, npg, 2, nlev);
191191
const auto q = Homme::GllFvRemap::Phys3T(
192-
t ? t->tracers.data() : get_group_out("tracers", gn).m_bundle->get_view<Real***>().data(),
192+
t ? t->tracers.data() : get_group_out("tracers", gn).m_monolithic_field->get_view<Real***>().data(),
193193
nelem, npg, nq, nlev);
194194
const auto dp = Homme::GllFvRemap::Phys2T(
195195
get_field_out("pseudo_density", gn).get_view<Real**>().data(),
@@ -209,7 +209,7 @@ void HommeDynamics::remap_fv_phys_to_dyn () const {
209209
const auto npg = m_phys_grid_pgN*m_phys_grid_pgN;
210210
const auto& gn = m_phys_grid->name();
211211
const auto nlev = m_helper_fields.at("FT_phys").get_view<const Real**>().extent_int(1);
212-
const auto nq = get_group_in("tracers", gn).m_bundle->get_view<const Real***>().extent_int(1);
212+
const auto nq = get_group_in("tracers", gn).m_monolithic_field->get_view<const Real***>().extent_int(1);
213213
assert(m_helper_fields.at("FT_phys").get_view<const Real**>().extent_int(0) == nelem*npg);
214214

215215
const auto uv_ndim = m_helper_fields.at("FM_phys").get_view<const Real***>().extent_int(1);
@@ -222,7 +222,7 @@ void HommeDynamics::remap_fv_phys_to_dyn () const {
222222
m_helper_fields.at("FM_phys").get_view<const Real***>().data(),
223223
nelem, npg, uv_ndim, nlev);
224224
const auto q = Homme::GllFvRemap::CPhys3T(
225-
get_group_in("tracers", gn).m_bundle->get_view<const Real***>().data(),
225+
get_group_in("tracers", gn).m_monolithic_field->get_view<const Real***>().data(),
226226
nelem, npg, nq, nlev);
227227

228228
gfr.run_fv_phys_to_dyn(time_idx, T, uv, q);

components/eamxx/src/dynamics/homme/eamxx_homme_process_interface.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ void HommeDynamics::set_grids (const std::shared_ptr<const GridsManager> grids_m
180180
add_field<Computed>("omega", pg_scalar3d_mid, Pa/s, pgn,N);
181181

182182
add_tracer<Updated >("qv", m_phys_grid, kg/kg, N);
183-
add_group<Updated>("tracers",pgn,N, Bundling::Required);
183+
add_group<Updated>("tracers",pgn,N, MonolithicAlloc::Required);
184184

185185
if (fv_phys_active()) {
186186
// [CGLL ICs in pg2] Read CGLL IC data even though our in/out format is
@@ -196,7 +196,7 @@ void HommeDynamics::set_grids (const std::shared_ptr<const GridsManager> grids_m
196196
add_field<Required>("T_mid", rg_scalar3d_mid,K, rgn,N);
197197
add_field<Required>("ps", rg_scalar2d ,Pa, rgn);
198198
add_field<Required>("phis", rg_scalar2d ,m2/s2, rgn);
199-
add_group<Required>("tracers",rgn,N, Bundling::Required);
199+
add_group<Required>("tracers",rgn,N, MonolithicAlloc::Required);
200200
fv_phys_rrtmgp_active_gases_init(grids_manager);
201201
// This is needed for the dp_ref init in initialize_homme_state.
202202
add_field<Computed>("pseudo_density",rg_scalar3d_mid,Pa, rgn,N);
@@ -397,7 +397,7 @@ void HommeDynamics::initialize_impl (const RunType run_type)
397397
// ftype!=FORCING_0:
398398
// 1) remap Q_pgn->FQ_dyn
399399
// Remap Q directly into FQ, tendency computed in pre_process step
400-
m_p2d_remapper->register_field(*get_group_out("Q",pgn).m_bundle,m_helper_fields.at("FQ_dyn"));
400+
m_p2d_remapper->register_field(*get_group_out("Q",pgn).m_monolithic_field,m_helper_fields.at("FQ_dyn"));
401401
m_p2d_remapper->register_field(m_helper_fields.at("FT_phys"),m_helper_fields.at("FT_dyn"));
402402

403403
// FM has 3 components on dyn grid, but only 2 on phys grid
@@ -412,7 +412,7 @@ void HommeDynamics::initialize_impl (const RunType run_type)
412412
m_d2p_remapper->register_field(get_internal_field("v_dyn"),get_field_out("horiz_winds"));
413413
m_d2p_remapper->register_field(get_internal_field("dp3d_dyn"), get_field_out("pseudo_density"));
414414
m_d2p_remapper->register_field(get_internal_field("ps_dyn"), get_field_out("ps"));
415-
m_d2p_remapper->register_field(m_helper_fields.at("Q_dyn"),*get_group_out("Q",pgn).m_bundle);
415+
m_d2p_remapper->register_field(m_helper_fields.at("Q_dyn"),*get_group_out("Q",pgn).m_monolithic_field);
416416
m_d2p_remapper->register_field(m_helper_fields.at("omega_dyn"), get_field_out("omega"));
417417

418418
m_p2d_remapper->registration_ends();
@@ -463,7 +463,7 @@ void HommeDynamics::initialize_impl (const RunType run_type)
463463
using Interval = FieldWithinIntervalCheck;
464464
using LowerBound = FieldLowerBoundCheck;
465465

466-
add_postcondition_check<LowerBound>(*get_group_out("Q",pgn).m_bundle,m_phys_grid,0,true);
466+
add_postcondition_check<LowerBound>(*get_group_out("Q",pgn).m_monolithic_field,m_phys_grid,0,true);
467467
add_postcondition_check<Interval>(get_field_out("T_mid",pgn),m_phys_grid,100.0, 500.0,false);
468468
add_postcondition_check<Interval>(get_field_out("horiz_winds",pgn),m_phys_grid,-400.0, 400.0,false);
469469
add_postcondition_check<Interval>(get_field_out("ps"),m_phys_grid,30000.0, 120000.0,false);
@@ -686,7 +686,7 @@ void HommeDynamics::homme_post_process (const double dt) {
686686
const auto dp_dry_view = get_field_out("pseudo_density_dry").get_view<Pack**>();
687687
const auto p_dry_int_view = get_field_out("p_dry_int").get_view<Pack**>();
688688
const auto p_dry_mid_view = get_field_out("p_dry_mid").get_view<Pack**>();
689-
const auto Q_view = get_group_out("Q",pgn).m_bundle->get_view<Pack***>();
689+
const auto Q_view = get_group_out("Q",pgn).m_monolithic_field->get_view<Pack***>();
690690

691691
const auto T_view = get_field_out("T_mid").get_view<Pack**>();
692692
const auto T_prev_view = m_helper_fields.at("FT_phys").get_view<Pack**>();
@@ -1003,7 +1003,7 @@ void HommeDynamics::restart_homme_state () {
10031003
auto qv_prev_ref = std::make_shared<Field>();
10041004
auto Q_dyn = m_helper_fields.at("Q_dyn");
10051005
if (params.ftype==Homme::ForcingAlg::FORCING_2) {
1006-
auto Q_old = *get_group_in("Q",pgn).m_bundle;
1006+
auto Q_old = *get_group_in("Q",pgn).m_monolithic_field;
10071007
m_ic_remapper->register_field(Q_old,Q_dyn);
10081008

10091009
// Grab qv_ref_old from Q_old
@@ -1106,7 +1106,7 @@ void HommeDynamics::initialize_homme_state () {
11061106
m_ic_remapper->register_field(get_field_in("ps",rgn),get_internal_field("ps_dyn"));
11071107
m_ic_remapper->register_field(get_field_in("phis",rgn),m_helper_fields.at("phis_dyn"));
11081108
m_ic_remapper->register_field(get_field_in("T_mid",rgn),get_internal_field("vtheta_dp_dyn"));
1109-
m_ic_remapper->register_field(*get_group_in("tracers",rgn).m_bundle,m_helper_fields.at("Q_dyn"));
1109+
m_ic_remapper->register_field(*get_group_in("tracers",rgn).m_monolithic_field,m_helper_fields.at("Q_dyn"));
11101110
m_ic_remapper->registration_ends();
11111111
m_ic_remapper->remap_fwd();
11121112

components/eamxx/src/physics/iop_forcing/eamxx_iop_forcing_process_interface.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ void IOPForcing::set_grids(const std::shared_ptr<const GridsManager> grids_manag
2929
add_field<Updated>("T_mid", scalar3d_mid, K, grid_name, pack_size);
3030

3131
add_tracer<Updated>("qv", m_grid, kg/kg, pack_size);
32-
add_group<Updated>("tracers", grid_name, pack_size, Bundling::Required);
32+
add_group<Updated>("tracers", grid_name, pack_size, MonolithicAlloc::Required);
3333

3434
// Sanity check that iop data manager is setup by driver
3535
EKAT_REQUIRE_MSG(m_iop_data_manager,
@@ -64,8 +64,8 @@ set_computed_group_impl (const FieldGroup& group)
6464
EKAT_REQUIRE_MSG(name=="tracers",
6565
"Error! IOPForcing was not expecting a field group called '" << name << "\n");
6666

67-
EKAT_REQUIRE_MSG(group.m_info->m_bundled,
68-
"Error! IOPForcing expects bundled fields for tracers.\n");
67+
EKAT_REQUIRE_MSG(group.m_info->m_monolithic_allocation,
68+
"Error! IOPForcing expects a monolithic allocation for tracers.\n");
6969

7070
m_num_tracers = group.m_info->size();
7171
}
@@ -343,7 +343,7 @@ void IOPForcing::run_impl (const double dt)
343343
const auto horiz_winds = get_field_out("horiz_winds").get_view<Pack***>();
344344
const auto T_mid = get_field_out("T_mid").get_view<Pack**>();
345345
const auto qv = get_field_out("qv").get_view<Pack**>();
346-
const auto Q = get_group_out("tracers").m_bundle->get_view<Pack***>();
346+
const auto Q = get_group_out("tracers").m_monolithic_field->get_view<Pack***>();
347347

348348
// Load data from IOP files, if necessary
349349
m_iop_data_manager->read_iop_file_data(timestamp());

components/eamxx/src/physics/ml_correction/eamxx_ml_correction_process_interface.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ void MLCorrection::set_grids(
6767
add_field<Updated>("precip_ice_surf_mass", scalar2d, kg/m2, grid_name);
6868
/* ----------------------- WARNING --------------------------------*/
6969
add_tracer<Updated>("qv", m_grid, kg/kg, ps);
70-
add_group<Updated>("tracers", grid_name, 1, Bundling::Required);
70+
add_group<Updated>("tracers", grid_name, 1, MonolithicAlloc::Required);
7171
}
7272

7373
// =========================================================================================

components/eamxx/src/physics/shoc/eamxx_shoc_process_interface.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ void SHOCMacrophysics::set_grids(const std::shared_ptr<const GridsManager> grids
111111
} // Extra SHOC output diagnostics
112112

113113
// Tracer group
114-
add_group<Updated>("turbulence_advected_tracers", grid_name, ps, Bundling::Required);
114+
add_group<Updated>("turbulence_advected_tracers", grid_name, ps, MonolithicAlloc::Required);
115115

116116
// Boundary flux fields for energy and mass conservation checks
117117
if (has_column_conservation_check()) {
@@ -134,8 +134,8 @@ set_computed_group_impl (const FieldGroup& group)
134134
EKAT_REQUIRE_MSG(name=="turbulence_advected_tracers",
135135
"Error! We were not expecting a field group called '" << name << "\n");
136136

137-
EKAT_REQUIRE_MSG(group.m_info->m_bundled,
138-
"Error! Shoc expects bundled fields for tracers.\n");
137+
EKAT_REQUIRE_MSG(group.m_info->m_monolithic_allocation,
138+
"Error! Shoc expects a monolithic allocation for tracers.\n");
139139

140140
// Calculate number of advected tracers
141141
m_num_tracers = group.m_info->size();
@@ -269,7 +269,7 @@ void SHOCMacrophysics::initialize_impl (const RunType run_type)
269269
const auto& surf_sens_flux = get_field_in("surf_sens_flux").get_view<const Real*>();
270270
const auto& surf_evap = get_field_in("surf_evap").get_view<const Real*>();
271271
const auto& surf_mom_flux = get_field_in("surf_mom_flux").get_view<const Real**>();
272-
const auto& qtracers = get_group_out("turbulence_advected_tracers").m_bundle->get_strided_view<Spack***>();
272+
const auto& qtracers = get_group_out("turbulence_advected_tracers").m_monolithic_field->get_strided_view<Spack***>();
273273
const auto& qc = get_field_out("qc").get_view<Spack**>();
274274
const auto& qv = get_field_out("qv").get_view<Spack**>();
275275
const auto& tke = get_field_out("tke").get_view<Spack**>();

components/eamxx/src/physics/shoc/eamxx_shoc_process_interface.hpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ class SHOCMacrophysics : public scream::AtmosphereProcess
8686

8787
Kokkos::parallel_for(Kokkos::TeamVectorRange(team, nlev_packs), [&] (const Int& k) {
8888

89-
89+
9090
cldfrac_liq_prev(i,k)=cldfrac_liq(i,k);
9191

9292
// Inverse of Exner. In non-rel builds, assert that exner != 0 when in range before computing.
@@ -98,10 +98,10 @@ class SHOCMacrophysics : public scream::AtmosphereProcess
9898
tke(i,k) = ekat::max(mintke, tke(i,k));
9999

100100
// Tracers are updated as a group. The tracers tke and qc act as separate inputs to shoc_main()
101-
// and are therefore updated differently to the bundled tracers. Here, we make a copy if each
102-
// of these tracers and pass to shoc_main() so that changes to the tracer group does not alter
103-
// tke or qc values. Then during post processing, we copy back correct values of tke and qc
104-
// to tracer group in postprocessing.
101+
// and are therefore updated differently to the tracers group's monolithic field. Here, we make
102+
// a copy if each of these tracers and pass to shoc_main() so that changes to the tracer group
103+
// does not alter tke or qc values. Then during post processing, we copy back correct values of
104+
// tke and qc to tracer group in postprocessing.
105105
// TODO: remove *_copy views once SHOC can request a subset of tracers.
106106
tke_copy(i,k) = tke(i,k);
107107
qc_copy(i,k) = qc(i,k);

components/eamxx/src/share/atm_process/IOPDataManager.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -617,7 +617,7 @@ set_fields_from_iop_data(const field_mgr_ptr field_mgr, const std::string& grid_
617617
{
618618
if (m_params.get<bool>("zero_non_iop_tracers") && field_mgr->has_group("tracers", grid_name)) {
619619
// Zero out all tracers before setting iop tracers (if requested)
620-
field_mgr->get_field_group("tracers", grid_name).m_bundle->deep_copy(0);
620+
field_mgr->get_field_group("tracers", grid_name).m_monolithic_field->deep_copy(0);
621621
}
622622

623623
EKAT_REQUIRE_MSG(grid_name == "Physics GLL",

0 commit comments

Comments
 (0)