Class xlifepp::GeomMapData#
-
class GeomMapData#
-
object handles useful computational data of a geometric element It stores jacobian, its determinant, … depending of a point
Public Functions
-
GeomMapData(const MeshElement*, bool withJ = false, bool withInvJ = false, bool withN = false)#
-
basic constructor (element centroid as point)
-
GeomMapData(const MeshElement*, const Point&, bool withJ = false, bool withInvJ = false, bool withN = false)#
-
basic constructor
-
GeomMapData(const MeshElement*, std::vector<real_t>::const_iterator, bool withJ = false, bool withInvJ = false, bool withN = false)#
-
basic constructor
-
void computeDifferentialElement()#
-
compute differential element assuming jacobian matrix is update
-
real_t computeJacobianDeterminant()#
-
compute jacobian determinant (jacobian already computed)
-
void computeJacobianMatrix(const ShapeValues &shv, number_t side = 0)#
-
compute jacobian matrix (shape functions given)
-
void computeJacobianMatrix(const std::vector<real_t>&, number_t side = 0)#
-
compute jacobian matrix at a point given as vector or Point
-
void computeJacobianMatrix(std::vector<real_t>::const_iterator, number_t side = 0)#
-
compute jacobian matrix at a point given by iterator
-
void computeMetricTensor()#
-
compute metric tensor for surface differential geometry
-
void computeNormalVector()#
-
computes normal vector at a point of element
-
void computeOrientedNormal()#
-
compute oriented unit normal vector, assuming jacobian matrix is update
-
void computeSurfaceGradient(real_t, real_t, std::vector<real_t>&)#
-
compute surface gradient gradS from 2D reference gradient (grad0, grad1)
-
void computeTangentVector()#
-
computes tangent (and bitangent) vector at a point of element
-
Matrix<real_t> contravariantPiolaMap(const Point& = Point())#
-
return the contravariant Piola map matrix at current point
return the contravariant Piola map matrix at current point: J/|J| when mapping from 1d->2d or 2d->3d the matrix J/|J| is replace by J/sqrt|Jt*J| note: in that case computeJacobianDeterminant() compute sqrt|Jt*J|
-
Matrix<real_t> covariantPiolaMap(const Point& = Point())#
-
return the covariant Piola map matrix at current point
return the covariant Piola map matrix at current point: J^{-T} when mapping from 1d->2d or 2d->3d the matrix J^{-T} is replace by J*(J{T}*J)^{-1}{T} note: in that case invertJacobian() compute J*(J{T}*J)^{-1}
-
inline const MeshElement &geomElement() const#
-
access to related MeshElement
-
Point geomMap(const ShapeValues &shv, number_t side)#
-
access to measure of element(s=0) or measure of side s>0
mapping from ref. elt onto geom. elt. Element (shape functions given, thread safe)
-
Point geomMap(const std::vector<real_t> &p, number_t side = 0)#
-
mapping from ref.
elt onto geom. elt. Element of point p
-
Point geomMap(std::vector<real_t>::const_iterator p, number_t side = 0)#
-
mapping from ref.
elt onto geom. elt. Element of point p
-
Point geomMapInverse(const std::vector<real_t>&, real_t eps = theTolerance, number_t maxIter = 50)#
-
mapping from elt onto ref.
elt. of point p
elt. (inverse of GeomMap) mapping may be non linear: order >1 or not simplicial element (quadrangle, hexahedron) so to inverse it we have to use an iterative method (Newton for instance) first step: initialize Newton’s method with first order map say P_0=(JF1)^-1(P-F1(0)) if element is a 1 order simplicial element return P_0 second step: Newton’s iteration P_k+1=P_k - JF(P_k)^-1(P-F(Pk)) stop if ||F(P_k+1)-X||< eps or ||P_k+1-P_k+1||< eps stop also if the number of iteration k>50 (error)
-
void invertJacobianMatrix()#
-
compute inverse of jacobian matrix (jacobian already computed)
-
void normalize()#
-
normalize normal vector to element
-
Point piolaMap(number_t side = 0)#
-
Piola mapping from ref.
elt onto geom. elt. Element (shape functions known)
-
void print(std::ostream&) const#
-
print GeoMapData
Public Members
-
real_t differentialElement#
-
differential element for elementary integrals (abs(jac.
det.))
-
ExtensionData *extdata#
-
pointer to additionnal data used by extension
-
const Parametrization *isoPar_p#
-
pointer to isoGeometric parametrization (default 0)
-
real_t jacobianDeterminant#
-
jacobian determinant
-
real_t metricTensorDeterminant#
-
metric_tensor determinant for differential geometry
-
std::map<Quadrature*, std::vector<Point>> phyPoints#
-
to store image of quadrature points in physical space
-
mutable std::vector<Vector<real_t>> sideNormalVectors#
-
normal to the sides of the element (build if required)
-
bool useIsoNodes#
-
if true use MeshElement::isoNodes (default false)
-
bool useParametrization#
-
if true take into account isogeometric parametrization (default false)
Friends
-
friend std::ostream &operator<<(std::ostream&, const GeomMapData&)#
-
print operator
-
GeomMapData(const MeshElement*, bool withJ = false, bool withInvJ = false, bool withN = false)#