MFEM v4.7.0
Finite element discretization library
Loading...
Searching...
No Matches
mfem::ParComplexDPGWeakForm Class Reference

Class representing the parallel weak formulation. (Convenient for DPG Equations) More...

#include <pcomplexweakform.hpp>

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

Public Member Functions

 ParComplexDPGWeakForm ()
 
 ParComplexDPGWeakForm (Array< ParFiniteElementSpace * > &trial_pfes_, Array< FiniteElementCollection * > &fecol_)
 Creates bilinear form associated with FE spaces trial_pfes_.
 
void SetParSpaces (Array< ParFiniteElementSpace * > &trial_pfes_, Array< FiniteElementCollection * > &fecol_)
 
void Assemble (int skip_zeros=1)
 Assembles the form i.e. sums over all domain integrators.
 
void ParallelAssemble (BlockMatrix *mat_r, BlockMatrix *mat_i)
 Returns the matrix assembled on the true dofs, i.e. P^t A P.
 
void FormLinearSystem (const Array< int > &ess_tdof_list, Vector &x, OperatorHandle &A, Vector &X, Vector &B, int copy_interior=0)
 
void FormSystemMatrix (const Array< int > &ess_tdof_list, OperatorHandle &A)
 
virtual void RecoverFEMSolution (const Vector &X, Vector &x)
 
virtual void Update ()
 
virtual ~ParComplexDPGWeakForm ()
 Destroys bilinear form.
 
- Public Member Functions inherited from mfem::ComplexDPGWeakForm
 ComplexDPGWeakForm ()
 
 ComplexDPGWeakForm (Array< FiniteElementSpace * > &fes_, Array< FiniteElementCollection * > &fecol_)
 Creates bilinear form associated with FE spaces fes_.
 
void SetTestFECollVdim (int test_fec, int vdim)
 
void SetSpaces (Array< FiniteElementSpace * > &fes_, Array< FiniteElementCollection * > &fecol_)
 
int Size () const
 
void AllocateMatrix ()
 
void Finalize (int skip_zeros=1)
 Finalizes the matrix initialization.
 
BlockMatrixBlockMat_r ()
 Returns a reference to the BlockMatrix: \( M_r \).
 
BlockMatrixBlockMat_i ()
 Returns a reference to the BlockMatrix: \( M_i \).
 
BlockMatrixBlockMatElim_r ()
 Returns a reference to the BlockMatrix of eliminated b.c.: \( M_e_r \).
 
BlockMatrixBlockMatElim_i ()
 Returns a reference to the BlockMatrix of eliminated b.c.: \( M_e_i \).
 
void AddTrialIntegrator (BilinearFormIntegrator *bfi_r, BilinearFormIntegrator *bfi_i, int n, int m)
 Adds new Domain BF Integrator. Assumes ownership of bfi.
 
void AddTestIntegrator (BilinearFormIntegrator *bfi_r, BilinearFormIntegrator *bfi_i, int n, int m)
 Adds new Test Integrator. Assumes ownership of bfi_r and bfi_i.
 
void AddDomainLFIntegrator (LinearFormIntegrator *lfi_r, LinearFormIntegrator *lfi_i, int n)
 Adds new Domain LF Integrator. Assumes ownership of lfi_r and lfi_i.
 
void Assemble (int skip_zeros=1)
 Assembles the form i.e. sums over all integrators.
 
template<typename OpType >
void FormLinearSystem (const Array< int > &ess_tdof_list, Vector &x, OpType &A, Vector &X, Vector &B, int copy_interior=0)
 
template<typename OpType >
void FormSystemMatrix (const Array< int > &ess_tdof_list, OpType &A)
 
void EliminateVDofs (const Array< int > &vdofs, Operator::DiagonalPolicy dpolicy=Operator::DIAG_ONE)
 
void EliminateVDofsInRHS (const Array< int > &vdofs, const Vector &x_r, const Vector &x_i, Vector &b_r, Vector &b_i)
 
void SetDiagonalPolicy (Operator::DiagonalPolicy policy)
 Sets diagonal policy used upon construction of the linear system.
 
void StoreMatrices (bool store_matrices_=true)
 
void EnableStaticCondensation ()
 
VectorComputeResidual (const Vector &x)
 
virtual ~ComplexDPGWeakForm ()
 Destroys bilinear form.
 

Protected Member Functions

