v0.15.0
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
MoFEM::PetscData Struct Reference

Base data structure for PETSc-related contexts. More...

#include "src/interfaces/LoopMethods.hpp"

Inheritance diagram for MoFEM::PetscData:
[legend]
Collaboration diagram for MoFEM::PetscData:
[legend]

Public Types

enum  DataContext {
  CTX_SET_NONE = 0 , CTX_SET_F = 1 << 0 , CTX_SET_A = 1 << 1 , CTX_SET_B = 1 << 2 ,
  CTX_SET_X = 1 << 3 , CTX_SET_DX = 1 << 4 , CTX_SET_X_T = 1 << 5 , CTX_SET_X_TT = 1 << 6 ,
  CTX_SET_TIME = 1 << 7
}
 Enumeration for data context flags. More...
 
using Switches = std::bitset< 8 >
 Bitset type for context switches.
 

Public Member Functions

MoFEMErrorCode query_interface (boost::typeindex::type_index type_index, UnknownInterface **iface) const
 Query interface for type casting.
 
 PetscData ()
 Default constructor.
 
virtual ~PetscData ()=default
 Virtual destructor.
 
MoFEMErrorCode copyPetscData (const PetscData &petsc_data)
 Copy PETSc data from another instance.
 
- Public Member Functions inherited from MoFEM::UnknownInterface
template<class IFACE >
MoFEMErrorCode registerInterface (bool error_if_registration_failed=true)
 Register interface.
 
template<class IFACE >
MoFEMErrorCode getInterface (IFACE *&iface) const
 Get interface reference to pointer of interface.
 
template<class IFACE >
MoFEMErrorCode getInterface (IFACE **const iface) const
 Get interface pointer to pointer of interface.
 
template<class IFACE , typename boost::enable_if< boost::is_pointer< IFACE >, int >::type = 0>
IFACE getInterface () const
 Get interface pointer to pointer of interface.
 
template<class IFACE , typename boost::enable_if< boost::is_reference< IFACE >, int >::type = 0>
IFACE getInterface () const
 Get reference to interface.
 
template<class IFACE >
IFACE * getInterface () const
 Function returning pointer to interface.
 
virtual ~UnknownInterface ()=default
 

Public Attributes

Switches data_ctx
 Current data context switches.
 
Vec f
 PETSc residual vector.
 
Mat A
 PETSc Jacobian matrix.
 
Mat B
 PETSc preconditioner matrix.
 
Vec x
 PETSc solution vector.
 
Vec dx
 PETSc solution increment vector.
 
Vec x_t
 PETSc first time derivative vector.
 
Vec x_tt
 PETSc second time derivative vector.
 

Static Public Attributes

static constexpr Switches CtxSetNone = PetscData::Switches(CTX_SET_NONE)
 No data switch.
 
static constexpr Switches CtxSetF = PetscData::Switches(CTX_SET_F)
 Residual vector switch.
 
static constexpr Switches CtxSetA = PetscData::Switches(CTX_SET_A)
 Jacobian matrix switch.
 
static constexpr Switches CtxSetB = PetscData::Switches(CTX_SET_B)
 Preconditioner matrix switch.
 
static constexpr Switches CtxSetX = PetscData::Switches(CTX_SET_X)
 Solution vector switch.
 
static constexpr Switches CtxSetDX = PetscData::Switches(CTX_SET_DX)
 Solution increment switch.
 
static constexpr Switches CtxSetX_T = PetscData::Switches(CTX_SET_X_T)
 First time derivative switch.
 
static constexpr Switches CtxSetX_TT = PetscData::Switches(CTX_SET_X_TT)
 Second time derivative switch.
 
static constexpr Switches CtxSetTime = PetscData::Switches(CTX_SET_TIME)
 Time value switch.
 

Additional Inherited Members

- Static Public Member Functions inherited from MoFEM::UnknownInterface
static MoFEMErrorCode getLibVersion (Version &version)
 Get library version.
 
static MoFEMErrorCode getFileVersion (moab::Interface &moab, Version &version)
 Get database major version.
 
static MoFEMErrorCode setFileVersion (moab::Interface &moab, Version version=Version(MoFEM_VERSION_MAJOR, MoFEM_VERSION_MINOR, MoFEM_VERSION_BUILD))
 Get database major version.
 
