142 const int,
const int,
const int *,
153 AssembleKernels::Specialization<DIM, D1D, Q1D>::Add();
201 : Q(QG), oa(
a), ob(
b) { }
231 : Q(QG), oa(
a), ob(
b) { }
256 : Q(QG), oa(
a), ob(
b) { }
299 DomainLFIntegrator::AssembleKernels::Specialization<DIM, D1D, Q1D>::Add();
474 : F(NULL), oa(
a), ob(
b) { }
476 : F(&
f), oa(
a), ob(
b) { }
519 int a = 2,
int b = 0)
520 :
f(QG), oa(
a), ob(
b) { }
546 {
f = &f_;
u = &u_;
alpha =
a; beta = 0.5*
a; }
550 {
f = &f_;
u = &u_;
alpha =
a; beta =
b; }
622#ifndef MFEM_THREAD_SAFE
673 std::default_random_engine generator;
674 std::normal_distribution<real_t> dist;
676 bool save_factors =
false;
685 if (seed_ > 0) {
SetSeed(seed_); }
695 MPI_Comm_rank(comm, &myid);
697 int seed = (seed_ > 0) ? seed_ + myid : time(
nullptr) + myid;
706 if (seed_ > 0) {
SetSeed(seed_); }
712 generator.seed(seed);
734 for (
int i = 0; i<L.
Size(); i++)
741 for (
int i = 0; i<NE; i++)
749 for (
int i = 0; i<L.
Size(); i++)
773 MFEM_WARNING(
"Integration rule not used in this class. "
774 "The QuadratureFunction integration rules are used instead");
785 MFEM_WARNING(
"Integration rule not used in this class. "
786 "The QuadratureFunction integration rules are used instead");
805 MFEM_WARNING(
"Integration rule not used in this class. "
806 "The QuadratureFunction integration rules are used instead");
817 MFEM_WARNING(
"Integration rule not used in this class. "
818 "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(*)(const int, const int, const int, const int, const int, const int *, const real_t *, const real_t *, const real_t *, const Vector &coeff, real_t *y) AssembleKernelType
args: vdim, ne, d1d, q1d, map_type, markers, B, detJ, W, coeff, y
static void AddSpecialization()
void AssembleDevice(const FiniteElementSpace &fes, const Array< int > &markers, Vector &b) override
Method defining assembly on device.
MFEM_REGISTER_KERNELS(AssembleKernels, AssembleKernelType,(int, int, int))
parameters: use DIM, T_D1D, T_Q1D
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)
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...
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...
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.
VectorDomainLFIntegrator(VectorCoefficient &QF, const IntegrationRule *ir=nullptr)
Constructs a domain integrator with a given VectorCoefficient.
static void AddSpecialization()
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)