void FillEssTdofLists (const Array< int > &ess_tdof_list)
 
void BuildProlongation ()
 
- Protected Member Functions inherited from mfem::ComplexDPGWeakForm
void Init ()
 
void ReleaseInitMemory ()
 
void AllocMat ()
 
void ConformingAssemble ()
 
void ComputeOffsets ()
 

Protected Attributes

Array< ParFiniteElementSpace * > trial_pfes
 Trial FE spaces.
 
Array< Array< int > * > ess_tdofs
 ess_tdof list for each space
 
BlockOperatorP = nullptr
 
BlockMatrixR = nullptr
 
ComplexOperatorp_mat = nullptr
 
BlockOperatorp_mat_r = nullptr
 
BlockOperatorp_mat_i = nullptr
 
BlockOperatorp_mat_e_r = nullptr
 
BlockOperatorp_mat_e_i = nullptr
 
- Protected Attributes inherited from mfem::ComplexDPGWeakForm
ComplexBlockStaticCondensationstatic_cond
 Owned.
 
bool initialized = false
 
Meshmesh = nullptr
 
int height
 
int width
 
int nblocks
 
Array< int > dof_offsets
 
Array< int > tdof_offsets
 
BlockMatrixmat_r = nullptr
 Block matrix \( M \) to be associated with the real/imag Block bilinear form. Owned.
 
BlockMatrixmat_i = nullptr
 
ComplexOperatormat = nullptr
 
BlockVectory_r = nullptr
 BlockVectors to be associated with the real/imag Block linear form.
 
BlockVectory_i = nullptr
 
Vectory = nullptr
 
BlockMatrixmat_e_r = nullptr
 Block Matrix \( M_e \) used to store the eliminations from the b.c. Owned. \( M + M_e = M_{original} \).
 
BlockMatrixmat_e_i = nullptr
 
Array< FiniteElementSpace * > trial_fes
 Trial FE spaces.
 
Array< int > IsTraceFes
 Flags to determine if a FiniteElementSpace is Trace.
 
Array< FiniteElementCollection * > test_fecols
 Test FE Collections (Broken)
 
Array< int > test_fecols_vdims
 
Array2D< Array< BilinearFormIntegrator * > * > trial_integs_r
 Set of Trial Integrators to be applied for matrix B.
 
Array2D< Array< BilinearFormIntegrator * > * > trial_integs_i
 
Array2D< Array< BilinearFormIntegrator * > * > test_integs_r
 Set of Test Space (broken) Integrators to be applied for matrix G.
 
Array2D< Array< BilinearFormIntegrator * > * > test_integs_i
 
Array< Array< LinearFormIntegrator * > * > lfis_r
 Set of LinearForm Integrators to be applied.
 
Array< Array< LinearFormIntegrator * > * > lfis_i
 
BlockMatrixP = nullptr
 Block Prolongation.
 
BlockMatrixR = nullptr
 Block Restriction.
 
mfem::Operator::DiagonalPolicy diag_policy
 
bool store_matrices = false
 
Array< ComplexDenseMatrix * > Bmat
 
Array< Vector * > fvec
 
Vector residuals
 

Detailed Description

Class representing the parallel weak formulation. (Convenient for DPG Equations)

Definition at line 25 of file pcomplexweakform.hpp.

Constructor & Destructor Documentation

◆ ParComplexDPGWeakForm() [1/2]

mfem::ParComplexDPGWeakForm::ParComplexDPGWeakForm ( )
inline

Definition at line 54 of file pcomplexweakform.hpp.

◆ ParComplexDPGWeakForm() [2/2]

mfem::ParComplexDPGWeakForm::ParComplexDPGWeakForm ( Array< ParFiniteElementSpace * > & trial_pfes_,
Array< FiniteElementCollection * > & fecol_ )
inline

Creates bilinear form associated with FE spaces trial_pfes_.

Definition at line 57 of file pcomplexweakform.hpp.

◆ ~ParComplexDPGWeakForm()

mfem::ParComplexDPGWeakForm::~ParComplexDPGWeakForm ( )
virtual

Destroys bilinear form.

Definition at line 265 of file pcomplexweakform.cpp.

Member Function Documentation

◆ Assemble()

void mfem::ParComplexDPGWeakForm::Assemble ( int skip_zeros = 1)

Assembles the form i.e. sums over all domain integrators.