static MoFEMErrorCode getInterfaceVersion (Version &version)
 Get database major version.
 

Detailed Description

Base data structure for PETSc-related contexts.

This structure provides a foundation for managing PETSc data objects and contexts used throughout MoFEM finite element computations. It handles vectors, matrices, and context information needed for various PETSc solvers (KSP, SNES, TS, TAO).

Definition at line 66 of file LoopMethods.hpp.

Member Typedef Documentation

◆ Switches

using MoFEM::PetscData::Switches = std::bitset<8>

Bitset type for context switches.

Definition at line 106 of file LoopMethods.hpp.

Member Enumeration Documentation

◆ DataContext

Enumeration for data context flags.

These flags indicate which PETSc data structures are currently set and available for use in computations. Multiple flags can be combined using bitwise operations.

Enumerator
CTX_SET_NONE 

No data set.

CTX_SET_F 

Residual vector F is set.

CTX_SET_A 

Jacobian matrix A is set.

CTX_SET_B 

Preconditioner matrix B is set.

CTX_SET_X 

Solution vector X is set.

CTX_SET_DX 

Solution increment DX is set.

CTX_SET_X_T 

Time derivative X_t is set.

CTX_SET_X_TT 

Second time derivative X_tt is set.

CTX_SET_TIME 

Time value is set.

Definition at line 94 of file LoopMethods.hpp.

94 {
95 CTX_SET_NONE = 0, ///< No data set
96 CTX_SET_F = 1 << 0, ///< Residual vector F is set
97 CTX_SET_A = 1 << 1, ///< Jacobian matrix A is set
98 CTX_SET_B = 1 << 2, ///< Preconditioner matrix B is set
99 CTX_SET_X = 1 << 3, ///< Solution vector X is set
100 CTX_SET_DX = 1 << 4, ///< Solution increment DX is set
101 CTX_SET_X_T = 1 << 5, ///< Time derivative X_t is set
102 CTX_SET_X_TT = 1 << 6, ///< Second time derivative X_tt is set
103 CTX_SET_TIME = 1 << 7 ///< Time value is set
104 };
@ CTX_SET_NONE
No data set.
@ CTX_SET_X_T
Time derivative X_t is set.
@ CTX_SET_A
Jacobian matrix A is set.
@ CTX_SET_TIME
Time value is set.
@ CTX_SET_DX
Solution increment DX is set.
@ CTX_SET_X
Solution vector X is set.
@ CTX_SET_F
Residual vector F is set.
@ CTX_SET_X_TT
Second time derivative X_tt is set.
@ CTX_SET_B
Preconditioner matrix B is set.

Constructor & Destructor Documentation

◆ PetscData()

MoFEM::PetscData::PetscData ( )

Default constructor.

Definition at line 27 of file LoopMethods.cpp.

28 : data_ctx(PetscData::CtxSetNone), f(PETSC_NULLPTR), A(PETSC_NULLPTR),
29 B(PETSC_NULLPTR), x(PETSC_NULLPTR), dx(PETSC_NULLPTR), x_t(PETSC_NULLPTR),
30 x_tt(PETSC_NULLPTR) {}
Vec f
PETSc residual vector.
static constexpr Switches CtxSetNone
No data switch.
Vec x_t
PETSc first time derivative vector.
Vec x_tt
PETSc second time derivative vector.
Vec dx
PETSc solution increment vector.
Switches data_ctx
Current data context switches.
Vec x
PETSc solution vector.
Mat B
PETSc preconditioner matrix.
Mat A
PETSc Jacobian matrix.

◆ ~PetscData()

virtual MoFEM::PetscData::~PetscData ( )
virtualdefault

Virtual destructor.

Member Function Documentation

◆ copyPetscData()

MoFEMErrorCode MoFEM::PetscData::copyPetscData ( const PetscData petsc_data)

Copy PETSc data from another instance.

Parameters
petsc_dataSource PETSc data structure
Returns
Error code

Definition at line 32 of file LoopMethods.cpp.

