| 
    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