00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _MBVOLUMEMESHRECTILINEAR_H
00025 #define _MBVOLUMEMESHRECTILINEAR_H
00026
00027 #ifdef _WIN32
00028 # pragma warning( push )
00029 # pragma warning(disable:4250)
00030 # pragma warning(disable:4251)
00031 #endif
00032
00033 #include <MeshVizXLM/mesh/MiVolumeMeshRectilinear.h>
00034 #include <mesh/volumes/MbMeshStructuredIjk.h>
00035
00036 #include <geometry/MbVolumeGeometryRectilinear.h>
00037
00048 template <typename _CoordT=double, typename _ScalarT=double, typename _Vec3T=MbVec3d, MiMeshIjk::StorageLayout _Layout = MiMeshIjk::LAYOUT_KJI>
00049 class MbVolumeMeshRectilinear : virtual public MiVolumeMeshRectilinear, public MbMeshStructuredIjk<_ScalarT,_Vec3T,_Layout>
00050 {
00051 public:
00053 template <typename _NodeIdIter>
00054 MbVolumeMeshRectilinear(size_t numCellI, size_t numCellJ, size_t numCellK,
00055 _NodeIdIter xBegin,_NodeIdIter xEnd,
00056 _NodeIdIter yBegin,_NodeIdIter yEnd,
00057 _NodeIdIter zBegin,_NodeIdIter zEnd)
00058 : MbMeshStructuredIjk<_ScalarT,_Vec3T,_Layout>(numCellI,numCellJ,numCellK),
00059 m_geometry(xBegin,xEnd,yBegin,yEnd,zBegin,zEnd)
00060 {
00061 }
00062
00064 virtual const MiVolumeGeometryRectilinear& getGeometry() const
00065 {
00066 return m_geometry;
00067 }
00068
00069 void touch()
00070 {
00071 this->m_topology.touch();
00072 this->m_geometry.touch();
00073 }
00074
00075 private:
00076 virtual std::ostream& toStream(std::ostream& s) const;
00077
00078 MbVolumeGeometryRectilinear<_CoordT> m_geometry;
00079
00080 };
00081
00082
00083 template <typename _CoordT, typename _ScalarT, typename _Vec3T, MiMeshIjk::StorageLayout _Layout>
00084 inline std::ostream&
00085 MbVolumeMeshRectilinear<_CoordT,_ScalarT,_Vec3T,_Layout>::toStream(std::ostream& s) const
00086 {
00087 MiVolumeMeshRectilinear::toStream(s);
00088 MbMeshStructuredIjk<_ScalarT,_Vec3T,_Layout>::toStream(s);
00089 return s;
00090 }
00091
00092
00093 #ifdef _WIN32
00094 # pragma warning( pop )
00095 #endif
00096
00097 #endif
00098
00099
00100