Open cyrush opened 2 years ago
some expect adjsets, we should be able to have version that don't need them as well.
mostly complete in #1007
mpi versions remain, but they simply call out to the non mpi versions.
Last step: Allow them to work in the case we pass a single domain mesh, and in the case we do not have an adjset.
Below is the full set of methods we want.
Current paths always assume adjsets are involved. The non-adjset cases require some internal refactoring to implement, so we tackle in 0.9.0
//-------------------------------------------------------------------------
// without adjset
void CONDUIT_BLUEPRINT_API generate_points(conduit::Node &mesh,
const std::string& src_topo_name,
const std::string& dst_topo_name,
conduit::Node& s2dmap,
conduit::Node& d2smap);
//-------------------------------------------------------------------------
// with adjset
void CONDUIT_BLUEPRINT_API generate_points(conduit::Node &mesh,
const std::string& src_adjset_name,
const std::string& dst_adjset_name,
const std::string& dst_topo_name,
conduit::Node& s2dmap,
conduit::Node& d2smap);
//-------------------------------------------------------------------------
// without adjset
void CONDUIT_BLUEPRINT_API generate_lines(conduit::Node &mesh,
const std::string& src_topo_name,
const std::string& dst_topo_name,
conduit::Node& s2dmap,
conduit::Node& d2smap);
//-------------------------------------------------------------------------
// with adjset
void CONDUIT_BLUEPRINT_API generate_lines(conduit::Node &mesh,
const std::string& src_adjset_name,
const std::string& dst_adjset_name,
const std::string& dst_topo_name,
conduit::Node& s2dmap,
conduit::Node& d2smap);
//-------------------------------------------------------------------------
// without adjset
void CONDUIT_BLUEPRINT_API generate_faces(conduit::Node &mesh,
const std::string& src_topo_name,
const std::string& dst_topo_name,
conduit::Node& s2dmap,
conduit::Node& d2smap);
//-------------------------------------------------------------------------
// with adjset
void CONDUIT_BLUEPRINT_API generate_faces(conduit::Node &mesh,
const std::string& src_adjset_name,
const std::string& dst_adjset_name,
const std::string& dst_topo_name,
conduit::Node& s2dmap,
conduit::Node& d2smap);
//-------------------------------------------------------------------------
// without adjset
void CONDUIT_BLUEPRINT_API generate_centroids(conduit::Node& mesh,
const std::string& src_topo_name,
const std::string& dst_topo_name,
const std::string& dst_cset_name,
conduit::Node& s2dmap,
conduit::Node& d2smap);
//-------------------------------------------------------------------------
// with adjset
void CONDUIT_BLUEPRINT_API generate_centroids(conduit::Node& mesh,
const std::string& src_adjset_name,
const std::string& dst_adjset_name,
const std::string& dst_topo_name,
const std::string& dst_cset_name,
conduit::Node& s2dmap,
conduit::Node& d2smap);
//-------------------------------------------------------------------------
// with adjset
void CONDUIT_BLUEPRINT_API generate_sides(conduit::Node& mesh,
const std::string& src_topo_name,
const std::string& dst_topo_name,
const std::string& dst_cset_name,
conduit::Node& s2dmap,
conduit::Node& d2smap);
//-------------------------------------------------------------------------
// without adjset
void CONDUIT_BLUEPRINT_API generate_sides(conduit::Node& mesh,
const std::string& src_adjset_name,
const std::string& dst_adjset_name,
const std::string& dst_topo_name,
const std::string& dst_cset_name,
conduit::Node& s2dmap,
conduit::Node& d2smap);
//-------------------------------------------------------------------------
// without adjset
void CONDUIT_BLUEPRINT_API generate_corners(conduit::Node& mesh,
const std::string& src_topo_name,
const std::string& dst_topo_name,
const std::string& dst_cset_name,
conduit::Node& s2dmap,
conduit::Node& d2smap);
//-------------------------------------------------------------------------
// with adjset
void CONDUIT_BLUEPRINT_API generate_corners(conduit::Node& mesh,
const std::string& src_adjset_name,
const std::string& dst_adjset_name,
const std::string& dst_topo_name,
const std::string& dst_cset_name,
conduit::Node& s2dmap,
conduit::Node& d2smap);
Several transform methods in
conduit::blueprint::mpi::mesh
don't use MPI.(for example:) conduit::blueprint::mpi::mesh::generate_sides
They provide a multi-domain interface to these transformations. They do take into consideration things like adjsets, which represent MPI context, but they don't need to use MPI to execute the transforms.
These methods should be moved into the non mpi blueprint lib, accessible via something like:
multi_domain::to_zzz
This would also help us implement: https://github.com/LLNL/conduit/issues/932
@agcapps -- a topic we discussed on 3/25.
Some will remain in the MPI lib.