conduit icon indicating copy to clipboard operation
conduit copied to clipboard

refactor mesh transform calls that don't use mpi into non mpi lib

Open cyrush opened this issue 3 years ago • 3 comments

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.

cyrush avatar Mar 25 '22 22:03 cyrush

some expect adjsets, we should be able to have version that don't need them as well.

cyrush avatar Mar 25 '22 23:03 cyrush

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.

cyrush avatar Aug 18 '22 19:08 cyrush

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);

cyrush avatar Aug 18 '22 22:08 cyrush