OGS
NumLib::detail Namespace Reference

Detailed Description

Classes

struct  Line
 
struct  LineByLocationComparator
 
struct  LineByLocationAndComponentComparator
 
struct  ByLocation
 
struct  ByLocationAndComponent
 
struct  ByComponent
 
struct  ByGlobalIndex
 
struct  FieldType
 
struct  ShapeDataFieldType
 

Typedefs

using ComponentGlobalIndexDict = boost::multi_index::multi_index_container< Line, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::tag< ByLocationAndComponent >, boost::multi_index::identity< Line >, LineByLocationAndComponentComparator >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< ByLocation >, boost::multi_index::identity< Line >, LineByLocationComparator >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< ByComponent >, boost::multi_index::member< Line, int, &Line::comp_id > >, boost::multi_index::ordered_non_unique< boost::multi_index::tag< ByGlobalIndex >, boost::multi_index::member< Line, GlobalIndexType, &Line::global_index > >> >
 

Functions

template<class T_MESH_ELEMENT , class T_SHAPE_FUNC , class T_SHAPE_MATRICES >
void computeMappingMatrices (const T_MESH_ELEMENT &, const double *natural_pt, const MeshLib::ElementCoordinatesMappingLocal &, T_SHAPE_MATRICES &shapemat, FieldType< ShapeMatrixType::N >)
 
template<class T_MESH_ELEMENT , class T_SHAPE_FUNC , class T_SHAPE_MATRICES >
void computeMappingMatrices (const T_MESH_ELEMENT &, [[maybe_unused]] const double *natural_pt, const MeshLib::ElementCoordinatesMappingLocal &, [[maybe_unused]] T_SHAPE_MATRICES &shapemat, FieldType< ShapeMatrixType::DNDR >)
 
static void checkJacobianDeterminant (const double detJ, MeshLib::Element const &element)
 
template<class T_MESH_ELEMENT , class T_SHAPE_FUNC , class T_SHAPE_MATRICES >
void computeMappingMatrices (const T_MESH_ELEMENT &ele, [[maybe_unused]] const double *natural_pt, const MeshLib::ElementCoordinatesMappingLocal &ele_local_coord, T_SHAPE_MATRICES &shapemat, FieldType< ShapeMatrixType::DNDR_J >)
 
template<class T_MESH_ELEMENT , class T_SHAPE_FUNC , class T_SHAPE_MATRICES >
void computeMappingMatrices (const T_MESH_ELEMENT &ele, const double *natural_pt, const MeshLib::ElementCoordinatesMappingLocal &ele_local_coord, T_SHAPE_MATRICES &shapemat, FieldType< ShapeMatrixType::N_J >)
 
template<class T_MESH_ELEMENT , class T_SHAPE_FUNC , class T_SHAPE_MATRICES >
void computeMappingMatrices (const T_MESH_ELEMENT &ele, const double *natural_pt, const MeshLib::ElementCoordinatesMappingLocal &ele_local_coord, T_SHAPE_MATRICES &shapemat, FieldType< ShapeMatrixType::DNDX >)
 
template<class T_MESH_ELEMENT , class T_SHAPE_FUNC , class T_SHAPE_MATRICES >
void computeMappingMatrices (const T_MESH_ELEMENT &ele, const double *natural_pt, const MeshLib::ElementCoordinatesMappingLocal &ele_local_coord, T_SHAPE_MATRICES &shapemat, FieldType< ShapeMatrixType::ALL >)
 
