|
MOOCHO (Single Doxygen Collection)
Version of the Day
|
Simple BasisSystem subclass the case where the client sets up seperate C and N matrices.
More...
#include <AbstractLinAlgPack_BasisSystemComposite.hpp>

Public types | |
| typedef Teuchos::RCP< const Teuchos::AbstractFactory < MatrixOp > > | fcty_Gc_ptr_t |
| typedef Teuchos::RCP < MatrixOpNonsing > | C_ptr_t |
| typedef Teuchos::RCP< MatrixOp > | N_ptr_t |
Static member functions | |
| static void | initialize_space_x (const VectorSpace::space_ptr_t &space_xD, const VectorSpace::space_ptr_t &space_xI, Range1D *var_dep, Range1D *var_indep, VectorSpace::space_ptr_t *space_x) |
Initialize the composite vector space for x = [ xD; xI ] as well as var_dep and var_indep. More... | |
| static const fcty_Gc_ptr_t | factory_Gc () |
Return a matrix factory object for the composte Gc matrix object. More... | |
| static void | initialize_Gc (const VectorSpace::space_ptr_t &space_x, const Range1D &var_dep, const Range1D &var_indep, const VectorSpace::space_ptr_t &space_c, const C_ptr_t &C, const N_ptr_t &N, MatrixOp *Gc) |
Initialize the Gc matrix object given created from space_Gc()->create(). More... | |
| static void | get_C_N (MatrixOp *Gc, MatrixOpNonsing **C, MatrixOp **N) |
Get the non-const aggregate matrices C and N (or NULL pointers if not initialized). More... | |
| static void | get_C_N (const MatrixOp &Gc, const MatrixOpNonsing **C, const MatrixOp **N) |
| Get the const aggregate matrices C and N. More... | |
Access | |
| const VectorSpace::space_ptr_t & | space_x () const |
| const VectorSpace::space_ptr_t & | space_c () const |
To be overridden by subclasses | |
| virtual void | update_D (const MatrixOpNonsing &C, const MatrixOp &N, MatrixOp *D, EMatRelations mat_rel) const |
Overridden by subclasses to update D if a specialized implementation is needed. More... | |
Overridden from BasisSystem | |
| const mat_nonsing_fcty_ptr_t | factory_C () const |
| const mat_fcty_ptr_t | factory_D () const |
| Range1D | var_dep () const |
| Range1D | var_indep () const |
| void | update_basis (const MatrixOp &Gc, MatrixOpNonsing *C, MatrixOp *D, MatrixOp *GcUP, EMatRelations mat_rel, std::ostream *out) const |
Additional Inherited Members | |
Public Types inherited from AbstractLinAlgPack::BasisSystem | |
| enum | EMatRelations { MATRICES_INDEP_IMPS, MATRICES_ALLOW_DEP_IMPS } |
| typedef Teuchos::RCP< const Teuchos::AbstractFactory < MatrixOpNonsing > > | mat_nonsing_fcty_ptr_t |
| typedef Teuchos::RCP< const Teuchos::AbstractFactory < MatrixOp > > | mat_fcty_ptr_t |
| typedef Teuchos::RCP< const Teuchos::AbstractFactory < MatrixSymOp > > | mat_sym_fcty_ptr_t |
| typedef Teuchos::RCP< const Teuchos::AbstractFactory < MatrixSymOpNonsing > > | mat_sym_nonsing_fcty_ptr_t |
Public Member Functions inherited from AbstractLinAlgPack::BasisSystem | |
| BasisSystem (const mat_sym_fcty_ptr_t &factory_transDtD, const mat_sym_nonsing_fcty_ptr_t &factory_S) | |
Required constructor (calls initialize()). More... | |
| virtual void | initialize (const mat_sym_fcty_ptr_t &factory_transDtD, const mat_sym_nonsing_fcty_ptr_t &factory_S) |
Initialize the factory objects for the special matrices for D'*D and S = I + D'*D. More... | |
| virtual | ~BasisSystem () |
| virtual const mat_fcty_ptr_t | factory_GcUP () const |
Return a matrix factory object for auxiliary sensitivity matrix GcUP = Gc(var_indep,equ_undecomp)' + Gc(var_dep,equ_undecomp)'*D. More... | |
| virtual const mat_sym_fcty_ptr_t | factory_transDtD () const |
Returns a matrix factory for the result of J = D'*D More... | |
| virtual const mat_sym_nonsing_fcty_ptr_t | factory_S () const |
Returns a matrix factory for the result of S = I + D'*D More... | |
| virtual Range1D | equ_decomp () const |
| Range of decomposed general equality constraints. More... | |
| virtual Range1D | equ_undecomp () const |
| Range of undecomposed general equality constriants. More... | |
Simple BasisSystem subclass the case where the client sets up seperate C and N matrices.
This interface is based an implementation where C and N are manipulated by the application and are concatenated into Gc = [ C'; N' ]. Here, there are no undecomposed equality constraints allowed.
For this implementation, the basis matrix C must override the method MatrixOp::operator=() for correct behavior. A smart implementation of the basis matrix subclass will use lazy evaluation and not copy data inside of MatrixOp::operator=() unless necessary later on.
Definition at line 60 of file AbstractLinAlgPack_BasisSystemComposite.hpp.
| typedef Teuchos::RCP<const Teuchos::AbstractFactory<MatrixOp> > AbstractLinAlgPack::BasisSystemComposite::fcty_Gc_ptr_t |
Definition at line 69 of file AbstractLinAlgPack_BasisSystemComposite.hpp.
Definition at line 71 of file AbstractLinAlgPack_BasisSystemComposite.hpp.
Definition at line 73 of file AbstractLinAlgPack_BasisSystemComposite.hpp.
| AbstractLinAlgPack::BasisSystemComposite::BasisSystemComposite | ( | ) |
Default constructor.
Definition at line 291 of file AbstractLinAlgPack_BasisSystemComposite.cpp.
| AbstractLinAlgPack::BasisSystemComposite::BasisSystemComposite | ( | const VectorSpace::space_ptr_t & | space_x, |
| const VectorSpace::space_ptr_t & | space_c, | ||
| const mat_nonsing_fcty_ptr_t & | factory_C, | ||
| const mat_sym_fcty_ptr_t & | factory_transDtD, | ||
| const mat_sym_nonsing_fcty_ptr_t & | factory_S | ||
| ) |
Calls this->initialize() in a way that is consistant with above helper functions.
Definition at line 295 of file AbstractLinAlgPack_BasisSystemComposite.cpp.
| AbstractLinAlgPack::BasisSystemComposite::BasisSystemComposite | ( | const VectorSpace::space_ptr_t & | space_x, |
| const Range1D & | var_dep, | ||
| const Range1D & | var_indep, | ||
| const VectorSpace::space_ptr_t & | space_c, | ||
| const mat_nonsing_fcty_ptr_t & | factory_C, | ||
| const mat_sym_fcty_ptr_t & | factory_transDtD, | ||
| const mat_sym_nonsing_fcty_ptr_t & | factory_S, | ||
| const mat_fcty_ptr_t & | factory_D = Teuchos::null |
||
| ) |
Calls this->initialize()
Definition at line 312 of file AbstractLinAlgPack_BasisSystemComposite.cpp.
|
static |
Initialize the composite vector space for x = [ xD; xI ] as well as var_dep and var_indep.
| space_xD | [in/out] Vector space for the dependent variables. On output space_xD.count() will be incremented by 1. |
| space_xI | [in/out] Vector space for the independent variables. It is allowed for space_xI.get()==NULL in which case there are no independent variables. If space_xI.get()!=NULL then on output space_xI.count() will be incremented by 1. |
| var_dep | [out] Range for dependent variables in output space_x |
| var_indep | [out] Range for independent variables in output space_x. Only applicable if space_xI.get()!=NULL. |
| space_x | [out] If space_xI.get()!=NULL then on output this will be the newly formed composite vector space space_x = [ space_xD; space_xI ]. The object *space_x will be dependent on the objects *space_xD *space_xI. If the client wants *space_x to be independent from these vector space objects then space_x->clone() can be used. If space_xI.get()==NULL then on output *space_x=space_xD will just be performed. |
Preconditions:
space_xD.get() != NULL (throw std::invalid_argument) var_dep != NULL (throw std::invalid_argument) space_xI.get() != NULL] var_indep != NULL (throw std::invalid_argument) Postconditions:
var_dep->size() == space_xD->dim() space_xI.get()!=NULL] var_indep->size() == space_xI->dim() space_xI.get()!=NULL] var_dep and var_indep are non-overlapping ranges. space_xI.get()!=NULL] space_x->dim() == var_dep->size() + var_indep->size() [space_xI.get()!=NULL] space_x->sub_space(*var_dep).get() == space_xD.get() [space_xI.get()!=NULL] space_x->sub_space(*var_indep).get() == space_xI.get() [space_xI.get()==NULL] space_x->dim() == var_dep->size() [space_xI.get()-=NULL] space_x->sub_space(*var_dep).get() == space_xD.get() Definition at line 86 of file AbstractLinAlgPack_BasisSystemComposite.cpp.
|
static |
Return a matrix factory object for the composte Gc matrix object.
Definition at line 123 of file AbstractLinAlgPack_BasisSystemComposite.cpp.
|
static |
Initialize the Gc matrix object given created from space_Gc()->create().
Initializes the composite matrix object:
Gc = [ C'; N' ]
| space_x | [in] Vector space for the variables (returned from initialize_space_x()). |
| var_dep | [in] Range for dependent variables in space_x. |
| var_indep | [in] Range for independent variables in space_x. |
| space_c | [in] Vector space for the equality constraints. |
| C | [in/out] Nonsingular basis matrix, initialized and ready to go. On output C.count() will be incremented by 1. |
| N | [in/out] Non-basis matrix, initialized and ready to go. On output N.count() will be incremented by 1. |
| Gc | [in/out] Composite matrix object that on output is initialized with. C and N. |
Preconditions:
space_x.get() != NULL (throw std::invalid_argument) space_c.get() != NULL (throw std::invalid_argument) C.get() != NULL (throw std::invalid_argument) space_x->dim() > space_c->dim()] N.get() != NULL (throw std::invalid_argument) space_x->dim() == space_c->dim()] N.get() == NULL (throw std::invalid_argument) Gc != NULL (throw std::invalid_argument) Postconditions:
&return->space_cols() == space_x.get() &return->space_rows() == space_c.get() Definition at line 129 of file AbstractLinAlgPack_BasisSystemComposite.cpp.
|
static |
Get the non-const aggregate matrices C and N (or NULL pointers if not initialized).
| Gc | [in] Composite matrix object Gc = [ C'; N' ] |
| C | [out] Pointer to basis matrix object C. If Gc has not been initialized then *C == NULL on output. |
| N | [out] Pointer to nonbasis matrix object N. If Gc has not been initialized then *N == NULL on output. Preconditions:
|
Definition at line 201 of file AbstractLinAlgPack_BasisSystemComposite.cpp.
|
static |
Get the const aggregate matrices C and N.
| Gc | [in] Composite matrix object Gc = [ C'; N' ]. If this matrix object has not been initialized with C and N matrix objects then an exception is thown. |
| C | [out] Pointer to basis matrix object C. |
| N | [out] Pointer to nonbasis matrix object N. |
Preconditions:
Gc is setup with non-null C and N matrix objects (throw std::logic_error). C != NULL (throw std::invalid_argument) Gc->rows() < Gc->cols()] N != NULL (throw std::invalid_argument) Gc->rows() == Gc->cols()] N == NULL (throw std::invalid_argument) Definition at line 247 of file AbstractLinAlgPack_BasisSystemComposite.cpp.
| void AbstractLinAlgPack::BasisSystemComposite::initialize | ( | const VectorSpace::space_ptr_t & | space_x, |
| const Range1D & | var_dep, | ||
| const Range1D & | var_indep, | ||
| const VectorSpace::space_ptr_t & | space_c, | ||
| const mat_nonsing_fcty_ptr_t & | factory_C, | ||
| const mat_sym_fcty_ptr_t & | factory_transDtD, | ||
| const mat_sym_nonsing_fcty_ptr_t & | factory_S, | ||
| const mat_fcty_ptr_t & | factory_D = Teuchos::null |
||
| ) |
Initialize.
| space_x | [in] Smart pointer to vector space for x. |
| var_dep | [in] Range for dependent variables xD. |
| var_indep | [in] Range for independent variables xI. |
| factory_C | [in] Smart pointer to factory object for basis matrix C. |
| factory_transDtD | [in] Smart point to the factory object for the matrix J = D'*D. Only valid if var_dep.size() < space_x->dim(). |
| factory_S | [in] Smart point to the factory object for the matrix S = I + D'*D. Only valid if var_dep.size() < space_x->dim(). |
| factory_D | [in] Smart pointer to factory object for direct sensitivity matrix D. If factory_D == NULL then an AbstractFactoryStd<> object will be used which calls space_xD->create_members(space_xI->dim()). which in turn of course creates MultiVectorMutable objects. Only valid if var_dep.size() < space_x->dim(). |
Preconditions:
space_xD.get() != NULL (throw std::invalid_argument) space_xI.get() != NULL (throw std::invalid_argument) factory_C.get() != NULL (throw std::invalid_argument) var_dep.size() < space_x->dim()] factory_S.get() != NULL (throw std::invalid_argument) Postconditions:
this->var_dep() == [1,space_xD->dim()] var_dep.size() < space_x->dim()] this->var_indep() == [space_xD->dim()+1,space_xD->dim()+space_xI->dim() this->equ_decomp() == [1,space_xD->dim()] this->equ_undecomp().size() == 0 this->factory_C().get() != NULL var_dep.size() < space_x->dim()] this->factory_S().get() == factory_S.get() var_dep.size() == space_x->dim()] this->factory_S().get() == NULL var_dep.size() < space_x->dim()] this->factory_D().get() != NULL var_dep.size() == space_x->dim()] this->factory_D().get() == NULL Definition at line 330 of file AbstractLinAlgPack_BasisSystemComposite.cpp.
|
virtual |
Set uninitialized.
Postconditions:
this->var_dep().size() == 0 this->var_indep().size() == 0 this->equ_decomp().size() == 0 this->equ_undecomp().size() == 0 this->inequ_decomp().size() == 0 this->equ_undecomp().size() == 0 this->factory_C().get() == NULL this->factory_D().get() == NULL this->factory_GcUP().get() == NULL this->factory_GhUP().get() == NULL Definition at line 381 of file AbstractLinAlgPack_BasisSystemComposite.cpp.
| const VectorSpace::space_ptr_t & AbstractLinAlgPack::BasisSystemComposite::space_x | ( | ) | const |
Definition at line 393 of file AbstractLinAlgPack_BasisSystemComposite.cpp.
| const VectorSpace::space_ptr_t & AbstractLinAlgPack::BasisSystemComposite::space_c | ( | ) | const |
Definition at line 399 of file AbstractLinAlgPack_BasisSystemComposite.cpp.
|
virtual |
Overridden by subclasses to update D if a specialized implementation is needed.
The default implementation just relies on the MultiVectorMutable interface and the M_StInvMtV() method.
Definition at line 406 of file AbstractLinAlgPack_BasisSystemComposite.cpp.
|
virtual |
Implements AbstractLinAlgPack::BasisSystem.
Definition at line 420 of file AbstractLinAlgPack_BasisSystemComposite.cpp.
|
virtual |
Implements AbstractLinAlgPack::BasisSystem.
Definition at line 426 of file AbstractLinAlgPack_BasisSystemComposite.cpp.
|
virtual |
Implements AbstractLinAlgPack::BasisSystem.
Definition at line 431 of file AbstractLinAlgPack_BasisSystemComposite.cpp.
|
virtual |
Implements AbstractLinAlgPack::BasisSystem.
Definition at line 436 of file AbstractLinAlgPack_BasisSystemComposite.cpp.
|
virtual |
Implements AbstractLinAlgPack::BasisSystem.
Definition at line 441 of file AbstractLinAlgPack_BasisSystemComposite.cpp.
1.8.6