MFEM v4.10.0
Finite element discretization library
Loading...
Searching...
No Matches
mfem::ParMixedSesquilinearForm Class Reference

#include <complex_fem.hpp>

Public Member Functions

 ParMixedSesquilinearForm (ParFiniteElementSpace *trial_fes, ParFiniteElementSpace *test_fes, ComplexOperator::Convention convention=ComplexOperator::HERMITIAN)
 
 ParMixedSesquilinearForm (ParFiniteElementSpace *trial_fes, ParFiniteElementSpace *test_fes, ParMixedBilinearForm *pbfr, ParMixedBilinearForm *pbfi, ComplexOperator::Convention convention=ComplexOperator::HERMITIAN)
 Create a ParMixedSesquilinearForm on the given trial and test ParFiniteElementSpaces, using the same integrators as the ParMixedBilinearForms pbfr and pbfi.
 
ComplexOperator::Convention GetConvention () const
 
void SetConvention (const ComplexOperator::Convention &convention)
 
void SetAssemblyLevel (AssemblyLevel assembly_level)
 Set the desired assembly level.
 
ParMixedBilinearFormreal ()
 
ParMixedBilinearFormimag ()
 
const ParMixedBilinearFormreal () const
 
const ParMixedBilinearFormimag () const
 
void AddDomainIntegrator (BilinearFormIntegrator *bfi_real, BilinearFormIntegrator *bfi_imag)
 Adds new Domain Integrator.
 
void AddDomainIntegrator (BilinearFormIntegrator *bfi_real, BilinearFormIntegrator *bfi_imag, Array< int > &elem_marker)
 Adds new Domain Integrator, restricted to specific attributes.
 
void AddBoundaryIntegrator (BilinearFormIntegrator *bfi_real, BilinearFormIntegrator *bfi_imag)
 Adds new Boundary Integrator.
 
void AddBoundaryIntegrator (BilinearFormIntegrator *bfi_real, BilinearFormIntegrator *bfi_imag, Array< int > &bdr_marker)
 Adds new boundary Integrator, restricted to specific boundary attributes.
 
void AddInteriorFaceIntegrator (BilinearFormIntegrator *bfi_real, BilinearFormIntegrator *bfi_imag)
 Adds new interior Face Integrator. Assumes ownership of bfi.
 
void AddBdrFaceIntegrator (BilinearFormIntegrator *bfi_real, BilinearFormIntegrator *bfi_imag)
 Adds new boundary Face Integrator. Assumes ownership of bfi.
 
void AddBdrFaceIntegrator (BilinearFormIntegrator *bfi_real, BilinearFormIntegrator *bfi_imag, Array< int > &bdr_marker)
 Adds new boundary Face Integrator, restricted to specific boundary attributes.
 
void AddTraceFaceIntegrator (BilinearFormIntegrator *bfi_real, BilinearFormIntegrator *bfi_imag)
 Add a trace face integrator. Assumes ownership of bfi.
 
void AddBdrTraceFaceIntegrator (BilinearFormIntegrator *bfi_real, BilinearFormIntegrator *bfi_imag)
 Adds a boundary trace face integrator. Assumes ownership of bfi.
 
void AddBdrTraceFaceIntegrator (BilinearFormIntegrator *bfi_real, BilinearFormIntegrator *bfi_imag, Array< int > &bdr_marker)
 Adds a boundary trace face integrator. Assumes ownership of bfi.
 
void Assemble (int skip_zeros=1)
 Assemble the local matrix.
 
void Finalize (int skip_zeros=1)
 Finalizes the matrix initialization.
 
virtual void Update ()
 Updates the internal mixed forms with the new finite element space.
 
ComplexHypreParMatrixParallelAssemble ()
 Returns the matrix assembled on the true dofs, i.e. P^t A P.
 
void FormRectangularLinearSystem (const Array< int > &ess_trial_tdof_list, const Array< int > &ess_test_tdof_list, Vector &x, Vector &b, OperatorHandle &A, Vector &X, Vector &B)
 
void FormRectangularSystemMatrix (const Array< int > &ess_trial_tdof_list, const Array< int > &ess_test_tdof_list, OperatorHandle &A)
 
virtual ~ParMixedSesquilinearForm ()
 

Detailed Description

Class for a parallel mixed sesquilinear form

