Implements Meredith's Equi-Z algorithm on the GPU using Blueprint inputs/outputs.
More...
|
| virtual void | executeDomain (const conduit::Node &n_topo, const conduit::Node &n_coordset, const conduit::Node &n_fields, const conduit::Node &n_matset, const conduit::Node &n_options, conduit::Node &n_newTopo, conduit::Node &n_newCoordset, conduit::Node &n_newFields, conduit::Node &n_newMatset) override |
| | Perform material interface reconstruction on a single domain. More...
|
| |
| void | makeZoneLists (const conduit::Node &n_options, axom::Array< axom::IndexType > &cleanZones, axom::Array< axom::IndexType > &mixedZones) const |
| | Examine the zones and make separate lists of clean and mixed zones so we can process them specially since mixed zones require much more work. More...
|
| |
| void | merge (const std::string &topoName, conduit::Node &n_cleanOutput, conduit::Node &n_mirOutput, conduit::Node &n_merged) const |
| | Merge meshes for clean and MIR outputs. More...
|
| |
| void | addOriginal (conduit::Node &n_field, const std::string &topoName, const std::string &association, axom::IndexType nvalues) const |
| | Adds original ids field to supplied fields node. More...
|
| |
| void | makeCleanZones (const conduit::Node &n_root, const std::string &topoName, const conduit::Node &n_options, const axom::ArrayView< axom::IndexType > &cleanZones, conduit::Node &n_cleanOutput) const |
| | Take the mesh in n_root and extract the zones identified by the cleanZones array and store the results into the n_cleanOutput node. More...
|
| |
| void | createNodeMapAndSlice (conduit::Node &n_newFields, axom::Array< axom::IndexType > &nodeMap, axom::Array< axom::IndexType > &nodeSlice) const |
| | Create node map and node slice arrays for the MIR output that help merge it back with the clean output. More...
|
| |
| void | processMixedZones (const conduit::Node &n_topo, const conduit::Node &n_coordset, const conduit::Node &n_fields, const conduit::Node &n_matset, conduit::Node &n_options, conduit::Node &n_newTopo, conduit::Node &n_newCoordset, conduit::Node &n_newFields, conduit::Node &n_newMatset) const |
| | Perform material interface reconstruction on mixed zones. More...
|
| |
| void | classifyMaterials (const conduit::Node &n_matset, axom::bump::views::MaterialInformation &allMats, axom::bump::views::MaterialInformation &cleanMats, axom::bump::views::MaterialInformation &mixedMats) const |
| | Examine the materials and determine which are clean/mixed. More...
|
| |
| std::string | zonalFieldName (int matId) const |
| | Return the name of the zonal material field for a given matId. More...
|
| |
| std::string | nodalFieldName (int matId) const |
| | Return the name of the nodal material field for a given matId. More...
|
| |
| std::string | zonalMaterialIDName () const |
| | Return the name of the zonal material id field. More...
|
| |
| std::string | originalNodesFieldName () const |
| | Return the name of the original nodes field. More...
|
| |
| std::string | newNodesFieldName () const |
| | Return the name of the new nodes field that identifies blended nodes in the MIR output. More...
|
| |
| void | makeNodeCenteredVFs (const conduit::Node &n_topo, const conduit::Node &n_coordset, conduit::Node &n_fields, const axom::bump::views::MaterialInformation &mixedMats) const |
| | Makes node-cenetered volume fractions for the materials in the matset and attaches them as fields. More...
|
| |
| void | makeWorkingFields (const conduit::Node &n_topo, conduit::Node &n_fields, const axom::bump::views::MaterialInformation &cleanMats, const axom::bump::views::MaterialInformation &AXOM_UNUSED_PARAM(mixedMats)) const |
| | Set up the "working fields", mainly a zonalMaterialID that includes the contributions from the clean materials and the first mixed material. More...
|
| |
| template<typename ITopologyView , typename ICoordsetView > |
| void | iteration (int iter, const ITopologyView &topoView, const ICoordsetView &coordsetView, const axom::bump::views::MaterialInformation &allMats, const axom::bump::views::Material ¤tMat, const conduit::Node &n_topo, const conduit::Node &n_coordset, conduit::Node &n_fields, const conduit::Node &n_options, conduit::Node &n_newTopo, conduit::Node &n_newCoordset, conduit::Node &n_newFields) const |
| | Perform one iteration of material clipping. More...
|
| |
| void | buildNewMatset (const conduit::Node &n_matset, conduit::Node &n_newFields, conduit::Node &n_newMatset) const |
| | Build a new matset with only clean zones, representing the MIR output. More...
|
| |
| void | executeSetup (const conduit::Node &n_domain, const conduit::Node &n_options, conduit::Node &n_newDomain) |
| | Set up the new domain from the old one and invoke executeDomain. More...
|
| |
| void | updateNames (const std::string &origTopoName, const std::string &newTopoName, const std::string &origCoordsetName, const std::string &newCoordsetName, const std::string &origMatsetName, const std::string &newMatsetName, conduit::Node &n_newTopo, conduit::Node &n_newCoordset, conduit::Node &n_newFields, conduit::Node &n_newMatset) |
| | Update names in some of the objects when we can tell they have been renamed. More...
|
| |
| void | copyState (const conduit::Node &srcState, conduit::Node &destState) const |
| | Copy state from the src domain to the destination domain. More...
|
| |
| void | printNode (const conduit::Node &n) const |
| | This is a utility method for printing a Conduit node with large limits for lines and element counts. More...
|
| |
| void | saveMesh (const conduit::Node &n_mesh, const std::string &filebase) const |
| | Save a Blueprint mesh to disk (YAML and HDF5, if available). More...
|
| |
| std::string | localPath (const conduit::Node &obj) const |
| | Return the local path name, stripping off a domain path prefix. Blueprint domains are typically written under top level nodes with names like "domain_{:05}" or "domain_{:07}". This method will strip off any path prefix beginning with "domain". More...
|
| |
template<typename ExecSpace, typename TopologyView, typename CoordsetView, typename MatsetView>
class axom::mir::EquiZAlgorithm< ExecSpace, TopologyView, CoordsetView, MatsetView >
Implements Meredith's Equi-Z algorithm on the GPU using Blueprint inputs/outputs.
- Template Parameters
-
| ExecSpace | the execution space where the algorithm will run. |
| TopologyView | A topology view to be used for accessing zones in the mesh. |
| CoordsetView | A coordset view that accesses coordinates as primal::Point. |
| MatsetView | A matset view that interfaces to the Blueprint material set. |
- Note
- This algorithm typically produces unstructured meshes of zoo elements. However, if the input matset contains only "clean" zones consisting of 1 material per zone then the input coordset, topology, and matset will be copied to the output. In that case, the types will depend on the input types.
template<typename ExecSpace , typename TopologyView , typename CoordsetView , typename MatsetView >
| virtual void axom::mir::EquiZAlgorithm< ExecSpace, TopologyView, CoordsetView, MatsetView >::executeDomain |
( |
const conduit::Node & |
n_topo, |
|
|
const conduit::Node & |
n_coordset, |
|
|
const conduit::Node & |
n_fields, |
|
|
const conduit::Node & |
n_matset, |
|
|
const conduit::Node & |
n_options, |
|
|
conduit::Node & |
n_newTopo, |
|
|
conduit::Node & |
n_newCoordset, |
|
|
conduit::Node & |
n_newFields, |
|
|
conduit::Node & |
n_newMatset |
|
) |
| |
|
inlineoverrideprotectedvirtual |
Perform material interface reconstruction on a single domain.
- Parameters
-
| [in] | n_topo | The Conduit node containing the topology that will be used for MIR. |
| [in] | n_coordset | The Conduit node containing the coordset. |
| [in] | n_fields | The Conduit node containing the fields. |
| [in] | n_matset | The Conduit node containing the matset. |
| [in] | n_options | The Conduit node containing the options that help govern MIR execution. These are documented in the Sphinx documentation. |
| [out] | n_newTopo | A node that will contain the new clipped topology. |
| [out] | n_newCoordset | A node that will contain the new coordset for the clipped topology. |
| [out] | n_newFields | A node that will contain the new fields for the clipped topology. |
| [out] | n_newMatset | A Conduit node that will contain the new matset. |
Implements axom::mir::MIRAlgorithm.
References axom::mir::EquiZAlgorithm< ExecSpace, TopologyView, CoordsetView, MatsetView >::addOriginal(), AXOM_ANNOTATE_SCOPE, axom::Array< T, DIM, SPACE, StoragePolicy >::data(), axom::mir::EquiZAlgorithm< ExecSpace, TopologyView, CoordsetView, MatsetView >::getAllocatorID(), axom::mir::MIRAlgorithm::localPath(), axom::mir::EquiZAlgorithm< ExecSpace, TopologyView, CoordsetView, MatsetView >::makeCleanZones(), axom::mir::EquiZAlgorithm< ExecSpace, TopologyView, CoordsetView, MatsetView >::makeZoneLists(), axom::mir::EquiZAlgorithm< ExecSpace, TopologyView, CoordsetView, MatsetView >::merge(), axom::mir::EquiZAlgorithm< ExecSpace, TopologyView, CoordsetView, MatsetView >::newNodesFieldName(), axom::mir::EquiZAlgorithm< ExecSpace, TopologyView, CoordsetView, MatsetView >::originalNodesFieldName(), axom::mir::MIRAlgorithm::printNode(), axom::mir::EquiZAlgorithm< ExecSpace, TopologyView, CoordsetView, MatsetView >::processMixedZones(), axom::mir::MIRAlgorithm::saveMesh(), axom::Array< T, DIM, SPACE, StoragePolicy >::size(), SLIC_ERROR_IF, SLIC_INFO, and axom::Array< T, DIM, SPACE, StoragePolicy >::view().
template<typename ExecSpace , typename TopologyView , typename CoordsetView , typename MatsetView >
template<typename ITopologyView , typename ICoordsetView >
| void axom::mir::EquiZAlgorithm< ExecSpace, TopologyView, CoordsetView, MatsetView >::iteration |
( |
int |
iter, |
|
|
const ITopologyView & |
topoView, |
|
|
const ICoordsetView & |
coordsetView, |
|
|
const axom::bump::views::MaterialInformation & |
allMats, |
|
|
const axom::bump::views::Material & |
currentMat, |
|
|
const conduit::Node & |
n_topo, |
|
|
const conduit::Node & |
n_coordset, |
|
|
conduit::Node & |
n_fields, |
|
|
const conduit::Node & |
n_options, |
|
|
conduit::Node & |
n_newTopo, |
|
|
conduit::Node & |
n_newCoordset, |
|
|
conduit::Node & |
n_newFields |
|
) |
| const |
|
inlineprotected |
Perform one iteration of material clipping.
- Template Parameters
-
| ITopologyView | The topology view type for the intermediate topology. |
| ICoordsetView | The topology view type for the intermediate coordset. |
- Parameters
-
| iter | The iteration number. |
| topoView | The topology view for the intermediate input topology. |
| coordsetView | The coordset view for the intermediate input coordset. |
| allMats | A vector of Material information (all materials). |
| currentMat | A Material object for the current material. |
| n_topo | A Conduit node containing the intermediate input topology. |
| n_fields | A Conduit node containing the intermediate input fields. |
| n_options | MIR options. |
| n_newTopo[out] | A Conduit node to contain the new topology. |
| n_newCoordset[out] | A Conduit node to contain the new coordset. |
| n_newFields[out] | A Conduit node to contain the new fields. |
- Note
- This algorithm uses a TableBasedExtractor with a MaterialIntersector that gives it the ability to access nodal volume fraction fields and make intersection decisions with that data.
References axom::execution_space< ExecSpace >::allocatorID(), AXOM_ANNOTATE_SCOPE, AXOM_LAMBDA, AXOM_UNUSED_VAR, axom::Array< T, DIM, SPACE, StoragePolicy >::begin(), axom::copy(), axom::Array< T, DIM, SPACE, StoragePolicy >::data(), axom::Array< T, DIM, SPACE, StoragePolicy >::end(), axom::mir::EquiZAlgorithm< ExecSpace, TopologyView, CoordsetView, MatsetView >::getAllocatorID(), axom::mir::MIRAlgorithm::localPath(), axom::bump::views::Material::m_number, axom::mir::EquiZAlgorithm< ExecSpace, TopologyView, CoordsetView, MatsetView >::nodalFieldName(), axom::Array< T, DIM, SPACE, StoragePolicy >::push_back(), axom::mir::MIRAlgorithm::saveMesh(), axom::Array< T, DIM, SPACE, StoragePolicy >::size(), axom::sort(), axom::Array< T, DIM, SPACE, StoragePolicy >::view(), and axom::mir::EquiZAlgorithm< ExecSpace, TopologyView, CoordsetView, MatsetView >::zonalMaterialIDName().