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

Extension class supporting Hybridization on device (GPU). More...

#include <hybridization_ext.hpp>

Collaboration diagram for mfem::HybridizationExtension:
[legend]

Public Types

enum  DofType : char { ESSENTIAL , BOUNDARY , INTERIOR }
 

Public Member Functions

void ConstructC ()
 Construct the constraint matrix.
 
template<int MID, int MBD>
void FactorElementMatrices (Vector &AhatInvCt_mat)
 
void ConstructH ()
 Form the Schur complement matrix \(H\).
 
void MultCt (const Vector &x, Vector &y) const
 Compute the action of C^t x.
 
void MultC (const Vector &x, Vector &y) const
 Compute the action of C x.
 
void AssembleMatrix (int el, const class DenseMatrix &elmat)
 Assemble the element matrix A into the hybridized system matrix.
 
void AssembleBdrMatrix (int bdr_el, const class DenseMatrix &elmat)
 Assemble the boundary element matrix A into the hybridized system matrix.
 
void AssembleElementMatrices (const class DenseTensor &el_mats)
 Invert and store the element matrices Ahat.
 
void MultR (const Vector &b, Vector &b_hat) const
 Apply the action of R mapping from "hat DOFs" to T-vector.
 
void MultRt (const Vector &b, Vector &b_hat) const
 Apply the action of R^t mapping into the "hat DOF" space.
 
void MultAhatInv (Vector &x) const
 Apply the elementwise A_hat^{-1}.
 
 HybridizationExtension (class Hybridization &hybridization_)
 Constructor.
 
void Init (const Array< int > &ess_tdof_list)
 Prepare for assembly; form the constraint matrix.
 
void ReduceRHS (const Vector &b, Vector &b_r) const
 Given a right-hand side on the original space, compute the corresponding right-hand side for the Lagrange multipliers.
 
void ComputeSolution (const Vector &b, const Vector &sol_r, Vector &sol) const
 Given Lagrange multipliers sol_r and the original right-hand side b, recover the solution sol on the original finite element space.
 
void Reset ()
 Destroys the stored element matrices.
 

Protected Member Functions

const OperatorGetProlongation () const
 Return the (partially) conforming prolongation on the constraint space.
 

Protected Attributes

class Hybridizationh
 The associated Hybridization object.=.
 
int num_hat_dofs
 Number of Lagrange multipliers.
 
Vector tmp1
 
Vector tmp2
 Temporary vectors.
 
Array< int > hat_dof_gather_map
 
Array< DofTypehat_dof_marker
 
Array< int > el_to_face
 Element to face connectivity.
 
Array< int > el_face_offsets
 Per-element offsets into el_to_face.
 
Array< int > face_to_el
 Face-to-element connectivity.
 
Array< int > face_face_offsets
 Face-to-face offsets.
 
int n_el_face
 Total number of element-to-face connections.
 
int n_face_face
 Total number of face-to-face connections.
 
Vector Ct_mat
 Constraint matrix (transposed) stored element-wise.
 
Array< int > idofs
 
Array< int > bdofs
 
Vector Ahat
 
Vector Ahat_ii
 
Vector Ahat_ib
 
Vector Ahat_bi
 
Vector Ahat_bb
 
Array< int > Ahat_ii_piv
 
Array< int > Ahat_bb_piv
 
For parallel non-conforming meshes
std::unique_ptr< OperatorP_pc
 Partially conforming prolongation.
 
std::unique_ptr< OperatorP_nbr
 Face-neighbor prolongation.
 

Friends

class Hybridization
 

Detailed Description

Extension class supporting Hybridization on device (GPU).

Similar to BilinearFormExtension and LinearFormExtension, this extension class provides device execution capabilities for the Hybridization class.

As with the other extension classes, a limitation of this class is that it requires meshes consisting only of tensor-product elements, and finite element spaces without variable polynomial degrees.

Definition at line 33 of file hybridization_ext.hpp.

Member Enumeration Documentation

◆ DofType

Enumerator
ESSENTIAL 
BOUNDARY 
INTERIOR 

Definition at line 37 of file hybridization_ext.hpp.

Constructor & Destructor Documentation

