42 #ifndef DECOMPOSITION_SYSTEM_VAR_REDUCT_IMP_H
43 #define DECOMPOSITION_SYSTEM_VAR_REDUCT_IMP_H
45 #include "ConstrainedOptPack_DecompositionSystemVarReduct.hpp"
46 #include "AbstractLinAlgPack_BasisSystemTester.hpp"
47 #include "AbstractLinAlgPack_VectorSpace.hpp"
51 namespace ConstrainedOptPack {
124 const VectorSpace::space_ptr_t &
space_x
125 ,
const VectorSpace::space_ptr_t &
space_c
127 ,
const basis_sys_tester_ptr_t &basis_sys_tester
158 const VectorSpace::space_ptr_t &
space_x
159 ,
const VectorSpace::space_ptr_t &
space_c
167 const VectorSpace::space_ptr_t&
space_x()
const;
169 const VectorSpace::space_ptr_t&
space_c()
const;
280 const VectorSpace::space_ptr_t
space_range()
const;
282 const VectorSpace::space_ptr_t
space_null()
const;
309 std::ostream& out,
const std::string& leading_str )
const;
355 ,
const mat_nonsing_fcty_ptr_t::element_type::obj_ptr_t &C_ptr
356 ,
const mat_fcty_ptr_t::element_type::obj_ptr_t &D_ptr
368 std::ostream& out,
const std::string& leading_str )
const = 0;
375 #ifdef DOXYGEN_COMPILE
383 VectorSpace::space_ptr_t space_x_;
384 VectorSpace::space_ptr_t space_c_;
385 VectorSpace::space_ptr_t space_range_;
386 VectorSpace::space_ptr_t space_null_;
395 void alloc_new_D_matrix(
411 const VectorSpace::space_ptr_t&
418 const VectorSpace::space_ptr_t&
441 #endif // DECOMPOSITION_SYSTEM_VAR_REDUCT_IMP_H
Teuchos::RCP< const BasisSystem > basis_sys_ptr_t
DecompositionSystemVarReductImp(const VectorSpace::space_ptr_t &space_x, const VectorSpace::space_ptr_t &space_c, const basis_sys_ptr_t &basis_sys, const basis_sys_tester_ptr_t &basis_sys_tester, EExplicitImplicit D_imp, EExplicitImplicit Uz_imp)
Construct a variable reduction decomposition.
virtual void update_D_imp_used(EExplicitImplicit *D_imp_used) const
Update D_imp_used.
virtual mat_nonsing_fcty_ptr_t::element_type::obj_ptr_t uninitialize_matrices(std::ostream *out, EOutputLevel olevel, MatrixOp *Y, MatrixOpNonsing *R, MatrixOp *Uy) const =0
Overridden by subclasses to uninitialized Y, R and Uy then return C if referenced.
const VectorSpace::space_ptr_t space_range() const
Returns this->space_x()->sub_space(var_dep)
void print_update_decomp(std::ostream &out, const std::string &leading_str) const
EOutputLevel
Enumeration for the amount of output to create from update_decomp().
ERunTests
Enumeration for if to run internal tests or not.
virtual void initialize_matrices(std::ostream *out, EOutputLevel olevel, const mat_nonsing_fcty_ptr_t::element_type::obj_ptr_t &C_ptr, const mat_fcty_ptr_t::element_type::obj_ptr_t &D_ptr, MatrixOp *Y, MatrixOpNonsing *R, MatrixOp *Uy, EMatRelations mat_rel) const =0
Overridden by subclasses to initialize Y, R and Uy given C and D.
const basis_sys_ptr_t & basis_sys() const
STANDARD_COMPOSITION_MEMBERS(BasisSystemTester, basis_sys_tester)
Set the BasisSystem tester object.
const VectorSpace::space_ptr_t & space_c() const
void get_basis_matrices(std::ostream *out, EOutputLevel olevel, ERunTests test_what, MatrixOp *Z, MatrixOp *Y, MatrixOpNonsing *R, MatrixOp *Uz, MatrixOp *Uy, Teuchos::RCP< MatrixOpNonsing > *C_ptr, Teuchos::RCP< MatrixOp > *D_ptr)
Called by client to uninitialize decomposition matrices in prepairation for selecting a different bas...
void initialize(const VectorSpace::space_ptr_t &space_x, const VectorSpace::space_ptr_t &space_c, const basis_sys_ptr_t &basis_sys)
Initialize.
void update_decomp(std::ostream *out, EOutputLevel olevel, ERunTests test_what, const MatrixOp &Gc, MatrixOp *Z, MatrixOp *Y, MatrixOpNonsing *R, MatrixOp *Uz, MatrixOp *Uy, EMatRelations mat_rel) const
Preconditions:
const mat_fcty_ptr_t factory_Uz() const
virtual void print_update_matrices(std::ostream &out, const std::string &leading_str) const =0
Print the sub-algorithm by which the matrices Y, R, Uy and Uy are updated.
EExplicitImplicit D_imp_used() const
Get the type of D matrix to be used or is being used (returns MAT_IMP_EXPLICIT or MAT_IMP_IMPLICIT on...
This class abstracts a decomposition choice for the quasi-range space Y and null space Z matrices for...
Specialization of DecompositionSystem for variable reduction decompositions.
const mat_fcty_ptr_t factory_Z() const
Range1D var_indep() const
size_type r() const
Returns this->basis_sys()->equ_decomp().size().
DecompositionSystem inherited
const VectorSpace::space_ptr_t & space_x() const
const VectorSpace::space_ptr_t space_null() const
Returns this->space_x()->sub_space(var_indep)
Specialization node implementation subclass of DecompositionSystem for variable reduction decompositi...
size_type n() const
Returns this->space_x()->dim().
size_type m() const
Returns this->space_c()->dim().
void set_basis_matrices(std::ostream *out, EOutputLevel olevel, ERunTests test_what, const Teuchos::RCP< MatrixOpNonsing > &C_ptr, const Teuchos::RCP< MatrixOp > &D_ptr, MatrixOp *Uz, const basis_sys_ptr_t &basis_sys=Teuchos::null)
Set updated basis matrices along with a possibly updated basis system object.