template<class T_MESH_ELEMENT , class T_SHAPE_FUNC , class T_SHAPE_MATRICES , ShapeMatrixType T_SHAPE_MATRIX_TYPE>
void naturalCoordinatesMappingComputeShapeMatrices (const T_MESH_ELEMENT &ele, const double *natural_pt, T_SHAPE_MATRICES &shapemat, const unsigned global_dim)
 Used to explicitly instantiate the NaturalCoordinatesMapping class template. More...
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN (HexRule20, ShapeHex20)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN (HexRule8, ShapeHex8)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN (LineRule2, ShapeLine2)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN (LineRule3, ShapeLine3)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN (PointRule1, ShapePoint1)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN (PrismRule15, ShapePrism15)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN (PrismRule6, ShapePrism6)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN (PyramidRule13, ShapePyra13)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN (PyramidRule5, ShapePyra5)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN (QuadRule4, ShapeQuad4)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN (QuadRule8, ShapeQuad8)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN (QuadRule9, ShapeQuad9)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN (TetRule10, ShapeTet10)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN (TetRule4, ShapeTet4)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN (TriRule3, ShapeTri3)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN (TriRule6, ShapeTri6)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (HexRule20, ShapeHex20, 1)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (HexRule8, ShapeHex8, 1)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (LineRule2, ShapeLine2, 1)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (LineRule3, ShapeLine3, 1)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (PointRule1, ShapePoint1, 1)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (PrismRule15, ShapePrism15, 1)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (PrismRule6, ShapePrism6, 1)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (PyramidRule13, ShapePyra13, 1)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (PyramidRule5, ShapePyra5, 1)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (QuadRule4, ShapeQuad4, 1)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (QuadRule8, ShapeQuad8, 1)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (QuadRule9, ShapeQuad9, 1)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (TetRule10, ShapeTet10, 1)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (TetRule4, ShapeTet4, 1)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (TriRule3, ShapeTri3, 1)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (TriRule6, ShapeTri6, 1)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (HexRule20, ShapeHex20, 2)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (HexRule8, ShapeHex8, 2)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (LineRule2, ShapeLine2, 2)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (LineRule3, ShapeLine3, 2)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (PointRule1, ShapePoint1, 2)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (PrismRule15, ShapePrism15, 2)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (PrismRule6, ShapePrism6, 2)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (PyramidRule13, ShapePyra13, 2)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (PyramidRule5, ShapePyra5, 2)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (QuadRule4, ShapeQuad4, 2)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (QuadRule8, ShapeQuad8, 2)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (QuadRule9, ShapeQuad9, 2)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (TetRule10, ShapeTet10, 2)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (TetRule4, ShapeTet4, 2)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (TriRule3, ShapeTri3, 2)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (TriRule6, ShapeTri6, 2)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (HexRule20, ShapeHex20, 3)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (HexRule8, ShapeHex8, 3)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (LineRule2, ShapeLine2, 3)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (LineRule3, ShapeLine3, 3)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (PointRule1, ShapePoint1, 3)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (PrismRule15, ShapePrism15, 3)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (PrismRule6, ShapePrism6, 3)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (PyramidRule13, ShapePyra13, 3)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (PyramidRule5, ShapePyra5, 3)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (QuadRule4, ShapeQuad4, 3)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (QuadRule8, ShapeQuad8, 3)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (QuadRule9, ShapeQuad9, 3)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (TetRule10, ShapeTet10, 3)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (TetRule4, ShapeTet4, 3)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (TriRule3, ShapeTri3, 3)
 
 OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX (TriRule6, ShapeTri6, 3)
 
template<class T >
void setMatrixZero (T &mat)
 
template<class T >
void setVectorZero (T &vec)
 
template<class T_N , class T_DNDR , class T_J , class T_DNDX >
void setZero (ShapeMatrices< T_N, T_DNDR, T_J, T_DNDX > &shape, ShapeDataFieldType< ShapeMatrixType::N >)
 
template<class T_N , class T_DNDR , class T_J , class T_DNDX >
void setZero (ShapeMatrices< T_N, T_DNDR, T_J, T_DNDX > &shape, ShapeDataFieldType< ShapeMatrixType::DNDR >)
 
template<class T_N , class T_DNDR , class T_J , class T_DNDX >
void setZero (ShapeMatrices< T_N, T_DNDR, T_J, T_DNDX > &shape, ShapeDataFieldType< ShapeMatrixType::DNDR_J >)
 