Definition at line 34 of file pcomplexweakform.cpp.

◆ BuildProlongation()

void mfem::ParComplexDPGWeakForm::BuildProlongation ( )
protectedvirtual

Reimplemented from mfem::ComplexDPGWeakForm.

Definition at line 105 of file pcomplexweakform.cpp.

◆ FillEssTdofLists()

void mfem::ParComplexDPGWeakForm::FillEssTdofLists ( const Array< int > & ess_tdof_list)
protected

split ess_tdof_list given in global tdof (for all spaces) to individual lists for each space

Definition at line 19 of file pcomplexweakform.cpp.

◆ FormLinearSystem()

void mfem::ParComplexDPGWeakForm::FormLinearSystem ( const Array< int > & ess_tdof_list,
Vector & x,
OperatorHandle & A,
Vector & X,
Vector & B,
int copy_interior = 0 )
virtual

Reimplemented from mfem::ComplexDPGWeakForm.

Definition at line 121 of file pcomplexweakform.cpp.

◆ FormSystemMatrix()

void mfem::ParComplexDPGWeakForm::FormSystemMatrix ( const Array< int > & ess_tdof_list,
OperatorHandle & A )
virtual

Reimplemented from mfem::ComplexDPGWeakForm.

Definition at line 183 of file pcomplexweakform.cpp.

◆ ParallelAssemble()

void mfem::ParComplexDPGWeakForm::ParallelAssemble ( BlockMatrix * mat_r,
BlockMatrix * mat_i )

Returns the matrix assembled on the true dofs, i.e. P^t A P.

The returned matrix has to be deleted by the caller.

Definition at line 39 of file pcomplexweakform.cpp.

◆ RecoverFEMSolution()

void mfem::ParComplexDPGWeakForm::RecoverFEMSolution ( const Vector & X,
Vector & x )
virtual

Call this method after solving a linear system constructed using the FormLinearSystem method to recover the solution as a ParGridFunction-size vector in x. Use the same arguments as in the FormLinearSystem call.

Reimplemented from mfem::ComplexDPGWeakForm.

Definition at line 218 of file pcomplexweakform.cpp.

◆ SetParSpaces()

void mfem::ParComplexDPGWeakForm::SetParSpaces ( Array< ParFiniteElementSpace * > & trial_pfes_,
Array< FiniteElementCollection * > & fecol_ )
inline

Definition at line 64 of file pcomplexweakform.hpp.

◆ Update()

void mfem::ParComplexDPGWeakForm::Update ( )
virtual

Reimplemented from mfem::ComplexDPGWeakForm.

Definition at line 241 of file pcomplexweakform.cpp.

Member Data Documentation

◆ ess_tdofs

Array<Array<int> *> mfem::ParComplexDPGWeakForm::ess_tdofs
protected

ess_tdof list for each space

Definition at line 33 of file pcomplexweakform.hpp.

◆ P

BlockOperator* mfem::ParComplexDPGWeakForm::P = nullptr
protected

Definition at line 40 of file pcomplexweakform.hpp.

◆ p_mat

ComplexOperator* mfem::ParComplexDPGWeakForm::p_mat = nullptr
protected

Definition at line 44 of file pcomplexweakform.hpp.

◆ p_mat_e_i

BlockOperator* mfem::ParComplexDPGWeakForm::p_mat_e_i = nullptr
protected

Definition at line 48 of file pcomplexweakform.hpp.

◆ p_mat_e_r

BlockOperator* mfem::ParComplexDPGWeakForm::p_mat_e_r = nullptr
protected

Definition at line 47 of file pcomplexweakform.hpp.

◆ p_mat_i

BlockOperator* mfem::ParComplexDPGWeakForm::p_mat_i = nullptr
protected

Definition at line 46 of file pcomplexweakform.hpp.

◆ p_mat_r

BlockOperator* mfem::ParComplexDPGWeakForm::p_mat_r = nullptr
protected

Definition at line 45 of file pcomplexweakform.hpp.

◆ R

BlockMatrix* mfem::ParComplexDPGWeakForm::R = nullptr
protected

Definition at line 42 of file pcomplexweakform.hpp.

◆ trial_pfes

Array<ParFiniteElementSpace * > mfem::ParComplexDPGWeakForm::trial_pfes
protected

Trial FE spaces.

Definition at line 30 of file pcomplexweakform.hpp.


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