12#ifndef MFEM_BILININTEG
13#define MFEM_BILININTEG
95 const bool add =
true);
128 const bool add =
true);
132 const bool add =
true);
242 Vector &flux,
bool with_coef =
true,
317 { bfi = bfi_; own_bfi = own_bfi_; }
390 { bfi = bfi_; own_bfi = own_bfi_; }
410 { integrator = integ; own_integrator = own_integ; }
435 { integrators.
Append(integ); }
529 return "MixedScalarIntegrator: "
530 "Trial and test spaces must both be scalar fields.";
553#ifndef MFEM_THREAD_SAFE
603 return "MixedVectorIntegrator: "
604 "Trial and test spaces must both be vector fields";
637#ifndef MFEM_THREAD_SAFE
673 bool cross_2d_ =
false)
693 return "MixedScalarVectorIntegrator: "
694 "Trial space must be a vector field "
695 "and the test space must be a scalar field";
699 return "MixedScalarVectorIntegrator: "
700 "Trial space must be a scalar field "
701 "and the test space must be a vector field";
731#ifndef MFEM_THREAD_SAFE
775 return (trial_fe.
GetDim() == 1 && test_fe.
GetDim() == 1 &&
782 return "MixedScalarDerivativeIntegrator: "
783 "Trial and test spaces must both be scalar fields in 1D "
784 "and the trial space must implement CalcDShape.";
810 return (trial_fe.
GetDim() == 1 && test_fe.
GetDim() == 1 &&
817 return "MixedScalarWeakDerivativeIntegrator: "
818 "Trial and test spaces must both be scalar fields in 1D "
819 "and the test space must implement CalcDShape with "
820 "map type \"VALUE\".";
854 return "MixedScalarDivergenceIntegrator: "
855 "Trial must be $H(div)$ and the test space must be a "
889 return "MixedVectorDivergenceIntegrator: "
890 "Trial must be H(Div) and the test space must be a "
928 return "MixedScalarWeakGradientIntegrator: "
929 "Trial space must be a scalar field "
930 "and the test space must be H(Div)";
962 return (trial_fe.
GetDim() == 2 && test_fe.
GetDim() == 2 &&
969 return "MixedScalarCurlIntegrator: "
970 "Trial must be H(Curl) and the test space must be a "
1018 return (trial_fe.
GetDim() == 2 && test_fe.
GetDim() == 2 &&
1025 return "MixedScalarWeakCurlIntegrator: "
1026 "Trial space must be a scalar field "
1027 "and the test space must be H(Curl)";
1082 return "MixedDotProductIntegrator: "
1083 "Trial space must be a vector field "
1084 "and the test space must be a scalar field";
1108 return "MixedWeakGradDotIntegrator: "
1109 "Trial space must be a vector field "
1110 "and the test space must be a vector field with a divergence";
1146 return "MixedWeakDivCrossIntegrator: "
1147 "Trial space must be a vector field in 3D "
1148 "and the test space must be a scalar field with a gradient";
1186 return "MixedGradGradIntegrator: "
1187 "Trial and test spaces must both be scalar fields "
1188 "with a gradient operator.";
1238 return "MixedCrossGradGradIntegrator: "
1239 "Trial and test spaces must both be scalar fields "
1240 "with a gradient operator.";
1287 return "MixedCurlCurlIntegrator"
1288 "Trial and test spaces must both be vector fields in 3D "
1331 return "MixedCrossCurlCurlIntegrator: "
1332 "Trial and test spaces must both be vector fields in 3D "
1374 return "MixedCrossCurlGradIntegrator"
1375 "Trial space must be a vector field in 3D with a curl"
1376 "and the test space must be a scalar field with a gradient";
1417 return "MixedCrossGradCurlIntegrator"
1418 "Trial space must be a scalar field in 3D with a gradient"
1419 "and the test space must be a vector field with a curl";
1460 return "MixedWeakCurlCrossIntegrator: "
1461 "Trial space must be a vector field in 3D "
1462 "and the test space must be a vector field with a curl";
1487 return (trial_fe.
GetDim() == 2 && test_fe.
GetDim() == 2 &&
1495 return "MixedScalarWeakCurlCrossIntegrator: "
1496 "Trial space must be a vector field in 2D "
1497 "and the test space must be a vector field with a curl";
1530 return "MixedCrossGradIntegrator: "
1531 "Trial space must be a scalar field with a gradient operator"
1532 " and the test space must be a vector field both in 3D.";
1570 return "MixedCrossCurlIntegrator: "
1571 "Trial space must be a vector field in 3D with a curl "
1572 "and the test space must be a vector field";
1597 return (trial_fe.
GetDim() == 2 && test_fe.
GetDim() == 2 &&
1605 return "MixedCrossCurlIntegrator: "
1606 "Trial space must be a vector field in 2D with a curl "
1607 "and the test space must be a vector field";
1631 return (trial_fe.
GetDim() == 2 && test_fe.
GetDim() == 2 &&
1639 return "MixedScalarCrossGradIntegrator: "
1640 "Trial space must be a scalar field in 2D with a gradient "
1641 "and the test space must be a scalar field";
1665 return (trial_fe.
GetDim() == 2 && test_fe.
GetDim() == 2 &&
1672 return "MixedScalarCrossProductIntegrator: "
1673 "Trial space must be a vector field in 2D "
1674 "and the test space must be a scalar field";
1693 return (trial_fe.
GetDim() == 2 && test_fe.
GetDim() == 2 &&
1700 return "MixedScalarWeakCrossProductIntegrator: "
1701 "Trial space must be a scalar field in 2D "
1702 "and the test space must be a vector field";
1730 return "MixedDirectionalDerivativeIntegrator: "
1731 "Trial space must be a scalar field with a gradient "
1732 "and the test space must be a scalar field";
1764 return "MixedGradDivIntegrator: "
1765 "Trial space must be a scalar field with a gradient"
1766 "and the test space must be a vector field with a divergence";
1804 return "MixedDivGradIntegrator: "
1805 "Trial space must be a vector field with a divergence"
1806 "and the test space must be a scalar field with a gradient";
1842 return "MixedScalarWeakDivergenceIntegrator: "
1843 "Trial space must be a scalar field "
1844 "and the test space must be a scalar field with a gradient";
1884 return "MixedVectorGradientIntegrator: "
1885 "Trial spaces must be $H^1$ and the test space must be a "
1886 "vector field in 2D or 3D";
1914 int dim, ne, dofs1D, quad1D;
1943 return "MixedVectorCurlIntegrator: "
1944 "Trial space must be H(Curl) and the test space must be a "
1945 "vector field in 3D";
1973 int dim, ne, dofs1D, dofs1Dtest,quad1D, testType, trialType, coeffDim;
2002 return "MixedVectorWeakCurlIntegrator: "
2003 "Trial space must be vector field in 3D and the "
2004 "test space must be H(Curl)";
2030 int dim, ne, dofs1D, quad1D, testType, trialType, coeffDim;
2058 return "MixedVectorWeakDivergenceIntegrator: "
2059 "Trial space must be vector field and the "
2060 "test space must be H1";
2093 const DofToQuad *trial_maps, *test_maps;
2096 int trial_dofs1D, test_dofs1D, quad1D;
2100 Q{NULL}, trial_maps{NULL}, test_maps{NULL}, geom{NULL}
2103 Q{q_}, trial_maps{NULL}, test_maps{NULL}, geom{NULL}
2106 Q{&q}, trial_maps{NULL}, test_maps{NULL}, geom{NULL}
2136 Vector vec, vecdxt, pointflux, shape;
2137#ifndef MFEM_THREAD_SAFE
2138 DenseMatrix dshape, dshapedxt, invdfdx, M, dshapedxt_m;
2147 int dim, ne, dofs1D, quad1D;
2149 bool symmetric =
true;
2155 typedef std::vector<std::vector<int>> IntArrayVar2D;
2158 static constexpr int numTypes = 2;
2180 std::vector<std::vector<Vector>> reducedWeights;
2181 std::vector<IntArrayVar2D> reducedIDs;
2182 std::vector<Array<int>> pQ1D, pD1D;
2183 std::vector<std::vector<Array2D<real_t>>> pB, pG;
2184 std::vector<IntArrayVar2D> pminD, pmaxD, pminQ, pmaxQ, pminDD, pmaxDD;
2186 std::vector<Array<const IntegrationRule*>> pir1d;
2188 void SetupPatchPA(
const int patch,
Mesh *mesh,
bool unitWeights=
false);
2190 void SetupPatchBasisData(
Mesh *mesh,
unsigned int patch);
2194 void AssemblePatchMatrix_fullQuadrature(
const int patch,
2200 void AssemblePatchMatrix_reducedQuadrature(
const int patch,
2208 Q(NULL),
VQ(NULL),
MQ(NULL), maps(NULL), geom(NULL) { }
2213 Q(&q),
VQ(NULL),
MQ(NULL), maps(NULL), geom(NULL) { }
2219 Q(NULL),
VQ(&q),
MQ(NULL), maps(NULL), geom(NULL) { }
2225 Q(NULL),
VQ(NULL),
MQ(&q), maps(NULL), geom(NULL) { }
2255 Vector &flux,
bool with_coef =
true,
2297#ifndef MFEM_THREAD_SAFE
2382#ifndef MFEM_THREAD_SAFE
2384 Vector shape, vec2, BdFidxT;
2460 Vector shape, te_shape, vec;
2478 : vdim(-1), Q_order(0),
Q(NULL),
VQ(NULL),
MQ(NULL) { }
2483 : vdim(-1), Q_order(qo),
Q(&q),
VQ(NULL),
MQ(NULL) { }
2489 : vdim(q.
GetVDim()), Q_order(qo),
Q(NULL),
VQ(&q),
MQ(NULL) { }
2492 : vdim(q.
GetVDim()), Q_order(qo),
Q(NULL),
VQ(NULL),
MQ(&q) { }
2536#ifndef MFEM_THREAD_SAFE
2545 int dim, ne, dofs1D, L2dofs1D, quad1D;
2570#ifndef MFEM_THREAD_SAFE
2597#ifndef MFEM_THREAD_SAFE
2643#ifndef MFEM_THREAD_SAFE
2688 Vector &flux,
bool with_coef,
2708#ifndef MFEM_THREAD_SAFE
2709 DenseMatrix dshape_hat, dshape, curlshape, Jadj, grad_hat, grad;
2768 {
Q = q;
DQ = dq;
MQ = mq; }
2770#ifndef MFEM_THREAD_SAFE
2836 const DofToQuad *trial_maps, *test_maps;
2839 int trial_dofs1D, test_dofs1D, quad1D;
2843 Q(NULL), trial_maps(NULL), test_maps(NULL), geom(NULL)
2846 Q(q_), trial_maps(NULL), test_maps(NULL), geom(NULL)
2849 Q(&q), trial_maps(NULL), test_maps(NULL), geom(NULL)
2881#ifndef MFEM_THREAD_SAFE
2882 Vector divshape, te_divshape;
2890 int dim, ne, dofs1D, quad1D;
2950 : vdim(vector_dimension) { }
2967 :
Q(&q), vdim(vector_dimension) { }
2979 :
VQ(&vq), vdim(vq.GetVDim()) { }
2991 :
MQ(&mq), vdim(mq.GetVDim()) { }
3025#ifndef MFEM_THREAD_SAFE
3038 std::unique_ptr<QuadratureSpace> q_space;
3040 std::unique_ptr<CoefficientVector> lambda_quad, mu_quad;
3042 std::unique_ptr<QuadratureFunction> q_vec;
3081 Vector &flux,
bool with_coef =
true,
3123 const bool add =
true);
3442#ifndef MFEM_THREAD_SAFE
3464 const int dim,
const int row_ndofs,
const int col_ndofs,
3465 const int row_offset,
const int col_offset,
3478 Vector face_shape, shape1, shape2;
3496 Vector face_shape, normal, shape1_n, shape2_n;
3516 Vector face_shape, shape;
3532 Vector face_shape, normal, shape_n;
3559 MFEM_VERIFY(Y.
Width() ==
dim,
"Size mismatch");
3565 for (
int i = 0; i<h; i++)
3567 Z(i,0) = x(2) * Y(i,1) - x(1) * Y(i,2);
3568 Z(i,1) = x(0) * Y(i,2) - x(2) * Y(i,0);
3569 Z(i,2) = x(1) * Y(i,0) - x(0) * Y(i,1);
3574 for (
int i = 0; i<h; i++)
3576 Z(i,0) = x(1) * Y(i,0) - x(0) * Y(i,1);
3630 int dim, ne, o_dofs1D, c_dofs1D;
3646 { ran_fe.
Project(dom_fe, Trans, elmat); }
3663 int dim, ne, o_dofs1D, c_dofs1D;
int Append(const T &el)
Append element 'el' to array, resize if necessary.
virtual void AssembleFaceMatrix(const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat)
BoundaryMassIntegrator(Coefficient &q)
Base class Coefficients that optionally depend on space and time. These are used by the BilinearFormI...
, negative transpose of ConvectionIntegrator
ConservativeConvectionIntegrator(VectorCoefficient &q, real_t a=1.0)
virtual void AssembleMF(const FiniteElementSpace &fes)
Method defining matrix-free assembly.
virtual void AssembleDiagonalMF(Vector &diag)
Assemble diagonal and add it to Vector diag.
const DofToQuad * maps
Not owned.
virtual void AssembleEA(const FiniteElementSpace &fes, Vector &emat, const bool add)
Method defining element assembly.
bool SupportsCeed() const
Indicates whether this integrator can use a Ceed backend.
static const IntegrationRule & GetRule(const FiniteElement &el, ElementTransformation &Trans)
virtual void AssembleElementMatrix(const FiniteElement &, ElementTransformation &, DenseMatrix &)
Given a particular Finite Element computes the element matrix elmat.
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
ConvectionIntegrator(VectorCoefficient &q, real_t a=1.0)
virtual void AssemblePA(const FiniteElementSpace &)
Method defining partial assembly.
const GeometricFactors * geom
Not owned.
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
virtual void AddMultMF(const Vector &, Vector &) const
virtual void AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
Integrator for for Nedelec elements.
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
CurlCurlIntegrator(Coefficient &q, const IntegrationRule *ir=NULL)
Construct a bilinear form integrator for Nedelec elements.
const GeometricFactors * geom
Not owned.
bool symmetric
False if using a nonsymmetric matrix coefficient.
const Coefficient * GetCoefficient() const
CurlCurlIntegrator(DiagonalMatrixCoefficient &dq, const IntegrationRule *ir=NULL)
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
CurlCurlIntegrator(MatrixCoefficient &mq, const IntegrationRule *ir=NULL)
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
virtual real_t ComputeFluxEnergy(const FiniteElement &fluxelem, ElementTransformation &Trans, Vector &flux, Vector *d_energy=NULL)
Virtual method required for Zienkiewicz-Zhu type error estimators.
const DofToQuad * mapsC
Not owned. DOF-to-quad map, closed.
const DofToQuad * mapsO
Not owned. DOF-to-quad map, open.
DiagonalMatrixCoefficient * DQ
virtual void ComputeElementFlux(const FiniteElement &el, ElementTransformation &Trans, Vector &u, const FiniteElement &fluxelem, Vector &flux, bool with_coef, const IntegrationRule *ir=NULL)
Virtual method required for Zienkiewicz-Zhu type error estimators.
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
virtual void AssembleElementMatrix2(const FiniteElement &dom_fe, const FiniteElement &ran_fe, ElementTransformation &Trans, DenseMatrix &elmat)
void PrecomputeMassInverse(class FiniteElementSpace &fes)
Precomputes the inverses (LU factorizations) of the local mass matrices.
virtual void AssembleFaceMatrix(const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat)
MFEM_DEPRECATED DGDiffusionBR2Integrator(class FiniteElementSpace *fes, real_t e=1.0)
Array< int > Minv_offsets
Array< int > ipiv_offsets
DGDiffusionBR2Integrator(class FiniteElementSpace &fes, real_t e=1.0)
DGDiffusionBR2Integrator(class FiniteElementSpace &fes, Coefficient &Q_, real_t e=1.0)
bool RequiresFaceNormalDerivatives() const override
For bilinear forms on element faces, specifies if the normal derivatives are needed on the faces or j...
void AssembleFaceMatrix(const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat) override
void AssemblePAInteriorFaces(const FiniteElementSpace &fes) override
const IntegrationRule & GetRule(int order, FaceElementTransformations &T)
DGDiffusionIntegrator(const real_t s, const real_t k)
DGDiffusionIntegrator(Coefficient &q, const real_t s, const real_t k)
DGDiffusionIntegrator(MatrixCoefficient &q, const real_t s, const real_t k)
void AddMultPAFaceNormalDerivatives(const Vector &x, const Vector &dxdn, Vector &y, Vector &dydn) const override
Method for partially assembled action.
void AssemblePABoundaryFaces(const FiniteElementSpace &fes) override
const DofToQuad * maps
Not owned.
static void AssembleBlock(const int dim, const int row_ndofs, const int col_ndofs, const int row_offset, const int col_offset, const real_t jmatcoef, const Vector &col_nL, const Vector &col_nM, const Vector &row_shape, const Vector &col_shape, const Vector &col_dshape_dnM, const DenseMatrix &col_dshape, DenseMatrix &elmat, DenseMatrix &jmat)
virtual void AssembleFaceMatrix(const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat)
DGElasticityIntegrator(real_t alpha_, real_t kappa_)
DGElasticityIntegrator(Coefficient &lambda_, Coefficient &mu_, real_t alpha_, real_t kappa_)
Solver for the discontinuous Galerkin mass matrix.
virtual void AssemblePABoundaryFaces(const FiniteElementSpace &fes)
virtual void AssembleFaceMatrix(const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat)
virtual void AssemblePAInteriorFaces(const FiniteElementSpace &fes)
virtual void AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
virtual void AssembleEAInteriorFaces(const FiniteElementSpace &fes, Vector &ea_data_int, Vector &ea_data_ext, const bool add)
virtual void AssembleEABoundaryFaces(const FiniteElementSpace &fes, Vector &ea_data_bdr, const bool add)
DGTraceIntegrator(VectorCoefficient &u_, real_t a)
Construct integrator with , .
const FaceGeometricFactors * geom
Not owned.
static const IntegrationRule & GetRule(Geometry::Type geom, int order, FaceElementTransformations &T)
DGTraceIntegrator(VectorCoefficient &u_, real_t a, real_t b)
Construct integrator with .
DGTraceIntegrator(Coefficient &rho_, VectorCoefficient &u_, real_t a, real_t b)
const DofToQuad * maps
Not owned.
Data type dense matrix using column-major storage.
void SetSize(int s)
Change the size of the DenseMatrix to s x s.
Class for integrating where and are scalars.
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
DerivativeIntegrator(Coefficient &q, int i)
static const IntegrationRule & GetRule(const FiniteElement &trial_fe, const FiniteElement &test_fe)
DiffusionIntegrator(const IntegrationRule *ir=nullptr)
Construct a diffusion integrator with coefficient Q = 1.
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
void AssemblePatchPA(const int patch, const FiniteElementSpace &fes)
virtual void AddMultTransposePA(const Vector &, Vector &) const
Method for partially assembled transposed action.
virtual void AddMultNURBSPA(const Vector &, Vector &) const
Method for partially assembled action on NURBS patches.
DiffusionIntegrator(VectorCoefficient &q, const IntegrationRule *ir=nullptr)
Construct a diffusion integrator with a vector coefficient q.
DiffusionIntegrator(MatrixCoefficient &q, const IntegrationRule *ir=nullptr)
Construct a diffusion integrator with a matrix coefficient q.
virtual void AssembleNURBSPA(const FiniteElementSpace &fes)
Method defining partial assembly on NURBS patches.
virtual void AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
bool SupportsCeed() const
Indicates whether this integrator can use a Ceed backend.
virtual void AssembleEA(const FiniteElementSpace &fes, Vector &emat, const bool add)
Method defining element assembly.
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
virtual void AssembleElementVector(const FiniteElement &el, ElementTransformation &Tr, const Vector &elfun, Vector &elvect)
Perform the local action of the BilinearFormIntegrator.
virtual void AddMultMF(const Vector &, Vector &) const
virtual void AssembleDiagonalMF(Vector &diag)
Assemble diagonal and add it to Vector diag.
virtual void AssemblePatchMatrix(const int patch, const FiniteElementSpace &fes, SparseMatrix *&smat)
void AddMultPatchPA(const int patch, const Vector &x, Vector &y) const
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
virtual real_t ComputeFluxEnergy(const FiniteElement &fluxelem, ElementTransformation &Trans, Vector &flux, Vector *d_energy=NULL)
Virtual method required for Zienkiewicz-Zhu type error estimators.
DiffusionIntegrator(Coefficient &q, const IntegrationRule *ir=nullptr)
Construct a diffusion integrator with a scalar coefficient q.
virtual void ComputeElementFlux(const FiniteElement &el, ElementTransformation &Trans, Vector &u, const FiniteElement &fluxelem, Vector &flux, bool with_coef=true, const IntegrationRule *ir=NULL)
Virtual method required for Zienkiewicz-Zhu type error estimators.
virtual void AssembleMF(const FiniteElementSpace &fes)
Method defining matrix-free assembly.
Coefficient * GetCoefficient() const
for Raviart-Thomas elements
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
DivDivIntegrator(Coefficient &q, const IntegrationRule *ir=NULL)
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
const Coefficient * GetCoefficient() const
virtual void AssembleElementMatrix2(const FiniteElement &dom_fe, const FiniteElement &ran_fe, ElementTransformation &Trans, DenseMatrix &elmat)
Structure representing the matrices/tensors needed to evaluate (in reference space) the values,...
Integrator that computes the PA action of one of the blocks in an ElasticityIntegrator,...
ElasticityComponentIntegrator(ElasticityIntegrator &parent_, int i_, int j_)
Given an ElasticityIntegrator, create an integrator that represents the th component block.
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
virtual void AssembleEA(const FiniteElementSpace &fes, Vector &emat, const bool add=true)
Method defining element assembly.
ElasticityIntegrator(Coefficient &m, real_t q_l, real_t q_m)
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Tr, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
ElasticityIntegrator(Coefficient &l, Coefficient &m)
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
virtual real_t ComputeFluxEnergy(const FiniteElement &fluxelem, ElementTransformation &Trans, Vector &flux, Vector *d_energy=NULL)
virtual void ComputeElementFlux(const FiniteElement &el, ElementTransformation &Trans, Vector &u, const FiniteElement &fluxelem, Vector &flux, bool with_coef=true, const IntegrationRule *ir=NULL)
Structure for storing face geometric factors: coordinates, Jacobians, determinants of the Jacobians,...
Class FiniteElementSpace - responsible for providing FEM view of the mesh, mainly managing the set of...
Abstract class for all finite elements.
virtual void CalcVShape(const IntegrationPoint &ip, DenseMatrix &shape) const
Evaluate the values of all shape functions of a vector finite element in reference space at the given...
virtual void ProjectDiv(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &div) const
Compute the discrete divergence matrix from the given FiniteElement onto 'this' FiniteElement....
int GetRangeDim() const
Returns the vector dimension for vector-valued finite elements, which is also the dimension of the in...
int GetOrder() const
Returns the order of the finite element. In the case of anisotropic orders, returns the maximum order...
void CalcPhysDShape(ElementTransformation &Trans, DenseMatrix &dshape) const
Evaluate the gradients of all shape functions of a scalar finite element in physical space at the poi...
int GetDerivType() const
Returns the FiniteElement::DerivType of the element describing the spatial derivative method implemen...
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
Compute the discrete gradient matrix from the given FiniteElement onto 'this' FiniteElement....
int GetDim() const
Returns the reference space dimension for the finite element.
int GetRangeType() const
Returns the FiniteElement::RangeType of the element, one of {SCALAR, VECTOR}.
int Space() const
Returns the type of FunctionSpace on the element.
@ DIV
Implements CalcDivShape methods.
@ CURL
Implements CalcCurlShape methods.
@ GRAD
Implements CalcDShape methods.
virtual void Project(Coefficient &coeff, ElementTransformation &Trans, Vector &dofs) const
Given a coefficient and a transformation, compute its projection (approximation) in the local finite ...
void CalcPhysDivShape(ElementTransformation &Trans, Vector &divshape) const
Evaluate the divergence of all shape functions of a vector finite element in physical space at the po...
int GetCurlDim() const
Returns the dimension of the curl for vector-valued finite elements.
virtual void ProjectCurl(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) const
Compute the discrete curl matrix from the given FiniteElement onto 'this' FiniteElement....
virtual void CalcPhysCurlShape(ElementTransformation &Trans, DenseMatrix &curl_shape) const
Evaluate the curl of all shape functions of a vector finite element in physical space at the point de...
void CalcPhysShape(ElementTransformation &Trans, Vector &shape) const
Evaluate the values of all shape functions of a scalar finite element in physical space at the point ...
@ Pk
Polynomials of order k.
Structure for storing mesh geometric factors: coordinates, Jacobians, and determinants of the Jacobia...
GradientIntegrator(Coefficient *q_)
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
GradientIntegrator(Coefficient &q)
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
static const IntegrationRule & GetRule(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
virtual void AssembleElementMatrix2(const FiniteElement &h1_fe, const FiniteElement &nd_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
Setup method for PA data.
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
virtual ~GradientInterpolator()
using the "group" FE discretization
GroupConvectionIntegrator(VectorCoefficient &q, real_t a=1.0)
virtual void AssembleElementMatrix(const FiniteElement &, ElementTransformation &, DenseMatrix &)
Given a particular Finite Element computes the element matrix elmat.
virtual void AssembleElementMatrix2(const FiniteElement &dom_fe, const FiniteElement &ran_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
virtual ~IdentityInterpolator()
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
A class to initialize the size of a Tensor.
Class for an integration rule - an Array of IntegrationPoint.
Container class for integration rules.
Integrator that inverts the matrix assembled by another integrator.
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
InverseIntegrator(BilinearFormIntegrator *integ, int own_integ=1)
virtual void SetIntRule(const IntegrationRule *ir)
Prescribe a fixed IntegrationRule to use (when ir != NULL) or let the integrator choose (when ir == N...
virtual ~InverseIntegrator()
virtual void SetIntRule(const IntegrationRule *ir)
Prescribe a fixed IntegrationRule to use (when ir != NULL) or let the integrator choose (when ir == N...
LumpedIntegrator(BilinearFormIntegrator *bfi_, int own_bfi_=1)
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
virtual ~LumpedIntegrator()
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
const FiniteElementSpace * fespace
const FaceGeometricFactors * face_geom
Not owned.
virtual void AssembleDiagonalMF(Vector &diag)
Assemble diagonal and add it to Vector diag.
MassIntegrator(const IntegrationRule *ir=NULL)
virtual void AddMultTransposePA(const Vector &, Vector &) const
Method for partially assembled transposed action.
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
const DofToQuad * maps
Not owned.
virtual void AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
MassIntegrator(Coefficient &q, const IntegrationRule *ir=NULL)
Construct a mass integrator with coefficient q.
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
virtual void AssemblePABoundary(const FiniteElementSpace &fes)
bool SupportsCeed() const
Indicates whether this integrator can use a Ceed backend.
virtual void AssembleMF(const FiniteElementSpace &fes)
Method defining matrix-free assembly.
virtual void AddMultMF(const Vector &, Vector &) const
const GeometricFactors * geom
Not owned.
virtual void AssembleEA(const FiniteElementSpace &fes, Vector &emat, const bool add)
Method defining element assembly.
static const IntegrationRule & GetRule(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
const Coefficient * GetCoefficient() const
Base class for Matrix Coefficients that optionally depend on time and space.
virtual const char * FiniteElementTypeFailureMessage() const
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
MixedCrossCurlCurlIntegrator(VectorCoefficient &vq)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual int GetTrialVDim(const FiniteElement &trial_fe)
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual int GetTestVDim(const FiniteElement &test_fe)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
MixedCrossCurlGradIntegrator(VectorCoefficient &vq)
virtual const char * FiniteElementTypeFailureMessage() const
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual int GetTestVDim(const FiniteElement &test_fe)
virtual int GetTrialVDim(const FiniteElement &trial_fe)
virtual const char * FiniteElementTypeFailureMessage() const
MixedCrossCurlIntegrator(VectorCoefficient &vq)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual int GetTrialVDim(const FiniteElement &trial_fe)
virtual int GetTestVDim(const FiniteElement &test_fe)
virtual const char * FiniteElementTypeFailureMessage() const
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
MixedCrossGradCurlIntegrator(VectorCoefficient &vq)
virtual int GetTrialVDim(const FiniteElement &trial_fe)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
MixedCrossGradGradIntegrator(VectorCoefficient &vq)
virtual int GetTrialVDim(const FiniteElement &trial_fe)
virtual int GetTestVDim(const FiniteElement &test_fe)
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual const char * FiniteElementTypeFailureMessage() const
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual const char * FiniteElementTypeFailureMessage() const
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual int GetTrialVDim(const FiniteElement &trial_fe)
MixedCrossGradIntegrator(VectorCoefficient &vq)
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
MixedCrossProductIntegrator(VectorCoefficient &vq)
MixedCurlCurlIntegrator()
virtual int GetTestVDim(const FiniteElement &test_fe)
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual const char * FiniteElementTypeFailureMessage() const
virtual int GetTrialVDim(const FiniteElement &trial_fe)
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
MixedCurlCurlIntegrator(MatrixCoefficient &mq)
MixedCurlCurlIntegrator(DiagonalMatrixCoefficient &dq)
MixedCurlCurlIntegrator(Coefficient &q)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
MixedCurlIntegrator(Coefficient &q)
MixedCurlIntegrator(Coefficient *q_)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
MixedDirectionalDerivativeIntegrator(VectorCoefficient &vq)
virtual const char * FiniteElementTypeFailureMessage() const
virtual void CalcVShape(const FiniteElement &vector_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual int GetVDim(const FiniteElement &vector_fe)
virtual void CalcVShape(const FiniteElement &vector_fe, ElementTransformation &Trans, DenseMatrix &shape)
MixedDivGradIntegrator(VectorCoefficient &vq)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual const char * FiniteElementTypeFailureMessage() const
virtual int GetVDim(const FiniteElement &vector_fe)
virtual void CalcShape(const FiniteElement &scalar_fe, ElementTransformation &Trans, Vector &shape)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
MixedDotProductIntegrator(VectorCoefficient &vq)
virtual const char * FiniteElementTypeFailureMessage() const
MixedGradDivIntegrator(VectorCoefficient &vq)
virtual void CalcVShape(const FiniteElement &vector_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual int GetVDim(const FiniteElement &vector_fe)
virtual void CalcShape(const FiniteElement &scalar_fe, ElementTransformation &Trans, Vector &shape)
virtual const char * FiniteElementTypeFailureMessage() const
virtual const char * FiniteElementTypeFailureMessage() const
virtual int GetTrialVDim(const FiniteElement &trial_fe)
MixedGradGradIntegrator()
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
MixedGradGradIntegrator(DiagonalMatrixCoefficient &dq)
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
MixedGradGradIntegrator(Coefficient &q)
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual int GetTestVDim(const FiniteElement &test_fe)
MixedGradGradIntegrator(MatrixCoefficient &mq)
virtual int GetIntegrationOrder(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
MixedScalarCrossCurlIntegrator(VectorCoefficient &vq)
virtual const char * FiniteElementTypeFailureMessage() const
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void CalcShape(const FiniteElement &scalar_fe, ElementTransformation &Trans, Vector &shape)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
MixedScalarCrossGradIntegrator(VectorCoefficient &vq)
virtual const char * FiniteElementTypeFailureMessage() const
int GetVDim(const FiniteElement &vector_fe)
virtual void CalcVShape(const FiniteElement &vector_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual const char * FiniteElementTypeFailureMessage() const
MixedScalarCrossProductIntegrator(VectorCoefficient &vq)
const DofToQuad * mapsO
Not owned. DOF-to-quad map, open.
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
const DofToQuad * mapsC
Not owned. DOF-to-quad map, closed.
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
MixedScalarCurlIntegrator()
MixedScalarCurlIntegrator(Coefficient &q)
virtual int GetIntegrationOrder(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, Vector &shape)
virtual const char * FiniteElementTypeFailureMessage() const
virtual void AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
MixedScalarDerivativeIntegrator(Coefficient &q)
virtual const char * FiniteElementTypeFailureMessage() const
MixedScalarDerivativeIntegrator()
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, Vector &shape)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual const char * FiniteElementTypeFailureMessage() const
MixedScalarDivergenceIntegrator()
MixedScalarDivergenceIntegrator(Coefficient &q)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual int GetIntegrationOrder(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, Vector &shape)
virtual const char * FiniteElementTypeFailureMessage() const
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual void AssembleElementMatrix(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &elmat)
Support for use in BilinearForm. Can be used only when appropriate.
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, Vector &shape)
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, Vector &shape)
MixedScalarIntegrator(Coefficient &q)
virtual int GetIntegrationOrder(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
MixedScalarMassIntegrator()
MixedScalarMassIntegrator(Coefficient &q)
virtual int GetIntegrationOrder(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
virtual void AssembleElementMatrix(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &elmat)
Support for use in BilinearForm. Can be used only when appropriate.
virtual const char * FiniteElementTypeFailureMessage() const
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
MixedScalarVectorIntegrator(VectorCoefficient &vq, bool transpose_=false, bool cross_2d_=false)
virtual void CalcVShape(const FiniteElement &vector_fe, ElementTransformation &Trans, DenseMatrix &shape_)
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual int GetVDim(const FiniteElement &vector_fe)
virtual void CalcShape(const FiniteElement &scalar_fe, ElementTransformation &Trans, Vector &shape_)
MixedScalarWeakCrossProductIntegrator(VectorCoefficient &vq)
virtual const char * FiniteElementTypeFailureMessage() const
virtual void CalcShape(const FiniteElement &scalar_fe, ElementTransformation &Trans, Vector &shape)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void CalcShape(const FiniteElement &scalar_fe, ElementTransformation &Trans, Vector &shape)
virtual const char * FiniteElementTypeFailureMessage() const
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
MixedScalarWeakCurlCrossIntegrator(VectorCoefficient &vq)
MixedScalarWeakCurlIntegrator()
virtual const char * FiniteElementTypeFailureMessage() const
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, Vector &shape)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
MixedScalarWeakCurlIntegrator(Coefficient &q)
MixedScalarWeakDerivativeIntegrator(Coefficient &q)
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, Vector &shape)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual const char * FiniteElementTypeFailureMessage() const
MixedScalarWeakDerivativeIntegrator()
MixedScalarWeakDivergenceIntegrator(VectorCoefficient &vq)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual const char * FiniteElementTypeFailureMessage() const
int GetVDim(const FiniteElement &vector_fe)
virtual void CalcVShape(const FiniteElement &vector_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, Vector &shape)
virtual int GetIntegrationOrder(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual const char * FiniteElementTypeFailureMessage() const
MixedScalarWeakGradientIntegrator()
MixedScalarWeakGradientIntegrator(Coefficient &q)
virtual void AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
virtual int GetTrialVDim(const FiniteElement &trial_fe)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
MixedVectorCurlIntegrator(Coefficient &q)
virtual const char * FiniteElementTypeFailureMessage() const
virtual void AddMultTransposePA(const Vector &, Vector &) const
Method for partially assembled transposed action.
MixedVectorCurlIntegrator(DiagonalMatrixCoefficient &dq)
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
MixedVectorCurlIntegrator(MatrixCoefficient &mq)
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
MixedVectorCurlIntegrator()
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual int GetIntegrationOrder(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
virtual void CalcShape(const FiniteElement &scalar_fe, ElementTransformation &Trans, Vector &shape)
MixedVectorDivergenceIntegrator(VectorCoefficient &vq)
virtual const char * FiniteElementTypeFailureMessage() const
virtual const char * FiniteElementTypeFailureMessage() const
MixedVectorGradientIntegrator(Coefficient &q)
MixedVectorGradientIntegrator(MatrixCoefficient &mq)
MixedVectorGradientIntegrator(DiagonalMatrixCoefficient &dq)
MixedVectorGradientIntegrator()
virtual void AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
virtual int GetTrialVDim(const FiniteElement &trial_fe)
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual void AddMultTransposePA(const Vector &, Vector &) const
Method for partially assembled transposed action.
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
virtual const char * FiniteElementTypeFailureMessage() const
MixedVectorIntegrator(VectorCoefficient &vq, bool diag=true)
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual int GetIntegrationOrder(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
virtual int GetTestVDim(const FiniteElement &test_fe)
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual int GetTrialVDim(const FiniteElement &trial_fe)
MixedVectorIntegrator(Coefficient &q)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual void AssembleElementMatrix(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &elmat)
Support for use in BilinearForm. Can be used only when appropriate.
DiagonalMatrixCoefficient * DQ
MixedVectorIntegrator(MatrixCoefficient &mq)
MixedVectorMassIntegrator(Coefficient &q)
MixedVectorMassIntegrator(DiagonalMatrixCoefficient &dq)
MixedVectorMassIntegrator()
MixedVectorMassIntegrator(MatrixCoefficient &mq)
MixedVectorProductIntegrator(VectorCoefficient &vq)
MixedVectorWeakCurlIntegrator()
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual const char * FiniteElementTypeFailureMessage() const
virtual void AddMultTransposePA(const Vector &, Vector &) const
Method for partially assembled transposed action.
MixedVectorWeakCurlIntegrator(DiagonalMatrixCoefficient &dq)
MixedVectorWeakCurlIntegrator(MatrixCoefficient &mq)
virtual int GetTestVDim(const FiniteElement &test_fe)
virtual void AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
MixedVectorWeakCurlIntegrator(Coefficient &q)
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
virtual int GetTestVDim(const FiniteElement &test_fe)
MixedVectorWeakDivergenceIntegrator(Coefficient &q)
MixedVectorWeakDivergenceIntegrator()
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
MixedVectorWeakDivergenceIntegrator(DiagonalMatrixCoefficient &dq)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual const char * FiniteElementTypeFailureMessage() const
MixedVectorWeakDivergenceIntegrator(MatrixCoefficient &mq)
virtual int GetTestVDim(const FiniteElement &test_fe)
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual const char * FiniteElementTypeFailureMessage() const
MixedWeakCurlCrossIntegrator(VectorCoefficient &vq)
MixedWeakDivCrossIntegrator(VectorCoefficient &vq)
virtual const char * FiniteElementTypeFailureMessage() const
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual int GetTestVDim(const FiniteElement &test_fe)
MixedWeakGradDotIntegrator(VectorCoefficient &vq)
virtual void CalcShape(const FiniteElement &scalar_fe, ElementTransformation &Trans, Vector &shape)
virtual const char * FiniteElementTypeFailureMessage() const
virtual int GetIntegrationOrder(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
NonconservativeDGTraceIntegrator(VectorCoefficient &u, real_t a, real_t b)
NonconservativeDGTraceIntegrator(Coefficient &rho, VectorCoefficient &u, real_t a, real_t b)
NonconservativeDGTraceIntegrator(VectorCoefficient &u, real_t a)
virtual void AssembleElementMatrix2(const FiniteElement &dom_fe, const FiniteElement &ran_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual void AssembleTraceFaceMatrix(int ielem, const FiniteElement &trial_face_fe, const FiniteElement &test_fe, FaceElementTransformations &Trans, DenseMatrix &elmat)
NormalTraceJumpIntegrator()
virtual void AssembleFaceMatrix(const FiniteElement &trial_face_fe, const FiniteElement &test_fe1, const FiniteElement &test_fe2, FaceElementTransformations &Trans, DenseMatrix &elmat)
int Height() const
Get the height (size of output) of the Operator. Synonym with NumRows().
int Width() const
Get the width (size of input) of the Operator. Synonym with NumCols().
virtual void AssembleElementMatrix2(const FiniteElement &nd_fe, const FiniteElement &l2_fe, ElementTransformation &Trans, DenseMatrix &elmat)
ScalarCrossProductInterpolator(VectorCoefficient &vc)
virtual void AssembleElementMatrix2(const FiniteElement &dom_fe, const FiniteElement &ran_fe, ElementTransformation &Trans, DenseMatrix &elmat)
ScalarProductInterpolator(Coefficient &sc)
ScalarVectorProductInterpolator(Coefficient &sc)
virtual void AssembleElementMatrix2(const FiniteElement &dom_fe, const FiniteElement &ran_fe, ElementTransformation &Trans, DenseMatrix &elmat)
Integrator defining a sum of multiple Integrators.
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
virtual void AddMultMF(const Vector &x, Vector &y) const
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
void AddIntegrator(BilinearFormIntegrator *integ)
virtual void AssembleFaceMatrix(const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat)
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
virtual void SetIntRule(const IntegrationRule *ir)
Prescribe a fixed IntegrationRule to use (when ir != NULL) or let the integrator choose (when ir == N...
virtual void AssembleMF(const FiniteElementSpace &fes)
Method defining matrix-free assembly.
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual void AssembleEAInteriorFaces(const FiniteElementSpace &fes, Vector &ea_data_int, Vector &ea_data_ext, const bool add)
virtual void AddMultTransposeMF(const Vector &x, Vector &y) const
virtual void AssembleDiagonalMF(Vector &diag)
Assemble diagonal and add it to Vector diag.
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
virtual void AssembleEA(const FiniteElementSpace &fes, Vector &emat, const bool add)
Method defining element assembly.
SumIntegrator(int own_integs=1)
virtual void AssemblePAInteriorFaces(const FiniteElementSpace &fes)
virtual void AssembleEABoundaryFaces(const FiniteElementSpace &fes, Vector &ea_data_bdr, const bool add)
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
virtual void AssemblePABoundaryFaces(const FiniteElementSpace &fes)
void AssembleTraceFaceMatrix(int elem, const FiniteElement &trial_face_fe, const FiniteElement &test_fe, FaceElementTransformations &Trans, DenseMatrix &elmat)
void AssembleTraceFaceMatrix(int elem, const FiniteElement &trial_face_fe, const FiniteElement &test_fe, FaceElementTransformations &Trans, DenseMatrix &elmat)
virtual void AssembleFaceMatrix(const FiniteElement &trial_face_fe, const FiniteElement &test_fe1, const FiniteElement &test_fe2, FaceElementTransformations &Trans, DenseMatrix &elmat)
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
virtual void AssembleEA(const FiniteElementSpace &fes, Vector &emat, const bool add)
Method defining element assembly.
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
TransposeIntegrator(BilinearFormIntegrator *bfi_, int own_bfi_=1)
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
virtual void SetIntRule(const IntegrationRule *ir)
Prescribe a fixed IntegrationRule to use (when ir != NULL) or let the integrator choose (when ir == N...
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual void AssemblePAInteriorFaces(const FiniteElementSpace &fes)
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
virtual void AssemblePABoundaryFaces(const FiniteElementSpace &fes)
virtual void AssembleFaceMatrix(const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat)
virtual void AssembleEAInteriorFaces(const FiniteElementSpace &fes, Vector &ea_data_int, Vector &ea_data_ext, const bool add)
virtual void AssembleEABoundaryFaces(const FiniteElementSpace &fes, Vector &ea_data_bdr, const bool add)
virtual ~TransposeIntegrator()
Base class for vector Coefficients that optionally depend on time and space.
virtual void AssembleElementMatrix2(const FiniteElement &nd_fe, const FiniteElement &rt_fe, ElementTransformation &Trans, DenseMatrix &elmat)
VectorCrossProductInterpolator(VectorCoefficient &vc)
VectorCurlCurlIntegrator(Coefficient &q)
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Assemble an element matrix.
VectorCurlCurlIntegrator()
virtual real_t GetElementEnergy(const FiniteElement &el, ElementTransformation &Tr, const Vector &elfun)
Compute element energy: .
VectorDiffusionIntegrator(int vector_dimension)
Integrator with unit coefficient for caller-specified vector dimension.
VectorDiffusionIntegrator(Coefficient &q)
const DofToQuad * maps
Not owned.
VectorDiffusionIntegrator()
VectorDiffusionIntegrator(Coefficient &q, int vector_dimension)
Integrator with scalar coefficient for caller-specified vector dimension.
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
virtual void AssembleElementVector(const FiniteElement &el, ElementTransformation &Tr, const Vector &elfun, Vector &elvect)
Perform the local action of the BilinearFormIntegrator. Note that the default implementation in the b...
bool SupportsCeed() const
Indicates whether this integrator can use a Ceed backend.
virtual void AddMultMF(const Vector &x, Vector &y) const
VectorDiffusionIntegrator(VectorCoefficient &vq)
Integrator with VectorCoefficient. The vector dimension of the FiniteElementSpace is assumed to be th...
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
virtual void AssembleMF(const FiniteElementSpace &fes)
Method defining matrix-free assembly.
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
VectorDiffusionIntegrator(Coefficient &q, const IntegrationRule *ir)
const GeometricFactors * geom
Not owned.
VectorDiffusionIntegrator(MatrixCoefficient &mq)
Integrator with MatrixCoefficient. The vector dimension of the FiniteElementSpace is assumed to be th...
virtual void AssembleDiagonalMF(Vector &diag)
Assemble diagonal and add it to Vector diag.
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
VectorDivergenceIntegrator(Coefficient &q)
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
VectorDivergenceIntegrator()
static const IntegrationRule & GetRule(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
VectorDivergenceIntegrator(Coefficient *q_)
VectorFECurlIntegrator(Coefficient &q)
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
VectorFEDivergenceIntegrator(Coefficient &q)
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual void AssembleDiagonalPA_ADAt(const Vector &D, Vector &diag)
Assemble diagonal of ( is this integrator) and add it to diag.
virtual void AddMultTransposePA(const Vector &, Vector &) const
Method for partially assembled transposed action.
VectorFEDivergenceIntegrator()
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
virtual void AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
VectorFEMassIntegrator(DiagonalMatrixCoefficient *dq_)
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
const Coefficient * GetCoefficient() const
VectorFEMassIntegrator(MatrixCoefficient &mq)
VectorFEMassIntegrator(MatrixCoefficient *mq_)
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
VectorFEMassIntegrator(Coefficient *q_)
const DofToQuad * mapsO
Not owned. DOF-to-quad map, open.
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
const DofToQuad * mapsOtest
Not owned. DOF-to-quad map, open.
VectorFEMassIntegrator(DiagonalMatrixCoefficient &dq)
VectorFEMassIntegrator(Coefficient &q)
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
bool symmetric
False if using a nonsymmetric matrix coefficient.
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
DiagonalMatrixCoefficient * DQ
const DofToQuad * mapsCtest
Not owned. DOF-to-quad map, closed.
const GeometricFactors * geom
Not owned.
const DofToQuad * mapsC
Not owned. DOF-to-quad map, closed.
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
VectorFEWeakDivergenceIntegrator()
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
VectorFEWeakDivergenceIntegrator(Coefficient &q)
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
virtual void AssembleElementMatrix2(const FiniteElement &rt_fe, const FiniteElement &l2_fe, ElementTransformation &Trans, DenseMatrix &elmat)
VectorInnerProductInterpolator(VectorCoefficient &vc)
virtual void AssembleDiagonalMF(Vector &diag)
Assemble diagonal and add it to Vector diag.
virtual void AssembleMF(const FiniteElementSpace &fes)
Method defining matrix-free assembly.
const DofToQuad * maps
Not owned.
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
VectorMassIntegrator(VectorCoefficient &q, int qo=0)
Construct an integrator with diagonal coefficient q.
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
VectorMassIntegrator(Coefficient &q, int qo=0)
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
virtual void AddMultMF(const Vector &x, Vector &y) const
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
VectorMassIntegrator(MatrixCoefficient &q, int qo=0)
Construct an integrator with matrix coefficient q.
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
VectorMassIntegrator(Coefficient &q, const IntegrationRule *ir)
VectorMassIntegrator()
Construct an integrator with coefficient 1.0.
const GeometricFactors * geom
Not owned.
bool SupportsCeed() const
Indicates whether this integrator can use a Ceed backend.
virtual void AssembleElementMatrix2(const FiniteElement &dom_fe, const FiniteElement &ran_fe, ElementTransformation &Trans, DenseMatrix &elmat)
VectorScalarProductInterpolator(VectorCoefficient &vc)
int Size() const
Returns the size of the vector.
real_t * GetData() const
Return a pointer to the beginning of the Vector data.
real_t u(const Vector &xvec)
void add(const Vector &v1, const Vector &v2, Vector &v)
bool DeviceCanUseCeed()
Function that determines if a CEED kernel should be used, based on the current mfem::Device configura...