39 #include <boost/shared_ptr.hpp> 41 #include <lifev/core/LifeV.hpp> 43 #include <lifev/core/fem/GeometricMap.hpp> 44 #include <lifev/core/fem/ReferenceFEScalar.hpp> 45 #include <lifev/core/fem/ReferenceFEHdiv.hpp> 46 #include <lifev/core/fem/ReferenceFEHybrid.hpp> 47 #include <lifev/core/fem/QuadratureRule.hpp> 48 #include <lifev/core/fem/DOF.hpp> 50 #include <lifev/eta/fem/MeshGeometricMap.hpp> 51 #include <lifev/core/mesh/MeshPartitioner.hpp> 92 template<
typename MeshType,
typename MapType,
UInt SpaceDim,
UInt FieldDim>
101 typedef MeshType mesh_Type;
104 typedef MapType map_Type;
107 typedef std::shared_ptr<mesh_Type> meshPtr_Type;
110 typedef typename map_Type::commPtr_Type commPtr_Type;
119 enum {space_dim = SpaceDim};
122 enum {field_dim = FieldDim};
137 ETFESpace (
const meshPtr_Type& mesh,
140 commPtr_Type& commptr);
151 ETFESpace (
const meshPtr_Type& mesh,
153 commPtr_Type& commptr);
162 ETFESpace (
const MeshPartitioner<MeshType>& meshPartitioner,
165 commPtr_Type& commptr);
176 ETFESpace (
const MeshPartitioner<MeshType>& meshPartitioner,
178 commPtr_Type& commptr);
185 ETFESpace (
const ETFESpace<MeshType, MapType, SpaceDim, FieldDim>& otherSpace);
201 meshPtr_Type mesh()
const 212 return *M_referenceFE;
221 return *M_geometricMap;
237 const MapType& map()
const 279 void createMap (
const commPtr_Type& commptr);
309 template<
typename MeshType,
typename MapType,
UInt SpaceDim,
UInt FieldDim>
310 ETFESpace<MeshType, MapType, SpaceDim, FieldDim>::
314 M_referenceFE (refFE),
315 M_geometricMap (geoMap),
316 M_dof (
new DOF ( *M_mesh, *M_referenceFE ) ),
317 M_map (
new MapType() )
322 template<
typename MeshType,
typename MapType,
UInt SpaceDim,
UInt FieldDim>
323 ETFESpace<MeshType, MapType, SpaceDim, FieldDim>::
324 ETFESpace (
const meshPtr_Type& mesh,
const ReferenceFE* refFE, commPtr_Type& commptr)
327 M_referenceFE (refFE),
328 M_geometricMap (&geometricMapFromMesh<MeshType>() ),
329 M_dof (
new DOF ( *M_mesh, *M_referenceFE ) ),
330 M_map (
new MapType() )
336 template<
typename MeshType,
typename MapType,
UInt SpaceDim,
UInt FieldDim>
337 ETFESpace<MeshType, MapType, SpaceDim, FieldDim>::
338 ETFESpace (
const MeshPartitioner<MeshType>& meshPartitioner,
341 commPtr_Type& commptr)
342 : M_mesh (meshPartitioner.meshPartition() ),
343 M_referenceFE (refFE),
344 M_geometricMap (geoMap),
345 M_dof (
new DOF ( *M_mesh, *M_referenceFE ) ),
346 M_map (
new MapType() )
351 template<
typename MeshType,
typename MapType,
UInt SpaceDim,
UInt FieldDim>
352 ETFESpace<MeshType, MapType, SpaceDim, FieldDim>::
353 ETFESpace (
const MeshPartitioner<MeshType>& meshPartitioner,
355 commPtr_Type& commptr)
356 : M_mesh (meshPartitioner.meshPartition() ),
357 M_referenceFE (refFE),
358 M_geometricMap ( &geometricMapFromMesh<MeshType>() ),
359 M_dof (
new DOF ( *M_mesh, *M_referenceFE ) ),
360 M_map (
new MapType() )
365 template<
typename MeshType,
typename MapType,
UInt SpaceDim,
UInt FieldDim>
366 ETFESpace<MeshType, MapType, SpaceDim, FieldDim>::
367 ETFESpace (
const ETFESpace<MeshType, MapType, SpaceDim, FieldDim>& otherSpace)
369 : M_mesh (otherSpace.M_mesh),
370 M_referenceFE (otherSpace.M_referenceFE),
371 M_geometricMap (otherSpace.M_geometricMap),
372 M_dof (otherSpace.M_dof),
373 M_map (otherSpace.M_map)
376 template<
typename MeshType,
typename MapType,
UInt SpaceDim,
UInt FieldDim>
378 ETFESpace<MeshType, MapType, SpaceDim, FieldDim>::
379 createMap (
const commPtr_Type& commptr)
382 typename MapType::mapData_Type mapData =
this->M_dof->createMapData ( *
this->M_mesh );
384 MapType map ( mapData, commptr );
386 for (
UInt ii (0); ii < FieldDim; ++ii )
GeometricMap - Structure for the geometrical mapping.
void updateInverseJacobian(const UInt &iQuadPt)
The class for a reference Lagrangian finite element.
uint32_type UInt
generic unsigned integer (used mainly for addressing)