template<class T_N , class T_DNDR , class T_J , class T_DNDX >
void setZero (ShapeMatrices< T_N, T_DNDR, T_J, T_DNDX > &shape, ShapeDataFieldType< ShapeMatrixType::N_J >)
 
template<class T_N , class T_DNDR , class T_J , class T_DNDX >
void setZero (ShapeMatrices< T_N, T_DNDR, T_J, T_DNDX > &shape, ShapeDataFieldType< ShapeMatrixType::DNDX >)
 
template<class T_N , class T_DNDR , class T_J , class T_DNDX >
void setZero (ShapeMatrices< T_N, T_DNDR, T_J, T_DNDX > &shape, ShapeDataFieldType< ShapeMatrixType::ALL >)
 
template<unsigned DOFOffset, typename NodalValues , typename ShapeMatrix >
void shapeFunctionInterpolate (const NodalValues &, const ShapeMatrix &)
 
template<unsigned DOFOffset, typename NodalValues , typename ShapeMatrix , typename... ScalarTypes>
void shapeFunctionInterpolate (const NodalValues &nodal_values, const ShapeMatrix &shape_matrix_N, double &interpolated_value, ScalarTypes &... interpolated_values)
 

Typedef Documentation

◆ ComponentGlobalIndexDict

using NumLib::detail::ComponentGlobalIndexDict = typedef boost::multi_index::multi_index_container< Line, boost::multi_index::indexed_by< boost::multi_index::ordered_unique< boost::multi_index::tag<ByLocationAndComponent>, boost::multi_index::identity<Line>, LineByLocationAndComponentComparator>, boost::multi_index::ordered_non_unique< boost::multi_index::tag<ByLocation>, boost::multi_index::identity<Line>, LineByLocationComparator>, boost::multi_index::ordered_non_unique< boost::multi_index::tag<ByComponent>, boost::multi_index::member<Line, int, &Line::comp_id> >, boost::multi_index::ordered_non_unique< boost::multi_index::tag<ByGlobalIndex>, boost::multi_index::member<Line, GlobalIndexType, &Line::global_index> >> >

Definition at line 104 of file ComponentGlobalIndexDict.h.

Function Documentation

◆ checkJacobianDeterminant()

static void NumLib::detail::checkJacobianDeterminant ( const double  detJ,
MeshLib::Element const &  element 
)
static

Definition at line 91 of file NaturalCoordinatesMapping.cpp.

93 {
94  if (detJ > 0)
95  { // The usual case
96  return;
97  }
98 
99  if (detJ < 0)
100  {
101  ERR("det J = {:g} is negative for element {:d}.",
102  detJ,
103  element.getID());
104 #ifndef NDEBUG
105  std::cerr << element << "\n";
106 #endif // NDEBUG
107  OGS_FATAL(
108  "Please check whether the node numbering of the element is correct,"
109  "or additional elements (like boundary elements) are still present "
110  "in the mesh.");
111  }
112 
113  if (detJ == 0)
114  {
115  ERR("det J is zero for element {:d}.", element.getID());
116 #ifndef NDEBUG
117  std::cerr << element << "\n";
118 #endif // NDEBUG
119  OGS_FATAL(
120  "Please check whether:\n"
121  "\t the element nodes may have the same coordinates,\n"
122  "\t or the coordinates of all nodes are not given on the x-axis "
123  "for a 1D problem or in the xy-plane in the 2D case.\n"
124  "The first case can occur, if not all boundary elements"
125  "were removed from the bulk mesh.");
126  }
127 }
#define OGS_FATAL(...)
Definition: Error.h:26
void ERR(char const *fmt, Args const &... args)
Definition: Logging.h:42

References ERR(), MeshLib::Element::getID(), and OGS_FATAL.

Referenced by computeMappingMatrices().