◆ HybridizationExtension()

mfem::HybridizationExtension::HybridizationExtension ( class Hybridization & hybridization_)

Constructor.

Definition at line 22 of file hybridization_ext.cpp.

Member Function Documentation

◆ AssembleBdrMatrix()

void mfem::HybridizationExtension::AssembleBdrMatrix ( int bdr_el,
const class DenseMatrix & elmat )

Assemble the boundary element matrix A into the hybridized system matrix.

Warning
Using the interface will be very slow. AssembleElementMatrices() should be used instead.

Definition at line 778 of file hybridization_ext.cpp.

◆ AssembleElementMatrices()

void mfem::HybridizationExtension::AssembleElementMatrices ( const class DenseTensor & el_mats)

Invert and store the element matrices Ahat.

Definition at line 824 of file hybridization_ext.cpp.

◆ AssembleMatrix()

void mfem::HybridizationExtension::AssembleMatrix ( int el,
const class DenseMatrix & elmat )

Assemble the element matrix A into the hybridized system matrix.

Warning
Using the interface will be very slow. AssembleElementMatrices() should be used instead.

Definition at line 766 of file hybridization_ext.cpp.

◆ ComputeSolution()

void mfem::HybridizationExtension::ComputeSolution ( const Vector & b,
const Vector & sol_r,
Vector & sol ) const

Given Lagrange multipliers sol_r and the original right-hand side b, recover the solution sol on the original finite element space.

Definition at line 1309 of file hybridization_ext.cpp.

◆ ConstructC()

void mfem::HybridizationExtension::ConstructC ( )

Construct the constraint matrix.

Definition at line 51 of file hybridization_ext.cpp.

◆ ConstructH()

void mfem::HybridizationExtension::ConstructH ( )

Form the Schur complement matrix \(H\).

Definition at line 316 of file hybridization_ext.cpp.

◆ FactorElementMatrices()

template<int MID, int MBD>
void mfem::HybridizationExtension::FactorElementMatrices ( Vector & AhatInvCt_mat)

Definition at line 126 of file hybridization_ext.cpp.

◆ GetProlongation()

const Operator & mfem::HybridizationExtension::GetProlongation ( ) const
protected

Return the (partially) conforming prolongation on the constraint space.

Definition at line 46 of file hybridization_ext.cpp.

◆ Init()

void mfem::HybridizationExtension::Init ( const Array< int > & ess_tdof_list)

Prepare for assembly; form the constraint matrix.

Definition at line 834 of file hybridization_ext.cpp.

◆ MultAhatInv()

void mfem::HybridizationExtension::MultAhatInv ( Vector & x) const

Apply the elementwise A_hat^{-1}.

Definition at line 1193 of file hybridization_ext.cpp.

◆ MultC()

void mfem::HybridizationExtension::MultC ( const Vector & x,
Vector & y ) const

Compute the action of C x.

Definition at line 708 of file hybridization_ext.cpp.

◆ MultCt()

void mfem::HybridizationExtension::MultCt ( const Vector & x,
Vector & y ) const

Compute the action of C^t x.

Definition at line 667 of file hybridization_ext.cpp.

◆ MultR()

void mfem::HybridizationExtension::MultR ( const Vector & b,
Vector & b_hat ) const

Apply the action of R mapping from "hat DOFs" to T-vector.

Definition at line 1115 of file hybridization_ext.cpp.

◆ MultRt()

void mfem::HybridizationExtension::MultRt ( const Vector & b,
Vector & b_hat ) const

Apply the action of R^t mapping into the "hat DOF" space.

Definition at line 1158 of file hybridization_ext.cpp.

◆ ReduceRHS()

void mfem::HybridizationExtension::ReduceRHS ( const Vector & b,
Vector & b_r ) const

Given a right-hand side on the original space, compute the corresponding right-hand side for the Lagrange multipliers.

Definition at line 1281 of file hybridization_ext.cpp.

◆ Reset()

void mfem::HybridizationExtension::Reset ( )
inline

Destroys the stored element matrices.

Definition at line 132 of file hybridization_ext.hpp.

Friends And Related Symbol Documentation

◆ Hybridization

friend class Hybridization
friend

