MFEM v4.8.0
Finite element discretization library
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
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 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
 
Array< int > face_to_el
 
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
 

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 30 of file hybridization_ext.hpp.

Member Enumeration Documentation

◆ DofType

Enumerator
ESSENTIAL 
BOUNDARY 
INTERIOR 

Definition at line 34 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 643 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 689 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 631 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 1103 of file hybridization_ext.cpp.

◆ ConstructC()

void mfem::HybridizationExtension::ConstructC ( )

Construct the constraint matrix.

Definition at line 37 of file hybridization_ext.cpp.

◆ ConstructH()

void mfem::HybridizationExtension::ConstructH ( )

Form the Schur complement matrix H.

Definition at line 291 of file hybridization_ext.cpp.

◆ FactorElementMatrices()

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

Definition at line 108 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 699 of file hybridization_ext.cpp.

◆ MultAhatInv()

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

Apply the elementwise A_hat^{-1}.

Definition at line 988 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 586 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 546 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 910 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 953 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 1076 of file hybridization_ext.cpp.

◆ Reset()

void mfem::HybridizationExtension::Reset ( )
inline

Destroys the stored element matrices.

Definition at line 114 of file hybridization_ext.hpp.

Friends And Related Symbol Documentation

◆ Hybridization

friend class Hybridization
friend

Definition at line 32 of file hybridization_ext.hpp.

Member Data Documentation

◆ Ahat

Vector mfem::HybridizationExtension::Ahat
protected

Definition at line 54 of file hybridization_ext.hpp.

◆ Ahat_bb

Vector mfem::HybridizationExtension::Ahat_bb
protected

Definition at line 54 of file hybridization_ext.hpp.

◆ Ahat_bb_piv

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

Definition at line 55 of file hybridization_ext.hpp.

◆ Ahat_bi

Vector mfem::HybridizationExtension::Ahat_bi
protected

Definition at line 54 of file hybridization_ext.hpp.

◆ Ahat_ib

Vector mfem::HybridizationExtension::Ahat_ib
protected

Definition at line 54 of file hybridization_ext.hpp.

◆ Ahat_ii

Vector mfem::HybridizationExtension::Ahat_ii
protected

Definition at line 54 of file hybridization_ext.hpp.

◆ Ahat_ii_piv

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

Definition at line 55 of file hybridization_ext.hpp.

◆ bdofs

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

Definition at line 52 of file hybridization_ext.hpp.

◆ Ct_mat

Vector mfem::HybridizationExtension::Ct_mat
protected

Constraint matrix (transposed) stored element-wise.

Definition at line 50 of file hybridization_ext.hpp.

◆ el_to_face

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

Definition at line 48 of file hybridization_ext.hpp.

◆ face_to_el

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

Definition at line 49 of file hybridization_ext.hpp.

◆ h

class Hybridization& mfem::HybridizationExtension::h
protected

The associated Hybridization object.=.

Definition at line 41 of file hybridization_ext.hpp.

◆ hat_dof_gather_map

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

Definition at line 45 of file hybridization_ext.hpp.

◆ hat_dof_marker

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

Definition at line 46 of file hybridization_ext.hpp.

◆ idofs

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

Definition at line 52 of file hybridization_ext.hpp.

◆ num_hat_dofs

int mfem::HybridizationExtension::num_hat_dofs
protected

Number of Lagrange multipliers.

Definition at line 42 of file hybridization_ext.hpp.

◆ tmp1

Vector mfem::HybridizationExtension::tmp1
mutableprotected

Definition at line 43 of file hybridization_ext.hpp.

◆ tmp2

Vector mfem::HybridizationExtension::tmp2
protected

Temporary vectors.

Definition at line 43 of file hybridization_ext.hpp.


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