◆ computeMappingMatrices() [1/6]

template<class T_MESH_ELEMENT , class T_SHAPE_FUNC , class T_SHAPE_MATRICES >
void NumLib::detail::computeMappingMatrices ( const T_MESH_ELEMENT &  ,
[[maybe_unused] ] const double *  natural_pt,
const MeshLib::ElementCoordinatesMappingLocal ,
[[maybe_unused] ] T_SHAPE_MATRICES &  shapemat,
FieldType< ShapeMatrixType::DNDR  
)
inline

Definition at line 77 of file NaturalCoordinatesMapping.cpp.

83 {
84  if constexpr (T_SHAPE_FUNC::DIM != 0)
85  {
86  double* const dNdr = shapemat.dNdr.data();
87  T_SHAPE_FUNC::computeGradShapeFunction(natural_pt, dNdr);
88  }
89 }

◆ computeMappingMatrices() [2/6]

template<class T_MESH_ELEMENT , class T_SHAPE_FUNC , class T_SHAPE_MATRICES >
void NumLib::detail::computeMappingMatrices ( const T_MESH_ELEMENT &  ,
const double *  natural_pt,
const MeshLib::ElementCoordinatesMappingLocal ,
T_SHAPE_MATRICES &  shapemat,
FieldType< ShapeMatrixType::N  
)
inline

Definition at line 66 of file NaturalCoordinatesMapping.cpp.

72 {
73  T_SHAPE_FUNC::computeShapeFunction(natural_pt, shapemat.N);
74 }

◆ computeMappingMatrices() [3/6]

template<class T_MESH_ELEMENT , class T_SHAPE_FUNC , class T_SHAPE_MATRICES >
void NumLib::detail::computeMappingMatrices ( const T_MESH_ELEMENT &  ele,
[[maybe_unused] ] const double *  natural_pt,
const MeshLib::ElementCoordinatesMappingLocal ele_local_coord,
T_SHAPE_MATRICES &  shapemat,
FieldType< ShapeMatrixType::DNDR_J  
)
inline

Definition at line 130 of file NaturalCoordinatesMapping.cpp.

136 {
137  if constexpr (T_SHAPE_FUNC::DIM != 0)
138  {
139  computeMappingMatrices<T_MESH_ELEMENT, T_SHAPE_FUNC, T_SHAPE_MATRICES>(
140  ele,
141  natural_pt,
142  ele_local_coord,
143  shapemat,
144  FieldType<ShapeMatrixType::DNDR>());
145 
146  auto const dim = T_MESH_ELEMENT::dimension;
147  auto const nnodes = T_MESH_ELEMENT::n_all_nodes;
148 
149  // jacobian: J=[dx/dr dy/dr // dx/ds dy/ds]
150  for (auto k = decltype(nnodes){0}; k < nnodes; k++)
151  {
152  const MathLib::Point3d& mapped_pt =
153  ele_local_coord.getMappedCoordinates(k);
154  // outer product of dNdr and mapped_pt for a particular node
155  for (auto i_r = decltype(dim){0}; i_r < dim; i_r++)
156  {
157  for (auto j_x = decltype(dim){0}; j_x < dim; j_x++)
158  {
159  shapemat.J(i_r, j_x) +=
160  shapemat.dNdr(i_r, k) * mapped_pt[j_x];
161  }
162  }
163  }
164 
165  shapemat.detJ = shapemat.J.determinant();
166  checkJacobianDeterminant(shapemat.detJ, ele);
167  }
168  else
169  {
170  shapemat.detJ = 1.0;
171  }
172 }
MathLib::Point3d const & getMappedCoordinates(std::size_t node_id) const
return mapped coordinates of the node
static void checkJacobianDeterminant(const double detJ, MeshLib::Element const &element)

References checkJacobianDeterminant(), and MeshLib::ElementCoordinatesMappingLocal::getMappedCoordinates().

◆ computeMappingMatrices() [4/6]

