12 #ifndef MFEM_BILININTEG 13 #define MFEM_BILININTEG 15 #include "../config/config.hpp" 96 const bool add =
true);
129 const bool add =
true);
133 const bool add =
true);
227 Vector &flux,
bool with_coef =
true,
269 { bfi = bfi_; own_bfi = own_bfi_; }
338 { bfi = bfi_; own_bfi = own_bfi_; }
358 { integrator = integ; own_integrator = own_integ; }
383 { integrators.
Append(integ); }
477 return "MixedScalarIntegrator: " 478 "Trial and test spaces must both be scalar fields.";
501 #ifndef MFEM_THREAD_SAFE 551 return "MixedVectorIntegrator: " 552 "Trial and test spaces must both be vector fields";
585 #ifndef MFEM_THREAD_SAFE 621 bool cross_2d_ =
false)
641 return "MixedScalarVectorIntegrator: " 642 "Trial space must be a vector field " 643 "and the test space must be a scalar field";
647 return "MixedScalarVectorIntegrator: " 648 "Trial space must be a scalar field " 649 "and the test space must be a vector field";
679 #ifndef MFEM_THREAD_SAFE 723 return (trial_fe.
GetDim() == 1 && test_fe.
GetDim() == 1 &&
730 return "MixedScalarDerivativeIntegrator: " 731 "Trial and test spaces must both be scalar fields in 1D " 732 "and the trial space must implement CalcDShape.";
758 return (trial_fe.
GetDim() == 1 && test_fe.
GetDim() == 1 &&
765 return "MixedScalarWeakDerivativeIntegrator: " 766 "Trial and test spaces must both be scalar fields in 1D " 767 "and the test space must implement CalcDShape with " 768 "map type \"VALUE\".";
802 return "MixedScalarDivergenceIntegrator: " 803 "Trial must be H(Div) and the test space must be a " 838 return "MixedVectorDivergenceIntegrator: " 839 "Trial must be H(Div) and the test space must be a " 877 return "MixedScalarWeakGradientIntegrator: " 878 "Trial space must be a scalar field " 879 "and the test space must be H(Div)";
911 return (trial_fe.
GetDim() == 2 && test_fe.
GetDim() == 2 &&
918 return "MixedScalarCurlIntegrator: " 919 "Trial must be H(Curl) and the test space must be a " 967 return (trial_fe.
GetDim() == 2 && test_fe.
GetDim() == 2 &&
974 return "MixedScalarWeakCurlIntegrator: " 975 "Trial space must be a scalar field " 976 "and the test space must be H(Curl)";
1031 return "MixedDotProductIntegrator: " 1032 "Trial space must be a vector field " 1033 "and the test space must be a scalar field";
1057 return "MixedWeakGradDotIntegrator: " 1058 "Trial space must be a vector field " 1059 "and the test space must be a vector field with a divergence";
1087 return (trial_fe.
GetVDim() == 3 &&
1095 return "MixedWeakDivCrossIntegrator: " 1096 "Trial space must be a vector field in 3D " 1097 "and the test space must be a scalar field with a gradient";
1135 return "MixedGradGradIntegrator: " 1136 "Trial and test spaces must both be scalar fields " 1137 "with a gradient operator.";
1187 return "MixedCrossGradGradIntegrator: " 1188 "Trial and test spaces must both be scalar fields " 1189 "with a gradient operator.";
1236 return "MixedCurlCurlIntegrator" 1237 "Trial and test spaces must both be vector fields in 3D " 1280 return "MixedCrossCurlCurlIntegrator: " 1281 "Trial and test spaces must both be vector fields in 3D " 1323 return "MixedCrossCurlGradIntegrator" 1324 "Trial space must be a vector field in 3D with a curl" 1325 "and the test space must be a scalar field with a gradient";
1366 return "MixedCrossGradCurlIntegrator" 1367 "Trial space must be a scalar field in 3D with a gradient" 1368 "and the test space must be a vector field with a curl";
1409 return "MixedWeakCurlCrossIntegrator: " 1410 "Trial space must be a vector field in 3D " 1411 "and the test space must be a vector field with a curl";
1436 return (trial_fe.
GetDim() == 2 && test_fe.
GetDim() == 2 &&
1444 return "MixedScalarWeakCurlCrossIntegrator: " 1445 "Trial space must be a vector field in 2D " 1446 "and the test space must be a vector field with a curl";
1471 return (test_fe.
GetVDim() == 3 &&
1479 return "MixedCrossGradIntegrator: " 1480 "Trial space must be a scalar field with a gradient operator" 1481 " and the test space must be a vector field both in 3D.";
1519 return "MixedCrossCurlIntegrator: " 1520 "Trial space must be a vector field in 3D with a curl " 1521 "and the test space must be a vector field";
1546 return (trial_fe.
GetDim() == 2 && test_fe.
GetDim() == 2 &&
1554 return "MixedCrossCurlIntegrator: " 1555 "Trial space must be a vector field in 2D with a curl " 1556 "and the test space must be a vector field";
1580 return (trial_fe.
GetDim() == 2 && test_fe.
GetDim() == 2 &&
1588 return "MixedScalarCrossGradIntegrator: " 1589 "Trial space must be a scalar field in 2D with a gradient " 1590 "and the test space must be a scalar field";
1614 return (trial_fe.
GetDim() == 2 && test_fe.
GetDim() == 2 &&
1621 return "MixedScalarCrossProductIntegrator: " 1622 "Trial space must be a vector field in 2D " 1623 "and the test space must be a scalar field";
1639 return (trial_fe.
GetDim() == 2 && test_fe.
GetDim() == 2 &&
1646 return "MixedScalarWeakCrossProductIntegrator: " 1647 "Trial space must be a scalar field in 2D " 1648 "and the test space must be a vector field";
1676 return "MixedDirectionalDerivativeIntegrator: " 1677 "Trial space must be a scalar field with a gradient " 1678 "and the test space must be a scalar field";
1710 return "MixedGradDivIntegrator: " 1711 "Trial space must be a scalar field with a gradient" 1712 "and the test space must be a vector field with a divergence";
1750 return "MixedDivGradIntegrator: " 1751 "Trial space must be a vector field with a divergence" 1752 "and the test space must be a scalar field with a gradient";
1788 return "MixedScalarWeakDivergenceIntegrator: " 1789 "Trial space must be a scalar field " 1790 "and the test space must be a scalar field with a gradient";
1830 return "MixedVectorGradientIntegrator: " 1831 "Trial spaces must be H1 and the test space must be a " 1832 "vector field in 2D or 3D";
1860 int dim, ne, dofs1D, quad1D;
1889 return "MixedVectorCurlIntegrator: " 1890 "Trial space must be H(Curl) and the test space must be a " 1891 "vector field in 3D";
1919 int dim, ne, dofs1D, dofs1Dtest,quad1D, testType, trialType, coeffDim;
1948 return "MixedVectorWeakCurlIntegrator: " 1949 "Trial space must be vector field in 3D and the " 1950 "test space must be H(Curl)";
1976 int dim, ne, dofs1D, quad1D, testType, trialType, coeffDim;
2004 return "MixedVectorWeakDivergenceIntegrator: " 2005 "Trial space must be vector field and the " 2006 "test space must be H1";
2039 const DofToQuad *trial_maps, *test_maps;
2042 int trial_dofs1D, test_dofs1D, quad1D;
2046 Q{NULL}, trial_maps{NULL}, test_maps{NULL}, geom{NULL}
2049 Q{q_}, trial_maps{NULL}, test_maps{NULL}, geom{NULL}
2052 Q{&q}, trial_maps{NULL}, test_maps{NULL}, geom{NULL}
2056 const FiniteElement &test_fe,
2057 ElementTransformation &
Trans,
2058 DenseMatrix &elmat);
2061 virtual void AssemblePA(
const FiniteElementSpace &trial_fes,
2062 const FiniteElementSpace &test_fes);
2064 virtual void AddMultPA(
const Vector &x, Vector &y)
const;
2067 static const IntegrationRule &
GetRule(
const FiniteElement &trial_fe,
2068 const FiniteElement &test_fe,
2069 ElementTransformation &
Trans);
2082 Vector vec, vecdxt, pointflux, shape;
2083 #ifndef MFEM_THREAD_SAFE 2084 DenseMatrix dshape, dshapedxt, invdfdx, M, dshapedxt_m;
2093 int dim, ne, dofs1D, quad1D;
2095 bool symmetric =
true;
2101 Q(NULL),
VQ(NULL),
MQ(NULL), maps(NULL), geom(NULL) { }
2106 Q(&q),
VQ(NULL),
MQ(NULL), maps(NULL), geom(NULL) { }
2112 Q(NULL),
VQ(&q),
MQ(NULL), maps(NULL), geom(NULL) { }
2118 Q(NULL),
VQ(NULL),
MQ(&q), maps(NULL), geom(NULL) { }
2140 Vector &flux,
bool with_coef =
true,
2179 #ifndef MFEM_THREAD_SAFE 2263 #ifndef MFEM_THREAD_SAFE 2265 Vector shape, vec2, BdFidxT;
2342 Vector shape, te_shape, vec;
2360 : vdim(-1), Q_order(0),
Q(NULL),
VQ(NULL),
MQ(NULL) { }
2365 : vdim(-1), Q_order(qo),
Q(&q),
VQ(NULL),
MQ(NULL) { }
2371 : vdim(q.
GetVDim()), Q_order(qo),
Q(NULL),
VQ(&q),
MQ(NULL) { }
2374 : vdim(q.
GetVDim()), Q_order(qo),
Q(NULL),
VQ(NULL),
MQ(&q) { }
2418 #ifndef MFEM_THREAD_SAFE 2427 int dim, ne, dofs1D, L2dofs1D, quad1D;
2452 #ifndef MFEM_THREAD_SAFE 2479 #ifndef MFEM_THREAD_SAFE 2525 #ifndef MFEM_THREAD_SAFE 2570 Vector &flux,
bool with_coef,
2590 #ifndef MFEM_THREAD_SAFE 2591 DenseMatrix dshape_hat, dshape, curlshape, Jadj, grad_hat, grad;
2636 const FiniteElement &test_fe,
2637 ElementTransformation &
Trans,
2638 DenseMatrix &elmat);
2649 {
Q = q;
DQ = dq;
MQ = mq; }
2651 #ifndef MFEM_THREAD_SAFE 2718 const DofToQuad *trial_maps, *test_maps;
2721 int trial_dofs1D, test_dofs1D, quad1D;
2725 Q(NULL), trial_maps(NULL), test_maps(NULL), geom(NULL)
2728 Q(q_), trial_maps(NULL), test_maps(NULL), geom(NULL)
2731 Q(&q), trial_maps(NULL), test_maps(NULL), geom(NULL)
2763 #ifndef MFEM_THREAD_SAFE 2764 Vector divshape, te_divshape;
2772 int dim, ne, dofs1D, quad1D;
2832 : vdim(vector_dimension) { }
2849 :
Q(&q), vdim(vector_dimension) { }
2861 :
VQ(&vq), vdim(vq.GetVDim()) { }
2873 :
MQ(&mq), vdim(mq.GetVDim()) { }
2903 #ifndef MFEM_THREAD_SAFE 2934 Vector &flux,
bool with_coef =
true,
3224 double alpha_,
double kappa_)
3237 #ifndef MFEM_THREAD_SAFE 3259 const int dim,
const int row_ndofs,
const int col_ndofs,
3260 const int row_offset,
const int col_offset,
3261 const double jmatcoef,
const Vector &col_nL,
const Vector &col_nM,
3273 Vector face_shape, shape1, shape2;
3291 Vector face_shape, normal, shape1_n, shape2_n;
3344 int dim, ne, o_dofs1D, c_dofs1D;
3374 int dim, ne, o_dofs1D, c_dofs1D;
3528 template<const
int T_SDIM>
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)
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.
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 void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
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)
MixedCrossCurlGradIntegrator(VectorCoefficient &vq)
virtual int GetTrialVDim(const FiniteElement &trial_fe)
bool symmetric
False if using a nonsymmetric matrix coefficient.
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...
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 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 void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
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 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 void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
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 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 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.
NormalTraceJumpIntegrator()
VectorDiffusionIntegrator(Coefficient &q)
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual const char * FiniteElementTypeFailureMessage() const
constexpr int HDIV_MAX_D1D
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 AssembleEABoundaryFaces(const FiniteElementSpace &fes, Vector &ea_data_bdr, const bool add)
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, Vector &shape)
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)
void PADiffusionSetup2D(const int Q1D, const int coeffDim, const int NE, const Array< double > &w, const Vector &j, const Vector &c, Vector &d)
MixedScalarVectorIntegrator(VectorCoefficient &vq, bool transpose_=false, bool cross_2d_=false)
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
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 &, Vector &) const
virtual void AddMultMF(const Vector &x, Vector &y) const
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.
virtual void AssembleFaceMatrix(const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &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)
MixedGradGradIntegrator(DiagonalMatrixCoefficient &dq)
virtual void AssembleEA(const FiniteElementSpace &fes, Vector &emat, const bool add)
Method defining element assembly.
Data type dense matrix using column-major storage.
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
virtual void AssemblePAInteriorFaces(const FiniteElementSpace &fes)
virtual int GetIntegrationOrder(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
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.
const DofToQuad * maps
Not owned.
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 void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
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 void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
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 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 const char * FiniteElementTypeFailureMessage() const
Array< int > ipiv_offsets
virtual int GetTestVDim(const FiniteElement &test_fe)
virtual int GetVDim(const FiniteElement &vector_fe)
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, Vector &shape)
virtual const char * FiniteElementTypeFailureMessage() const
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 bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
MixedCrossProductIntegrator(VectorCoefficient &vq)
VectorDiffusionIntegrator(int vector_dimension)
Integrator with unit coefficient for caller-specified vector dimension.
DGDiffusionBR2Integrator(class FiniteElementSpace &fes, double e=1.0)
virtual const char * FiniteElementTypeFailureMessage() const
virtual void AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
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)
MixedVectorWeakDivergenceIntegrator(DiagonalMatrixCoefficient &dq)
MixedVectorGradientIntegrator(Coefficient &q)
(Q div u, div v) for RT elements
virtual void AssembleMF(const FiniteElementSpace &fes)
Method defining matrix-free assembly.
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 AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
Coefficient * GetCoefficient() const
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
virtual ~LumpedIntegrator()
virtual bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
virtual void AddMultMF(const Vector &x, Vector &y) const
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 AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
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)
VectorMassIntegrator(VectorCoefficient &q, int qo=0)
Construct an integrator with diagonal coefficient q.
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 void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
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 AddMultTransposePA(const Vector &, Vector &) const
Method for partially assembled transposed action.
virtual void AssembleElementMatrix2(const FiniteElement &dom_fe, const FiniteElement &ran_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
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 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 AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
-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
VectorDiffusionIntegrator(MatrixCoefficient &mq)
Integrator with MatrixCoefficient. The vector dimension of the FiniteElementSpace is assumed to be th...
MixedScalarWeakGradientIntegrator()
MixedVectorGradientIntegrator()
virtual void AssembleEA(const FiniteElementSpace &fes, Vector &emat, const bool add)
Method defining element assembly.
VectorDivergenceIntegrator(Coefficient &q)
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 void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
virtual const char * FiniteElementTypeFailureMessage() const
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 void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
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 AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
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)
MixedCurlCurlIntegrator(Coefficient &q)
GradientIntegrator(Coefficient &q)
virtual void AddMultMF(const Vector &x, Vector &y) const
const Coefficient * GetCoefficient() const
virtual double ComputeFluxEnergy(const FiniteElement &fluxelem, ElementTransformation &Trans, Vector &flux, Vector *d_energy=NULL)
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 void AddMultTransposePA(const Vector &, Vector &) const
Method for partially assembled transposed action.
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
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)
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
VectorFEDivergenceIntegrator(Coefficient &q)
constexpr int HCURL_MAX_D1D
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
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
VectorFEMassIntegrator(MatrixCoefficient *mq_)
virtual void AssembleMF(const FiniteElementSpace &fes)
Method defining matrix-free assembly.
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.
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
MixedVectorMassIntegrator(MatrixCoefficient &mq)
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 AssembleDiagonalMF(Vector &diag)
Assemble diagonal and add it to Vector diag.
virtual void AssembleEABoundaryFaces(const FiniteElementSpace &fes, Vector &ea_data_bdr, const bool add)
virtual void AssembleEA(const FiniteElementSpace &fes, Vector &emat, const bool add)
Method defining element assembly.
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 AssemblePABoundaryFaces(const FiniteElementSpace &fes)
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.
MixedDirectionalDerivativeIntegrator(VectorCoefficient &vq)
MixedScalarMassIntegrator()
MixedScalarDerivativeIntegrator()
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
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 AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
virtual void AssembleEA(const FiniteElementSpace &fes, Vector &emat, const bool add)
Method defining element assembly.
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled 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 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 void AddMultTransposePA(const Vector &, Vector &) const
Method for partially assembled transposed action.
virtual const char * FiniteElementTypeFailureMessage() const
virtual void AssembleMF(const FiniteElementSpace &fes)
Method defining matrix-free assembly.
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)
double * GetData() const
Return a pointer to the beginning of the Vector data.
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, Vector &shape)
BoundaryMassIntegrator(Coefficient &q)
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 CalcShape(const FiniteElement &scalar_fe, ElementTransformation &Trans, Vector &shape)
MixedScalarWeakDerivativeIntegrator()
virtual void AssemblePA(const FiniteElementSpace &)
Method defining partial assembly.
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 AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
virtual const char * FiniteElementTypeFailureMessage() const
virtual void CalcShape(const FiniteElement &scalar_fe, ElementTransformation &Trans, Vector &shape)
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.
virtual void AssembleDiagonalMF(Vector &diag)
Assemble diagonal and add it to Vector diag.
MixedVectorIntegrator(Coefficient &q)
virtual void AssembleMF(const FiniteElementSpace &fes)
Method defining matrix-free assembly.
int GetDim() const
Returns the reference space dimension for the finite element.
MixedGradGradIntegrator(MatrixCoefficient &mq)
virtual void AddMultTransposePA(const Vector &, Vector &) const
Method for partially assembled transposed action.
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 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 AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
virtual void CalcTrialShape(const FiniteElement &trial_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual void AssembleEAInteriorFaces(const FiniteElementSpace &fes, Vector &ea_data_int, Vector &ea_data_ext, const bool add)
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 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 AssembleEAInteriorFaces(const FiniteElementSpace &fes, Vector &ea_data_int, Vector &ea_data_ext, const bool add)
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
DGDiffusionIntegrator(const double s, const double k)
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
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)
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)
MixedVectorDivergenceIntegrator(VectorCoefficient &vq)
Structure representing the matrices/tensors needed to evaluate (in reference space) the values...
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.
virtual void AssembleEABoundaryFaces(const FiniteElementSpace &fes, Vector &ea_data_bdr, const bool add)
const FiniteElementSpace * fespace
virtual void AssembleFaceMatrix(const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat)
virtual const char * FiniteElementTypeFailureMessage() const
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
VectorFEMassIntegrator(DiagonalMatrixCoefficient &dq)
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
int GetVDim(const FiniteElement &vector_fe)
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
MixedCrossGradGradIntegrator(VectorCoefficient &vq)
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
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)
MixedScalarCrossCurlIntegrator(VectorCoefficient &vq)
virtual void AssembleElementMatrix(const FiniteElement &el, ElementTransformation &Trans, DenseMatrix &elmat)
Assemble an element matrix.
MixedCurlCurlIntegrator(DiagonalMatrixCoefficient &dq)
virtual const char * FiniteElementTypeFailureMessage() const
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
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 ...
virtual void AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
VectorFEWeakDivergenceIntegrator(Coefficient &q)
VectorMassIntegrator(Coefficient &q, int qo=0)
virtual void AssembleElementMatrix2(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &elmat)
virtual void AddMultMF(const Vector &, Vector &) const
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 AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
MixedDotProductIntegrator(VectorCoefficient &vq)
CurlCurlIntegrator(DiagonalMatrixCoefficient &dq, const IntegrationRule *ir=NULL)
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 int GetIntegrationOrder(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
MixedVectorCurlIntegrator(Coefficient &q)
MixedVectorIntegrator(VectorCoefficient &vq, bool diag=true)
const GeometricFactors * geom
Not owned.
int GetVDim() const
Returns the vector dimension for vector-valued finite elements.
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
MixedWeakCurlCrossIntegrator(VectorCoefficient &vq)
virtual void AddMultTransposeMF(const Vector &x, Vector &y) const
virtual void CalcVShape(const FiniteElement &vector_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual int GetTrialVDim(const FiniteElement &trial_fe)
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
LumpedIntegrator(BilinearFormIntegrator *bfi_, int own_bfi_=1)
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 AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
int GetVDim(const FiniteElement &vector_fe)
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
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 AssembleDiagonalMF(Vector &diag)
Assemble diagonal and add it to Vector diag.
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)
virtual void AssembleMF(const FiniteElementSpace &fes)
Method defining matrix-free assembly.
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
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 void AddMultMF(const Vector &, Vector &) 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 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()
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)
constexpr int HDIV_MAX_Q1D
DGDiffusionIntegrator(MatrixCoefficient &q, const double s, const double k)
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
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)
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)
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
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 AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed action.
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.
int GetRangeType() const
Returns the FiniteElement::RangeType of the element, one of {SCALAR, VECTOR}.
ConvectionIntegrator(VectorCoefficient &q, double a=1.0)
virtual void AssembleFaceMatrix(const FiniteElement &el1, const FiniteElement &el2, FaceElementTransformations &Trans, DenseMatrix &elmat)
MixedScalarCurlIntegrator(Coefficient &q)
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
VectorDiffusionIntegrator(VectorCoefficient &vq)
Integrator with VectorCoefficient. The vector dimension of the FiniteElementSpace is assumed to be th...
virtual void AddMultPA(const Vector &x, Vector &y) const
Method for partially assembled action.
virtual void CalcTestShape(const FiniteElement &test_fe, ElementTransformation &Trans, DenseMatrix &shape)
virtual void AssembleDiagonalPA(Vector &diag)
Assemble diagonal and add it to Vector diag.
DerivativeIntegrator(Coefficient &q, int i)
virtual void AddMultTransposePA(const Vector &x, Vector &y) const
Method for partially assembled transposed 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.
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 const char * FiniteElementTypeFailureMessage() const
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
Setup method for PA data.
virtual void AddMultPA(const Vector &, Vector &) const
Method for partially assembled action.
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 const char * FiniteElementTypeFailureMessage() const
MixedVectorCurlIntegrator(DiagonalMatrixCoefficient &dq)
constexpr int HCURL_MAX_Q1D
virtual int GetTrialVDim(const FiniteElement &trial_fe)
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 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 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
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 bool VerifyFiniteElementTypes(const FiniteElement &trial_fe, const FiniteElement &test_fe) const
VectorDivergenceIntegrator()
MixedDivGradIntegrator(VectorCoefficient &vq)
virtual void AssemblePA(const FiniteElementSpace &trial_fes, const FiniteElementSpace &test_fes)
virtual int GetIntegrationOrder(const FiniteElement &trial_fe, const FiniteElement &test_fe, ElementTransformation &Trans)
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)
virtual void AssembleDiagonalPA_ADAt(const Vector &D, Vector &diag)
Assemble diagonal of ADA^T (A is this integrator) and add it to diag.
Implements CalcCurlShape methods.
const DofToQuad * maps
Not owned.
virtual void AssemblePA(const FiniteElementSpace &fes)
Method defining partial assembly.
MixedScalarWeakDerivativeIntegrator(Coefficient &q)