Public Member Functions | Private Attributes
TSFExtended::LTIProblemFactoryBase< Scalar > Class Template Reference

LTIProblemFactoryBase is an interface for building operators related to reduced-order LTI problems. More...

Inheritance diagram for TSFExtended::LTIProblemFactoryBase< Scalar >:
TSFExtended::DefaultLTIProblemFactory< Scalar > TSFExtended::ExplicitlyTransposedLTIProblemFactory< Scalar >

List of all members.

Public Member Functions

 LTIProblemFactoryBase (int nSteps)
 Constructor.
virtual ~LTIProblemFactoryBase ()
Access to single-timestep operators
LinearOperator< Scalar > getA () const
 Access the single-timestep advance operator.
LinearOperator< Scalar > getC () const
 Access the single-timestep observation operator.
LinearOperator< Scalar > getAt () const
 Access the single-timestep adjoint advance operator.
LinearOperator< Scalar > getCt () const
 Access the single-timestep adjoint observation operator.
Multiple-timestep operators
LinearOperator< Scalar > getBigAInv () const
 Access the multiple-timestep advance operator.
LinearOperator< Scalar > getBigF () const
 Access the zero-padding operator.
LinearOperator< Scalar > getBigC () const
 Access the multiple-timestep observation operator.
LinearOperator< Scalar > getBigAInvT () const
 Access the multiple-timestep adjoint advance operator.
LinearOperator< Scalar > getBigCt () const
 Access the multiple-timestep adjoint observation operator.
LinearOperator< Scalar > getBigFt () const
 Access the multiple-timestep adjoint zero-padding operator.
LinearOperator< Scalar > getH () const
 Access the space-time Hessian.

Protected Member Functions

Pure virtual functions you must implement when setting up a concrete LTI problem
virtual LinearOperator< Scalar > createA () const =0
 Create the operator that advances the system through one timestep.
virtual LinearOperator< Scalar > createC () const =0
 Create the operator that produces the observable quantities given a state.
Utilities
VectorSpace< Scalar > blockSpace (int n, const VectorSpace< Scalar > &sp) const
 Create a block vector space in which a space is replicated n times.
LinearOperator< Scalar > blockDiag (int n, const LinearOperator< Scalar > &C) const
 Create a block diagonal operator with a single block repeated on all diagonal entries.
Create() methods with good default implementations
virtual LinearOperator< Scalar > createBigAInv () const
virtual LinearOperator< Scalar > createBigC () const
virtual LinearOperator< Scalar > createBigF () const
virtual LinearOperator< Scalar > createAt () const
 By default, we create an implicit transpose of A.
virtual LinearOperator< Scalar > createCt () const
virtual LinearOperator< Scalar > createBigAInvT () const
virtual LinearOperator< Scalar > createBigFt () const
virtual LinearOperator< Scalar > createBigCt () const
virtual LinearOperator< Scalar > createH () const

Private Attributes

int nSteps_
LinearOperator< Scalar > A_
LinearOperator< Scalar > C_
LinearOperator< Scalar > At_
LinearOperator< Scalar > Ct_
LinearOperator< Scalar > bigAInv_
LinearOperator< Scalar > bigAInvT_
LinearOperator< Scalar > bigF_
LinearOperator< Scalar > bigFt_
LinearOperator< Scalar > bigC_
LinearOperator< Scalar > bigCt_
LinearOperator< Scalar > H_

Detailed Description

template<class Scalar>
class TSFExtended::LTIProblemFactoryBase< Scalar >

LTIProblemFactoryBase is an interface for building operators related to reduced-order LTI problems.

The operators are

Create() methods versus get() methods

The create methods actually construct operators. They are protected and can therefore only be called by internal methods. Client access to operators should be through the get() methods. You will need to write a couple of create() methods, but you'll probably never need do call one.

The get methods don't construct operators directly; if the operator already exists, a cached value is returned. Otherwise, the create() method is called and the newly-created operator is cached.

How to implement a Hessian factory for your problem

There are two pure virtual methods you must implement: createA() and createC(), which produce the single-timestep advance operator and observation operator, respectively.

The other create() methods have default implementations in terms of implicit operators, and normally won't need to be overridden. In some cases you may want to override them; for example, you might want to use an explicitly-formed transpose or matrix-matrix product rather than the implicit implementations of these.

Definition at line 85 of file TSFLTIProblemFactoryBase.hpp.


Constructor & Destructor Documentation

template<class Scalar >
TSFExtended::LTIProblemFactoryBase< Scalar >::LTIProblemFactoryBase ( int  nSteps) [inline]