template<class T_MESH_ELEMENT , class T_SHAPE_FUNC , class T_SHAPE_MATRICES >
void NumLib::detail::computeMappingMatrices ( const T_MESH_ELEMENT &  ele,
const double *  natural_pt,
const MeshLib::ElementCoordinatesMappingLocal ele_local_coord,
T_SHAPE_MATRICES &  shapemat,
FieldType< ShapeMatrixType::ALL  
)
inline

Definition at line 225 of file NaturalCoordinatesMapping.cpp.

231 {
232  computeMappingMatrices<T_MESH_ELEMENT, T_SHAPE_FUNC, T_SHAPE_MATRICES>(
233  ele,
234  natural_pt,
235  ele_local_coord,
236  shapemat,
237  FieldType<ShapeMatrixType::N>());
238  computeMappingMatrices<T_MESH_ELEMENT, T_SHAPE_FUNC, T_SHAPE_MATRICES>(
239  ele,
240  natural_pt,
241  ele_local_coord,
242  shapemat,
243  FieldType<ShapeMatrixType::DNDX>());
244 }

◆ computeMappingMatrices() [5/6]

template<class T_MESH_ELEMENT , class T_SHAPE_FUNC , class T_SHAPE_MATRICES >
void NumLib::detail::computeMappingMatrices ( const T_MESH_ELEMENT &  ele,
const double *  natural_pt,
const MeshLib::ElementCoordinatesMappingLocal ele_local_coord,
T_SHAPE_MATRICES &  shapemat,
FieldType< ShapeMatrixType::DNDX  
)
inline

Definition at line 197 of file NaturalCoordinatesMapping.cpp.

203 {
204  computeMappingMatrices<T_MESH_ELEMENT, T_SHAPE_FUNC, T_SHAPE_MATRICES>(
205  ele,
206  natural_pt,
207  ele_local_coord,
208  shapemat,
209  FieldType<ShapeMatrixType::DNDR_J>());
210  if constexpr (T_SHAPE_FUNC::DIM != 0)
211  {
212  checkJacobianDeterminant(shapemat.detJ, ele);
213 
214  // J^-1, dshape/dx
215  shapemat.invJ.noalias() = shapemat.J.inverse();
216 
217  assert(shapemat.dNdr.rows() == ele.getDimension());
218  shapemat.dNdx
219  .template topLeftCorner<T_SHAPE_FUNC::DIM, T_SHAPE_FUNC::NPOINTS>()
220  .noalias() = shapemat.invJ * shapemat.dNdr;
221  }
222 }

References checkJacobianDeterminant().

◆ computeMappingMatrices() [6/6]

template<class T_MESH_ELEMENT , class T_SHAPE_FUNC , class T_SHAPE_MATRICES >
void NumLib::detail::computeMappingMatrices ( const T_MESH_ELEMENT &  ele,
const double *  natural_pt,
const MeshLib::ElementCoordinatesMappingLocal ele_local_coord,
T_SHAPE_MATRICES &  shapemat,
FieldType< ShapeMatrixType::N_J  
)
inline

Definition at line 175 of file NaturalCoordinatesMapping.cpp.

181 {
182  computeMappingMatrices<T_MESH_ELEMENT, T_SHAPE_FUNC, T_SHAPE_MATRICES>(
183  ele,
184  natural_pt,
185  ele_local_coord,
186  shapemat,
187  FieldType<ShapeMatrixType::N>());
188  computeMappingMatrices<T_MESH_ELEMENT, T_SHAPE_FUNC, T_SHAPE_MATRICES>(
189  ele,
190  natural_pt,
191  ele_local_coord,
192  shapemat,
193  FieldType<ShapeMatrixType::DNDR_J>());
194 }

◆ naturalCoordinatesMappingComputeShapeMatrices()

