Skip to content

Commit

Permalink
Allow to change grid name in field clone
Browse files Browse the repository at this point in the history
  • Loading branch information
tcclevenger committed Feb 14, 2025
1 parent d717734 commit 1e69db5
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 8 deletions.
7 changes: 6 additions & 1 deletion components/eamxx/src/share/field/field.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,15 @@ Field::alias (const std::string& name) const {

Field
Field::clone(const std::string& name) const {
return clone(name, get_header().get_identifier().get_grid_name());
}

Field
Field::clone(const std::string& name, const std::string& grid_name) const {
// Create new field
const auto& my_fid = get_header().get_identifier();
FieldIdentifier fid(name,my_fid.get_layout(),my_fid.get_units(),
my_fid.get_grid_name(),my_fid.data_type());
grid_name,my_fid.data_type());
Field f(fid);

// Ensure alloc props match
Expand Down
2 changes: 2 additions & 0 deletions components/eamxx/src/share/field/field.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,8 @@ class Field {
// It is created with a pristine header (no providers/customers)
Field clone () const;
Field clone (const std::string& name) const;
Field clone (const std::string& name, const std::string& grid_name) const;

Field alias (const std::string& name) const;

// Allows to get the underlying view, reshaped for a different data type.
Expand Down
3 changes: 2 additions & 1 deletion components/eamxx/src/share/field/field_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -706,8 +706,9 @@ void FieldManager::add_field (const Field& f) {
// This method has a few restrictions on the input field.
EKAT_REQUIRE_MSG(m_grids_mgr->has_grid(grid_name),
"Error! Attempting to add_field on grid not in the FM's grids manager:\n"
" - Field name: " + f.name() + "\n"
" - Grid: " + grid_name + "\n"
" - Field name: " + f.name() + "\n");
" - Grids stored by FM: " + m_grids_mgr->print_available_grids() + "\n");
EKAT_REQUIRE_MSG (not (m_repo_state==RepoState::Open),
"Error! The method 'add_field' can only be called on a closed repo.\n");
EKAT_REQUIRE_MSG (f.is_allocated(),
Expand Down
12 changes: 6 additions & 6 deletions components/eamxx/src/share/util/eamxx_data_interpolation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ void DataInterpolation::run (const util::TimeStamp& ts)
});
});
}

m_vert_remapper->remap_fwd();
}

Expand Down Expand Up @@ -347,7 +347,7 @@ setup_remappers (const std::string& hremap_filename,
};

auto vremap = std::make_shared<VerticalRemapper>(grid_after_hremap,m_model_grid);

vremap->set_extrapolation_type(s2et(extrap_type_top),VerticalRemapper::Top);
vremap->set_extrapolation_type(s2et(extrap_type_bot),VerticalRemapper::Bot);
vremap->set_mask_value(mask_value);
Expand Down Expand Up @@ -411,13 +411,13 @@ setup_remappers (const std::string& hremap_filename,
m_horiz_remapper_end->registration_begins();
for (int i=0; i<m_nfields; ++i) {
const auto& f = m_vert_remapper->get_src_field(i);
m_horiz_remapper_beg->register_field_from_tgt(f.clone());
m_horiz_remapper_end->register_field_from_tgt(f.clone());
m_horiz_remapper_beg->register_field_from_tgt(f.clone(f.name(), m_horiz_remapper_beg->get_src_grid()->name()));
m_horiz_remapper_end->register_field_from_tgt(f.clone(f.name(), m_horiz_remapper_end->get_src_grid()->name()));
}
if (vr_type==Dynamic3D or vr_type==Dynamic3DRef) {
const auto& data_p = m_helper_pressure_fields["p_data"];
m_horiz_remapper_beg->register_field_from_tgt(data_p.clone(data_pname));
m_horiz_remapper_end->register_field_from_tgt(data_p.clone(data_pname));
m_horiz_remapper_beg->register_field_from_tgt(data_p.clone(data_pname, m_horiz_remapper_beg->get_src_grid()->name()));
m_horiz_remapper_end->register_field_from_tgt(data_p.clone(data_pname, m_horiz_remapper_end->get_src_grid()->name()));
}
m_horiz_remapper_beg->registration_ends();
m_horiz_remapper_end->registration_ends();
Expand Down

0 comments on commit 1e69db5

Please sign in to comment.