A mixed sesquilinear form is a generalization of a mixed bilinear form to complex-valued fields. Mixed sesquilinear forms are linear in the second argument but the first argument involves a complex conjugate in the sense that:

        a(alpha u, beta v) = conj(alpha) beta a(u, v)

The convention argument in the class's constructor is documented in the mfem::ComplexOperator class found in linalg/complex_operator.hpp.

When supplying integrators to the ParMixedSesquilinearForm either the real or imaginary integrator can be NULL. This indicates that the corresponding portion of the complex-valued material coefficient is equal to zero.

Definition at line 1129 of file complex_fem.hpp.

Constructor & Destructor Documentation

◆ ParMixedSesquilinearForm() [1/2]

mfem::ParMixedSesquilinearForm::ParMixedSesquilinearForm ( ParFiniteElementSpace * trial_fes,
ParFiniteElementSpace * test_fes,
ComplexOperator::Convention convention = ComplexOperator::HERMITIAN )

Definition at line 2157 of file complex_fem.cpp.

◆ ParMixedSesquilinearForm() [2/2]

mfem::ParMixedSesquilinearForm::ParMixedSesquilinearForm ( ParFiniteElementSpace * trial_fes,
ParFiniteElementSpace * test_fes,
ParMixedBilinearForm * pbfr,
ParMixedBilinearForm * pbfi,
ComplexOperator::Convention convention = ComplexOperator::HERMITIAN )

Create a ParMixedSesquilinearForm on the given trial and test ParFiniteElementSpaces, using the same integrators as the ParMixedBilinearForms pbfr and pbfi.

The ParFiniteElementSpace pointers are not owned by the newly constructed object.

The integrators are copied as pointers and they are not owned by the newly constructed ParMixedSesquilinearForm.

Definition at line 2167 of file complex_fem.cpp.

◆ ~ParMixedSesquilinearForm()

mfem::ParMixedSesquilinearForm::~ParMixedSesquilinearForm ( )
virtual

Definition at line 2179 of file complex_fem.cpp.

Member Function Documentation

◆ AddBdrFaceIntegrator() [1/2]

void mfem::ParMixedSesquilinearForm::AddBdrFaceIntegrator ( BilinearFormIntegrator * bfi_real,
BilinearFormIntegrator * bfi_imag )

Adds new boundary Face Integrator. Assumes ownership of bfi.

Definition at line 2261 of file complex_fem.cpp.

◆ AddBdrFaceIntegrator() [2/2]

void mfem::ParMixedSesquilinearForm::AddBdrFaceIntegrator ( BilinearFormIntegrator * bfi_real,
BilinearFormIntegrator * bfi_imag,
Array< int > & bdr_marker )

Adds new boundary Face Integrator, restricted to specific boundary attributes.

Assumes ownership of bfi.

The mfem::array bdr_marker is stored internally as a pointer to the given mfem::Array<int> object.

Definition at line 2276 of file complex_fem.cpp.

◆ AddBdrTraceFaceIntegrator() [1/2]

void mfem::ParMixedSesquilinearForm::AddBdrTraceFaceIntegrator ( BilinearFormIntegrator * bfi_real,
BilinearFormIntegrator * bfi_imag )

Adds a boundary trace face integrator. Assumes ownership of bfi.

Definition at line 2305 of file complex_fem.cpp.

◆ AddBdrTraceFaceIntegrator() [2/2]

void mfem::ParMixedSesquilinearForm::AddBdrTraceFaceIntegrator ( BilinearFormIntegrator * bfi_real,
BilinearFormIntegrator * bfi_imag,
Array< int > & bdr_marker )

Adds a boundary trace face integrator. Assumes ownership of bfi.

Definition at line 2319 of file complex_fem.cpp.

◆ AddBoundaryIntegrator() [1/2]

void mfem::ParMixedSesquilinearForm::AddBoundaryIntegrator ( BilinearFormIntegrator * bfi_real,
BilinearFormIntegrator * bfi_imag )

Adds new Boundary Integrator.

Definition at line 2215 of file complex_fem.cpp.

◆ AddBoundaryIntegrator() [2/2]

void mfem::ParMixedSesquilinearForm::AddBoundaryIntegrator ( BilinearFormIntegrator * bfi_real,
BilinearFormIntegrator * bfi_imag,
Array< int > & bdr_marker )

Adds new boundary Integrator, restricted to specific boundary attributes.

Assumes ownership of bfi.

The mfem::array bdr_marker is stored internally as a pointer to the given mfem::Array<int> object.

