12#ifndef MFEM_BILINEARFORM
13#define MFEM_BILINEARFORM
300 virtual const real_t &
Elem(
int i,
int j)
const;
347 virtual void Finalize(
int skip_zeros = 1);
354 MFEM_VERIFY(
mat,
"mat is NULL and can't be dereferenced");
363 MFEM_VERIFY(
mat,
"mat is NULL and can't be dereferenced");
372 return mat !=
nullptr;
386 MFEM_VERIFY(
mat_e,
"mat_e is NULL and can't be dereferenced");
396 MFEM_VERIFY(
mat_e,
"mat_e is NULL and can't be dereferenced");
406 return mat_e !=
nullptr;
490 MFEM_ASSERT(
mat,
"SerialRAP requires the SparseMatrix to be assembled.");
523 Vector &B,
int copy_interior = 0);
532 template <
typename OpType>
535 int copy_interior = 0)
539 OpType *A_ptr = Ah.
Is<OpType>();
540 MFEM_VERIFY(A_ptr,
"invalid OpType used");
554 template <
typename OpType>
559 OpType *A_ptr = Ah.
Is<OpType>();
560 MFEM_VERIFY(A_ptr,
"invalid OpType used");
809 virtual const real_t &
Elem(
int i,
int j)
const;
831 virtual void Finalize(
int skip_zeros = 1);
1026 template <
typename OpType>
1032 OpType *A_ptr = Ah.
Is<OpType>();
1033 MFEM_VERIFY(A_ptr,
"invalid OpType used");
1057 template <
typename OpType>
1066 OpType *A_ptr = Ah.
Is<OpType>();
1067 MFEM_VERIFY(A_ptr,
"invalid OpType used");
1161 virtual void Assemble(
int skip_zeros = 1);
Dynamic 2D array using row-major layout.
Data type dense matrix using column-major storage.
Rank 3 tensor (array of matrices)
void AddDomainInterpolator(DiscreteInterpolator *di, Array< int > &elem_marker)
void AddDomainInterpolator(DiscreteInterpolator *di)
Adds a domain interpolator. Assumes ownership of di.
void AddTraceFaceInterpolator(DiscreteInterpolator *di)
Adds a trace face interpolator. Assumes ownership of di.
virtual void Assemble(int skip_zeros=1)
Construct the internal matrix representation of the discrete linear operator.
Array< Array< int > * > * GetDI_Marker()
DiscreteLinearOperator(FiniteElementSpace *domain_fes, FiniteElementSpace *range_fes)
Construct a DiscreteLinearOperator on the given FiniteElementSpaces domain_fes and range_fes.
virtual const Operator * GetOutputRestrictionTranspose() const
Get the output finite element space restriction matrix in transposed form.
Array< BilinearFormIntegrator * > * GetDI()
Access all interpolators added with AddDomainInterpolator().
void SetAssemblyLevel(AssemblyLevel assembly_level)
Set the desired assembly level. The default is AssemblyLevel::FULL.
Class FiniteElementSpace - responsible for providing FEM view of the mesh, mainly managing the set of...
const SparseMatrix * GetConformingRestriction() const
The returned SparseMatrix is owned by the FiniteElementSpace.
virtual const SparseMatrix * GetRestrictionMatrix() const
The returned SparseMatrix is owned by the FiniteElementSpace.
virtual const Operator * GetProlongationMatrix() const
The returned Operator is owned by the FiniteElementSpace.
const Operator * GetRestrictionTransposeOperator() const
Return an operator that performs the transpose of GetRestrictionOperator.
const SparseMatrix * GetConformingProlongation() const
The returned SparseMatrix is owned by the FiniteElementSpace.
Auxiliary class Hybridization, used to implement BilinearForm hybridization.
Abstract data type for matrix inverse.
Abstract data type matrix.
Pointer to an Operator of a specified type.
void Reset(OpType *A, bool own_A=true)
Reset the OperatorHandle to the given OpType pointer, A.
OpType * Is() const
Return the Operator pointer dynamically cast to a specified OpType.
int height
Dimension of the output / number of rows in the matrix.
DiagonalPolicy
Defines operator diagonal policy upon elimination of rows and/or columns.
@ DIAG_ONE
Set the diagonal value to one.
@ DIAG_KEEP
Keep the diagonal value.
virtual void AddMultTranspose(const Vector &x, Vector &y, const real_t a=1.0) const
y += At * x (default) or y += a * At * x
real_t InnerProduct(const Vector &x, const Vector &y) const
Compute y^t A x.
virtual void Mult(const Vector &x, Vector &y) const
Matrix vector multiplication.
virtual void AddMult(const Vector &x, Vector &y, const real_t a=1.0) const
y += A * x (default) or y += a * A * x
FiniteElementSpace * GetTraceFESpace()
Return a pointer to the reduced/trace FE space.
AssemblyLevel
Enumeration defining the assembly level for bilinear and nonlinear form classes derived from Operator...
std::function< real_t(const Vector &)> f(real_t mass_coeff)