A class used to handle a subset mesh. More...
#include <SubsetMesh.h>

Classes | |
| struct | map_id_struct |
Public Types | |
| typedef std::function< std::shared_ptr< Mesh >(std::shared_ptr< const MeshParameters >)> | generatorType |
| Generator for meshes. | |
| using | MeshElementPtr = std::unique_ptr< MeshElement > |
| Pointer to MeshElement and MeshElementVector. | |
| enum class | Movable : uint8_t { Fixed = 0 , Displace = 1 , Deform = 2 } |
| Enumeration for basic mesh-based quantities. More... | |
Public Member Functions | |
| std::unique_ptr< Mesh > | clone () const override |
| Function to copy the mesh (allows use to properly copy the derived class) | |
| bool | containsElement (const MeshElementID &id) const override |
| void | displaceMesh (const std::vector< double > &x) override |
| Displace the entire mesh. | |
| void | displaceMesh (std::shared_ptr< const AMP::LinearAlgebra::Vector > x) override |
| Displace the entire mesh. | |
| std::vector< MeshID > | getAllMeshIDs () const override |
| std::vector< MeshID > | getBaseMeshIDs () const override |
| virtual MeshIterator | getBlockIDIterator (const GeomType type, const int id, const int gcw=0) const override |
| Return an MeshIterator over the given geometric objects on the given block ID set. | |
| std::vector< int > | getBlockIDs () const override |
| Return the list of all boundary ID sets in the mesh. | |
| virtual MeshIterator | getBoundaryIDIterator (const GeomType type, const int id, const int gcw=0) const override |
| Return an MeshIterator over the given geometric objects on the given boundary ID set. | |
| std::vector< int > | getBoundaryIDs () const override |
| Return the list of all boundary ID sets in the mesh. | |
| const auto & | getBoundingBox () const |
| Get the bounding box for the mesh. | |
| const AMP_MPI & | getComm () const |
| Get the communicator for the mesh. | |
| uint8_t | getDim () const |
| Get the physical dimension of the mesh. | |
| MeshElementPtr | getElement (const MeshElementID &id) const override |
| Return a mesh element given it's id. | |
| ElementListPtr | getElementParents (const MeshElement &elem, const GeomType type) const override |
| Return the parent elements of the given mesh element. | |
| auto | getGeometry () |
| Return the geometry of the mesh. | |
| auto | getGeometry () const |
| Return the geometry of the mesh. | |
| GeomType | getGeomType () const |
| Get the largest geometric type in the mesh. | |
| MeshIterator | getIterator (const GeomType type, const int gcw=0) const override |
| Return an MeshIterator over the given geometric objects. | |
| std::vector< MeshID > | getLocalBaseMeshIDs () const override |
| const auto & | getLocalBoundingBox () const |
| Get the bounding box for the local part of the mesh. | |
| std::vector< MeshID > | getLocalMeshIDs () const override |
| uint8_t | getMaxGhostWidth () const |
| Get the maximum ghost width. | |
| virtual std::string | getName () const |
| Get the mesh name. | |
| virtual std::shared_ptr< AMP::LinearAlgebra::Vector > | getPositionVector (std::string name, const int gcw=0) const |
| Get a vector of the coordinates of the nodes. | |
| virtual MeshIterator | getSurfaceIterator (const GeomType type, const int gcw=0) const override |
| Return an MeshIterator over the given geometric objects on the surface. | |
| bool | isBaseMesh () const override |
| Is the current mesh a base mesh. | |
| bool | isMember (const MeshElementID &id) const override |
| Check if an element is in the mesh. | |
| MeshIterator | isMember (const MeshIterator &it) const override |
| Check if elements are in the mesh. | |
| Mesh::Movable | isMeshMovable () const override |
| Is the mesh movable. | |
| std::string | meshClass () const override |
| Return a string with the mesh class name. | |
| MeshID | meshID () const |
| Get the mesh ID. | |
| size_t | numGhostElements (const GeomType type, const int gcw) const override |
| size_t | numGlobalElements (const GeomType type) const override |
| size_t | numLocalElements (const GeomType type) const override |
| bool | operator!= (const Mesh &mesh) const |
| Check if two meshes are not equal. | |
| bool | operator== (const Mesh &mesh) const override |
| Check if two meshes are equal. | |
| uint64_t | positionHash () const override |
| Identify if the position has moved. | |
| virtual void | registerChildObjects (AMP::IO::RestartManager *manager) const |
| Register child objects. | |
| virtual void | setName (std::string name) |
| Set the mesh name. | |
| std::shared_ptr< AMP::Mesh::Mesh > | shared_from_this () |
| std::shared_ptr< const AMP::Mesh::Mesh > | shared_from_this () const |
| virtual std::shared_ptr< Mesh > | Subset (const MeshIterator &iterator, bool isGlobal=true) const |
| Subset a mesh given a MeshIterator. | |
| virtual std::shared_ptr< Mesh > | Subset (Mesh &mesh) const |
| Subset a mesh given another mesh. | |
| virtual std::shared_ptr< Mesh > | Subset (MeshID meshID) const |
| Subset a mesh given a MeshID. | |
| std::shared_ptr< Mesh > | Subset (MeshID meshID) const override |
| Subset a mesh given a MeshID. | |
| virtual std::shared_ptr< Mesh > | Subset (std::string name) const |
| Subset a mesh given a mesh name. | |
| std::shared_ptr< Mesh > | Subset (std::string name) const override |
| Subset a mesh given a mesh name. | |
| void | writeRestart (int64_t fid) const override |
| Write restart data to file. | |
| virtual | ~SubsetMesh () |
| Deconstructor. | |
Static Public Member Functions | |
| static CompareResult | compare (const Mesh &a, const Mesh &b) |
| Compare two meshes. | |
| static std::shared_ptr< Mesh > | create (std::shared_ptr< const Mesh > mesh, const AMP::Mesh::MeshIterator &iterator, bool isGlobal) |
| Create a subset mesh. | |
| static std::shared_ptr< Mesh > | createView (const Mesh &mesh, const AMP::Database &db) |
| Create a view of existing mesh(s) | |
| static size_t | estimateMeshSize (std::shared_ptr< const MeshParameters > params) |
| Estimate the number of elements in the mesh. | |
| static MeshIterator | getIterator (SetOP OP, const MeshIterator &, MeshIteratorEnd) |
| static MeshIterator | getIterator (SetOP OP, const MeshIterator &A, const MeshIterator &B) |
| Return an MeshIterator constructed through a set operation of two other MeshIterators. | |
| static MeshIterator | getIterator (SetOP OP, MeshIteratorEnd, const MeshIterator &) |
| static MeshIterator | getIterator (SetOP OP, MeshIteratorEnd, MeshIteratorEnd) |
| static size_t | maxProcs (std::shared_ptr< const MeshParameters > params) |
| Return the maximum number of processors that can be used with the mesh. | |
| static void | printMeshHierarchy (const Mesh &mesh, std::ostream &out=std::cout, const std::string &prefix="") |
| Print the mesh hierarchy<iostream> | |
Protected Types | |
| using | ElementList = std::vector< std::unique_ptr< MeshElement > > |
| using | ElementListPtr = std::shared_ptr< ElementList > |
Protected Member Functions | |
| void | setMeshID () |
| SubsetMesh (std::shared_ptr< const Mesh > mesh, const AMP::Mesh::MeshIterator &iterator, bool isGlobal) | |
| Default constructor. | |
Static Protected Member Functions | |
| static std::vector< double > | reduceBox (const std::vector< double > &, const AMP_MPI &) |
| Fill the domain box from the local box (requires communication) | |
Protected Attributes | |
| std::vector< int > | d_blockIdSets |
| std::map< map_id_struct, ElementListPtr > | d_blockSets |
| std::vector< int > | d_boundaryIdSets |
| std::map< map_id_struct, ElementListPtr > | d_boundarySets |
| std::vector< double > | d_box |
| The bounding box for the mesh. | |
| std::vector< double > | d_box_local |
| The bounding box for the mesh. | |
| AMP_MPI | d_comm |
| The communicator over which the mesh is stored. | |
| std::vector< std::vector< ElementListPtr > > | d_elements |
| std::shared_ptr< Geometry::Geometry > | d_geometry |
| The geometry parameters. | |
| uint8_t | d_max_gcw |
| The maximum ghost cell width. | |
| MeshID | d_meshID |
| A unique id for each mesh. | |
| std::string | d_name |
| A name for the mesh. | |
| std::shared_ptr< const Mesh > | d_parentMesh |
| MeshID | d_parentMeshID |
| std::vector< std::vector< ElementListPtr > > | d_surface |
| GeomType | GeomDim |
| The geometric dimension. | |
| std::vector< size_t > | N_global |
| uint8_t | PhysicalDim |
| The physical dimension. | |
| std::weak_ptr< AMP::Mesh::Mesh > | weak_ptr_ |
A class used to handle a subset mesh.
This class provides routines for using subset meshes.
Definition at line 18 of file SubsetMesh.h.
|
protected |
Definition at line 297 of file SubsetMesh.h.
|
protected |
Definition at line 298 of file SubsetMesh.h.
|
inherited |
|
inherited |
Pointer to MeshElement and MeshElementVector.
|
stronginherited |
|
virtual |
Deconstructor.
|
protected |
Default constructor.
|
overridevirtual |
Function to copy the mesh (allows use to properly copy the derived class)
Implements AMP::Mesh::Mesh.
|
staticinherited |
Compare two meshes.
This function compares two meshes.
| [in] | a | First mesh to compare |
| [in] | b | Second mesh to compare |
|
overridevirtual |
Check if the mesh contains the given mesh element
Reimplemented from AMP::Mesh::Mesh.
|
static |
Create a subset mesh.
This function will create the desired subset mesh. If the underlying mesh is a multimesh, it will return a multimesh of the individual subset meshes
| mesh | Mesh to subset |
| iterator | Iterator containing the desired mesh elements |
| isGlobal | Do we want the communicator to span the provided mesh |
|
staticinherited |
Create a view of existing mesh(s)
This function creates a view of existing mesh(s)
| mesh | Existing mesh(s) |
| db | Database to control the view |
|
overridevirtual |
Displace the entire mesh.
This function will displace the entire mesh by a scalar value. This function is a blocking call for the mesh communicator, and requires the same value on all processors. The displacement vector should be the size of the physical dimension.
| x | Displacement vector |
Implements AMP::Mesh::Mesh.
|
overridevirtual |
Displace the entire mesh.
This function will displace the entire mesh by displacing each node by the values provided in the vector. This function is a blocking call for the mesh communicator
| x | Displacement vector. Must have N DOFs per node where N is the physical dimension of the mesh. |
Implements AMP::Mesh::Mesh.
|
staticinherited |
Estimate the number of elements in the mesh.
This function will estimate the number of elements in the mesh. This is used so that we can properly balance the meshes across multiple processors. Ideally this should be both an accurate estimate and very fast. It should not require any communication and should not have to actually load a mesh.
| params | Parameters for constructing a mesh from an input database |
|
overridevirtual |
Get the meshIDs of all meshes that compose the current mesh (including its self) Note: This function may require global communication depending on the implementation
Reimplemented from AMP::Mesh::Mesh.
|
overridevirtual |
Get the meshIDs of all the basic meshes that compose the current mesh (excluding multimeshes and subset meshes) Note: This function may require global communication depending on the implementation
Reimplemented from AMP::Mesh::Mesh.
|
overridevirtual |
Return an MeshIterator over the given geometric objects on the given block ID set.
Return an MeshIterator over the given geometric objects on the given block ID set
| type | Geometric type to iterate over |
| id | Block id for the elements (example: block id in cubit, subdomain in libmesh) |
| gcw | Desired ghost cell width |
Reimplemented from AMP::Mesh::Mesh.
|
overridevirtual |
Return the list of all boundary ID sets in the mesh.
Return the list of all boundary ID sets in the mesh Note: depending on the mesh this routine may require global communication across the mesh.
Reimplemented from AMP::Mesh::Mesh.
|
overridevirtual |
Return an MeshIterator over the given geometric objects on the given boundary ID set.
Return an MeshIterator over the given geometric objects on the given boundary ID set
| type | Geometric type to iterate over |
| id | Boundary id for the elements (example: sideset id) |
| gcw | Desired ghost cell width |
Reimplemented from AMP::Mesh::Mesh.
|
overridevirtual |
Return the list of all boundary ID sets in the mesh.
Return the list of all boundary ID sets in the mesh Note: depending on the mesh this routine may require global communication across the mesh.
Reimplemented from AMP::Mesh::Mesh.
|
inlineinherited |
Get the bounding box for the mesh.
This function will return the bounding box for the entire mesh. The vector returned contains the box that contains the mesh in the form [ x_min x_max y_min y_max z_min z_max ].
Definition at line 408 of file Mesh.h.
References AMP::Mesh::Mesh::d_box.
|
inlineinherited |
Get the communicator for the mesh.
Definition at line 336 of file Mesh.h.
References AMP::Mesh::Mesh::d_comm.
|
inlineinherited |
Get the physical dimension of the mesh.
Definition at line 332 of file Mesh.h.
References AMP::Mesh::Mesh::PhysicalDim.
|
overridevirtual |
Return a mesh element given it's id.
This function queries the mesh to get an element given the mesh id. This function is only required to return an element if the id is local. Ideally, this should be done in O(1) time, but the implementation is up to the underlying mesh. The base class provides a basic implementation, but uses mesh iterators and requires O(N) time on the number of elements in the mesh.
| id | Mesh element id we are requesting. |
Reimplemented from AMP::Mesh::Mesh.
|
overridevirtual |
Return the parent elements of the given mesh element.
This function queries the mesh to get an element given the mesh id, then returns the parent elements that have the element as a child
| elem | Mesh element of interest |
| type | Element type of the parents requested |
Reimplemented from AMP::Mesh::Mesh.
|
inlineinherited |
Return the geometry of the mesh.
This function will return the geometry for the mesh if it exists. Not all meshes will have a geometry associated with them.
Definition at line 106 of file Mesh.h.
References AMP::Mesh::Mesh::d_geometry.
|
inlineinherited |
Return the geometry of the mesh.
This function will return the geometry for the mesh if it exists. Not all meshes will have a geometry associated with them.
Definition at line 114 of file Mesh.h.
References AMP::Mesh::Mesh::d_geometry.
|
inlineinherited |
Get the largest geometric type in the mesh.
Definition at line 328 of file Mesh.h.
References AMP::Mesh::Mesh::GeomDim.
|
overridevirtual |
Return an MeshIterator over the given geometric objects.
Return an MeshIterator over the given geometric objects
| type | Geometric type to iterate over |
| gcw | Desired ghost cell width |
Reimplemented from AMP::Mesh::Mesh.
|
staticinherited |
|
staticinherited |
Return an MeshIterator constructed through a set operation of two other MeshIterators.
Return an MeshIterator constructed through a set operation of two other MeshIterators.
| OP | Set operation to perform. SetOP::Union - Perform a union of the iterators ( A U B ) SetOP::Intersection - Perform an intersection of the iterators ( A n B ) SetOP::Complement - Perform a compliment of the iterators ( A - B ) |
| A | Pointer to MeshIterator A |
| B | Pointer to MeshIterator B |
|
staticinherited |
|
staticinherited |
|
overridevirtual |
Get the meshIDs of all the basic meshes that compose the current mesh (excluding multimeshes and subset meshes) on the current processor.
Reimplemented from AMP::Mesh::Mesh.
|
inlineinherited |
Get the bounding box for the local part of the mesh.
This function will return the bounding box for the local part of the mesh. The vector returned contains the box that contains the mesh in the form [ x_min x_max y_min y_max z_min z_max ].
Definition at line 417 of file Mesh.h.
References AMP::Mesh::Mesh::d_box_local.
|
overridevirtual |
Get the meshIDs of all meshes that compose the current mesh (including its self) on the current processor.
Reimplemented from AMP::Mesh::Mesh.
|
inlineinherited |
Get the maximum ghost width.
Definition at line 340 of file Mesh.h.
References AMP::Mesh::Mesh::d_max_gcw.
|
inlinevirtualinherited |
|
virtualinherited |
Get a vector of the coordinates of the nodes.
This function will return a const vector containing the coordinates of all the nodes.
| name | Name of the vector |
| gcw | Desired ghost cell width |
|
overridevirtual |
Return an MeshIterator over the given geometric objects on the surface.
Return an MeshIterator over the given geometric objects on the surface
| type | Geometric type to iterate over |
| gcw | Desired ghost cell width |
Reimplemented from AMP::Mesh::Mesh.
|
inlineoverridevirtual |
Is the current mesh a base mesh.
Reimplemented from AMP::Mesh::Mesh.
Definition at line 191 of file SubsetMesh.h.
|
overridevirtual |
Check if an element is in the mesh.
This function queries the mesh to determine if the given element is a member of the mesh
| id | Mesh element id we are querying. |
Reimplemented from AMP::Mesh::Mesh.
|
overridevirtual |
Check if elements are in the mesh.
This function queries the mesh to determine if each of the given elements is a member of the mesh and returns an iterator over those elements
| it | Mesh element id we are querying. |
Reimplemented from AMP::Mesh::Mesh.
|
overridevirtual |
Is the mesh movable.
This function will check if the mesh can be displaced. It will return 0 if the mesh cannont be moved, 1 if it can be displaced, and 2 if the individual nodes can be moved.
Implements AMP::Mesh::Mesh.
|
staticinherited |
Return the maximum number of processors that can be used with the mesh.
This function will return the maximum number of processors that can be used with the mesh.
| params | Parameters for constructing a mesh from an input database |
|
overridevirtual |
Return a string with the mesh class name.
Implements AMP::Mesh::Mesh.
|
inlineinherited |
|
overridevirtual |
Reimplemented from AMP::Mesh::Mesh.
|
overridevirtual |
Reimplemented from AMP::Mesh::Mesh.
|
overridevirtual |
Reimplemented from AMP::Mesh::Mesh.
|
inlineinherited |
Check if two meshes are not equal.
Definition at line 356 of file Mesh.h.
References AMP::Mesh::Mesh::operator==().
|
overridevirtual |
Check if two meshes are equal.
Implements AMP::Mesh::Mesh.
|
overridevirtual |
Identify if the position has moved.
This function will return a hash that can be used to identify if the mesh has been moved. Any time that displaceMesh is called, the hash value should change. There is no requirement that dispacing a mesh and returning it back to the original position will return the original hash.
Implements AMP::Mesh::Mesh.
|
staticinherited |
Print the mesh hierarchy<iostream>
|
staticprotectedinherited |
Fill the domain box from the local box (requires communication)
|
virtualinherited |
Register child objects.
This function register child objects if necessary
| manager | Restart manager |
Reimplemented in AMP::Mesh::MultiMesh.
|
protectedinherited |
A function to create a unique id for the mesh (requires the comm to be set) Note: this requires a global communication across the mesh communicator. Note: this function is NOT thread safe, and will need to be modified before threads are used.
|
inlinevirtualinherited |
|
inlineinherited |
Definition at line 28 of file enable_shared_from_this.h.
|
inlineinherited |
Definition at line 46 of file enable_shared_from_this.h.
|
virtual |
Subset a mesh given a MeshIterator.
This function will subset a mesh over a given iterator. This will return a new mesh object.
| iterator | MeshIterator used to subset |
| isGlobal | Is the new subset mesh global over the entire mesh (true,default), or do we only want to keep the local mesh (false) |
Reimplemented from AMP::Mesh::Mesh.
Subset a mesh given another mesh.
This function will subset a mesh given another mesh
| mesh | Mesh used to subset |
Reimplemented from AMP::Mesh::Mesh.
Subset a mesh given a MeshID.
This function will return the mesh with the given meshID. Note: for multimeshes, this will return the mesh with the given id. For a single mesh this will return a pointer to itself if the meshID matches the meshID of the mesh, and a null pointer otherwise.
| meshID | MeshID of the desired mesh |
Reimplemented from AMP::Mesh::Mesh.
Subset a mesh given a MeshID.
This function will return the mesh with the given meshID. Note: for multimeshes, this will return the mesh with the given id. For a single mesh this will return a pointer to itself if the meshID matches the meshID of the mesh, and a null pointer otherwise.
| meshID | MeshID of the desired mesh |
Reimplemented from AMP::Mesh::Mesh.
|
virtual |
Subset a mesh given a mesh name.
This function will return the mesh with the given name. For a single mesh this will return a pointer to itself if the mesh name matches the name of the mesh, and a null pointer otherwise. Note: The mesh name is not guaranteed to be unique. If there are multiple meshes with the same name, all meshed with the given name will be returned within a new multimesh. It is strongly recommended to use the meshID when possible.
| name | Name of the desired mesh |
Reimplemented from AMP::Mesh::Mesh.
|
overridevirtual |
Subset a mesh given a mesh name.
This function will return the mesh with the given name. For a single mesh this will return a pointer to itself if the mesh name matches the name of the mesh, and a null pointer otherwise. Note: The mesh name is not guaranteed to be unique. If there are multiple meshes with the same name, all meshes with the given name will be returned within a new multimesh. It is strongly recommended to use the meshID when possible.
| name | Name of the desired mesh |
Reimplemented from AMP::Mesh::Mesh.
|
overridevirtual |
Write restart data to file.
This function will write the mesh to an HDF5 file
| fid | File identifier to write |
Reimplemented from AMP::Mesh::Mesh.
|
protected |
Definition at line 346 of file SubsetMesh.h.
|
protected |
Definition at line 347 of file SubsetMesh.h.
|
protected |
Definition at line 344 of file SubsetMesh.h.
|
protected |
Definition at line 345 of file SubsetMesh.h.
|
protectedinherited |
The bounding box for the mesh.
Definition at line 564 of file Mesh.h.
Referenced by AMP::Mesh::Mesh::getBoundingBox().
|
protectedinherited |
The bounding box for the mesh.
Definition at line 565 of file Mesh.h.
Referenced by AMP::Mesh::Mesh::getLocalBoundingBox().
|
protectedinherited |
The communicator over which the mesh is stored.
Definition at line 562 of file Mesh.h.
Referenced by AMP::Mesh::Mesh::getComm().
|
protected |
Definition at line 342 of file SubsetMesh.h.
|
protectedinherited |
The geometry parameters.
Definition at line 566 of file Mesh.h.
Referenced by AMP::Mesh::Mesh::getGeometry(), and AMP::Mesh::Mesh::getGeometry().
|
protectedinherited |
The maximum ghost cell width.
Definition at line 560 of file Mesh.h.
Referenced by AMP::Mesh::Mesh::getMaxGhostWidth().
|
protectedinherited |
A unique id for each mesh.
Definition at line 561 of file Mesh.h.
Referenced by AMP::Mesh::Mesh::meshID().
|
protectedinherited |
A name for the mesh.
Definition at line 563 of file Mesh.h.
Referenced by AMP::Mesh::Mesh::getName(), and AMP::Mesh::Mesh::setName().
|
protected |
Definition at line 339 of file SubsetMesh.h.
|
protected |
Definition at line 340 of file SubsetMesh.h.
|
protected |
Definition at line 343 of file SubsetMesh.h.
|
protectedinherited |
The geometric dimension.
Definition at line 558 of file Mesh.h.
Referenced by AMP::Mesh::Mesh::getGeomType().
|
protected |
Definition at line 341 of file SubsetMesh.h.
|
protectedinherited |
The physical dimension.
Definition at line 559 of file Mesh.h.
Referenced by AMP::Mesh::Mesh::getDim().
|
mutableprotectedinherited |
Definition at line 69 of file enable_shared_from_this.h.
|
Advanced Multi-Physics (AMP) Oak Ridge National Laboratory Idaho National Laboratory Los Alamos National Laboratory |
This page automatically produced from the source code by Last updated: Tue Mar 10 2026 13:06:43. Comments on this page |