Constructor.

Definition at line 89 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
virtual TSFExtended::LTIProblemFactoryBase< Scalar >::~LTIProblemFactoryBase ( ) [inline, virtual]

Definition at line 100 of file TSFLTIProblemFactoryBase.hpp.


Member Function Documentation

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::blockDiag ( int  n,
const LinearOperator< Scalar > &  C 
) const [inline, protected]
template<class Scalar >
VectorSpace<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::blockSpace ( int  n,
const VectorSpace< Scalar > &  sp 
) const [inline, protected]

Create a block vector space in which a space is replicated n times.

Definition at line 206 of file TSFLTIProblemFactoryBase.hpp.

References TSFExtended::productSpace().

template<class Scalar >
virtual LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::createA ( ) const [protected, pure virtual]

Create the operator that advances the system through one timestep.

Implemented in TSFExtended::DefaultLTIProblemFactory< Scalar >.

template<class Scalar >
virtual LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::createAt ( ) const [inline, protected, virtual]

By default, we create an implicit transpose of A.

However, when a transpose solver is unavailable, we should override this function with one that returns an explicit transpose of A. See the class ExplicitlyTransposedLTIProblemFactory for a simple implementation of this.

Reimplemented in TSFExtended::ExplicitlyTransposedLTIProblemFactory< Scalar >.

Definition at line 278 of file TSFLTIProblemFactoryBase.hpp.

References TSFExtended::LinearOperator< Scalar >::transpose().

template<class Scalar >
virtual LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::createBigAInv ( ) const [inline, protected, virtual]

Definition at line 237 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
virtual LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::createBigAInvT ( ) const [inline, protected, virtual]
template<class Scalar >
virtual LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::createBigC ( ) const [inline, protected, virtual]

Definition at line 245 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
virtual LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::createBigCt ( ) const [inline, protected, virtual]
template<class Scalar >
virtual LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::createBigF ( ) const [inline, protected, virtual]
template<class Scalar >
virtual LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::createBigFt ( ) const [inline, protected, virtual]
template<class Scalar >
virtual LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::createC ( ) const [protected, pure virtual]

Create the operator that produces the observable quantities given a state.

Implemented in TSFExtended::DefaultLTIProblemFactory< Scalar >.

template<class Scalar >
virtual LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::createCt ( ) const [inline, protected, virtual]
template<class Scalar >
virtual LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::createH ( ) const [inline, protected, virtual]

Definition at line 298 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::getA ( ) const [inline]

Access the single-timestep advance operator.

Definition at line 105 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::getAt ( ) const [inline]

Access the single-timestep adjoint advance operator.

Definition at line 120 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::getBigAInv ( ) const [inline]

Access the multiple-timestep advance operator.

Definition at line 138 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::getBigAInvT ( ) const [inline]

Access the multiple-timestep adjoint advance operator.

Definition at line 160 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::getBigC ( ) const [inline]

Access the multiple-timestep observation operator.

Definition at line 152 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::getBigCt ( ) const [inline]

Access the multiple-timestep adjoint observation operator.

Definition at line 168 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::getBigF ( ) const [inline]

Access the zero-padding operator.

Definition at line 145 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::getBigFt ( ) const [inline]

Access the multiple-timestep adjoint zero-padding operator.

Definition at line 176 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::getC ( ) const [inline]

Access the single-timestep observation operator.

Definition at line 112 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::getCt ( ) const [inline]

Access the single-timestep adjoint observation operator.

Definition at line 128 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::getH ( ) const [inline]

Access the space-time Hessian.

This consists of a forward calculation followed by an adjoint calculation

Definition at line 184 of file TSFLTIProblemFactoryBase.hpp.


Member Data Documentation

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::A_ [mutable, private]

Definition at line 314 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::At_ [mutable, private]

Definition at line 317 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::bigAInv_ [mutable, private]

Definition at line 320 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::bigAInvT_ [mutable, private]

Definition at line 321 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::bigC_ [mutable, private]

Definition at line 326 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::bigCt_ [mutable, private]

Definition at line 327 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::bigF_ [mutable, private]

Definition at line 323 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::bigFt_ [mutable, private]

Definition at line 324 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::C_ [mutable, private]

Definition at line 315 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::Ct_ [mutable, private]

Definition at line 318 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::H_ [mutable, private]

Definition at line 329 of file TSFLTIProblemFactoryBase.hpp.

template<class Scalar >
int TSFExtended::LTIProblemFactoryBase< Scalar >::nSteps_ [private]

Definition at line 313 of file TSFLTIProblemFactoryBase.hpp.

Site Contact