LTIProblemFactoryBase is an interface for building operators related to reduced-order LTI problems. More...
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_ |
LTIProblemFactoryBase is an interface for building operators related to reduced-order LTI problems.
The operators are
-- operator defining a single step of the discrete time dynamical system
-- operator defining the transformation from state variables to observed variables at a single timestep
-- block operator that produces a sequence of state variables. This will be of type InverseLTIOp
-- block diagonal consisting of observation operators for all timesteps.
-- operator that maps the initial state to a full space-time state vector padded with zeros:
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.
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.
| TSFExtended::LTIProblemFactoryBase< Scalar >::LTIProblemFactoryBase | ( | int | nSteps | ) | [inline] |
Constructor.
Definition at line 89 of file TSFLTIProblemFactoryBase.hpp.
| virtual TSFExtended::LTIProblemFactoryBase< Scalar >::~LTIProblemFactoryBase | ( | ) | [inline, virtual] |
Definition at line 100 of file TSFLTIProblemFactoryBase.hpp.
| LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::blockDiag | ( | int | n, |
| const LinearOperator< Scalar > & | C | ||
| ) | const [inline, protected] |
Create a block diagonal operator with a single block repeated on all diagonal entries.
Definition at line 217 of file TSFLTIProblemFactoryBase.hpp.
References TSFExtended::LinearOperator< Scalar >::domain(), TSFExtended::LinearOperator< Scalar >::endBlockFill(), TSFExtended::productSpace(), TSFExtended::LinearOperator< Scalar >::range(), and TSFExtended::LinearOperator< Scalar >::setBlock().
| 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().
| 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 >.
| 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().
| virtual LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::createBigAInv | ( | ) | const [inline, protected, virtual] |
Definition at line 237 of file TSFLTIProblemFactoryBase.hpp.
| virtual LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::createBigAInvT | ( | ) | const [inline, protected, virtual] |
Definition at line 286 of file TSFLTIProblemFactoryBase.hpp.
References TSFExtended::LinearOperator< Scalar >::transpose().
| virtual LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::createBigC | ( | ) | const [inline, protected, virtual] |
Definition at line 245 of file TSFLTIProblemFactoryBase.hpp.
| virtual LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::createBigCt | ( | ) | const [inline, protected, virtual] |
Definition at line 294 of file TSFLTIProblemFactoryBase.hpp.
References TSFExtended::LinearOperator< Scalar >::transpose().
| virtual LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::createBigF | ( | ) | const [inline, protected, virtual] |
Definition at line 249 of file TSFLTIProblemFactoryBase.hpp.
References TSFExtended::VectorSpace< Scalar >::dim(), TSFExtended::LinearOperator< Scalar >::domain(), TSFExtended::LinearOperator< Scalar >::endBlockFill(), TSFExtended::LinearOperator< Scalar >::range(), and TSFExtended::LinearOperator< Scalar >::setBlock().
| virtual LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::createBigFt | ( | ) | const [inline, protected, virtual] |
Definition at line 290 of file TSFLTIProblemFactoryBase.hpp.
References TSFExtended::LinearOperator< Scalar >::transpose().
| 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 >.
| virtual LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::createCt | ( | ) | const [inline, protected, virtual] |
Definition at line 282 of file TSFLTIProblemFactoryBase.hpp.
References TSFExtended::LinearOperator< Scalar >::transpose().
| virtual LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::createH | ( | ) | const [inline, protected, virtual] |
Definition at line 298 of file TSFLTIProblemFactoryBase.hpp.
| LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::getA | ( | ) | const [inline] |
Access the single-timestep advance operator.
Definition at line 105 of file TSFLTIProblemFactoryBase.hpp.
| LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::getAt | ( | ) | const [inline] |
Access the single-timestep adjoint advance operator.
Definition at line 120 of file TSFLTIProblemFactoryBase.hpp.
| LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::getBigAInv | ( | ) | const [inline] |
Access the multiple-timestep advance operator.
Definition at line 138 of file TSFLTIProblemFactoryBase.hpp.
| LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::getBigAInvT | ( | ) | const [inline] |
Access the multiple-timestep adjoint advance operator.
Definition at line 160 of file TSFLTIProblemFactoryBase.hpp.
| LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::getBigC | ( | ) | const [inline] |
Access the multiple-timestep observation operator.
Definition at line 152 of file TSFLTIProblemFactoryBase.hpp.
| LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::getBigCt | ( | ) | const [inline] |
Access the multiple-timestep adjoint observation operator.
Definition at line 168 of file TSFLTIProblemFactoryBase.hpp.
| LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::getBigF | ( | ) | const [inline] |
Access the zero-padding operator.
Definition at line 145 of file TSFLTIProblemFactoryBase.hpp.
| LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::getBigFt | ( | ) | const [inline] |
Access the multiple-timestep adjoint zero-padding operator.
Definition at line 176 of file TSFLTIProblemFactoryBase.hpp.
| LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::getC | ( | ) | const [inline] |
Access the single-timestep observation operator.
Definition at line 112 of file TSFLTIProblemFactoryBase.hpp.
| LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::getCt | ( | ) | const [inline] |
Access the single-timestep adjoint observation operator.
Definition at line 128 of file TSFLTIProblemFactoryBase.hpp.
| 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.
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::A_ [mutable, private] |
Definition at line 314 of file TSFLTIProblemFactoryBase.hpp.
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::At_ [mutable, private] |
Definition at line 317 of file TSFLTIProblemFactoryBase.hpp.
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::bigAInv_ [mutable, private] |
Definition at line 320 of file TSFLTIProblemFactoryBase.hpp.
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::bigAInvT_ [mutable, private] |
Definition at line 321 of file TSFLTIProblemFactoryBase.hpp.
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::bigC_ [mutable, private] |
Definition at line 326 of file TSFLTIProblemFactoryBase.hpp.
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::bigCt_ [mutable, private] |
Definition at line 327 of file TSFLTIProblemFactoryBase.hpp.
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::bigF_ [mutable, private] |
Definition at line 323 of file TSFLTIProblemFactoryBase.hpp.
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::bigFt_ [mutable, private] |
Definition at line 324 of file TSFLTIProblemFactoryBase.hpp.
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::C_ [mutable, private] |
Definition at line 315 of file TSFLTIProblemFactoryBase.hpp.
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::Ct_ [mutable, private] |
Definition at line 318 of file TSFLTIProblemFactoryBase.hpp.
LinearOperator<Scalar> TSFExtended::LTIProblemFactoryBase< Scalar >::H_ [mutable, private] |
Definition at line 329 of file TSFLTIProblemFactoryBase.hpp.
int TSFExtended::LTIProblemFactoryBase< Scalar >::nSteps_ [private] |
Definition at line 313 of file TSFLTIProblemFactoryBase.hpp.