MFEM
v4.2.0
Finite element discretization library
|
Class for parallel bilinear form using different test and trial FE spaces. More...
#include <pbilinearform.hpp>
Public Member Functions | |
ParMixedBilinearForm (ParFiniteElementSpace *trial_fes, ParFiniteElementSpace *test_fes) | |
Construct a ParMixedBilinearForm on the given FiniteElementSpaces trial_fes and test_fes. More... | |
ParMixedBilinearForm (ParFiniteElementSpace *trial_fes, ParFiniteElementSpace *test_fes, ParMixedBilinearForm *mbf) | |
Create a ParMixedBilinearForm on the given FiniteElementSpaces trial_fes and test_fes, using the same integrators as the ParMixedBilinearForm mbf. More... | |
HypreParMatrix * | ParallelAssemble () |
Returns the matrix assembled on the true dofs, i.e. P_test^t A P_trial. More... | |
void | ParallelAssemble (OperatorHandle &A) |
Returns the matrix assembled on the true dofs, i.e. A = P_test^t A_local P_trial, in the format (type id) specified by A. More... | |
virtual void | FormRectangularSystemMatrix (const Array< int > &trial_tdof_list, const Array< int > &test_tdof_list, OperatorHandle &A) |
Return in A a parallel (on truedofs) version of this operator. More... | |
virtual void | FormRectangularLinearSystem (const Array< int > &trial_tdof_list, const Array< int > &test_tdof_list, Vector &x, Vector &b, OperatorHandle &A, Vector &X, Vector &B) |
Form the parallel linear system A X = B, corresponding to this mixed bilinear form and the linear form b(.). More... | |
void | TrueAddMult (const Vector &x, Vector &y, const double a=1.0) const |
Compute y += a (P^t A P) x, where x and y are vectors on the true dofs. More... | |
virtual | ~ParMixedBilinearForm () |
Public Member Functions inherited from mfem::MixedBilinearForm | |
MixedBilinearForm (FiniteElementSpace *tr_fes, FiniteElementSpace *te_fes) | |
Construct a MixedBilinearForm on the given trial, tr_fes, and test, te_fes, FiniteElementSpaces. More... | |
MixedBilinearForm (FiniteElementSpace *tr_fes, FiniteElementSpace *te_fes, MixedBilinearForm *mbf) | |
Create a MixedBilinearForm on the given trial, tr_fes, and test, te_fes, FiniteElementSpaces, using the same integrators as the MixedBilinearForm mbf. More... | |
virtual double & | Elem (int i, int j) |
Returns a reference to: \( M_{ij} \). More... | |
virtual const double & | Elem (int i, int j) const |
Returns a reference to: \( M_{ij} \). More... | |
virtual void | Mult (const Vector &x, Vector &y) const |
Matrix multiplication: \( y = M x \). More... | |
virtual void | AddMult (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: y=A^t(x) . The default behavior in class Operator is to generate an error. More... | |
virtual void | AddMultTranspose (const Vector &x, Vector &y, const double a=1.0) const |
virtual MatrixInverse * | Inverse () 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 SparseMatrix & | SpMat () const |
Returns a const reference to the sparse matrix: \( M \). More... | |
SparseMatrix & | SpMat () |
Returns a reference to the sparse matrix: \( M \). More... | |
SparseMatrix * | LoseMat () |
Nullifies the internal matrix \( M \) and returns a pointer to it. Used for transfering ownership. More... | |
void | AddDomainIntegrator (BilinearFormIntegrator *bfi) |
Adds a domain integrator. Assumes ownership of bfi. More... | |
void | AddBoundaryIntegrator (BilinearFormIntegrator *bfi) |
Adds a boundary integrator. Assumes ownership of bfi. More... | |
void | AddBoundaryIntegrator (BilinearFormIntegrator *bfi, Array< int > &bdr_marker) |
Adds a boundary integrator. Assumes ownership of bfi. More... | |
void | AddTraceFaceIntegrator (BilinearFormIntegrator *bfi) |
Add a trace face integrator. Assumes ownership of bfi. More... | |
void | AddBdrTraceFaceIntegrator (BilinearFormIntegrator *bfi) |
Adds a boundary trace face integrator. Assumes ownership of bfi. More... | |
void | AddBdrTraceFaceIntegrator (BilinearFormIntegrator *bfi, Array< int > &bdr_marker) |
Adds a boundary trace face integrator. Assumes ownership of bfi. More... | |
Array< BilinearFormIntegrator * > * | GetDBFI () |
Access all integrators added with AddDomainIntegrator(). More... | |
Array< BilinearFormIntegrator * > * | GetBBFI () |
Access all integrators added with AddBoundaryIntegrator(). More... | |
Array< Array< int > * > * | GetBBFI_Marker () |
Access all boundary markers added with AddBoundaryIntegrator(). If no marker was specified when the integrator was added, the corresponding pointer (to Array<int>) will be NULL. More... | |
Array< BilinearFormIntegrator * > * | GetTFBFI () |
Access all integrators added with AddTraceFaceIntegrator(). More... | |
Array< BilinearFormIntegrator * > * | GetBTFBFI () |
Access all integrators added with AddBdrTraceFaceIntegrator(). More... | |
Array< Array< int > * > * | GetBTFBFI_Marker () |
Access all boundary markers added with AddBdrTraceFaceIntegrator(). If no marker was specified when the integrator was added, the corresponding pointer (to Array<int>) will be NULL. More... | |
void | operator= (const double a) |
Sets all sparse values of \( M \) to a. More... | |
void | SetAssemblyLevel (AssemblyLevel assembly_level) |
Set the desired assembly level. The default is AssemblyLevel::LEGACYFULL. More... | |
void | Assemble (int skip_zeros=1) |
void | AssembleDiagonal_ADAt (const Vector &D, Vector &diag) const |
Assemble the diagonal of ADA^T into diag, where A is this mixed bilinear form and D is a diagonal. More... | |
virtual const Operator * | GetProlongation () const |
Get the input finite element space prolongation matrix. More... | |
virtual const Operator * | GetRestriction () const |
Get the input finite element space restriction matrix. More... | |
virtual const Operator * | GetOutputProlongation () const |
Get the test finite element space prolongation matrix. More... | |
virtual const Operator * | GetOutputRestriction () const |
Get the test finite element space restriction matrix. More... | |
void | ConformingAssemble () |
void | ComputeElementMatrix (int i, DenseMatrix &elmat) |
Compute the element matrix of the given element. More... | |
void | ComputeBdrElementMatrix (int i, DenseMatrix &elmat) |
Compute the boundary element matrix of the given boundary element. More... | |
void | AssembleElementMatrix (int i, const DenseMatrix &elmat, int skip_zeros=1) |
Assemble the given element matrix. More... | |
void | AssembleElementMatrix (int i, const DenseMatrix &elmat, Array< int > &trial_vdofs, Array< int > &test_vdofs, int skip_zeros=1) |
Assemble the given element matrix. More... | |
void | AssembleBdrElementMatrix (int i, const DenseMatrix &elmat, int skip_zeros=1) |
Assemble the given boundary element matrix. More... | |
void | AssembleBdrElementMatrix (int i, const DenseMatrix &elmat, Array< int > &trial_vdofs, Array< int > &test_vdofs, int skip_zeros=1) |
Assemble the given boundary element matrix. More... | |
void | EliminateTrialDofs (const Array< int > &bdr_attr_is_ess, const Vector &sol, Vector &rhs) |
void | EliminateEssentialBCFromTrialDofs (const Array< int > &marked_vdofs, const Vector &sol, Vector &rhs) |
virtual void | EliminateTestDofs (const Array< int > &bdr_attr_is_ess) |
void | FormRectangularSystemMatrix (const Array< int > &trial_tdof_list, const Array< int > &test_tdof_list, OperatorHandle &A) |
Return in A that is column-constrained. More... | |
template<typename OpType > | |
void | FormRectangularSystemMatrix (const Array< int > &trial_tdof_list, const Array< int > &test_tdof_list, OpType &A) |
Form the column-constrained linear system matrix A. See FormRectangularSystemMatrix() for details. More... | |
void | FormRectangularLinearSystem (const Array< int > &trial_tdof_list, const Array< int > &test_tdof_list, Vector &x, Vector &b, OperatorHandle &A, Vector &X, Vector &B) |
Form the linear system A X = B, corresponding to this mixed bilinear form and the linear form b(.). More... | |
template<typename OpType > | |
void | FormRectangularLinearSystem (const Array< int > &trial_tdof_list, const Array< int > &test_tdof_list, Vector &x, Vector &b, OpType &A, Vector &X, Vector &B) |
Form the linear system A X = B, corresponding to this bilinear form and the linear form b(.). More... | |
void | Update () |
FiniteElementSpace * | TrialFESpace () |
Return the trial FE space associated with the BilinearForm. More... | |
const FiniteElementSpace * | TrialFESpace () const |
Read-only access to the associated trial FiniteElementSpace. More... | |
FiniteElementSpace * | TestFESpace () |
Return the test FE space associated with the BilinearForm. More... | |
const FiniteElementSpace * | TestFESpace () const |
Read-only access to the associated test FiniteElementSpace. More... | |
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... | |
bool | IsSquare () const |
Returns whether the matrix is a square matrix. More... | |
virtual void | Print (std::ostream &out=mfem::out, int width_=4) const |
Prints matrix to stream out. More... | |
virtual | ~Matrix () |
Destroys matrix. More... | |
Public Member Functions inherited from mfem::Operator | |
void | InitTVectors (const Operator *Po, const Operator *Ri, const Operator *Pi, Vector &x, Vector &b, Vector &X, Vector &B) const |
Initializes memory for true vectors of linear system. More... | |
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 Operator & | GetGradient (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 | 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... | |
void | FormRectangularLinearSystem (const Array< int > &trial_tdof_list, const Array< int > &test_tdof_list, Vector &x, Vector &b, Operator *&A, Vector &X, Vector &B) |
Form a column-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() or Operator::FormRectangularLinearSystem(). More... | |
void | FormSystemOperator (const Array< int > &ess_tdof_list, Operator *&A) |
Return in A a parallel (on truedofs) version of this square operator. More... | |
void | FormRectangularSystemOperator (const Array< int > &trial_tdof_list, const Array< int > &test_tdof_list, Operator *&A) |
Return in A a parallel (on truedofs) version of this rectangular operator (including constraints). More... | |
void | FormDiscreteOperator (Operator *&A) |
Return in A a parallel (on truedofs) version of this rectangular operator. 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 | |
ParFiniteElementSpace * | trial_pfes |
Points to the same object as trial_fes. More... | |
ParFiniteElementSpace * | test_pfes |
Points to the same object as test_fes. More... | |
ParGridFunction | X |
Auxiliary objects used in TrueAddMult(). More... | |
ParGridFunction | Y |
OperatorHandle | p_mat |
Matrix and eliminated matrix. More... | |
OperatorHandle | p_mat_e |
Protected Attributes inherited from mfem::MixedBilinearForm | |
SparseMatrix * | mat |
Owned. More... | |
SparseMatrix * | mat_e |
Owned. More... | |
FiniteElementSpace * | trial_fes |
Not owned. More... | |
FiniteElementSpace * | test_fes |
Not owned. More... | |
AssemblyLevel | assembly |
The form assembly level (full, partial, etc.) More... | |
MixedBilinearFormExtension * | ext |
int | extern_bfs |
Indicates the BilinearFormIntegrators stored in dbfi, bbfi, tfbfi and btfbfi are owned by another MixedBilinearForm. More... | |
Array< BilinearFormIntegrator * > | dbfi |
Domain integrators. More... | |
Array< BilinearFormIntegrator * > | bbfi |
Boundary integrators. More... | |
Array< Array< int > * > | bbfi_marker |
Entries are not owned. More... | |
Array< BilinearFormIntegrator * > | tfbfi |
Trace face (skeleton) integrators. More... | |
Array< BilinearFormIntegrator * > | btfbfi |
Boundary trace face (skeleton) integrators. More... | |
Array< Array< int > * > | btfbfi_marker |
Entries are not owned. More... | |
DenseMatrix | elemmat |
Array< int > | trial_vdofs |
Array< int > | test_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 | DiagonalPolicy { DIAG_ZERO, DIAG_ONE, DIAG_KEEP } |
Defines operator diagonal policy upon elimination of rows and/or columns. More... | |
enum | Type { ANY_TYPE, MFEM_SPARSEMAT, Hypre_ParCSR, PETSC_MATAIJ, PETSC_MATIS, PETSC_MATSHELL, PETSC_MATNEST, PETSC_MATHYPRE, PETSC_MATGENERIC, Complex_Operator, MFEM_ComplexSparseMat, Complex_Hypre_ParCSR } |
Enumeration defining IDs for some classes derived from Operator. More... | |
Protected Member Functions inherited from mfem::Operator | |
void | FormConstrainedSystemOperator (const Array< int > &ess_tdof_list, ConstrainedOperator *&Aout) |
see FormSystemOperator() More... | |
void | FormRectangularConstrainedSystemOperator (const Array< int > &trial_tdof_list, const Array< int > &test_tdof_list, RectangularConstrainedOperator *&Aout) |
see FormRectangularSystemOperator() More... | |
Operator * | SetupRAP (const Operator *Pi, const Operator *Po) |
Returns RAP Operator of this, taking in input/output Prolongation matrices. More... | |
Class for parallel bilinear form using different test and trial FE spaces.
Definition at line 188 of file pbilinearform.hpp.
|
inline |
Construct a ParMixedBilinearForm on the given FiniteElementSpaces trial_fes and test_fes.
The pointers trial_fes and test_fes are not owned by the newly constructed object.
Definition at line 213 of file pbilinearform.hpp.
|
inline |
Create a ParMixedBilinearForm on the given FiniteElementSpaces trial_fes and test_fes, using the same integrators as the ParMixedBilinearForm mbf.
The pointers trial_fes and test_fes are not owned by the newly constructed object.
The integrators in mbf are copied as pointers and they are not owned by the newly constructed ParMixedBilinearForm.
Definition at line 231 of file pbilinearform.hpp.
|
inlinevirtual |
Definition at line 271 of file pbilinearform.hpp.
|
virtual |
Form the parallel linear system A X = B, corresponding to this mixed bilinear form and the linear form b(.).
Return in A a reference to the system matrix that is column-constrained. The reference will be invalidated when SetOperatorType(), Update(), or the destructor is called.
Definition at line 529 of file pbilinearform.cpp.
|
virtual |
Return in A a parallel (on truedofs) version of this operator.
This returns the same operator as FormRectangularLinearSystem(), but does without the transformations of the right-hand side.
Definition at line 500 of file pbilinearform.cpp.
HypreParMatrix * mfem::ParMixedBilinearForm::ParallelAssemble | ( | ) |
Returns the matrix assembled on the true dofs, i.e. P_test^t A P_trial.
Definition at line 446 of file pbilinearform.cpp.
void mfem::ParMixedBilinearForm::ParallelAssemble | ( | OperatorHandle & | A | ) |
Returns the matrix assembled on the true dofs, i.e. A = P_test^t A_local P_trial, in the format (type id) specified by A.
Definition at line 465 of file pbilinearform.cpp.
void mfem::ParMixedBilinearForm::TrueAddMult | ( | const Vector & | x, |
Vector & | y, | ||
const double | a = 1.0 |
||
) | const |
Compute y += a (P^t A P) x, where x and y are vectors on the true dofs.
Definition at line 486 of file pbilinearform.cpp.
|
protected |
Matrix and eliminated matrix.
Definition at line 199 of file pbilinearform.hpp.
|
protected |
Definition at line 199 of file pbilinearform.hpp.
|
protected |
Points to the same object as test_fes.
Definition at line 194 of file pbilinearform.hpp.
|
protected |
Points to the same object as trial_fes.
Definition at line 192 of file pbilinearform.hpp.
|
mutableprotected |
Auxiliary objects used in TrueAddMult().
Definition at line 196 of file pbilinearform.hpp.
|
mutableprotected |
Definition at line 196 of file pbilinearform.hpp.