MFEM  v4.0
Finite element discretization library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
Public Member Functions | Protected Attributes | List of all members
mfem::ParBlockNonlinearForm Class Reference

A class representing a general parallel block nonlinear operator defined on the Cartesian product of multiple ParFiniteElementSpaces. More...

#include <pnonlinearform.hpp>

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

Public Member Functions

 ParBlockNonlinearForm ()
 Construct an empty ParBlockNonlinearForm. Initialize with SetParSpaces(). More...
 
 ParBlockNonlinearForm (Array< ParFiniteElementSpace * > &pf)
 Construct a ParBlockNonlinearForm on the given set of ParFiniteElementSpaces. More...
 
ParFiniteElementSpaceParFESpace (int k)
 Return the k-th parallel FE space of the ParBlockNonlinearForm. More...
 
const ParFiniteElementSpaceParFESpace (int k) const
 Return the k-th parallel FE space of the ParBlockNonlinearForm (const version). More...
 
void SetParSpaces (Array< ParFiniteElementSpace * > &pf)
 After a call to SetParSpaces(), the essential b.c. and the gradient-type (if different from the default) must be set again. More...
 
virtual void SetEssentialBC (const Array< Array< int > * > &bdr_attr_is_ess, Array< Vector * > &rhs)
 
virtual void Mult (const Vector &x, Vector &y) const
 Operator application: y=A(x). More...
 
const BlockOperatorGetLocalGradient (const Vector &x) const
 Return the local block gradient matrix for the given true-dof vector x. More...
 
virtual BlockOperatorGetGradient (const Vector &x) const
 Evaluate the gradient operator at the point x. The default behavior in class Operator is to generate an error. More...
 
void SetGradientType (Operator::Type tid)
 Set the operator type id for the blocks of the parallel gradient matrix/operator. The default type is Operator::Hypre_ParCSR. More...
 
virtual ~ParBlockNonlinearForm ()
 Destructor. More...
 
- Public Member Functions inherited from mfem::BlockNonlinearForm
 BlockNonlinearForm ()
 Construct an empty BlockNonlinearForm. Initialize with SetSpaces(). More...
 
 BlockNonlinearForm (Array< FiniteElementSpace * > &f)
 Construct a BlockNonlinearForm on the given set of FiniteElementSpaces. More...
 
FiniteElementSpaceFESpace (int k)
 Return the k-th FE space of the BlockNonlinearForm. More...
 
const FiniteElementSpaceFESpace (int k) const
 Return the k-th FE space of the BlockNonlinearForm (const version). More...
 
void SetSpaces (Array< FiniteElementSpace * > &f)
 (Re)initialize the BlockNonlinearForm. More...
 
const Array< int > & GetBlockOffsets () const
 Return the regular dof offsets. More...
 
const Array< int > & GetBlockTrueOffsets () const
 Return the true-dof offsets. More...
 
void AddDomainIntegrator (BlockNonlinearFormIntegrator *nlfi)
 Adds new Domain Integrator. More...
 
void AddInteriorFaceIntegrator (BlockNonlinearFormIntegrator *nlfi)
 Adds new Interior Face Integrator. More...
 
void AddBdrFaceIntegrator (BlockNonlinearFormIntegrator *nlfi)
 Adds new Boundary Face Integrator. More...
 
void AddBdrFaceIntegrator (BlockNonlinearFormIntegrator *nlfi, Array< int > &bdr_marker)
 Adds new Boundary Face Integrator, restricted to specific boundary attributes. More...
 
virtual double GetEnergy (const Vector &x) const
 
virtual ~BlockNonlinearForm ()
 Destructor. 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)
 Construct an Operator with the given height (output size) and width (input size). More...
 
int Height () const
 Get the height (size of output) of the Operator. Synonym with NumRows(). More...
 
int NumRows () const
 Get the number of rows (size of output) of the Operator. Synonym with Height(). More...
 
int Width () const
 Get the width (size of input) of the Operator. Synonym with NumCols(). More...
 
int NumCols () const
 Get the number of columns (size of input) of the Operator. Synonym with Width(). More...
 
virtual MemoryClass GetMemoryClass () const
 Return the MemoryClass preferred by the Operator. More...
 
virtual void MultTranspose (const Vector &x, Vector &y) const
 Action of the transpose operator: y=A^t(x). The default behavior in class Operator is to generate an error. More...
 
virtual const OperatorGetProlongation () const
 Prolongation operator from linear algebra (linear system) vectors, to input vectors for the operator. NULL means identity. More...
 
virtual const OperatorGetRestriction () const
 Restriction operator from input vectors for the operator to linear algebra (linear system) vectors. NULL means identity. More...
 
void FormLinearSystem (const Array< int > &ess_tdof_list, Vector &x, Vector &b, Operator *&A, Vector &X, Vector &B, int copy_interior=0)
 Form a constrained linear system using a matrix-free approach. More...
 
virtual void RecoverFEMSolution (const Vector &X, const Vector &b, Vector &x)
 Reconstruct a solution vector x (e.g. a GridFunction) from the solution X of a constrained linear system obtained from Operator::FormLinearSystem(). More...
 
void PrintMatlab (std::ostream &out, int n=0, int m=0) const
 Prints operator with input size n and output size m in Matlab format. More...
 
virtual ~Operator ()
 Virtual destructor. More...
 
Type GetType () const
 Return the type ID of the Operator class. More...
 

Protected Attributes

BlockVector xs_true
 
BlockVector ys_true
 
Array2D< OperatorHandle * > phBlockGrad
 
BlockOperatorpBlockGrad
 
- Protected Attributes inherited from mfem::BlockNonlinearForm
Array< FiniteElementSpace * > fes
 FE spaces on which the form lives. More...
 
