D = - inv(C) * N for a variable reduction projection.
More...
#include <ConstrainedOptPack_MatrixVarReductImplicit.hpp>
Inheritance diagram for ConstrainedOptPack::MatrixVarReductImplicit:
Public types | |
| typedef Teuchos::RefCountPtr< const MatrixOpNonsing > | mat_nonsing_ptr_t |
| | |
| typedef Teuchos::RefCountPtr< const MatrixOp > | mat_ptr_t |
| | |
Constructors / initializers | |
| virtual void | initialize (const mat_nonsing_ptr_t &C, const mat_ptr_t &N, const mat_ptr_t &D_direct) |
Initialize this matrix object. | |
| virtual void | set_uninitialized () |
| Set the matrix to uninitialized. | |
Access | |
| const mat_nonsing_ptr_t & | C_ptr () const |
Return the smart pointer to the aggregate basis matrix object C. | |
| const mat_ptr_t & | N_ptr () const |
Return the smart pointer to the aggregate nonbasis matrix object N. | |
| const mat_ptr_t & | D_direct_ptr () const |
Return the smart pointer to the aggregate precomputed matrix object D_direct (if set). | |
Overridden from MatrixBase. | |
| size_type | rows () const |
| | |
| size_type | cols () const |
| | |
Overridden from MatrixOp. | |
| const VectorSpace & | space_cols () const |
| | |
| const VectorSpace & | space_rows () const |
| | |
| MatrixOp & | operator= (const MatrixOp &M) |
| | |
| std::ostream & | output (std::ostream &) const |
| | |
| void | Vp_StMtV (VectorMutable *v_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2, value_type beta) const |
| | |
| void | Vp_StMtV (VectorMutable *v_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const SpVectorSlice &sv_rhs2, value_type beta) const |
| | |
| void | Vp_StPtMtV (VectorMutable *v_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs1, BLAS_Cpp::Transp P_rhs1_trans, BLAS_Cpp::Transp M_rhs2_trans, const Vector &v_rhs3, value_type beta) const |
| | |
| void | Vp_StPtMtV (VectorMutable *v_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs1, BLAS_Cpp::Transp P_rhs1_trans, BLAS_Cpp::Transp M_rhs2_trans, const SpVectorSlice &sv_rhs3, value_type beta) const |
| | |
D = - inv(C) * N for a variable reduction projection.
This class is used to implement an implicit matrix defined as
D = - inv(C) * N
y = op(D)*x are implemented as:
y = D * x
= -inv(C) * (N * x)
y = D' * x
= - N' * (inv(C') * x)
D_direct that represents D = -inv(C)*N that will be used to extract rows or columns or to implement operations involving GenPermMatrixSlice when convenient. One might ask why this subclass would even be used if D_direct was even available. The reason is that it may be cheaper to perform the sparse solve and matrix-vector multiplication with C and N than it is to use a dense precomputed matrix D_direct. Determining if this class is even useful when D_direct is availible must be determined at runtime using timing data (which can be very hard to do well in general).
This implementation is designed to deal efficiently with the case where matrix- vector multiplications will only be performed with subsets of rows of inv(C)*N or columns of N'*inv(C'). This primarily affects two types of operations:
y = b*y + a*[-N'*inv(C')]*x (x is a SpVectorSlice object) y = b*y + a*op(P)*[-inv(C)*N]*x (P has few nonzeros, x is any vector) D_direct is not set then needed rows of inv(C)*N are generated on the fly (as abstract vectors) and stored away for later use. When this->initialize() is called then all of these computed rows are discarded and they must be generated again.
Definition at line 78 of file ConstrainedOptPack_MatrixVarReductImplicit.hpp.
|
|
Definition at line 87 of file ConstrainedOptPack_MatrixVarReductImplicit.hpp. |
|
|
Definition at line 89 of file ConstrainedOptPack_MatrixVarReductImplicit.hpp. |
|
||||||||||||||||
|
Initialize
Postconditions:
Definition at line 184 of file ConstrainedOptPack_MatrixVarReductImplicit.cpp. |
|
|
Set the matrix to uninitialized. Postconditions:
Definition at line 226 of file ConstrainedOptPack_MatrixVarReductImplicit.cpp. |
|
|
Return the smart pointer to the aggregate basis matrix object
If Definition at line 271 of file ConstrainedOptPack_MatrixVarReductImplicit.hpp. |
|
|
Return the smart pointer to the aggregate nonbasis matrix object
If Definition at line 278 of file ConstrainedOptPack_MatrixVarReductImplicit.hpp. |
|
|
Return the smart pointer to the aggregate precomputed matrix object
If Definition at line 285 of file ConstrainedOptPack_MatrixVarReductImplicit.hpp. |
|
|
Reimplemented from AbstractLinAlgPack::MatrixBase. Definition at line 236 of file ConstrainedOptPack_MatrixVarReductImplicit.cpp. |
|
|
Reimplemented from AbstractLinAlgPack::MatrixBase. Definition at line 241 of file ConstrainedOptPack_MatrixVarReductImplicit.cpp. |
|
|
Implements AbstractLinAlgPack::MatrixBase. Definition at line 248 of file ConstrainedOptPack_MatrixVarReductImplicit.cpp. |
|
|
Implements AbstractLinAlgPack::MatrixBase. Definition at line 254 of file ConstrainedOptPack_MatrixVarReductImplicit.cpp. |
|
|
Reimplemented from AbstractLinAlgPack::MatrixOp. Definition at line 260 of file ConstrainedOptPack_MatrixVarReductImplicit.cpp. |
|
|
Reimplemented from AbstractLinAlgPack::MatrixOp. Definition at line 267 of file ConstrainedOptPack_MatrixVarReductImplicit.cpp. |
|
||||||||||||||||||||||||
|
Implements AbstractLinAlgPack::MatrixOp. Definition at line 276 of file ConstrainedOptPack_MatrixVarReductImplicit.cpp. |
|
||||||||||||||||||||||||
|
Reimplemented from AbstractLinAlgPack::MatrixOp. Definition at line 287 of file ConstrainedOptPack_MatrixVarReductImplicit.cpp. |
|
||||||||||||||||||||||||||||||||
|
Reimplemented from AbstractLinAlgPack::MatrixOp. Definition at line 345 of file ConstrainedOptPack_MatrixVarReductImplicit.cpp. |
|
||||||||||||||||||||||||||||||||
|
Reimplemented from AbstractLinAlgPack::MatrixOp. Definition at line 375 of file ConstrainedOptPack_MatrixVarReductImplicit.cpp. |
1.3.9.1