Definition at line 35 of file hybridization_ext.hpp.

Member Data Documentation

◆ Ahat

Vector mfem::HybridizationExtension::Ahat
protected

Definition at line 69 of file hybridization_ext.hpp.

◆ Ahat_bb

Vector mfem::HybridizationExtension::Ahat_bb
protected

Definition at line 69 of file hybridization_ext.hpp.

◆ Ahat_bb_piv

Array<int> mfem::HybridizationExtension::Ahat_bb_piv
protected

Definition at line 70 of file hybridization_ext.hpp.

◆ Ahat_bi

Vector mfem::HybridizationExtension::Ahat_bi
protected

Definition at line 69 of file hybridization_ext.hpp.

◆ Ahat_ib

Vector mfem::HybridizationExtension::Ahat_ib
protected

Definition at line 69 of file hybridization_ext.hpp.

◆ Ahat_ii

Vector mfem::HybridizationExtension::Ahat_ii
protected

Definition at line 69 of file hybridization_ext.hpp.

◆ Ahat_ii_piv

Array<int> mfem::HybridizationExtension::Ahat_ii_piv
protected

Definition at line 70 of file hybridization_ext.hpp.

◆ bdofs

Array<int> mfem::HybridizationExtension::bdofs
protected

Definition at line 67 of file hybridization_ext.hpp.

◆ Ct_mat

Vector mfem::HybridizationExtension::Ct_mat
protected

Constraint matrix (transposed) stored element-wise.

Definition at line 59 of file hybridization_ext.hpp.

◆ el_face_offsets

Array<int> mfem::HybridizationExtension::el_face_offsets
protected

Per-element offsets into el_to_face.

Definition at line 52 of file hybridization_ext.hpp.

◆ el_to_face

Array<int> mfem::HybridizationExtension::el_to_face
protected

Element to face connectivity.

Definition at line 51 of file hybridization_ext.hpp.

◆ face_face_offsets

Array<int> mfem::HybridizationExtension::face_face_offsets
protected

Face-to-face offsets.

Definition at line 54 of file hybridization_ext.hpp.

◆ face_to_el

Array<int> mfem::HybridizationExtension::face_to_el
protected

Face-to-element connectivity.

Definition at line 53 of file hybridization_ext.hpp.

◆ h

class Hybridization& mfem::HybridizationExtension::h
protected

The associated Hybridization object.=.

Definition at line 44 of file hybridization_ext.hpp.

◆ hat_dof_gather_map

Array<int> mfem::HybridizationExtension::hat_dof_gather_map
protected

Definition at line 48 of file hybridization_ext.hpp.

◆ hat_dof_marker

Array<DofType> mfem::HybridizationExtension::hat_dof_marker
protected

Definition at line 49 of file hybridization_ext.hpp.

◆ idofs

Array<int> mfem::HybridizationExtension::idofs
protected

Definition at line 67 of file hybridization_ext.hpp.

◆ n_el_face

int mfem::HybridizationExtension::n_el_face
protected

Total number of element-to-face connections.

Definition at line 56 of file hybridization_ext.hpp.

◆ n_face_face

int mfem::HybridizationExtension::n_face_face
protected

Total number of face-to-face connections.

Definition at line 57 of file hybridization_ext.hpp.

◆ num_hat_dofs

int mfem::HybridizationExtension::num_hat_dofs
protected

Number of Lagrange multipliers.

Definition at line 45 of file hybridization_ext.hpp.

◆ P_nbr

std::unique_ptr<Operator> mfem::HybridizationExtension::P_nbr
protected

Face-neighbor prolongation.

Definition at line 64 of file hybridization_ext.hpp.

◆ P_pc

std::unique_ptr<Operator> mfem::HybridizationExtension::P_pc
protected

Partially conforming prolongation.

Definition at line 63 of file hybridization_ext.hpp.

◆ tmp1

Vector mfem::HybridizationExtension::tmp1
mutableprotected

Definition at line 46 of file hybridization_ext.hpp.

◆ tmp2

Vector mfem::HybridizationExtension::tmp2
protected

Temporary vectors.

Definition at line 46 of file hybridization_ext.hpp.


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