Non Indexed Hexahedron mesh IJK abstract interface. More...
#include <MeshVizXLM/mesh/MiVolumeMeshVertexHexahedronIjk.h>
Public Member Functions | |
virtual const MiGeometryHexahedronIjk & | getGeometry () const =0 |
virtual const MiVolumeMeshVertexHexahedronIjk * | getNewClone () const |
Protected Member Functions | |
virtual std::ostream & | toStream (std::ostream &s) const |
This interface defines a structured mesh as a 3D grid of hexahedrons. Each hexahedron is defined by 8 explicit coordinates. This mesh type does not use indexed vertices, so the topology of the mesh is just the I, J and K dimensions of the 3D grid (see MiTopologyIjk).
The geometry of this mesh explicitly defines the 8 vertices for each hexahedron (i,j,k) where i,j,k are indices of the hexahedron in the grid. As each hexahedron is defined by its own 8 vertices, this type of mesh is useful to define "faults" as in a petroleum reservoir model. For instance if the top vertices of the hexahedron (i,j,k) are not equal to the bottom vertices of the hexahedron (i,j,k+1), a fault exists between these 2 cells.
This type of mesh is similar to an MiVolumeMeshCurvilinear except that the geometry explicitly defines every vertex of every cell. If all hexahedrons in a MiVolumeMeshVertexHexahedronIjk mesh share their vertices with their adjacent cells, then a MiVolumeMeshCurvilinear is more appropriate and is more efficient.
This type of mesh is also similar to MiVolumeMeshHexahedronIjk, but each hexahedron is defined by 8 coordinates instead of 8 indices.
As no vertex indices are defined, this type of mesh can handle only PER_CELL data sets (see MiDataSet::getBinding()). Extractors will throw an std::exception if trying to use a PER_NODE binding on data sets.
virtual const MiGeometryHexahedronIjk& MiVolumeMeshVertexHexahedronIjk::getGeometry | ( | ) | const [pure virtual] |
Returns the structured geometry of this mesh.
Implemented in MbVertexHexahedronMeshIjk< _CoordT, _ScalarT, _Vec3T, _LAYOUT >, and MyVolumeMeshVertexHexahedronIjk.
virtual const MiVolumeMeshVertexHexahedronIjk* MiVolumeMeshVertexHexahedronIjk::getNewClone | ( | ) | const [inline, virtual] |
Gets a new clone of this mesh. This method creates and returns a new instance of the class of this object by copying all fields of this instance. The application is responsible for deleting the new instance returned. This method is not pure virtual because it is not always necessary to get a copy of a mesh. However the mesh instances returned by any extraction method are always cloneable. By default this method throws an exception of type MiAbstractMethodError.
virtual std::ostream& MiVolumeMeshVertexHexahedronIjk::toStream | ( | std::ostream & | s | ) | const [inline, protected, virtual] |
Performs an output operation on a stream which is returned afterward. This method is protected since only called by the output operator <<. This method is not pure virtual and output by default the geometry and topology of a mesh. Whenever a different output is needed, this method can be implemented in the subclass to get a different output format. No std::ostream& operator << needs to be defined in any subclass. This allows you to benefit from the virtual inheritance when using the output operator on an abstract class.
Reimplemented from MiMeshIjk.