19void ElasticityIntegrator::SetUpQuadratureSpaceAndCoefficients(
20 const FiniteElementSpace &fes)
25 const auto &T = *fes.GetMesh()->GetTypicalElementTransformation();
26 int quad_order = 2 * T.OrderGrad(fes.GetTypicalFE());
30 Mesh &mesh = *fespace->
GetMesh();
32 q_space.reset(
new QuadratureSpace(mesh, *
IntRule));
33 lambda_quad.reset(
new CoefficientVector(
lambda, *q_space,
36 q_vec.reset(
new QuadratureFunction(*q_space, vdim*vdim));
42 "Elasticity PA only implemented for byNODES ordering.");
50 SetUpQuadratureSpaceAndCoefficients(fes);
61 internal::ElasticityAssembleDiagonalPA(vdim, ndofs, *lambda_quad, *mu_quad,
67 internal::ElasticityAddMultPA(vdim, ndofs, *fespace, *lambda_quad, *mu_quad,
68 *geom, *maps, x, *q_vec, y);
84 parent.SetUpQuadratureSpaceAndCoefficients(fes);
101 internal::ElasticityComponentAddMultPA(
102 parent.vdim, parent.ndofs, *fespace, *parent.lambda_quad, *parent.mu_quad,
103 *geom, *maps, x, *parent.q_vec, y, i_block, j_block);
111 internal::ElasticityComponentAddMultPA(
112 parent.vdim, parent.ndofs, *fespace, *parent.lambda_quad, *parent.mu_quad,
113 *geom, *maps, x, *parent.q_vec, y, j_block, i_block);
Header for small strain, isotropic, linear elasticity kernels.
@ FULL
Full multidimensional representation which does not use tensor product structure. The ordering of the...
@ LEXICOGRAPHIC_FULL
Full multidimensional representation which does not use tensor product structure. The ordering of the...
void AssemblePA(const FiniteElementSpace &fes) override
Method defining partial assembly.
void AddMultTransposePA(const Vector &x, Vector &y) const override
Method for partially assembled transposed action.
void AddMultPA(const Vector &x, Vector &y) const override
Method for partially assembled action.
void AddMultTransposePA(const Vector &x, Vector &y) const override
Method for partially assembled transposed action.
void AddMultPA(const Vector &x, Vector &y) const override
Method for partially assembled action.
void AssemblePA(const FiniteElementSpace &fes) override
Method defining partial assembly.
void AssembleDiagonalPA(Vector &diag) override
Assemble diagonal and add it to Vector diag.
Class FiniteElementSpace - responsible for providing FEM view of the mesh, mainly managing the set of...
Ordering::Type GetOrdering() const
Return the ordering method.
Mesh * GetMesh() const
Returns the mesh.
int GetVDim() const
Returns the vector dimension of the finite element space.
const FiniteElement * GetTypicalFE() const
Return GetFE(0) if the local mesh is not empty; otherwise return a typical FE based on the Geometry t...
virtual const DofToQuad & GetDofToQuad(const IntegrationRule &ir, DofToQuad::Mode mode) const
Return a DofToQuad structure corresponding to the given IntegrationRule using the given DofToQuad::Mo...
int GetDof() const
Returns the number of degrees of freedom in the finite element.
const IntegrationRule & Get(int GeomType, int Order)
Returns an integration rule for given GeomType and Order.
const IntegrationRule * IntRule
int Dimension() const
Dimension of the reference space used within the elements.
const GeometricFactors * GetGeometricFactors(const IntegrationRule &ir, const int flags, MemoryType d_mt=MemoryType::DEFAULT)
Return the mesh geometric factors corresponding to the given integration rule.
@ FULL
Store the coefficient as a full QuadratureFunction.
ElementDofOrdering GetEVectorOrdering(const FiniteElementSpace &fes)
Return LEXICOGRAPHIC if mesh contains only one topology and the elements are tensor elements,...
@ NATIVE
Native ordering as defined by the FiniteElement.
IntegrationRules IntRules(0, Quadrature1D::GaussLegendre)
A global object with all integration rules (defined in intrules.cpp)