#include <AbstractLinAlgPack_MatrixSymNonsing.hpp>
Inheritance diagram for AbstractLinAlgPack::MatrixSymNonsing:
Public types | |
| enum | EMatrixDummyArg |
| More... | |
Clone | |
| virtual mat_msns_mut_ptr_t | clone_msns () |
| Clone the non-const matrix object (if supported). | |
| virtual mat_msns_ptr_t | clone_msns () const |
| Clone the const matrix object (if supported). | |
[NOHEADER] | |
| mat_mns_mut_ptr_t | clone_mns () |
Returns this->clone_msns(). | |
| mat_mns_ptr_t | clone_mns () const |
Returns this->clone_msns(). | |
Level-3 | |
| virtual void | M_StMtInvMtM (MatrixSymOp *symwo_lhs, value_type alpha, const MatrixOp &mwo, BLAS_Cpp::Transp mwo_trans, EMatrixDummyArg) const |
| symwo_lhs = alpha * op(mwo) * inv(M) * op(mwo)'. | |
Friends | |
| void | M_StMtInvMtM (MatrixSymOp *sym_gms_lhs, value_type alpha, const MatrixOp &mwo, BLAS_Cpp::Transp mwo_trans, const MatrixSymNonsing &mswof, EMatrixDummyArg mwo_rhs) |
| | |
This interface defines a single addition method to those found in MatrixNonsing:
symwo_lhs = alpha * op(mwo) * inv(M) * op(mwo)'
The reason that this method could not be defined in the MatrixNonsing interface is that the lhs matrix matrix argument symwo_lhs is only guaranteed to be symmetric if the rhs matrix argument M (which is this matrix) is guaranteed to be symmetric. Since a MatrixNonsing matrix object may be unsymmetric, it can not implement this operation, only a symmetric nonsingular matrix can.
Any symmetric nonsingular matrix abstraction that can be used to solve for nonlinear systems should also be able to support the MatrixSymOp interface. Therefore, this interface is more of an implementation artifact than an a legitimate domain abstraction. However, some symmetric linear solvers that can implement this interface, can not easily implement the MatrixSymOp interface and therefore this interface is justified. A general client should never use this interface directly. Instead, the combined interface MatrixSymOpNonsing should be used with fully formed symmetric matrix abstractions.
Clients should use the provided non-member functions to call the methods and not the methods themselves.
Definition at line 61 of file AbstractLinAlgPack_MatrixSymNonsing.hpp.
|
|
Definition at line 76 of file AbstractLinAlgPack_MatrixSymNonsing.hpp. |
|
|
Clone the non-const matrix object (if supported). The default implementation returns NULL which is perfectly acceptable. A matrix object is not required to return a non-NULL value but almost every good matrix implementation will. Reimplemented in AbstractLinAlgPack::MatrixSymOpNonsing. Definition at line 37 of file AbstractLinAlgPack_MatrixSymNonsing.cpp. |
|
|
Clone the const matrix object (if supported). The behavior of this method is the same as for the non-const version above except it returns a smart pointer to a const matrix object. Reimplemented in AbstractLinAlgPack::MatrixSymOpNonsing. Definition at line 43 of file AbstractLinAlgPack_MatrixSymNonsing.cpp. |
|
||||||||||||||||||||||||
|
symwo_lhs = alpha * op(mwo) * inv(M) * op(mwo)'. The default implementation is based on the operation M_StInvMtM(...) assuming that this #M# is a symmetric matrix. For an efficient implementation (for this = L*L' for instance) the subclass may want to override this function. Reimplemented in AbstractLinAlgPack::MatrixSymNonsingSerial. Definition at line 48 of file AbstractLinAlgPack_MatrixSymNonsing.cpp. |
|
|
Returns Overridden from MatrixNonsing Reimplemented from AbstractLinAlgPack::MatrixNonsing. Reimplemented in AbstractLinAlgPack::MatrixSymOpNonsing. Definition at line 58 of file AbstractLinAlgPack_MatrixSymNonsing.cpp. |
|
|
Returns
Reimplemented from AbstractLinAlgPack::MatrixNonsing. Reimplemented in AbstractLinAlgPack::MatrixSymOpNonsing. Definition at line 64 of file AbstractLinAlgPack_MatrixSymNonsing.cpp. |
|
||||||||||||||||||||||||||||
|
Definition at line 154 of file AbstractLinAlgPack_MatrixSymNonsing.hpp. |
1.3.9.1