12 #ifndef MFEM_NONLININTEG 13 #define MFEM_NONLININTEG 15 #include "../config/config.hpp" 17 #include "coefficient.hpp" 335 DenseMatrix DSh, DS, Jrt, Jpr, Jpt, P, PMatI, PMatO;
365 DenseMatrix DSh_u, DS_u, J0i, J, J1, Finv, P, F, FinvT;
366 DenseMatrix PMatI_u, PMatO_u, PMatI_p, PMatO_p, Z, G, C;
394 DenseMatrix dshape, dshapex, EF, gradEF, ELV, elmat_comp;
439 DenseMatrix dshape, dshapex, EF, gradEF, ELV, elmat_comp;
462 DenseMatrix dshape, dshapex, EF, gradEF, ELV, elmat_comp;
Abstract class for all finite elements.
virtual ~HyperelasticModel()
void trans(const Vector &u, Vector &x)
Class for an integration rule - an Array of IntegrationPoint.
virtual void AddMultMF(const Vector &x, Vector &y) const
virtual void AssembleElementGrad(const FiniteElement &el, ElementTransformation &trans, const Vector &elfun, DenseMatrix &elmat)
Assemble the local gradient matrix.
virtual void AssembleElementGrad(const FiniteElement &el, ElementTransformation &trans, const Vector &elfun, DenseMatrix &elmat)
Assemble the local gradient matrix.
SkewSymmetricVectorConvectionNLFIntegrator()=default
Data type dense matrix using column-major storage.
virtual double EvalW(const DenseMatrix &Jpt) const =0
Evaluate the strain energy density function, W = W(Jpt).
ConvectiveVectorConvectionNLFIntegrator()=default
virtual double EvalW(const DenseMatrix &J) const
Evaluate the strain energy density function, W = W(Jpt).
virtual void AssembleH(const DenseMatrix &J, const DenseMatrix &DS, const double weight, DenseMatrix &A) const
Evaluate the derivative of the 1st Piola-Kirchhoff stress tensor and assemble its contribution to the...
Structure for storing mesh geometric factors: coordinates, Jacobians, and determinants of the Jacobia...
virtual void AssembleElementVector(const FiniteElement &el, ElementTransformation &trans, const Vector &elfun, Vector &elvect)
Perform the local action of the NonlinearFormIntegrator.
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
virtual double GetElementEnergy(const Array< const FiniteElement *> &el, ElementTransformation &Tr, const Array< const Vector *> &elfun)
Compute the local energy.
virtual void EvalP(const DenseMatrix &Jpt, DenseMatrix &P) const =0
Evaluate the 1st Piola-Kirchhoff stress tensor, P = P(Jpt).
virtual void AssembleElementGrad(const FiniteElement &el, ElementTransformation &trans, const Vector &elfun, DenseMatrix &elmat)
Assemble the local gradient matrix.
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
virtual double EvalW(const DenseMatrix &J) const
Evaluate the strain energy density function, W = W(Jpt).
ConvectiveVectorConvectionNLFIntegrator(Coefficient &q)
IncompressibleNeoHookeanIntegrator(Coefficient &mu_)
virtual void AssembleElementGrad(const FiniteElement &el, ElementTransformation &Ttr, const Vector &elfun, DenseMatrix &elmat)
Assemble the local gradient matrix.
virtual double GetElementEnergy(const FiniteElement &el, ElementTransformation &Ttr, const Vector &elfun)
Computes the integral of W(Jacobian(Trt)) over a target zone.
Dynamic 2D array using row-major layout.
Class FiniteElementSpace - responsible for providing FEM view of the mesh, mainly managing the set of...
void SetTransformation(ElementTransformation &Ttr_)
Base class Coefficients that optionally depend on space and time. These are used by the BilinearFormI...
MemoryType
Memory types supported by MFEM.
Structure representing the matrices/tensors needed to evaluate (in reference space) the values...
ElementTransformation * Ttr
VectorConvectionNLFIntegrator(Coefficient &q)
virtual void AssembleElementGrad(const Array< const FiniteElement *> &el, ElementTransformation &Tr, const Array< const Vector *> &elfun, const Array2D< DenseMatrix *> &elmats)
Assemble the local gradient matrix.
HyperelasticNLFIntegrator(HyperelasticModel *m)
virtual void AssembleH(const DenseMatrix &Jpt, const DenseMatrix &DS, const double weight, DenseMatrix &A) const =0
Evaluate the derivative of the 1st Piola-Kirchhoff stress tensor and assemble its contribution to the...
SkewSymmetricVectorConvectionNLFIntegrator(Coefficient &q)
NeoHookeanModel(Coefficient &mu_, Coefficient &K_, Coefficient *g_=NULL)
NeoHookeanModel(double mu_, double K_, double g_=1.0)
virtual void EvalP(const DenseMatrix &J, DenseMatrix &P) const
Evaluate the 1st Piola-Kirchhoff stress tensor, P = P(Jpt).
Abstract class for hyperelastic models.
virtual void EvalP(const DenseMatrix &J, DenseMatrix &P) const
Evaluate the 1st Piola-Kirchhoff stress tensor, P = P(Jpt).
VectorConvectionNLFIntegrator()=default
virtual void AssembleElementVector(const FiniteElement &el, ElementTransformation &Ttr, const Vector &elfun, Vector &elvect)
Perform the local action of the NonlinearFormIntegrator.
virtual void AssembleMF(const FiniteElementSpace &fes)
Method defining fully unassembled operator.
virtual void AssembleH(const DenseMatrix &J, const DenseMatrix &DS, const double weight, DenseMatrix &A) const
Evaluate the derivative of the 1st Piola-Kirchhoff stress tensor and assemble its contribution to the...
static const IntegrationRule & GetRule(const FiniteElement &fe, ElementTransformation &T)
virtual void AssembleElementVector(const Array< const FiniteElement *> &el, ElementTransformation &Tr, const Array< const Vector *> &elfun, const Array< Vector *> &elvec)
Perform the local action of the NonlinearFormIntegrator.
Class for defining different integration rules on each NURBS patch.