185 : Q(QG), oa(
a), ob(
b) { }
215 : Q(QG), oa(
a), ob(
b) { }
240 : Q(QG), oa(
a), ob(
b) { }
453 : F(NULL), oa(
a), ob(
b) { }
455 : F(&
f), oa(
a), ob(
b) { }
498 int a = 2,
int b = 0)
499 :
f(QG), oa(
a), ob(
b) { }
601#ifndef MFEM_THREAD_SAFE
652 std::default_random_engine generator;
653 std::normal_distribution<real_t> dist;
655 bool save_factors =
false;
664 if (seed_ > 0) {
SetSeed(seed_); }
674 MPI_Comm_rank(comm, &myid);
676 int seed = (seed_ > 0) ? seed_ + myid : (int)time(0) + myid;
685 if (seed_ > 0) {
SetSeed(seed_); }
691 generator.seed(seed);
713 for (
int i = 0; i<L.
Size(); i++)
720 for (
int i = 0; i<NE; i++)
728 for (
int i = 0; i<L.
Size(); i++)
752 MFEM_WARNING(
"Integration rule not used in this class. "
753 "The QuadratureFunction integration rules are used instead");
764 MFEM_WARNING(
"Integration rule not used in this class. "
765 "The QuadratureFunction integration rules are used instead");
784 MFEM_WARNING(
"Integration rule not used in this class. "
785 "The QuadratureFunction integration rules are used instead");
796 MFEM_WARNING(
"Integration rule not used in this class. "
797 "The QuadratureFunction integration rules are used instead");
void SetSize(int nsize)
Change the logical size of the array, keep existing entries.
int Size() const
Return the logical size of the array.
void DeleteAll()
Delete the whole array.
BoundaryFlowIntegrator(Coefficient &f_, VectorCoefficient &u_, real_t a, real_t b)
void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect) override
BoundaryFlowIntegrator(Coefficient &f_, VectorCoefficient &u_, real_t a)
Class for boundary integration .
void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect) override
BoundaryLFIntegrator(Coefficient &QG, int a=1, int b=1)
Constructs a boundary integrator with a given Coefficient QG. Integration order will be a * basis_ord...
void AssembleDevice(const FiniteElementSpace &fes, const Array< int > &markers, Vector &b) override
Method defining assembly on device.
bool SupportsDevice() const override
Method probing for assembly on device.
Class for boundary integration .
BoundaryNormalLFIntegrator(VectorCoefficient &QG, int a=1, int b=1)
Constructs a boundary integrator with a given Coefficient QG.
bool SupportsDevice() const override
Method probing for assembly on device.
void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect) override
void AssembleDevice(const FiniteElementSpace &fes, const Array< int > &markers, Vector &b) override
Method defining assembly on device.
Class for boundary integration in 2D.
BoundaryTangentialLFIntegrator(VectorCoefficient &QG, int a=1, int b=1)
Constructs a boundary integrator with a given Coefficient QG.
void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect) override
Base class Coefficients that optionally depend on space and time. These are used by the BilinearFormI...
DGDirichletLFIntegrator(Coefficient &u, MatrixCoefficient &q, const real_t s, const real_t k)
DGDirichletLFIntegrator(Coefficient &u, Coefficient &q, const real_t s, const real_t k)
void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect) override
DGDirichletLFIntegrator(Coefficient &u, const real_t s, const real_t k)
void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect) override
DGElasticityDirichletLFIntegrator(VectorCoefficient &uD_, Coefficient &lambda_, Coefficient &mu_, real_t alpha_, real_t kappa_)
Delta function coefficient optionally multiplied by a weight coefficient and a scaled time dependent ...
void GetDeltaCenter(Vector ¢er)
Write the center of the delta function into center.
Abstract class for integrators that support delta coefficients.
VectorDeltaCoefficient * vec_delta
bool IsDelta() const
Returns true if the derived class instance uses a delta coefficient.
DeltaLFIntegrator(VectorCoefficient &vq, const IntegrationRule *ir=NULL)
This constructor should be used by derived classes that use a VectorDeltaCoefficient.
DeltaLFIntegrator(Coefficient &q, const IntegrationRule *ir=NULL)
This constructor should be used by derived classes that use a scalar DeltaCoefficient.
virtual void AssembleDeltaElementVect(const FiniteElement &fe, ElementTransformation &Trans, Vector &elvect)=0
Assemble the delta coefficient at the IntegrationPoint set in Trans which is assumed to map to the de...
void GetDeltaCenter(Vector ¢er)
Returns the center of the delta coefficient.
Data type dense matrix using column-major storage.
Class for domain integrator .
bool SupportsDevice() const override
Method probing for assembly on device.
void AssembleDeltaElementVect(const FiniteElement &fe, ElementTransformation &Trans, Vector &elvect) override
Assemble the delta coefficient at the IntegrationPoint set in Trans which is assumed to map to the de...
void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect) override
void AssembleDevice(const FiniteElementSpace &fes, const Array< int > &markers, Vector &b) override
Method defining assembly on device.
DomainLFGradIntegrator(VectorCoefficient &QF)
Constructs the domain integrator .
Class for domain integration .
void AssembleDevice(const FiniteElementSpace &fes, const Array< int > &markers, Vector &b) override
Method defining assembly on device.
void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect) override
bool SupportsDevice() const override
Method probing for assembly on device.
DomainLFIntegrator(Coefficient &QF, int a=2, int b=0)
Constructs a domain integrator with a given Coefficient.
void AssembleDeltaElementVect(const FiniteElement &fe, ElementTransformation &Trans, Vector &elvect) override
Assemble the delta coefficient at the IntegrationPoint set in Trans which is assumed to map to the de...
DomainLFIntegrator(Coefficient &QF, const IntegrationRule *ir)
Constructs a domain integrator with a given Coefficient.
Class FiniteElementSpace - responsible for providing FEM view of the mesh, mainly managing the set of...
Abstract class for all finite elements.
Class for an integration rule - an Array of IntegrationPoint.
This base class implements some shared functionality between linear and nonlinear form integrators.
Base class for Matrix Coefficients that optionally depend on time and space.
Quadrature function coefficient which requires that the quadrature rules used for this coefficient be...
void AssembleRHSElementVect(const FiniteElement &fe, ElementTransformation &Tr, Vector &elvect) override
QuadratureLFIntegrator(QuadratureFunctionCoefficient &qfc, const IntegrationRule *ir=NULL)
void SetIntRule(const IntegrationRule *ir) override
Prescribe a fixed IntegrationRule to use, or set to null to let the integrator choose an appropriate ...
void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect) override
VectorBoundaryFluxLFIntegrator(Coefficient &f, real_t s=1.0, const IntegrationRule *ir=NULL)
void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect) override
VectorBoundaryLFIntegrator(VectorCoefficient &QG)
Constructs a boundary integrator with a given VectorCoefficient QG.
Base class for vector Coefficients that optionally depend on time and space.
Vector coefficient defined by a scalar DeltaCoefficient and a constant vector direction.
void GetDeltaCenter(Vector ¢er)
bool SupportsDevice() const override
Method probing for assembly on device.
VectorDomainLFGradIntegrator(VectorCoefficient &QF)
Constructs the domain integrator (Q, grad v)
void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect) override
void AssembleDevice(const FiniteElementSpace &fes, const Array< int > &markers, Vector &b) override
Method defining assembly on device.
void AssembleDeltaElementVect(const FiniteElement &fe, ElementTransformation &Trans, Vector &elvect) override
Assemble the delta coefficient at the IntegrationPoint set in Trans which is assumed to map to the de...
VectorDomainLFIntegrator(VectorCoefficient &QF)
Constructs a domain integrator with a given VectorCoefficient.
void AssembleDeltaElementVect(const FiniteElement &fe, ElementTransformation &Trans, Vector &elvect) override
Assemble the delta coefficient at the IntegrationPoint set in Trans which is assumed to map to the de...
void AssembleDevice(const FiniteElementSpace &fes, const Array< int > &markers, Vector &b) override
Method defining assembly on device.
void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect) override
bool SupportsDevice() const override
Method probing for assembly on device.
void AssembleDevice(const FiniteElementSpace &fes, const Array< int > &markers, Vector &b) override
Method defining assembly on device.
bool SupportsDevice() const override
Method probing for assembly on device.
VectorFEBoundaryFluxLFIntegrator(int a=1, int b=-1)
VectorFEBoundaryFluxLFIntegrator(Coefficient &f, int a=2, int b=0)
void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect) override
VectorFEBoundaryNormalLFIntegrator(VectorCoefficient &f)
virtual void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect) override
Class for boundary integration .
VectorFEBoundaryTangentLFIntegrator(VectorCoefficient &QG, int a=2, int b=0)
void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect) override
void AssembleDeltaElementVect(const FiniteElement &fe, ElementTransformation &Trans, Vector &elvect) override
Assemble the delta coefficient at the IntegrationPoint set in Trans which is assumed to map to the de...
void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect) override
VectorFEDomainLFCurlIntegrator(VectorCoefficient &F)
Constructs the domain integrator .
void AssembleDeltaElementVect(const FiniteElement &fe, ElementTransformation &Trans, Vector &elvect) override
Assemble the delta coefficient at the IntegrationPoint set in Trans which is assumed to map to the de...
void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect) override
VectorFEDomainLFDivIntegrator(Coefficient &QF)
Constructs the domain integrator .
for VectorFiniteElements (Nedelec, Raviart-Thomas)
bool SupportsDevice() const override
Method probing for assembly on device.
VectorFEDomainLFIntegrator(VectorCoefficient &F)
void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect) override
void AssembleDeltaElementVect(const FiniteElement &fe, ElementTransformation &Trans, Vector &elvect) override
Assemble the delta coefficient at the IntegrationPoint set in Trans which is assumed to map to the de...
void AssembleDevice(const FiniteElementSpace &fes, const Array< int > &markers, Vector &b) override
Method defining assembly on device.
Vector quadrature function coefficient which requires that the quadrature rules used for this vector ...
void AssembleRHSElementVect(const FiniteElement &fe, ElementTransformation &Tr, Vector &elvect) override
void SetIntRule(const IntegrationRule *ir) override
Prescribe a fixed IntegrationRule to use, or set to null to let the integrator choose an appropriate ...
VectorQuadratureLFIntegrator(VectorQuadratureFunctionCoefficient &vqfc, const IntegrationRule *ir=NULL)
void SetSize(int s)
Resize the vector to size s.
~WhiteGaussianNoiseDomainLFIntegrator()
WhiteGaussianNoiseDomainLFIntegrator(MPI_Comm comm_, int seed_)
Sets the MPI communicator comm_ and the seed_ of the random number generator. A fixed seed allows for...
WhiteGaussianNoiseDomainLFIntegrator(int seed_=0)
Sets the seed_ of the random number generator. A fixed seed allows for a reproducible sequence of whi...
void SetSeed(int seed)
Sets/resets the seed of the random number generator.
void AssembleRHSElementVect(const FiniteElement &el, ElementTransformation &Tr, Vector &elvect) override
void ResetFactors(int NE)
Resets the array of saved lower triangular Cholesky decomposition matrices. The parameter NE should b...
void SaveFactors(int NE)
Saves the lower triangular matrices in the element-wise Cholesky decomposition. The parameter NE shou...
real_t f(const Vector &p)
real_t u(const Vector &xvec)
std::function< real_t(const Vector &)> f(real_t mass_coeff)