14 #ifndef _FINITE_ELEMENT_H
15 #define _FINITE_ELEMENT_H
57 virtual std::ostream&
write(std::ostream& os)
const;
105 std::vector<Tensor>
Tn;
141 unsigned short int gBasis,
155 unsigned short int gBasis,
157 size_t t1,
size_t t2,
size_t nBasis = 0,
158 const Matrix* Xnod2 =
nullptr);
167 unsigned short int gBasis,
201 std::ostream&
write(std::ostream& os)
const override;
204 std::vector<Vector>
M;
Basis function values container.
std::vector< const BasisFunctionVals * > BasisValuesPtrs
Convenience type alias.
Definition: BasisFunctionVals.h:34
Integration point representation.
Global algebraic operations on index 1-based matrices and vectors.
Representation of second-order tensors with some basic operations.
Representation of a point in 3D space with some basic operations.
std::vector< Vec3 > Vec3Vec
An array of point vectors.
Definition: Vec3.h:318
Class representing a finite element.
Definition: FiniteElement.h:29
Vector N
Basis function values.
Definition: FiniteElement.h:68
virtual const Matrix4D & hess2(char) const
Returns a const reference to the basis function 3nd-derivatives.
Definition: FiniteElement.h:48
Matrix3D d2NdX2
Second derivatives of the basis functions.
Definition: FiniteElement.h:70
Vec3Vec En
Array of nodal eccentricity vectors.
Definition: FiniteElement.h:106
virtual const Matrix3D & hess(char) const
Returns a const reference to the basis function 2nd-derivatives.
Definition: FiniteElement.h:46
short int q
Polynomial order of the basis in v-direction.
Definition: FiniteElement.h:97
Tensor Te
Local-to-global element transformation matrix.
Definition: FiniteElement.h:104
Vec3Vec XC
Array with element corner coordinate vectors.
Definition: FiniteElement.h:101
virtual size_t getNoBasis() const
Returns the number of bases.
Definition: FiniteElement.h:36
Vector Navg
Volume-averaged basis function values.
Definition: FiniteElement.h:102
virtual const Vector & basis(char) const
Returns a const reference to the basis function values.
Definition: FiniteElement.h:39
short int r
Polynomial order of the basis in r-direction.
Definition: FiniteElement.h:98
double detJxW
Weighted determinant of the coordinate mapping.
Definition: FiniteElement.h:67
Matrix G
Covariant basis / Matrix used for stabilized methods.
Definition: FiniteElement.h:72
Matrix dNdX
First derivatives (gradient) of the basis functions.
Definition: FiniteElement.h:69
friend std::ostream & operator<<(std::ostream &os, const FiniteElement &fe)
Global output stream operator.
Definition: FiniteElement.h:60
virtual const Matrix & grad(char) const
Returns a const reference to the basis function derivatives.
Definition: FiniteElement.h:44
Matrix P
Matrix holding Piola-mapped basis function values.
Definition: FiniteElement.h:82
short int p
Polynomial order of the basis in u-direction.
Definition: FiniteElement.h:96
virtual Matrix3D & hess(char)
Returns a reference to the basis function 2nd-derivatives.
Definition: FiniteElement.h:54
virtual Vector & basis(char)
Returns a reference to the basis function values.
Definition: FiniteElement.h:41
double age
Time since birth of this element.
Definition: FiniteElement.h:99
FiniteElement(size_t n=0, size_t i=0)
Default constructor.
Definition: FiniteElement.h:32
Matrix dPdX
Matrix holding Piola-mapped basis derivatives.
Definition: FiniteElement.h:93
virtual std::ostream & write(std::ostream &os) const
Writes the finite element object to the given output stream.
Definition: FiniteElement.C:20
double h
Characteristic element size/diameter.
Definition: FiniteElement.h:100
virtual Matrix & grad(char)
Returns a reference to the basis function derivatives.
Definition: FiniteElement.h:52
Matrix Xn
Matrix of element nodal coordinates.
Definition: FiniteElement.h:103
Matrix H
Hessian.
Definition: FiniteElement.h:73
std::vector< Tensor > Tn
Array of element nodal rotation matrices.
Definition: FiniteElement.h:105
Matrix4D d3NdX3
Third derivatives of the basis functions.
Definition: FiniteElement.h:71
Class representing an integration point.
Definition: ItgPoint.h:25
Class representing a mixed finite element.
Definition: FiniteElement.h:115
Matrix3D & hess(char b) override
Returns a reference to the basis function 2nd-derivatives.
Definition: FiniteElement.h:198
std::vector< Matrix > dMdX
First derivatives of the basis functions.
Definition: FiniteElement.h:205
const Matrix4D & hess2(char b) const override
Returns a const reference to the basis function 3rd-derivatives.
Definition: FiniteElement.h:133
std::vector< Matrix4D > d3MdX3
Third derivatives of the basis functions.
Definition: FiniteElement.h:207
const Matrix & grad(char b) const override
Returns a const reference to the basis function derivatives.
Definition: FiniteElement.h:129
bool Jacobian(Matrix &Jac, const Matrix &Xnod, unsigned short int gBasis, const BasisValuesPtrs &bfs)
Sets up the Jacobian matrix of the coordinate mapping.
Definition: FiniteElement.C:82
std::ostream & write(std::ostream &os) const override
Writes the finite element object to the given output stream.
Definition: FiniteElement.C:61
Matrix & grad(char b) override
Returns a reference to the basis function derivatives.
Definition: FiniteElement.h:196
size_t getNoBasis() const override
Returns the number of bases.
Definition: FiniteElement.h:121
void piolaGradient(const double detJ, const Matrix &J, const Matrix &Ji, const Matrix &Xnod, const BasisValuesPtrs &bfs)
Calculates the Piola derivatives.
Definition: FiniteElement.C:208
Vector & basis(char b) override
Returns a reference to the basis function values.
Definition: FiniteElement.h:126
const Matrix3D & hess(char b) const override
Returns a const reference to the basis function 2nd-derivatives.
Definition: FiniteElement.h:131
std::vector< Vector > M
Basis function values.
Definition: FiniteElement.h:204
const Vector & basis(char b) const override
Returns a const reference to the basis function values.
Definition: FiniteElement.h:124
MxFiniteElement(const std::vector< size_t > &n, size_t ip=0)
The constructor initializes the size of each basis.
Definition: FiniteElement.C:48
bool Hessian(Matrix3D &Hess, const Matrix &Jac, const Matrix &Xnod, unsigned short int gBasis, const BasisValuesPtrs &bfs)
Sets up the Hessian matrix of the coordinate mapping.
Definition: FiniteElement.C:156
void piolaBasis(const double detJ, const Matrix &J)
Calculates the Piola basis functions.
Definition: FiniteElement.C:192
std::vector< Matrix3D > d2MdX2
Second derivatives of the basis functions.
Definition: FiniteElement.h:206
void piolaMapping(const double detJ, const Matrix &Ji, const Matrix &Xnod, const BasisValuesPtrs &bfs)
Calculates the Piola basis functions and their derivatives.
Definition: FiniteElement.C:180
Simple class for representing a non-symmetric second-order tensor.
Definition: Tensor.h:28
Simple class for representing a point in 3D space.
Definition: Vec3.h:27
A vector class with some added algebraic operations.
Definition: matrix.h:64