template<class T_MESH_ELEMENT , class T_SHAPE_FUNC , class T_SHAPE_MATRICES , ShapeMatrixType T_SHAPE_MATRIX_TYPE>
void NumLib::detail::naturalCoordinatesMappingComputeShapeMatrices ( const T_MESH_ELEMENT &  ele,
const double *  natural_pt,
T_SHAPE_MATRICES &  shapemat,
const unsigned  global_dim 
)

Used to explicitly instantiate the NaturalCoordinatesMapping class template.

Definition at line 250 of file NaturalCoordinatesMapping.cpp.

254 {
255  const MeshLib::ElementCoordinatesMappingLocal ele_local_coord(ele,
256  global_dim);
257 
258  detail::
259  computeMappingMatrices<T_MESH_ELEMENT, T_SHAPE_FUNC, T_SHAPE_MATRICES>(
260  ele,
261  natural_pt,
262  ele_local_coord,
263  shapemat,
264  detail::FieldType<T_SHAPE_MATRIX_TYPE>());
265 }

Referenced by NumLib::NaturalCoordinatesMapping< T_MESH_ELEMENT, T_SHAPE_FUNC, T_SHAPE_MATRICES >::computeShapeMatrices().

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN() [1/16]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN ( HexRule20  ,
ShapeHex20   
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN() [2/16]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN ( HexRule8  ,
ShapeHex8   
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN() [3/16]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN ( LineRule2  ,
ShapeLine2   
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN() [4/16]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN ( LineRule3  ,
ShapeLine3   
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN() [5/16]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN ( PointRule1  ,
ShapePoint1   
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN() [6/16]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN ( PrismRule15  ,
ShapePrism15   
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN() [7/16]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN ( PrismRule6  ,
ShapePrism6   
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN() [8/16]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN ( PyramidRule13  ,
ShapePyra13   
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN() [9/16]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN ( PyramidRule5  ,
ShapePyra5   
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN() [10/16]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN ( QuadRule4  ,
ShapeQuad4   
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN() [11/16]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN ( QuadRule8  ,
ShapeQuad8   
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN() [12/16]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN ( QuadRule9  ,
ShapeQuad9   
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN() [13/16]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN ( TetRule10  ,
ShapeTet10   
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN() [14/16]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN ( TetRule4  ,
ShapeTet4   
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN() [15/16]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN ( TriRule3  ,
ShapeTri3   
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN() [16/16]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_DYN ( TriRule6  ,
ShapeTri6   
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [1/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( HexRule20  ,
ShapeHex20  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [2/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( HexRule20  ,
ShapeHex20  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [3/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( HexRule20  ,
ShapeHex20  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [4/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( HexRule8  ,
ShapeHex8  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [5/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( HexRule8  ,
ShapeHex8  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [6/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( HexRule8  ,
ShapeHex8  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [7/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( LineRule2  ,
ShapeLine2  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [8/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( LineRule2  ,
ShapeLine2  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [9/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( LineRule2  ,
ShapeLine2  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [10/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( LineRule3  ,
ShapeLine3  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [11/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( LineRule3  ,
ShapeLine3  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [12/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( LineRule3  ,
ShapeLine3  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [13/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( PointRule1  ,
ShapePoint1  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [14/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( PointRule1  ,
ShapePoint1  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [15/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( PointRule1  ,
ShapePoint1  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [16/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( PrismRule15  ,
ShapePrism15  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [17/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( PrismRule15  ,
ShapePrism15  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [18/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( PrismRule15  ,
ShapePrism15  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [19/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( PrismRule6  ,
ShapePrism6  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [20/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( PrismRule6  ,
ShapePrism6  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [21/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( PrismRule6  ,
ShapePrism6  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [22/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( PyramidRule13  ,
ShapePyra13  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [23/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( PyramidRule13  ,
ShapePyra13  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [24/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( PyramidRule13  ,
ShapePyra13  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [25/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( PyramidRule5  ,
ShapePyra5  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [26/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( PyramidRule5  ,
ShapePyra5  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [27/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( PyramidRule5  ,
ShapePyra5  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [28/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( QuadRule4  ,
ShapeQuad4  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [29/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( QuadRule4  ,
ShapeQuad4  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [30/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( QuadRule4  ,
ShapeQuad4  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [31/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( QuadRule8  ,
ShapeQuad8  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [32/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( QuadRule8  ,
ShapeQuad8  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [33/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( QuadRule8  ,
ShapeQuad8  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [34/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( QuadRule9  ,
ShapeQuad9  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [35/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( QuadRule9  ,
ShapeQuad9  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [36/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( QuadRule9  ,
ShapeQuad9  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [37/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( TetRule10  ,
ShapeTet10  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [38/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( TetRule10  ,
ShapeTet10  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [39/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( TetRule10  ,
ShapeTet10  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [40/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( TetRule4  ,
ShapeTet4  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [41/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( TetRule4  ,
ShapeTet4  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [42/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( TetRule4  ,
ShapeTet4  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [43/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( TriRule3  ,
ShapeTri3  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [44/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( TriRule3  ,
ShapeTri3  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [45/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( TriRule3  ,
ShapeTri3  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [46/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( TriRule6  ,
ShapeTri6  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [47/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( TriRule6  ,
ShapeTri6  ,
 
)

◆ OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX() [48/48]

NumLib::detail::OGS_INSTANTIATE_NATURAL_COORDINATES_MAPPING_FIX ( TriRule6  ,
ShapeTri6  ,
 
)

◆ setMatrixZero()

template<class T >
void NumLib::detail::setMatrixZero ( T &  mat)

Definition at line 21 of file ShapeMatrices-impl.h.

22 {
23  // mat.setZero();
24  const std::size_t n = mat.rows() * mat.cols();
25  auto* v = mat.data();
26  for (std::size_t i = 0; i < n; i++)
27  {
28  v[i] = .0;
29  }
30 }

Referenced by setZero().

◆ setVectorZero()

template<class T >
void NumLib::detail::setVectorZero ( T &  vec)

Definition at line 33 of file ShapeMatrices-impl.h.

34 {
35  // vec.setZero();
36  const std::size_t n = vec.size();
37  auto* v = vec.data();
38  for (std::size_t i = 0; i < n; i++)
39  {
40  v[i] = .0;
41  }
42 }

Referenced by setZero().

◆ setZero() [1/6]

template<class T_N , class T_DNDR , class T_J , class T_DNDX >
void NumLib::detail::setZero ( ShapeMatrices< T_N, T_DNDR, T_J, T_DNDX > &  shape,
ShapeDataFieldType< ShapeMatrixType::ALL  
)
inline

Definition at line 95 of file ShapeMatrices-impl.h.

97 {
98  setZero(shape, ShapeDataFieldType<ShapeMatrixType::N>());
99  setZero(shape, ShapeDataFieldType<ShapeMatrixType::DNDX>());
100 }
void setZero(ShapeMatrices< T_N, T_DNDR, T_J, T_DNDX > &shape, ShapeDataFieldType< ShapeMatrixType::ALL >)

References setZero().

◆ setZero() [2/6]

template<class T_N , class T_DNDR , class T_J , class T_DNDX >
void NumLib::detail::setZero ( ShapeMatrices< T_N, T_DNDR, T_J, T_DNDX > &  shape,
ShapeDataFieldType< ShapeMatrixType::DNDR  
)
inline

Definition at line 61 of file ShapeMatrices-impl.h.

63 {
64  setMatrixZero(shape.dNdr);
65 }
void setMatrixZero(T &mat)

References NumLib::ShapeMatrices< T_N, T_DNDR, T_J, T_DNDX >::dNdr, and setMatrixZero().

◆ setZero() [3/6]

template<class T_N , class T_DNDR , class T_J , class T_DNDX >
void NumLib::detail::setZero ( ShapeMatrices< T_N, T_DNDR, T_J, T_DNDX > &  shape,
ShapeDataFieldType< ShapeMatrixType::DNDR_J  
)
inline

Definition at line 68 of file ShapeMatrices-impl.h.

70 {
71  setZero(shape, ShapeDataFieldType<ShapeMatrixType::DNDR>());
72  setMatrixZero(shape.J);
73  shape.detJ = .0;
74  shape.integralMeasure = 0.0;
75 }

References NumLib::ShapeMatrices< T_N, T_DNDR, T_J, T_DNDX >::detJ, NumLib::ShapeMatrices< T_N, T_DNDR, T_J, T_DNDX >::integralMeasure, NumLib::ShapeMatrices< T_N, T_DNDR, T_J, T_DNDX >::J, setMatrixZero(), and setZero().

◆ setZero() [4/6]

template<class T_N , class T_DNDR , class T_J , class T_DNDX >
void NumLib::detail::setZero ( ShapeMatrices< T_N, T_DNDR, T_J, T_DNDX > &  shape,
ShapeDataFieldType< ShapeMatrixType::DNDX  
)
inline

Definition at line 86 of file ShapeMatrices-impl.h.

88 {
89  setZero(shape, ShapeDataFieldType<ShapeMatrixType::DNDR_J>());
90  setMatrixZero(shape.invJ);
91  setMatrixZero(shape.dNdx);
92 }

References NumLib::ShapeMatrices< T_N, T_DNDR, T_J, T_DNDX >::dNdx, NumLib::ShapeMatrices< T_N, T_DNDR, T_J, T_DNDX >::invJ, setMatrixZero(), and setZero().

◆ setZero() [5/6]

template<class T_N , class T_DNDR , class T_J , class T_DNDX >
void NumLib::detail::setZero ( ShapeMatrices< T_N, T_DNDR, T_J, T_DNDX > &  shape,
ShapeDataFieldType< ShapeMatrixType::N  
)
inline

◆ setZero() [6/6]

template<class T_N , class T_DNDR , class T_J , class T_DNDX >
void NumLib::detail::setZero ( ShapeMatrices< T_N, T_DNDR, T_J, T_DNDX > &  shape,
ShapeDataFieldType< ShapeMatrixType::N_J  
)
inline

Definition at line 78 of file ShapeMatrices-impl.h.

80 {
81  setZero(shape, ShapeDataFieldType<ShapeMatrixType::N>());
82  setZero(shape, ShapeDataFieldType<ShapeMatrixType::DNDR_J>());
83 }

References setZero().

◆ shapeFunctionInterpolate() [1/2]

template<unsigned DOFOffset, typename NodalValues , typename ShapeMatrix >
void NumLib::detail::shapeFunctionInterpolate ( const NodalValues &  ,
const ShapeMatrix &   
)
See also
NumLib::shapeFunctionInterpolate()

Definition at line 26 of file Interpolation.h.

28 {
29 }

◆ shapeFunctionInterpolate() [2/2]

template<unsigned DOFOffset, typename NodalValues , typename ShapeMatrix , typename... ScalarTypes>
void NumLib::detail::shapeFunctionInterpolate ( const NodalValues &  nodal_values,
const ShapeMatrix &  shape_matrix_N,
double &  interpolated_value,
ScalarTypes &...  interpolated_values 
)
See also
NumLib::shapeFunctionInterpolate()

Definition at line 34 of file Interpolation.h.

38 {
39  auto const num_nodes = shape_matrix_N.size();
40  double iv = 0.0;
41 
42  for (auto n = decltype(num_nodes){0}; n < num_nodes; ++n)
43  {
44  iv += nodal_values[DOFOffset * num_nodes + n] * shape_matrix_N[n];
45  }
46 
47  interpolated_value = iv;
48 
49  shapeFunctionInterpolate<DOFOffset + 1>(nodal_values, shape_matrix_N,
50  interpolated_values...);
51 }