Array
< BlockNonlinearFormIntegrator * > 
dnfi
 Set of Domain Integrators to be assembled (added). More...
 
Array
< BlockNonlinearFormIntegrator * > 
fnfi
 Set of interior face Integrators to be assembled (added). More...
 
Array
< BlockNonlinearFormIntegrator * > 
bfnfi
 Set of Boundary Face Integrators to be assembled (added). More...
 
Array< Array< int > * > bfnfi_marker
 
BlockVector xs
 
BlockVector ys
 
Array2D< SparseMatrix * > Grads
 
BlockOperatorBlockGrad
 
Array< int > block_offsets
 
Array< int > block_trueOffsets
 
Array< Array< int > * > ess_vdofs
 
- Protected Attributes inherited from mfem::Operator
int height
 Dimension of the output / number of rows in the matrix. More...
 
int width
 Dimension of the input / number of columns in the matrix. More...
 

Additional Inherited Members

- Public Types inherited from mfem::Operator
enum  Type {
  ANY_TYPE, MFEM_SPARSEMAT, Hypre_ParCSR, PETSC_MATAIJ,
  PETSC_MATIS, PETSC_MATSHELL, PETSC_MATNEST, PETSC_MATHYPRE,
  PETSC_MATGENERIC
}
 Enumeration defining IDs for some classes derived from Operator. More...
 
- Protected Member Functions inherited from mfem::BlockNonlinearForm
double GetEnergyBlocked (const BlockVector &bx) const
 Specialized version of GetEnergy() for BlockVectors. More...
 
void MultBlocked (const BlockVector &bx, BlockVector &by) const
 Specialized version of Mult() for BlockVectors. More...
 
OperatorGetGradientBlocked (const BlockVector &bx) const
 Specialized version of GetGradient() for BlockVector. More...
 

Detailed Description

A class representing a general parallel block nonlinear operator defined on the Cartesian product of multiple ParFiniteElementSpaces.

The ParBlockNonlinearForm takes as input, and returns as output, vectors on the true dofs.

Definition at line 77 of file pnonlinearform.hpp.

Constructor & Destructor Documentation

mfem::ParBlockNonlinearForm::ParBlockNonlinearForm ( )
inline

Construct an empty ParBlockNonlinearForm. Initialize with SetParSpaces().

Definition at line 86 of file pnonlinearform.hpp.

mfem::ParBlockNonlinearForm::ParBlockNonlinearForm ( Array< ParFiniteElementSpace * > &  pf)

Construct a ParBlockNonlinearForm on the given set of ParFiniteElementSpaces.

Definition at line 141 of file pnonlinearform.cpp.

mfem::ParBlockNonlinearForm::~ParBlockNonlinearForm ( )
virtual

Destructor.

Definition at line 337 of file pnonlinearform.cpp.

Member Function Documentation

BlockOperator & mfem::ParBlockNonlinearForm::GetGradient ( const Vector x) const
virtual

Evaluate the gradient operator at the point x. The default behavior in class Operator is to generate an error.

Reimplemented from mfem::BlockNonlinearForm.

Definition at line 275 of file pnonlinearform.cpp.

const BlockOperator & mfem::ParBlockNonlinearForm::GetLocalGradient ( const Vector x) const

Return the local block gradient matrix for the given true-dof vector x.

Return the local gradient matrix for the given true-dof vector x.

Definition at line 246 of file pnonlinearform.cpp.

void mfem::ParBlockNonlinearForm::Mult ( const Vector x,
Vector y 
) const
virtual

Operator application: y=A(x).

Reimplemented from mfem::BlockNonlinearForm.

Definition at line 218 of file pnonlinearform.cpp.

ParFiniteElementSpace * mfem::ParBlockNonlinearForm::ParFESpace ( int  k)

Return the k-th parallel FE space of the ParBlockNonlinearForm.

Definition at line 181 of file pnonlinearform.cpp.

const ParFiniteElementSpace * mfem::ParBlockNonlinearForm::ParFESpace ( int  k) const

Return the k-th parallel FE space of the ParBlockNonlinearForm (const version).

Definition at line 186 of file pnonlinearform.cpp.

void mfem::ParBlockNonlinearForm::SetEssentialBC ( const Array< Array< int > * > &  bdr_attr_is_ess,
Array< Vector * > &  rhs 
)
virtual

Reimplemented from mfem::BlockNonlinearForm.

Definition at line 192 of file pnonlinearform.cpp.

void mfem::ParBlockNonlinearForm::SetGradientType ( Operator::Type  tid)

Set the operator type id for the blocks of the parallel gradient matrix/operator. The default type is Operator::Hypre_ParCSR.

Definition at line 264 of file pnonlinearform.cpp.

void mfem::ParBlockNonlinearForm::SetParSpaces ( Array< ParFiniteElementSpace * > &  pf)

After a call to SetParSpaces(), the essential b.c. and the gradient-type (if different from the default) must be set again.

Definition at line 148 of file pnonlinearform.cpp.

Member Data Documentation

BlockOperator* mfem::ParBlockNonlinearForm::pBlockGrad
mutableprotected

Definition at line 82 of file pnonlinearform.hpp.

Array2D<OperatorHandle *> mfem::ParBlockNonlinearForm::phBlockGrad
mutableprotected

Definition at line 81 of file pnonlinearform.hpp.

BlockVector mfem::ParBlockNonlinearForm::xs_true
mutableprotected

Definition at line 80 of file pnonlinearform.hpp.

BlockVector mfem::ParBlockNonlinearForm::ys_true
mutableprotected

Definition at line 80 of file pnonlinearform.hpp.


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