ROL
Public Member Functions | Public Attributes | Private Types | Private Attributes | List of all members
ROL::SchurComplement Class Reference

Given a 2x2 block operator, perform the Schur reduction and return the decoupled system components. More...

#include <ROL_SchurComplement.hpp>

Public Member Functions

 SchurComplement (ROL::Ptr< OP > &A, ROL::Ptr< OP > &B, ROL::Ptr< OP > &C, ROL::Ptr< OP > &D, ROL::Ptr< V > &scratch1)
 
 SchurComplement (BlockOperator2< Real > &op, ROL::Ptr< Vector< Real > > &scratch1)
 
void applyLower (Vector< Real > &Hv, const Vector< Real > &v, Real &tol)
 
void applyLowerInverse (Vector< Real > &Hv, const Vector< Real > &v, Real &tol)
 
void applyUpper (Vector< Real > &Hv, const Vector< Real > &v, Real &tol)
 
void applyUpperInverse (Vector< Real > &Hv, const Vector< Real > &v, Real &tol)
 
ROL::Ptr< OPgetS11 (void)
 
void solve2 (Vector< Real > &Hv2, const Vector< Real > &v2, Real &tol)
 

Public Attributes

 A_ = op.getOperator(0,0)
 
 B_ = op.getOperator(0,1)
 
 C_ = op.getOperator(1,0)
 
 D_ = op.getOperator(1,1)
 
 U_ = ROL::makePtr<UPPER>(B_)
 
 L_ = ROL::makePtr<LOWER>(C_)
 

Private Types

typedef Vector< Real > V
 
typedef PartitionedVector< Real > PV
 
typedef LinearOperator< Real > OP
 
typedef BlockOperator2UnitUpper UPPER
 
typedef BlockOperator2UnitLower LOWER
 

Private Attributes

ROL::Ptr< OPA_
 
ROL::Ptr< OPB_
 
ROL::Ptr< OPC_
 
ROL::Ptr< OPD_
 
ROL::Ptr< OPL_
 
ROL::Ptr< OPU_
 
ROL::Ptr< Vscratch1_
 

Detailed Description

Given a 2x2 block operator, perform the Schur reduction and return the decoupled system components.

   Let \form#164 where 

\[ M = \begin{pmatrix} A & B \\ C & D \end{pmatrix} \]

\[ x = \begin{pmatrix} y & z \end{pmatrix} \]

\[ b = \begin{pmayrix} u & v \end{pmatrix} \]

  The block factorization is \form#168 where 

\[ U = \begin{pmatrix} I & BD^{-1} \\ 0 & I \end{pmatrix} \]

\[ S = \begin{pmatrix} A-BD^{-1}C & 0 \\ 0 & D \end{pmatrix} \]

\[ L = \begin{pmatrix} I & 0 \\ D^{-1} C & I \]

  We can rewrite \form#172 as the block-decoupled problem \form#173
  where \form#174 and \form#175

  The expectation here is that we will solve the equation for the first decoupled
  variable iteratively. 

Definition at line 72 of file ROL_SchurComplement.hpp.

Member Typedef Documentation

typedef Vector<Real> ROL::SchurComplement::V
private

Definition at line 74 of file ROL_SchurComplement.hpp.

Definition at line 75 of file ROL_SchurComplement.hpp.

Definition at line 76 of file ROL_SchurComplement.hpp.

Definition at line 77 of file ROL_SchurComplement.hpp.

Definition at line 78 of file ROL_SchurComplement.hpp.

Constructor & Destructor Documentation

ROL::SchurComplement::SchurComplement ( ROL::Ptr< OP > &  A,
ROL::Ptr< OP > &  B,
ROL::Ptr< OP > &  C,
ROL::Ptr< OP > &  D,
ROL::Ptr< V > &  scratch1 
)
inline

Definition at line 91 of file ROL_SchurComplement.hpp.

References B_, and C_.

ROL::SchurComplement::SchurComplement ( BlockOperator2< Real > &  op,
ROL::Ptr< Vector< Real > > &  scratch1 
)
inline

Definition at line 102 of file ROL_SchurComplement.hpp.

Member Function Documentation

void ROL::SchurComplement::applyLower ( Vector< Real > &  Hv,
const Vector< Real > &  v,
Real &  tol 
)
inline

Definition at line 115 of file ROL_SchurComplement.hpp.

void ROL::SchurComplement::applyLowerInverse ( Vector< Real > &  Hv,
const Vector< Real > &  v,
Real &  tol 
)
inline

Definition at line 119 of file ROL_SchurComplement.hpp.

void ROL::SchurComplement::applyUpper ( Vector< Real > &  Hv,
const Vector< Real > &  v,
Real &  tol 
)
inline

Definition at line 123 of file ROL_SchurComplement.hpp.

void ROL::SchurComplement::applyUpperInverse ( Vector< Real > &  Hv,
const Vector< Real > &  v,
Real &  tol 
)
inline

Definition at line 127 of file ROL_SchurComplement.hpp.

ROL::Ptr<OP> ROL::SchurComplement::getS11 ( void  )
inline

Definition at line 131 of file ROL_SchurComplement.hpp.

References A_, B_, C_, and D_.

void ROL::SchurComplement::solve2 ( Vector< Real > &  Hv2,
const Vector< Real > &  v2,
Real &  tol 
)
inline

Definition at line 135 of file ROL_SchurComplement.hpp.

Member Data Documentation

ROL::Ptr<OP> ROL::SchurComplement::A_
private

Definition at line 82 of file ROL_SchurComplement.hpp.

ROL::Ptr<OP> ROL::SchurComplement::B_
private

Definition at line 82 of file ROL_SchurComplement.hpp.

ROL::Ptr<OP> ROL::SchurComplement::C_
private

Definition at line 82 of file ROL_SchurComplement.hpp.

ROL::Ptr<OP> ROL::SchurComplement::D_
private

Definition at line 82 of file ROL_SchurComplement.hpp.

ROL::Ptr<OP> ROL::SchurComplement::L_
private

Definition at line 84 of file ROL_SchurComplement.hpp.

ROL::Ptr<OP> ROL::SchurComplement::U_
private

Definition at line 84 of file ROL_SchurComplement.hpp.

ROL::Ptr<V> ROL::SchurComplement::scratch1_
private

Definition at line 85 of file ROL_SchurComplement.hpp.

ROL::SchurComplement::A_ = op.getOperator(0,0)

Definition at line 107 of file ROL_SchurComplement.hpp.

ROL::SchurComplement::B_ = op.getOperator(0,1)

Definition at line 108 of file ROL_SchurComplement.hpp.

ROL::SchurComplement::C_ = op.getOperator(1,0)

Definition at line 109 of file ROL_SchurComplement.hpp.

ROL::SchurComplement::D_ = op.getOperator(1,1)

Definition at line 110 of file ROL_SchurComplement.hpp.

ROL::SchurComplement::U_ = ROL::makePtr<UPPER>(B_)

Definition at line 112 of file ROL_SchurComplement.hpp.

ROL::SchurComplement::L_ = ROL::makePtr<LOWER>(C_)

Definition at line 113 of file ROL_SchurComplement.hpp.


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