12 #ifndef MFEM_BILININTEG 13 #define MFEM_BILININTEG 15 #include "../config/config.hpp" 95 const bool add =
true);
128 const bool add =
true);
132 const bool add =
true);
242 Vector &flux,
bool with_coef =
true,
284 { bfi = bfi_; own_bfi = own_bfi_; }
359 { bfi = bfi_; own_bfi = own_bfi_; }
379 { integrator = integ; own_integrator = own_integ; }
404 { integrators.
Append(integ); }
498 return "MixedScalarIntegrator: " 499 "Trial and test spaces must both be scalar fields.";
522 #ifndef MFEM_THREAD_SAFE 572 return "MixedVectorIntegrator: " 573 "Trial and test spaces must both be vector fields";
606 #ifndef MFEM_THREAD_SAFE 642 bool cross_2d_ =
false)
662 return "MixedScalarVectorIntegrator: " 663 "Trial space must be a vector field " 664 "and the test space must be a scalar field";
668 return "MixedScalarVectorIntegrator: " 669 "Trial space must be a scalar field " 670 "and the test space must be a vector field";
700 #ifndef MFEM_THREAD_SAFE 744 return (trial_fe.
GetDim() == 1 && test_fe.
GetDim() == 1 &&
751 return "MixedScalarDerivativeIntegrator: " 752 "Trial and test spaces must both be scalar fields in 1D " 753 "and the trial space must implement CalcDShape.";
779 return (trial_fe.
GetDim() == 1 && test_fe.
GetDim() == 1 &&
786 return "MixedScalarWeakDerivativeIntegrator: " 787 "Trial and test spaces must both be scalar fields in 1D " 788 "and the test space must implement CalcDShape with " 789 "map type \"VALUE\".";
823 return "MixedScalarDivergenceIntegrator: " 824 "Trial must be H(Div) and the test space must be a " 859 return "MixedVectorDivergenceIntegrator: " 860 "Trial must be H(Div) and the test space must be a " 898 return "MixedScalarWeakGradientIntegrator: " 899 "Trial space must be a scalar field " 900 "and the test space must be H(Div)";
932 return (trial_fe.
GetDim() == 2 && test_fe.
GetDim() == 2 &&
939 return "MixedScalarCurlIntegrator: " 940 "Trial must be H(Curl) and the test space must be a " 988 return (trial_fe.
GetDim() == 2 && test_fe.
GetDim() == 2 &&
995 return "MixedScalarWeakCurlIntegrator: " 996 "Trial space must be a scalar field " 997 "and the test space must be H(Curl)";
1052 return "MixedDotProductIntegrator: " 1053 "Trial space must be a vector field " 1054 "and the test space must be a scalar field";
1078 return "MixedWeakGradDotIntegrator: " 1079 "Trial space must be a vector field " 1080 "and the test space must be a vector field with a divergence";
1108 return (trial_fe.
GetVDim() == 3 &&
1116 return "MixedWeakDivCrossIntegrator: " 1117 "Trial space must be a vector field in 3D " 1118 "and the test space must be a scalar field with a gradient";
1156 return "MixedGradGradIntegrator: " 1157 "Trial and test spaces must both be scalar fields " 1158 "with a gradient operator.";
1208 return "MixedCrossGradGradIntegrator: " 1209 "Trial and test spaces must both be scalar fields " 1210 "with a gradient operator.";
1257 return "MixedCurlCurlIntegrator" 1258 "Trial and test spaces must both be vector fields in 3D " 1301 return "MixedCrossCurlCurlIntegrator: " 1302 "Trial and test spaces must both be vector fields in 3D " 1344 return "MixedCrossCurlGradIntegrator" 1345 "Trial space must be a vector field in 3D with a curl" 1346 "and the test space must be a scalar field with a gradient";
1387 return "MixedCrossGradCurlIntegrator" 1388 "Trial space must be a scalar field in 3D with a gradient" 1389 "and the test space must be a vector field with a curl";
1430 return "MixedWeakCurlCrossIntegrator: " 1431 "Trial space must be a vector field in 3D " 1432 "and the test space must be a vector field with a curl";
1457 return (trial_fe.
GetDim() == 2 && test_fe.
GetDim() == 2 &&
1465 return "MixedScalarWeakCurlCrossIntegrator: " 1466 "Trial space must be a vector field in 2D " 1467 "and the test space must be a vector field with a curl";
1492 return (test_fe.
GetVDim() == 3 &&
1500 return "MixedCrossGradIntegrator: " 1501 "Trial space must be a scalar field with a gradient operator" 1502 " and the test space must be a vector field both in 3D.";
1540 return "MixedCrossCurlIntegrator: " 1541 "Trial space must be a vector field in 3D with a curl " 1542 "and the test space must be a vector field";
1567 return (trial_fe.
GetDim() == 2 && test_fe.
GetDim() == 2 &&
1575 return "MixedCrossCurlIntegrator: " 1576 "Trial space must be a vector field in 2D with a curl " 1577 "and the test space must be a vector field";
1601 return (trial_fe.
GetDim() == 2 && test_fe.
GetDim() == 2 &&
1609 return "MixedScalarCrossGradIntegrator: " 1610 "Trial space must be a scalar field in 2D with a gradient " 1611 "and the test space must be a scalar field";
1635 return (trial_fe.
GetDim() == 2 && test_fe.
GetDim() == 2 &&
1642 return "MixedScalarCrossProductIntegrator: " 1643 "Trial space must be a vector field in 2D " 1644 "and the test space must be a scalar field";
1660 return (trial_fe.
GetDim() == 2 && test_fe.
GetDim() == 2 &&
1667 return "MixedScalarWeakCrossProductIntegrator: " 1668 "Trial space must be a scalar field in 2D " 1669 "and the test space must be a vector field";
1697 return "MixedDirectionalDerivativeIntegrator: " 1698 "Trial space must be a scalar field with a gradient " 1699 "and the test space must be a scalar field";
1731 return "MixedGradDivIntegrator: " 1732 "Trial space must be a scalar field with a gradient" 1733 "and the test space must be a vector field with a divergence";
1771 return "MixedDivGradIntegrator: " 1772 "Trial space must be a vector field with a divergence" 1773 "and the test space must be a scalar field with a gradient";
1809 return "MixedScalarWeakDivergenceIntegrator: " 1810 "Trial space must be a scalar field " 1811 "and the test space must be a scalar field with a gradient";
1851 return "MixedVectorGradientIntegrator: " 1852 "Trial spaces must be H1 and the test space must be a " 1853 "vector field in 2D or 3D";
1881 int dim, ne, dofs1D, quad1D;
1910 return "MixedVectorCurlIntegrator: " 1911 "Trial space must be H(Curl) and the test space must be a " 1912 "vector field in 3D";
1940 int dim, ne, dofs1D, dofs1Dtest,quad1D, testType, trialType, coeffDim;
1969 return "MixedVectorWeakCurlIntegrator: " 1970 "Trial space must be vector field in 3D and the " 1971 "test space must be H(Curl)";
1997 int dim, ne, dofs1D, quad1D, testType, trialType, coeffDim;
2025 return "MixedVectorWeakDivergenceIntegrator: " 2026 "Trial space must be vector field and the " 2027 "test space must be H1";
2060 const DofToQuad *trial_maps, *test_maps;
2063 int trial_dofs1D, test_dofs1D, quad1D;
2067 Q{NULL}, trial_maps{NULL}, test_maps{NULL}, geom{NULL}
2070 Q{q_}, trial_maps{NULL}, test_maps{NULL}, geom{NULL}
2073 Q{&q}, trial_maps{NULL}, test_maps{NULL}, geom{NULL}
2077 const FiniteElement &test_fe,
2078 ElementTransformation &Trans,
2079 DenseMatrix &elmat);
2082 virtual void AssemblePA(
const FiniteElementSpace &trial_fes,
2083 const FiniteElementSpace &test_fes);
2085 virtual void AddMultPA(
const Vector &x, Vector &y)
const;
2088 static const IntegrationRule &
GetRule(
const FiniteElement &trial_fe,
2089 const FiniteElement &test_fe,
2090 ElementTransformation &Trans);
2103 Vector vec, vecdxt, pointflux, shape;
2104 #ifndef MFEM_THREAD_SAFE 2105 DenseMatrix dshape, dshapedxt, invdfdx, M, dshapedxt_m;
2114 int dim, ne, dofs1D, quad1D;
2116 bool symmetric =
true;
2122 typedef std::vector<std::vector<int>> IntArrayVar2D;
2125 static constexpr
int numTypes = 2;
2147 std::vector<std::vector<Vector>> reducedWeights;
2148 std::vector<IntArrayVar2D> reducedIDs;
2149 std::vector<Array<int>> pQ1D, pD1D;
2150 std::vector<std::vector<Array2D<double>>> pB, pG;
2151 std::vector<IntArrayVar2D> pminD, pmaxD, pminQ, pmaxQ, pminDD, pmaxDD;
2153 std::vector<Array<const IntegrationRule*>> pir1d;
2155 void SetupPatchPA(
const int patch,
Mesh *mesh,
bool unitWeights=
false);
2157 void SetupPatchBasisData(
Mesh *mesh,
unsigned int patch);
2161 void AssemblePatchMatrix_fullQuadrature(
const int patch,
2167 void AssemblePatchMatrix_reducedQuadrature(
const int patch,
2175 Q(NULL),
VQ(NULL),
MQ(NULL), maps(NULL), geom(NULL) { }
2180 Q(&q),
VQ(NULL),
MQ(NULL), maps(NULL), geom(NULL) { }
2186 Q(NULL),
VQ(&q),
MQ(NULL), maps(NULL), geom(NULL) { }
2192 Q(NULL),
VQ(NULL),
MQ(&q), maps(NULL), geom(NULL) { }
2222 Vector &flux,
bool with_coef =
true,
2265 #ifndef MFEM_THREAD_SAFE 2352 #ifndef MFEM_THREAD_SAFE 2354 Vector shape, vec2, BdFidxT;
2431 Vector shape, te_shape, vec;
2449 : vdim(-1), Q_order(0),
Q(NULL),
VQ(NULL),
MQ(NULL) { }
2454 : vdim(-1), Q_order(qo),
Q(&q),
VQ(NULL),
MQ(NULL) { }
2460 : vdim(q.
GetVDim()), Q_order(qo),
Q(NULL),
VQ(&q),
MQ(NULL) { }
2463 : vdim(q.
GetVDim()), Q_order(qo),
Q(NULL),
VQ(NULL),
MQ(&q) { }
2507 #ifndef MFEM_THREAD_SAFE 2516 int dim, ne, dofs1D, L2dofs1D, quad1D;
2541 #ifndef MFEM_THREAD_SAFE 2568 #ifndef MFEM_THREAD_SAFE 2614 #ifndef MFEM_THREAD_SAFE 2659 Vector &flux,
bool with_coef,
2679 #ifndef MFEM_THREAD_SAFE 2680 DenseMatrix dshape_hat, dshape, curlshape, Jadj, grad_hat, grad;
2725 const FiniteElement &test_fe,
2726 ElementTransformation &Trans,
2727 DenseMatrix &elmat);
2738 {
Q = q;
DQ = dq;
MQ = mq; }
2740 #ifndef MFEM_THREAD_SAFE 2807 const DofToQuad *trial_maps, *test_maps;
2810 int trial_dofs1D, test_dofs1D, quad1D;
2814 Q(NULL), trial_maps(NULL), test_maps(NULL), geom(NULL)
2817 Q(q_), trial_maps(NULL), test_maps(NULL), geom(NULL)
2820 Q(&q), trial_maps(NULL), test_maps(NULL), geom(NULL)
2852 #ifndef MFEM_THREAD_SAFE 2853 Vector divshape, te_divshape;
2861 int dim, ne, dofs1D, quad1D;
2921 : vdim(vector_dimension) { }
2938 :
Q(&q), vdim(vector_dimension) { }
2950 :
VQ(&vq), vdim(vq.GetVDim()) { }
2962 :
MQ(&mq), vdim(mq.GetVDim()) { }
2992 #ifndef MFEM_THREAD_SAFE 3023 Vector &flux,
bool with_coef =
true,
3313 double alpha_,
double kappa_)
3326 #ifndef MFEM_THREAD_SAFE 3348 const int dim,
const int row_ndofs,
const int col_ndofs,
3349 const int row_offset,
const int col_offset,
3350 const double jmatcoef,
const Vector &col_nL,
const Vector &col_nM,
3362 Vector face_shape, shape1, shape2;
3380 Vector face_shape, normal, shape1_n, shape2_n;
3400 Vector face_shape, shape;
3416 Vector face_shape, normal, shape_n;
3443 MFEM_VERIFY(Y.
Width() ==
dim,
"Size mismatch");
3449 for (
int i = 0; i<h; i++)
3451 Z(i,0) = x(2) * Y(i,1) - x(1) * Y(i,2);
3452 Z(i,1) = x(0) * Y(i,2) - x(2) * Y(i,0);
3453 Z(i,2) = x(1) * Y(i,0) - x(0) * Y(i,1);
3458 for (
int i = 0; i<h; i++)
3460 Z(i,0) = x(1) * Y(i,0) - x(0) * Y(i,1);
3514 int dim, ne, o_dofs1D, c_dofs1D;
3530 { ran_fe.
Project(dom_fe, Trans, elmat); }
3548 int dim, ne, o_dofs1D, c_dofs1D;
Abstract class for all finite elements.
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
virtual void CalcVShape(const FiniteElement &vector_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
VectorCurlCurlIntegrator()
virtual const char * FiniteElementTypeFailureMessage() const
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
DiagonalMatrixCoefficient * DQ
virtual void AssembleElementMatrix(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &elmat)
Support for use in BilinearForm. Can be used only when appropriate.
virtual void AssembleMF(const FiniteElementSpace &fes)
Method defining matrix-free assembly.
virtual void AssembleEA(const FiniteElementSpace &fes, Vector &emat, const bool add)
Method defining element assembly.
VectorFEMassIntegrator(Coefficient &q)
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
virtual int GetTrialVDim(const FiniteElement &trial_fe)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
virtual const char * FiniteElementTypeFailureMessage() const
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual int GetTestVDim(const FiniteElement &test_fe)
Class for an integration rule - an Array of IntegrationPoint.
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
const DofToQuad * mapsO
Not owned. DOF-to-quad map, open.
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, Vector &shape)
virtual void AddMultTransposePA(const Vector &, Vector &) const
Method for partially assembled transposed action.
MixedCrossCurlGradIntegrator(VectorCoefficient &vq)
virtual int GetTrialVDim(const FiniteElement &trial_fe)
bool symmetric
False if using a nonsymmetric matrix coefficient.
virtual void SetIntRule(const IntegrationRule *ir)
Prescribe a fixed IntegrationRule to use (when ir != NULL) or let the integrator choose (when ir == N...
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
MixedGradDivIntegrator(VectorCoefficient &vq)
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
DGDiffusionIntegrator(Coefficient &q, const double s, const double k)
Integrator defining a sum of multiple Integrators.
SumIntegrator(int own_integs=1)
virtual void AssembleFaceMatrix(const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat)
static const IntegrationRule & GetRule(Geometry::Type geom, int order, FaceElementTransformations &T)
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
NonconservativeDGTraceIntegrator(VectorCoefficient &u, double a)
MixedScalarCrossProductIntegrator(VectorCoefficient &vq)
bool SupportsCeed() const
Indicates whether this integrator can use a Ceed backend.
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
Base class for vector Coefficients that optionally depend on time and space.
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual int GetIntegrationOrder(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
virtual int GetTestVDim(const FiniteElement &test_fe)
virtual const char * FiniteElementTypeFailureMessage() const
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
virtual double ComputeFluxEnergy(const FiniteElement &fluxelem, ElementTransformation &Trans, Vector &flux, Vector *d_energy=NULL)
Virtual method required for Zienkiewicz-Zhu type error estimators.
MixedVectorCurlIntegrator()
virtual void AssemblePAInteriorFaces(const FiniteElementSpace &fes)
virtual void CalcShape(const FiniteElement &scalar_fe, ElementTransformation &Trans, Vector &shape)
ElasticityIntegrator(Coefficient &l, Coefficient &m)
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 int GetTestVDim(const FiniteElement &test_fe)
bool SupportsCeed() const
Indicates whether this integrator can use a Ceed backend.
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
NormalTraceJumpIntegrator()
virtual void AssembleMF(const FiniteElementSpace &fes)
Method defining matrix-free assembly.
VectorDiffusionIntegrator(Coefficient &q)
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual const char * FiniteElementTypeFailureMessage() const
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
int Space() const
Returns the type of FunctionSpace on the element.
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
const GeometricFactors * geom
Not owned.
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, Vector &shape)
virtual void AssembleDiagonalMF(Vector &diag)
Assemble diagonal and add it to Vector diag.
Integrator for (curl u, curl v) for Nedelec elements.
MixedVectorMassIntegrator()
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
DGTraceIntegrator(VectorCoefficient &u_, double a, double b)
Construct integrator with rho = 1.
VectorCurlCurlIntegrator(Coefficient &q)
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, Vector &shape)
virtual void AssembleFaceMatrix(const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat)
MixedScalarVectorIntegrator(VectorCoefficient &vq, bool transpose_=false, bool cross_2d_=false)
MixedScalarMassIntegrator(Coefficient &q)
int GetCurlDim() const
Returns the dimension of the curl for vector-valued finite elements.
VectorMassIntegrator(Coefficient &q, const IntegrationRule *ir)
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
alpha (q . grad u, v) using the "group" FE discretization
virtual void AddMultMF(const Vector &x, Vector &y) const
int Width() const
Get the width (size of input) of the Operator. Synonym with NumCols().
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
const GeometricFactors * geom
Not owned.
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 AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
ScalarCrossProductInterpolator(VectorCoefficient &vc)
VectorDiffusionIntegrator()
int Size() const
Returns the size of the vector.
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
MixedGradGradIntegrator(DiagonalMatrixCoefficient &dq)
Data type dense matrix using column-major storage.
virtual void AssemblePAInteriorFaces(const FiniteElementSpace &fes)
virtual int GetIntegrationOrder(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
MixedVectorWeakCurlIntegrator(MatrixCoefficient &mq)
virtual void CalcShape(const FiniteElement &scalar_fe, ElementTransformation &Trans, Vector &shape)
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void AssembleFaceMatrix(const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat)
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
const DofToQuad * maps
Not owned.
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void AssemblePA(const FiniteElementSpace &)
Method defining partial assembly.
virtual ~TransposeIntegrator()
DGTraceIntegrator(Coefficient &rho_, VectorCoefficient &u_, double a, double b)
DiffusionIntegrator(Coefficient &q, const IntegrationRule *ir=nullptr)
Construct a diffusion integrator with a scalar coefficient q.
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
VectorFEDivergenceIntegrator()
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual const char * FiniteElementTypeFailureMessage() const
bool SupportsCeed() const
Indicates whether this integrator can use a Ceed backend.
static const IntegrationRule & GetRule(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
virtual void AddMultMF(const Vector &x, Vector &y) const
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
void AddIntegrator(BilinearFormIntegrator *integ)
const DofToQuad * mapsC
Not owned. DOF-to-quad map, closed.
virtual void CalcShape(const FiniteElement &scalar_fe, ElementTransformation &Trans, Vector &shape_)
Structure for storing mesh geometric factors: coordinates, Jacobians, and determinants of the Jacobia...
virtual const char * FiniteElementTypeFailureMessage() const
DiffusionIntegrator(VectorCoefficient &q, const IntegrationRule *ir=nullptr)
Construct a diffusion integrator with a vector coefficient q.
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
virtual const char * FiniteElementTypeFailureMessage() const
const FaceGeometricFactors * face_geom
Not owned.
Array< int > ipiv_offsets
virtual void AssembleTraceFaceMatrix(int ielem, const FiniteElement &trial_face_fe, const FiniteElement &test_fe, FaceElementTransformations &Trans, DenseMatrix &elmat)
virtual int GetTestVDim(const FiniteElement &test_fe)
virtual int GetVDim(const FiniteElement &vector_fe)
virtual void AddMultNURBSPA(const Vector &, Vector &) const
Method for partially assembled action on NURBS patches.
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 bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
MixedCrossProductIntegrator(VectorCoefficient &vq)
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
VectorDiffusionIntegrator(int vector_dimension)
Integrator with unit coefficient for caller-specified vector dimension.
DGDiffusionBR2Integrator(class FiniteElementSpace &fes, double e=1.0)
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
virtual const char * FiniteElementTypeFailureMessage() const
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
virtual const char * FiniteElementTypeFailureMessage() const
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual void AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
MixedVectorWeakDivergenceIntegrator(DiagonalMatrixCoefficient &dq)
MixedVectorGradientIntegrator(Coefficient &q)
(Q div u, div v) for RT elements
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
MixedScalarCrossGradIntegrator(VectorCoefficient &vq)
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
void add(const Vector &v1, const Vector &v2, Vector &v)
const DofToQuad * maps
Not owned.
virtual void AssembleFaceMatrix(const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void AddMultTransposePA(const Vector &, Vector &) const
Method for partially assembled transposed action.
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
Coefficient * GetCoefficient() const
virtual ~LumpedIntegrator()
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
Setup method for PA data.
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 void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
const GeometricFactors * geom
Not owned.
MixedCurlCurlIntegrator(MatrixCoefficient &mq)
virtual void AssembleNURBSPA(const FiniteElementSpace &fes)
Method defining partial assembly on NURBS patches.
VectorDiffusionIntegrator(Coefficient &q, int vector_dimension)
Integrator with scalar coefficient for caller-specified vector dimension.
VectorMassIntegrator()
Construct an integrator with coefficient 1.0.
virtual void CalcShape(const FiniteElement &scalar_fe, ElementTransformation &Trans, Vector &shape)
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
VectorMassIntegrator(VectorCoefficient &q, int qo=0)
Construct an integrator with diagonal coefficient q.
virtual void AssembleMF(const FiniteElementSpace &fes)
Method defining matrix-free assembly.
virtual void AssembleFaceMatrix(const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat)
Structure for storing face geometric factors: coordinates, Jacobians, determinants of the Jacobians...
MixedCurlIntegrator(Coefficient &q)
virtual int GetTrialVDim(const FiniteElement &trial_fe)
VectorCrossProductInterpolator(VectorCoefficient &vc)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual const char * FiniteElementTypeFailureMessage() const
virtual int GetTestVDim(const FiniteElement &test_fe)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void Project(Coefficient &coeff, ElementTransformation &Trans, Vector &dofs) const
Given a coefficient and a transformation, compute its projection (approximation) in the local finite ...
NonconservativeDGTraceIntegrator(VectorCoefficient &u, double a, double b)
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual void AssembleMF(const FiniteElementSpace &fes)
Method defining matrix-free assembly.
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
virtual void AssembleElementMatrix2(const FiniteElement &dom_fe, const FiniteElement &ran_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual void AssembleElementMatrix2(const FiniteElement &dom_fe, const FiniteElement &ran_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
Integrator that inverts the matrix assembled by another integrator.
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
NonconservativeDGTraceIntegrator(Coefficient &rho, VectorCoefficient &u, double a, double b)
ElasticityIntegrator(Coefficient &m, double q_l, double q_m)
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
const Coefficient * GetCoefficient() const
virtual void AssembleDiagonalMF(Vector &diag)
Assemble diagonal and add it to Vector diag.
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)
-alpha (u, q . grad v), negative transpose of ConvectionIntegrator
virtual void ComputeElementFlux(const FiniteElement &el, ElementTransformation &Trans, Vector &u, const FiniteElement &fluxelem, Vector &flux, bool with_coef=true, const IntegrationRule *ir=NULL)
virtual void AssembleFaceMatrix(const FiniteElement &trial_face_fe, const FiniteElement &test_fe1, const FiniteElement &test_fe2, FaceElementTransformations &Trans, DenseMatrix &elmat)
virtual int GetTestVDim(const FiniteElement &test_fe)
virtual const char * FiniteElementTypeFailureMessage() const
virtual void CalcVShape(const FiniteElement &vector_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
VectorInnerProductInterpolator(VectorCoefficient &vc)
MixedWeakDivCrossIntegrator(VectorCoefficient &vq)
const Coefficient * GetCoefficient() const
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
VectorDiffusionIntegrator(MatrixCoefficient &mq)
Integrator with MatrixCoefficient. The vector dimension of the FiniteElementSpace is assumed to be th...
MixedScalarWeakGradientIntegrator()
MixedVectorGradientIntegrator()
VectorDivergenceIntegrator(Coefficient &q)
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
virtual void AssembleEA(const FiniteElementSpace &fes, Vector &emat, const bool add)
Method defining element assembly.
MixedCrossCurlCurlIntegrator(VectorCoefficient &vq)
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
virtual int GetTestVDim(const FiniteElement &test_fe)
virtual const char * FiniteElementTypeFailureMessage() const
virtual const char * FiniteElementTypeFailureMessage() const
virtual void AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
int Append(const T &el)
Append element 'el' to array, resize if necessary.
virtual void SetIntRule(const IntegrationRule *ir)
Prescribe a fixed IntegrationRule to use (when ir != NULL) or let the integrator choose (when ir == N...
MixedScalarWeakCurlIntegrator(Coefficient &q)
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
MixedCurlCurlIntegrator(Coefficient &q)
GradientIntegrator(Coefficient &q)
virtual void AddMultMF(const Vector &, Vector &) const
const Coefficient * GetCoefficient() const
virtual double ComputeFluxEnergy(const FiniteElement &fluxelem, ElementTransformation &Trans, Vector &flux, Vector *d_energy=NULL)
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
virtual const char * FiniteElementTypeFailureMessage() const
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
DGTraceIntegrator(VectorCoefficient &u_, double a)
Construct integrator with rho = 1, b = 0.5*a.
const DofToQuad * mapsC
Not owned. DOF-to-quad map, closed.
virtual void AssembleMF(const FiniteElementSpace &fes)
Method defining matrix-free assembly.
TransposeIntegrator(BilinearFormIntegrator *bfi_, int own_bfi_=1)
static const IntegrationRule & GetRule(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
MixedVectorWeakCurlIntegrator(DiagonalMatrixCoefficient &dq)
VectorFEDivergenceIntegrator(Coefficient &q)
virtual void AssembleEAInteriorFaces(const FiniteElementSpace &fes, Vector &ea_data_int, Vector &ea_data_ext, const bool add)
bool SupportsCeed() const
Indicates whether this integrator can use a Ceed backend.
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual const char * FiniteElementTypeFailureMessage() const
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
VectorFEMassIntegrator(MatrixCoefficient *mq_)
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...
VectorFECurlIntegrator(Coefficient &q)
virtual void CalcVShape(const FiniteElement &vector_fe, ElementTransformation &Trans, DenseMatrix &shape_)
virtual void AssembleElementMatrix2(const FiniteElement &h1_fe, const FiniteElement &nd_fe, ElementTransformation &Trans, DenseMatrix &elmat)
MixedVectorWeakCurlIntegrator()
virtual const char * FiniteElementTypeFailureMessage() const
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
MixedVectorMassIntegrator(MatrixCoefficient &mq)
virtual void AssemblePatchMatrix(const int patch, const FiniteElementSpace &fes, SparseMatrix *&smat)
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
MixedScalarDivergenceIntegrator(Coefficient &q)
Array< int > Minv_offsets
MixedVectorIntegrator(MatrixCoefficient &mq)
virtual void AssembleEABoundaryFaces(const FiniteElementSpace &fes, Vector &ea_data_bdr, const bool add)
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
MixedVectorMassIntegrator(Coefficient &q)
virtual const char * FiniteElementTypeFailureMessage() const
virtual const char * FiniteElementTypeFailureMessage() const
virtual void ProjectGrad(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &grad) const
Compute the discrete gradient matrix from the given FiniteElement onto 'this' FiniteElement. The ElementTransformation is included to support cases when the matrix depends on it.
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
MixedDirectionalDerivativeIntegrator(VectorCoefficient &vq)
MixedScalarMassIntegrator()
MixedScalarDerivativeIntegrator()
virtual ~GradientInterpolator()
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Given a particular Finite Element computes the element matrix elmat.
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...
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
DiagonalMatrixCoefficient * DQ
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
MixedCrossGradIntegrator(VectorCoefficient &vq)
virtual int GetIntegrationOrder(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
GradientIntegrator(Coefficient *q_)
ScalarProductInterpolator(Coefficient &sc)
virtual void ProjectCurl(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &curl) const
Compute the discrete curl matrix from the given FiniteElement onto 'this' FiniteElement. The ElementTransformation is included to support cases when the matrix depends on it.
virtual void AssemblePABoundary(const FiniteElementSpace &fes)
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.
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...
virtual const char * FiniteElementTypeFailureMessage() const
MixedGradGradIntegrator()
virtual void ProjectDiv(const FiniteElement &fe, ElementTransformation &Trans, DenseMatrix &div) const
Compute the discrete divergence matrix from the given FiniteElement onto 'this' FiniteElement. The ElementTransformation is included to support cases when the matrix depends on it.
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
bool SupportsCeed() const
Indicates whether this integrator can use a Ceed backend.
ConservativeConvectionIntegrator(VectorCoefficient &q, double a=1.0)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual const char * FiniteElementTypeFailureMessage() const
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual const char * FiniteElementTypeFailureMessage() const
MixedVectorCurlIntegrator(MatrixCoefficient &mq)
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
double * GetData() const
Return a pointer to the beginning of the Vector data.
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, Vector &shape)
virtual void AssembleEAInteriorFaces(const FiniteElementSpace &fes, Vector &ea_data_int, Vector &ea_data_ext, const bool add)
BoundaryMassIntegrator(Coefficient &q)
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
virtual void AssembleElementMatrix(const FiniteElement &, ElementTransformation &, DenseMatrix &)
Given a particular Finite Element computes the element matrix elmat.
const DofToQuad * mapsC
Not owned. DOF-to-quad map, closed.
virtual void AddMultMF(const Vector &, Vector &) const
virtual void CalcShape(const FiniteElement &scalar_fe, ElementTransformation &Trans, Vector &shape)
MixedScalarWeakDerivativeIntegrator()
virtual void AssembleEABoundaryFaces(const FiniteElementSpace &fes, Vector &ea_data_bdr, const bool add)
virtual void AssembleElementVector(const FiniteElement &el, ElementTransformation &Tr, const Vector &elfun, Vector &elvect)
Perform the local action of the BilinearFormIntegrator.
MixedWeakGradDotIntegrator(VectorCoefficient &vq)
ScalarVectorProductInterpolator(Coefficient &sc)
virtual void AddMultTransposePA(const Vector &, Vector &) const
Method for partially assembled transposed action.
virtual const char * FiniteElementTypeFailureMessage() const
virtual void CalcShape(const FiniteElement &scalar_fe, ElementTransformation &Trans, Vector &shape)
virtual void AssemblePABoundaryFaces(const FiniteElementSpace &fes)
virtual void CalcShape(const FiniteElement &scalar_fe, ElementTransformation &Trans, Vector &shape)
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
const GeometricFactors * geom
Not owned.
virtual void AssembleElementMatrix2(const FiniteElement &dom_fe, const FiniteElement &ran_fe, ElementTransformation &Trans, DenseMatrix &elmat)
MixedScalarWeakGradientIntegrator(Coefficient &q)
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
MixedVectorIntegrator(Coefficient &q)
int GetDim() const
Returns the reference space dimension for the finite element.
MixedGradGradIntegrator(MatrixCoefficient &mq)
virtual void AssembleElementMatrix(const FiniteElement &, ElementTransformation &, DenseMatrix &)
Given a particular Finite Element computes the element matrix elmat.
VectorFEMassIntegrator(MatrixCoefficient &mq)
int GetDerivType() const
Returns the FiniteElement::DerivType of the element describing the spatial derivative method implemen...
MixedCurlIntegrator(Coefficient *q_)
Class FiniteElementSpace - responsible for providing FEM view of the mesh, mainly managing the set of...
MixedScalarWeakCurlCrossIntegrator(VectorCoefficient &vq)
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
virtual int GetTestVDim(const FiniteElement &test_fe)
virtual int GetTrialVDim(const FiniteElement &trial_fe)
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
Base class Coefficients that optionally depend on space and time. These are used by the BilinearFormI...
void PrecomputeMassInverse(class FiniteElementSpace &fes)
Precomputes the inverses (LU factorizations) of the local mass matrices.
MixedScalarWeakCurlIntegrator()
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.
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
MixedScalarCurlIntegrator()
static const IntegrationRule & GetRule(const FiniteElement &el, ElementTransformation &Trans)
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 const char * FiniteElementTypeFailureMessage() const
virtual void AssemblePABoundaryFaces(const FiniteElementSpace &fes)
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
virtual int GetTrialVDim(const FiniteElement &trial_fe)
MixedCurlCurlIntegrator()
MixedVectorWeakDivergenceIntegrator(Coefficient &q)
Base class for Matrix Coefficients that optionally depend on time and space.
virtual void AssembleElementMatrix2(const FiniteElement &dom_fe, const FiniteElement &ran_fe, ElementTransformation &Trans, DenseMatrix &elmat)
bool DeviceCanUseCeed()
Function that determines if a CEED kernel should be used, based on the current mfem::Device configura...
MixedScalarWeakDivergenceIntegrator(VectorCoefficient &vq)
const FaceGeometricFactors * geom
Not owned.
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
DGDiffusionIntegrator(const double s, const double k)
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
virtual void AddMultTransposePA(const Vector &, Vector &) const
Method for partially assembled transposed action.
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
static const IntegrationRule & GetRule(const FiniteElement &trial_fe, const FiniteElement &test_fe)
virtual int GetTestVDim(const FiniteElement &test_fe)
MixedCrossGradCurlIntegrator(VectorCoefficient &vq)
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual void AddMultTransposePA(const Vector &, Vector &) const
Method for partially assembled transposed action.
MixedVectorDivergenceIntegrator(VectorCoefficient &vq)
int Height() const
Get the height (size of output) of the Operator. Synonym with NumRows().
Structure representing the matrices/tensors needed to evaluate (in reference space) the values...
virtual void AddMultMF(const Vector &, Vector &) const
virtual void AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
A class to initialize the size of a Tensor.
virtual const char * FiniteElementTypeFailureMessage() const
virtual int GetTestVDim(const FiniteElement &test_fe)
MassIntegrator(Coefficient &q, const IntegrationRule *ir=NULL)
Construct a mass integrator with coefficient q.
const FiniteElementSpace * fespace
virtual void AssembleFaceMatrix(const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat)
virtual const char * FiniteElementTypeFailureMessage() const
VectorFEMassIntegrator(DiagonalMatrixCoefficient &dq)
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
void AssembleTraceFaceMatrix(int elem, const FiniteElement &trial_face_fe, const FiniteElement &test_fe, FaceElementTransformations &Trans, DenseMatrix &elmat)
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
int GetVDim(const FiniteElement &vector_fe)
MixedCrossGradGradIntegrator(VectorCoefficient &vq)
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual void AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
virtual int GetIntegrationOrder(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
virtual void AddMultMF(const Vector &x, Vector &y) const
MixedScalarCrossCurlIntegrator(VectorCoefficient &vq)
virtual void AssembleDiagonalMF(Vector &diag)
Assemble diagonal and add it to Vector diag.
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Assemble an element matrix.
MixedCurlCurlIntegrator(DiagonalMatrixCoefficient &dq)
virtual void AssembleMF(const FiniteElementSpace &fes)
Method defining matrix-free assembly.
virtual const char * FiniteElementTypeFailureMessage() const
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 ...
VectorFEWeakDivergenceIntegrator(Coefficient &q)
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
VectorMassIntegrator(Coefficient &q, int qo=0)
virtual void AssembleEA(const FiniteElementSpace &fes, Vector &emat, const bool add)
Method defining element assembly.
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
DGElasticityIntegrator(double alpha_, double kappa_)
MixedScalarDerivativeIntegrator(Coefficient &q)
virtual void AssembleElementMatrix2(const FiniteElement &dom_fe, const FiniteElement &ran_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void AssembleEABoundaryFaces(const FiniteElementSpace &fes, Vector &ea_data_bdr, const bool add)
MixedDotProductIntegrator(VectorCoefficient &vq)
CurlCurlIntegrator(DiagonalMatrixCoefficient &dq, const IntegrationRule *ir=NULL)
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual int GetIntegrationOrder(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
MixedVectorCurlIntegrator(Coefficient &q)
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
MixedVectorIntegrator(VectorCoefficient &vq, bool diag=true)
const GeometricFactors * geom
Not owned.
int GetVDim() const
Returns the vector dimension for vector-valued finite elements.
MixedWeakCurlCrossIntegrator(VectorCoefficient &vq)
virtual void AddMultTransposeMF(const Vector &x, Vector &y) const
virtual void CalcVShape(const FiniteElement &vector_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
virtual int GetTrialVDim(const FiniteElement &trial_fe)
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
LumpedIntegrator(BilinearFormIntegrator *bfi_, int own_bfi_=1)
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
virtual const char * FiniteElementTypeFailureMessage() const
Implements CalcDivShape methods.
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
int GetVDim(const FiniteElement &vector_fe)
const DofToQuad * maps
Not owned.
virtual void AssembleElementMatrix2(const FiniteElement &nd_fe, const FiniteElement &rt_fe, ElementTransformation &Trans, DenseMatrix &elmat)
const DofToQuad * mapsO
Not owned. DOF-to-quad map, open.
virtual int GetTrialVDim(const FiniteElement &trial_fe)
virtual void AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual int GetVDim(const FiniteElement &vector_fe)
virtual int GetVDim(const FiniteElement &vector_fe)
VectorMassIntegrator(MatrixCoefficient &q, int qo=0)
Construct an integrator with matrix coefficient q.
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...
MixedScalarWeakCrossProductIntegrator(VectorCoefficient &vq)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
void AddMultPatchPA(const int patch, const Vector &x, Vector &y) const
virtual const char * FiniteElementTypeFailureMessage() const
VectorFEMassIntegrator(Coefficient *q_)
virtual void AssembleElementMatrix(const FiniteElement &, ElementTransformation &, DenseMatrix &)
Given a particular Finite Element computes the element matrix elmat.
virtual const char * FiniteElementTypeFailureMessage() const
virtual int GetIntegrationOrder(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
GroupConvectionIntegrator(VectorCoefficient &q, double a=1.0)
virtual void CalcVShape(const FiniteElement &vector_fe, ElementTransformation &Trans, DenseMatrix &shape)
DiagonalMatrixCoefficient * DQ
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
static void AssembleBlock(const int dim, const int row_ndofs, const int col_ndofs, const int row_offset, const int col_offset, const double 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 int GetTrialVDim(const FiniteElement &trial_fe)
virtual void CalcShape(const FiniteElement &scalar_fe, ElementTransformation &Trans, Vector &shape)
virtual void AssembleDiagonalMF(Vector &diag)
Assemble diagonal and add it to Vector diag.
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual ~InverseIntegrator()
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...
MixedVectorWeakDivergenceIntegrator(MatrixCoefficient &mq)
MixedScalarDivergenceIntegrator()
MixedVectorWeakDivergenceIntegrator()
virtual void AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
const DofToQuad * mapsOtest
Not owned. DOF-to-quad map, open.
virtual int GetTestVDim(const FiniteElement &test_fe)
virtual void AssembleElementMatrix2(const FiniteElement &rt_fe, const FiniteElement &l2_fe, ElementTransformation &Trans, DenseMatrix &elmat)
DGDiffusionIntegrator(MatrixCoefficient &q, const double s, const double k)
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
const DofToQuad * maps
Not owned.
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, Vector &shape)
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
bool symmetric
False if using a nonsymmetric matrix coefficient.
DivDivIntegrator(Coefficient &q, const IntegrationRule *ir=NULL)
virtual void AssembleElementMatrix2(const FiniteElement &nd_fe, const FiniteElement &l2_fe, ElementTransformation &Trans, DenseMatrix &elmat)
void AssembleTraceFaceMatrix(int elem, const FiniteElement &trial_face_fe, const FiniteElement &test_fe, FaceElementTransformations &Trans, DenseMatrix &elmat)
virtual double GetElementEnergy(const FiniteElement &el, ElementTransformation &Tr, const Vector &elfun)
Compute element energy: (1/2) (curl u, curl u)_E.
virtual int GetTrialVDim(const FiniteElement &trial_fe)
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
MixedCrossCurlIntegrator(VectorCoefficient &vq)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual int GetTrialVDim(const FiniteElement &trial_fe)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void AssembleElementMatrix2(const FiniteElement &dom_fe, const FiniteElement &ran_fe, ElementTransformation &Trans, DenseMatrix &elmat)
MixedVectorProductIntegrator(VectorCoefficient &vq)
VectorScalarProductInterpolator(VectorCoefficient &vc)
const DofToQuad * mapsCtest
Not owned. DOF-to-quad map, closed.
virtual void AssembleDiagonalPA_ADAt(const Vector &D, Vector &diag)
Assemble diagonal of ADA^T (A is this integrator) and add it to diag.
int GetRangeType() const
Returns the FiniteElement::RangeType of the element, one of {SCALAR, VECTOR}.
ConvectionIntegrator(VectorCoefficient &q, double a=1.0)
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
virtual void AssembleFaceMatrix(const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat)
MixedScalarCurlIntegrator(Coefficient &q)
VectorDiffusionIntegrator(VectorCoefficient &vq)
Integrator with VectorCoefficient. The vector dimension of the FiniteElementSpace is assumed to be th...
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
DerivativeIntegrator(Coefficient &q, int i)
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.
static const IntegrationRule & GetRule(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
VectorDiffusionIntegrator(Coefficient &q, const IntegrationRule *ir)
double u(const Vector &xvec)
Implements CalcDShape methods.
virtual void AssembleEAInteriorFaces(const FiniteElementSpace &fes, Vector &ea_data_int, Vector &ea_data_ext, const bool add)
virtual void AssemblePABoundaryFaces(const FiniteElementSpace &fes)
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
virtual void AssembleDiagonalMF(Vector &diag)
Assemble diagonal and add it to Vector diag.
void SetSize(int s)
Change the size of the DenseMatrix to s x s.
virtual const char * FiniteElementTypeFailureMessage() const
virtual void AssembleDiagonalMF(Vector &diag)
Assemble diagonal and add it to Vector diag.
MixedGradGradIntegrator(Coefficient &q)
MixedVectorGradientIntegrator(MatrixCoefficient &mq)
CurlCurlIntegrator(MatrixCoefficient &mq, const IntegrationRule *ir=NULL)
virtual int GetVDim(const FiniteElement &vector_fe)
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)
VectorFEMassIntegrator(DiagonalMatrixCoefficient *dq_)
virtual void AssembleFaceMatrix(const FiniteElement &trial_face_fe, const FiniteElement &test_fe1, const FiniteElement &test_fe2, FaceElementTransformations &Trans, DenseMatrix &elmat)
const DofToQuad * mapsO
Not owned. DOF-to-quad map, open.
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
CurlCurlIntegrator(Coefficient &q, const IntegrationRule *ir=NULL)
Construct a bilinear form integrator for Nedelec elements.
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.
virtual const char * FiniteElementTypeFailureMessage() const
MixedVectorCurlIntegrator(DiagonalMatrixCoefficient &dq)
virtual int GetTrialVDim(const FiniteElement &trial_fe)
virtual void AssembleElementMatrix2(const FiniteElement &dom_fe, const FiniteElement &ran_fe, ElementTransformation &Trans, DenseMatrix &elmat)
void AssemblePatchPA(const int patch, const FiniteElementSpace &fes)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
VectorDivergenceIntegrator(Coefficient *q_)
DiffusionIntegrator(MatrixCoefficient &q, const IntegrationRule *ir=nullptr)
Construct a diffusion integrator with a matrix coefficient q.
DiffusionIntegrator(const IntegrationRule *ir=nullptr)
Construct a diffusion integrator with coefficient Q = 1.
const Coefficient * GetCoefficient() const
MassIntegrator(const IntegrationRule *ir=NULL)
int GetOrder() const
Returns the order of the finite element. In the case of anisotropic orders, returns the maximum order...
virtual void AssemblePAInteriorFaces(const FiniteElementSpace &fes)
virtual void SetIntRule(const IntegrationRule *ir)
Prescribe a fixed IntegrationRule to use (when ir != NULL) or let the integrator choose (when ir == N...
MixedVectorGradientIntegrator(DiagonalMatrixCoefficient &dq)
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
MixedVectorMassIntegrator(DiagonalMatrixCoefficient &dq)
const GeometricFactors * geom
Not owned.
virtual int GetIntegrationOrder(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
VectorFEWeakDivergenceIntegrator()
virtual double ComputeFluxEnergy(const FiniteElement &fluxelem, ElementTransformation &Trans, Vector &flux, Vector *d_energy=NULL)
Virtual method required for Zienkiewicz-Zhu type error estimators.
MixedVectorWeakCurlIntegrator(Coefficient &q)
virtual void AssembleEA(const FiniteElementSpace &fes, Vector &emat, const bool add)
Method defining element assembly.
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
VectorDivergenceIntegrator()
MixedDivGradIntegrator(VectorCoefficient &vq)
virtual int GetIntegrationOrder(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
virtual ~IdentityInterpolator()
virtual void AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
MixedScalarIntegrator(Coefficient &q)
Solver for the discontinuous Galerkin mass matrix.
DGElasticityIntegrator(Coefficient &lambda_, Coefficient &mu_, double alpha_, double kappa_)
Class for integrating (Q D_i(u), v); u and v are scalars.
InverseIntegrator(BilinearFormIntegrator *integ, int own_integ=1)
Implements CalcCurlShape methods.
const DofToQuad * maps
Not owned.
MixedScalarWeakDerivativeIntegrator(Coefficient &q)