32 {
33 this->data_ctx = petsc_data.data_ctx;
34 this->f = petsc_data.f;
35 this->A = petsc_data.A;
36 this->B = petsc_data.B;
37 this->x = petsc_data.x;
38 this->dx = petsc_data.dx;
39 this->x_t = petsc_data.x_t;
40 this->x_tt = petsc_data.x_tt;
41 return 0;
42}

◆ query_interface()

MoFEMErrorCode MoFEM::PetscData::query_interface ( boost::typeindex::type_index  type_index,
UnknownInterface **  iface 
) const
virtual

Query interface for type casting.

Parameters
type_indexType information for interface querying
ifacePointer to interface object
Returns
Error code

Implements MoFEM::UnknownInterface.

Reimplemented in MoFEM::SnesMethod, MoFEM::TSMethod, and MoFEM::TaoMethod.

Definition at line 21 of file LoopMethods.cpp.

22 {
23 *iface = const_cast<PetscData *>(this);
24 return 0;
25}
PetscData()
Default constructor.

Member Data Documentation

◆ A

Mat MoFEM::PetscData::A

PETSc Jacobian matrix.

Definition at line 128 of file LoopMethods.hpp.

◆ B

Mat MoFEM::PetscData::B

PETSc preconditioner matrix.

Definition at line 129 of file LoopMethods.hpp.

◆ CtxSetA

constexpr PetscData::Switches MoFEM::PetscData::CtxSetA = PetscData::Switches(CTX_SET_A)
staticconstexpr

Jacobian matrix switch.

Definition at line 110 of file LoopMethods.hpp.

◆ CtxSetB

constexpr PetscData::Switches MoFEM::PetscData::CtxSetB = PetscData::Switches(CTX_SET_B)
staticconstexpr

Preconditioner matrix switch.

Definition at line 111 of file LoopMethods.hpp.

◆ CtxSetDX

constexpr Switches MoFEM::PetscData::CtxSetDX = PetscData::Switches(CTX_SET_DX)
staticconstexpr

Solution increment switch.

Definition at line 113 of file LoopMethods.hpp.

◆ CtxSetF

constexpr PetscData::Switches MoFEM::PetscData::CtxSetF = PetscData::Switches(CTX_SET_F)
staticconstexpr

Residual vector switch.

Definition at line 109 of file LoopMethods.hpp.

◆ CtxSetNone

constexpr PetscData::Switches MoFEM::PetscData::CtxSetNone = PetscData::Switches(CTX_SET_NONE)
staticconstexpr

No data switch.

Definition at line 108 of file LoopMethods.hpp.

◆ CtxSetTime

constexpr PetscData::Switches MoFEM::PetscData::CtxSetTime = PetscData::Switches(CTX_SET_TIME)
staticconstexpr

Time value switch.

Definition at line 116 of file LoopMethods.hpp.

◆ CtxSetX

constexpr PetscData::Switches MoFEM::PetscData::CtxSetX = PetscData::Switches(CTX_SET_X)
staticconstexpr

Solution vector switch.

Definition at line 112 of file LoopMethods.hpp.

◆ CtxSetX_T

constexpr PetscData::Switches MoFEM::PetscData::CtxSetX_T = PetscData::Switches(CTX_SET_X_T)
staticconstexpr

First time derivative switch.

Definition at line 114 of file LoopMethods.hpp.

◆ CtxSetX_TT

constexpr PetscData::Switches MoFEM::PetscData::CtxSetX_TT = PetscData::Switches(CTX_SET_X_TT)
staticconstexpr

Second time derivative switch.

Definition at line 115 of file LoopMethods.hpp.

◆ data_ctx

Switches MoFEM::PetscData::data_ctx

Current data context switches.

Definition at line 118 of file LoopMethods.hpp.

◆ dx

Vec MoFEM::PetscData::dx

PETSc solution increment vector.

Definition at line 131 of file LoopMethods.hpp.

◆ f

Vec MoFEM::PetscData::f

PETSc residual vector.

Definition at line 127 of file LoopMethods.hpp.

◆ x

Vec MoFEM::PetscData::x

◆ x_t

Vec MoFEM::PetscData::x_t

PETSc first time derivative vector.

Definition at line 132 of file LoopMethods.hpp.

◆ x_tt

Vec MoFEM::PetscData::x_tt

PETSc second time derivative vector.

Definition at line 133 of file LoopMethods.hpp.


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