Definition at line 2230 of file complex_fem.cpp.

◆ AddDomainIntegrator() [1/2]

void mfem::ParMixedSesquilinearForm::AddDomainIntegrator ( BilinearFormIntegrator * bfi_real,
BilinearFormIntegrator * bfi_imag )

Adds new Domain Integrator.

Definition at line 2186 of file complex_fem.cpp.

◆ AddDomainIntegrator() [2/2]

void mfem::ParMixedSesquilinearForm::AddDomainIntegrator ( BilinearFormIntegrator * bfi_real,
BilinearFormIntegrator * bfi_imag,
Array< int > & elem_marker )

Adds new Domain Integrator, restricted to specific attributes.

Definition at line 2200 of file complex_fem.cpp.

◆ AddInteriorFaceIntegrator()

void mfem::ParMixedSesquilinearForm::AddInteriorFaceIntegrator ( BilinearFormIntegrator * bfi_real,
BilinearFormIntegrator * bfi_imag )

Adds new interior Face Integrator. Assumes ownership of bfi.

Definition at line 2246 of file complex_fem.cpp.

◆ AddTraceFaceIntegrator()

void mfem::ParMixedSesquilinearForm::AddTraceFaceIntegrator ( BilinearFormIntegrator * bfi_real,
BilinearFormIntegrator * bfi_imag )

Add a trace face integrator. Assumes ownership of bfi.

This type of integrator assembles terms over all faces of the mesh using the face FE from the trial space and the two adjacent volume FEs from the test space.

Definition at line 2291 of file complex_fem.cpp.

◆ Assemble()

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

Assemble the local matrix.

Definition at line 2335 of file complex_fem.cpp.

◆ Finalize()

void mfem::ParMixedSesquilinearForm::Finalize ( int skip_zeros = 1)

Finalizes the matrix initialization.

Definition at line 2342 of file complex_fem.cpp.

◆ FormRectangularLinearSystem()

void mfem::ParMixedSesquilinearForm::FormRectangularLinearSystem ( const Array< int > & ess_trial_tdof_list,
const Array< int > & ess_test_tdof_list,
Vector & x,
Vector & b,
OperatorHandle & A,
Vector & X,
Vector & B )

Definition at line 2356 of file complex_fem.cpp.

◆ FormRectangularSystemMatrix()

void mfem::ParMixedSesquilinearForm::FormRectangularSystemMatrix ( const Array< int > & ess_trial_tdof_list,
const Array< int > & ess_test_tdof_list,
OperatorHandle & A )

Definition at line 2511 of file complex_fem.cpp.

◆ GetConvention()

ComplexOperator::Convention mfem::ParMixedSesquilinearForm::GetConvention ( ) const
inline

Definition at line 1164 of file complex_fem.hpp.

◆ imag() [1/2]

ParMixedBilinearForm & mfem::ParMixedSesquilinearForm::imag ( )
inline

Definition at line 1184 of file complex_fem.hpp.

◆ imag() [2/2]

const ParMixedBilinearForm & mfem::ParMixedSesquilinearForm::imag ( ) const
inline

Definition at line 1186 of file complex_fem.hpp.

◆ ParallelAssemble()

ComplexHypreParMatrix * mfem::ParMixedSesquilinearForm::ParallelAssemble ( )

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 2349 of file complex_fem.cpp.

◆ real() [1/2]

ParMixedBilinearForm & mfem::ParMixedSesquilinearForm::real ( )
inline

Definition at line 1183 of file complex_fem.hpp.

◆ real() [2/2]

const ParMixedBilinearForm & mfem::ParMixedSesquilinearForm::real ( ) const
inline

Definition at line 1185 of file complex_fem.hpp.

◆ SetAssemblyLevel()

void mfem::ParMixedSesquilinearForm::SetAssemblyLevel ( AssemblyLevel assembly_level)
inline

Set the desired assembly level.

Valid choices are:

This method must be called before assembly.

Definition at line 1177 of file complex_fem.hpp.

◆ SetConvention()

void mfem::ParMixedSesquilinearForm::SetConvention ( const ComplexOperator::Convention & convention)
inline

Definition at line 1165 of file complex_fem.hpp.

◆ Update()

void mfem::ParMixedSesquilinearForm::Update ( )
virtual

Updates the internal mixed forms with the new finite element space.

Definition at line 2559 of file complex_fem.cpp.


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