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

Data structure for TAO (optimization) context. More...

#include "src/interfaces/LoopMethods.hpp"

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

Public Types

enum  TAOContext { CTX_TAO_OBJECTIVE , CTX_TAO_GRADIENT , CTX_TAO_HESSIAN , CTX_TAO_NONE }
 Context enumeration for TAO solver phases. More...
 

Public Member Functions

MoFEMErrorCode query_interface (boost::typeindex::type_index type_index, UnknownInterface **iface) const
 Query interface for type casting.
 
 TaoMethod ()
 Default constructor.
 
virtual ~TaoMethod ()=default
 Virtual destructor.
 
MoFEMErrorCode copyTao (const TaoMethod &tao)
 Copy TAO data from another instance.
 

Public Attributes

TAOContext tao_ctx
 Current TAO computation context.
 
Tao tao
 PETSc TAO optimization solver object.
 
Vec & tao_x
 Reference to optimization variables vector.
 
Vec & tao_f
 Reference to gradient vector.
 
Mat & tao_A
 Reference to Hessian matrix.
 
Mat & tao_B
 Reference to preconditioner matrix for Hessian.
 

Additional Inherited Members

- Protected Types inherited from MoFEM::PetscData
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.
 
- Protected Member Functions inherited from MoFEM::PetscData
 PetscData ()
 Default constructor.
 
virtual ~PetscData ()=default
 Virtual destructor.
 
MoFEMErrorCode copyPetscData (const PetscData &petsc_data)
 Copy PETSc data from another instance.
 
- Protected 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
 
- Static Protected 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.
 
- Protected Attributes inherited from MoFEM::PetscData
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 Protected Attributes inherited from MoFEM::PetscData
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.
 

Detailed Description

Data structure for TAO (optimization) context.

This structure extends PetscData to provide context and data management specifically for PETSc TAO (Toolkit for Advanced Optimization) solvers. It manages optimization computations including objective function evaluation, gradient computation, and Hessian matrix assembly for constrained and unconstrained optimization problems.

Definition at line 333 of file LoopMethods.hpp.

Member Enumeration Documentation

◆ TAOContext

Context enumeration for TAO solver phases.

Indicates the current phase of optimization computation, determining which optimization operations are being performed.

Enumerator
CTX_TAO_OBJECTIVE 

Evaluating objective function.

CTX_TAO_GRADIENT 

Computing gradient vector.

CTX_TAO_HESSIAN 

Assembling Hessian matrix.

CTX_TAO_NONE 

No specific TAO context.

Definition at line 350 of file LoopMethods.hpp.

350 {
351 CTX_TAO_OBJECTIVE, ///< Evaluating objective function
352 CTX_TAO_GRADIENT, ///< Computing gradient vector
353 CTX_TAO_HESSIAN, ///< Assembling Hessian matrix
354 CTX_TAO_NONE ///< No specific TAO context
355 };
@ CTX_TAO_HESSIAN
Assembling Hessian matrix.
@ CTX_TAO_NONE
No specific TAO context.
@ CTX_TAO_GRADIENT
Computing gradient vector.
@ CTX_TAO_OBJECTIVE
Evaluating objective function.

Constructor & Destructor Documentation

◆ TaoMethod()

MoFEM::TaoMethod::TaoMethod ( )

Default constructor.

Definition at line 92 of file LoopMethods.cpp.

Vec f
PETSc residual vector.
Vec x
PETSc solution vector.
Mat B
PETSc preconditioner matrix.
Mat A
PETSc Jacobian matrix.
Mat & tao_B
Reference to preconditioner matrix for Hessian.
TAOContext tao_ctx
Current TAO computation context.
Mat & tao_A
Reference to Hessian matrix.
Vec & tao_x
Reference to optimization variables vector.
Vec & tao_f
Reference to gradient vector.

◆ ~TaoMethod()

virtual MoFEM::TaoMethod::~TaoMethod ( )
virtualdefault

Virtual destructor.

Member Function Documentation

◆ copyTao()

MoFEMErrorCode MoFEM::TaoMethod::copyTao ( const TaoMethod tao)

Copy TAO data from another instance.

Parameters
taoSource TAO method
Returns
Error code

Definition at line 96 of file LoopMethods.cpp.

96 {
99 this->tao_ctx = tao.tao_ctx;
100 this->tao = tao.tao;
102}
#define MoFEMFunctionReturnHot(a)
Last executable line of each PETSc function used for error handling. Replaces return()
#define CHKERR
Inline error check.
#define MoFEMFunctionBeginHot
First executable line of each MoFEM function, used for error handling. Final line of MoFEM functions ...
MoFEMErrorCode copyPetscData(const PetscData &petsc_data)
Copy PETSc data from another instance.
Tao tao
PETSc TAO optimization solver object.

◆ query_interface()

MoFEMErrorCode MoFEM::TaoMethod::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

Reimplemented from MoFEM::PetscData.

Definition at line 86 of file LoopMethods.cpp.

87 {
88 *iface = const_cast<TaoMethod *>(this);
89 return 0;
90}
TaoMethod()
Default constructor.

Member Data Documentation

◆ tao

Tao MoFEM::TaoMethod::tao

PETSc TAO optimization solver object.

Definition at line 376 of file LoopMethods.hpp.

◆ tao_A

Mat& MoFEM::TaoMethod::tao_A

Reference to Hessian matrix.

Definition at line 379 of file LoopMethods.hpp.

◆ tao_B

Mat& MoFEM::TaoMethod::tao_B

Reference to preconditioner matrix for Hessian.

Definition at line 380 of file LoopMethods.hpp.

◆ tao_ctx

TAOContext MoFEM::TaoMethod::tao_ctx

Current TAO computation context.

Definition at line 374 of file LoopMethods.hpp.

◆ tao_f

Vec& MoFEM::TaoMethod::tao_f

Reference to gradient vector.

Definition at line 378 of file LoopMethods.hpp.

◆ tao_x

Vec& MoFEM::TaoMethod::tao_x

Reference to optimization variables vector.

Definition at line 377 of file LoopMethods.hpp.


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