20void ElasticityIntegrator::SetUpQuadratureSpaceAndCoefficients(
21 const FiniteElementSpace &fes)
26 const auto &T = *fes.GetMesh()->GetTypicalElementTransformation();
27 int quad_order = 2 * T.OrderGrad(fes.GetTypicalFE());
31 Mesh &mesh = *fespace->
GetMesh();
33 q_space.reset(
new QuadratureSpace(mesh, *
IntRule));
34 lambda_quad.reset(
new CoefficientVector(
lambda, *q_space,
37 q_vec.reset(
new QuadratureFunction(*q_space, vdim*vdim));
43 "Elasticity PA only implemented for byNODES ordering.");
51 SetUpQuadratureSpaceAndCoefficients(fes);
62 q_vec->SetVDim(vdim*vdim*vdim*vdim);
63 internal::ElasticityAssembleDiagonalPA(vdim, ndofs, *lambda_quad, *mu_quad,
64 *geom, *maps, *q_vec, diag);
69 internal::ElasticityAddMultPA(vdim, ndofs, *fespace, *lambda_quad, *mu_quad,
70 *geom, *maps, x, *q_vec, y);
86 parent.SetUpQuadratureSpaceAndCoefficients(fes);
103 internal::ElasticityComponentAddMultPA(
104 parent.vdim, parent.ndofs, *fespace, *parent.lambda_quad, *parent.mu_quad,
105 *geom, *maps, x, *parent.q_vec, y, i_block, j_block);
113 internal::ElasticityComponentAddMultPA(
114 parent.vdim, parent.ndofs, *fespace, *parent.lambda_quad, *parent.mu_quad,
115 *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)