MFEM  v3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
Public Member Functions | List of all members
mfem::DiscreteLinearOperator Class Reference

#include <bilinearform.hpp>

Inheritance diagram for mfem::DiscreteLinearOperator:
[legend]
Collaboration diagram for mfem::DiscreteLinearOperator:
[legend]

Public Member Functions

 DiscreteLinearOperator (FiniteElementSpace *domain_fes, FiniteElementSpace *range_fes)
 
void AddDomainInterpolator (DiscreteInterpolator *di)
 
Array< BilinearFormIntegrator * > * GetDI ()
 
virtual void Assemble (int skip_zeros=1)
 
- Public Member Functions inherited from mfem::MixedBilinearForm
 MixedBilinearForm (FiniteElementSpace *tr_fes, FiniteElementSpace *te_fes)
 
virtual double & Elem (int i, int j)
 Returns reference to a_{ij}. More...
 
virtual const double & Elem (int i, int j) const
 Returns constant reference to a_{ij}. More...
 
virtual void Mult (const Vector &x, Vector &y) const
 Operator application. More...
 
virtual void AddMult (const Vector &x, Vector &y, const double a=1.0) const
 
virtual void AddMultTranspose (const Vector &x, Vector &y, const double a=1.0) const
 
virtual void MultTranspose (const Vector &x, Vector &y) const
 Action of the transpose operator. More...
 
virtual MatrixInverseInverse () const
 Returns a pointer to (an approximation) of the matrix inverse. More...
 
virtual void Finalize (int skip_zeros=1)
 Finalizes the matrix initialization. More...
 
void GetBlocks (Array2D< SparseMatrix * > &blocks) const
 
const SparseMatrixSpMat () const
 
SparseMatrixSpMat ()
 
SparseMatrixLoseMat ()
 
void AddDomainIntegrator (BilinearFormIntegrator *bfi)
 
void AddBoundaryIntegrator (BilinearFormIntegrator *bfi)
 
void AddTraceFaceIntegrator (BilinearFormIntegrator *bfi)
 
Array< BilinearFormIntegrator * > * GetDBFI ()
 
Array< BilinearFormIntegrator * > * GetBBFI ()
 
Array< BilinearFormIntegrator * > * GetTFBFI ()
 
void operator= (const double a)
 
void Assemble (int skip_zeros=1)
 
void ConformingAssemble ()
 
void EliminateTrialDofs (Array< int > &bdr_attr_is_ess, Vector &sol, Vector &rhs)
 
void EliminateEssentialBCFromTrialDofs (Array< int > &marked_vdofs, Vector &sol, Vector &rhs)
 
virtual void EliminateTestDofs (Array< int > &bdr_attr_is_ess)
 
void Update ()
 
virtual ~MixedBilinearForm ()
 
- Public Member Functions inherited from mfem::Matrix
 Matrix (int s)
 Creates a square matrix of size s. More...
 
 Matrix (int h, int w)
 Creates a matrix of the given height and width. More...
 
virtual void Print (std::ostream &out=std::cout, int width_=4) const
 Prints matrix to stream out. More...
 
virtual ~Matrix ()
 Destroys matrix. More...
 
- Public Member Functions inherited from mfem::Operator
 Operator (int s=0)
 Construct a square Operator with given size s (default 0) More...
 
 Operator (int h, int w)
 
int Height () const
 Get the height (size of output) of the Operator. Synonym with NumRows. More...
 
int NumRows () const
 
int Width () const
 Get the width (size of input) of the Operator. Synonym with NumCols. More...
 
int NumCols () const
 
virtual OperatorGetGradient (const Vector &x) const
 Evaluate the gradient operator at the point x. More...
 
void PrintMatlab (std::ostream &out, int n=0, int m=0)
 Prints operator with input size n and output size m in matlab format. More...
 
virtual ~Operator ()
 

Additional Inherited Members

- Protected Attributes inherited from mfem::MixedBilinearForm
SparseMatrixmat
 
FiniteElementSpacetrial_fes
 
FiniteElementSpacetest_fes
 
Array< BilinearFormIntegrator * > dom
 
Array< BilinearFormIntegrator * > bdr
 
Array< BilinearFormIntegrator * > skt
 
- Protected Attributes inherited from mfem::Operator
int height
 
int width
 

Detailed Description

Class for constructing the matrix representation of a linear operator, v = L u, from one FiniteElementSpace (domain) to another FiniteElementSpace (range). The constructed matrix A is such that

V = A U

where U and V are the vectors of degrees of freedom representing the functions u and v, respectively. The dimensions of A are

number of rows of A = dimension of the range space and number of cols of A = dimension of the domain space.

This class is very similar to MixedBilinearForm. One difference is that the linear operator L is defined using a special kind of BilinearFormIntegrator (we reuse its functionality instead of defining a new class). The other difference with the MixedBilinearForm class is that the "assembly" process overwrites the global matrix entries using the local element matrices instead of adding them.

Note that if we define the bilinear form b(u,v) := (Lu,v) using an inner product in the range space, then its matrix representation, B, is

B = M A, (since V^t B U = b(u,v) = (Lu,v) = V^t M A U)

where M denotes the mass matrix for the inner product in the range space: V1^t M V2 = (v1,v2). Similarly, if c(u,w) := (Lu,Lw) then

C = A^t M A.

Definition at line 337 of file bilinearform.hpp.

Constructor & Destructor Documentation

mfem::DiscreteLinearOperator::DiscreteLinearOperator ( FiniteElementSpace domain_fes,
FiniteElementSpace range_fes 
)
inline

Definition at line 340 of file bilinearform.hpp.

Member Function Documentation

void mfem::DiscreteLinearOperator::AddDomainInterpolator ( DiscreteInterpolator di)
inline

Definition at line 344 of file bilinearform.hpp.

void mfem::DiscreteLinearOperator::Assemble ( int  skip_zeros = 1)
virtual

Definition at line 731 of file bilinearform.cpp.

Array<BilinearFormIntegrator*>* mfem::DiscreteLinearOperator::GetDI ( )
inline

Definition at line 347 of file bilinearform.hpp.


The documentation for this class was generated from the following files: