74 namespace GPMSIP = AbstractLinAlgPack::GenPermMatrixSliceIteratorPack;
91 ,nd, nd, H_trans, x.dim() );
119 ? GenPermMatrixSlice(
122 ,GenPermMatrixSlice::IDENTITY_MATRIX )
125 P2 = ( P.is_identity()
126 ? GenPermMatrixSlice(
129 ,GenPermMatrixSlice::ZERO_MATRIX )
147 namespace ConstrainedOptPack {
150 : vec_space_(Teuchos::null)
158 : vec_space_(Teuchos::null)
169 namespace mmp = MemMngPack;
171 const char err_msg_head[] =
"MatrixSymHessianRelaxNonSing::initialize(...) : Error!";
174 const size_type G_rows = G_ptr->rows(), M_diag_dim = M_diag_ptr->dim();
180 const size_type space_dim = space->dim();
186 VectorSpace::space_ptr_t spaces[]
191 M_.initialize(M_diag_ptr);
206 #ifdef PROFILE_HACK_ENABLED
225 #ifdef PROFILE_HACK_ENABLED
242 #ifdef PROFILE_HACK_ENABLED
259 #ifdef PROFILE_HACK_ENABLED
266 Vp_StPtMtV_imp(&y_d(),a,P,P_trans,*
this,H_trans,x_d(),b);
274 #ifdef PROFILE_HACK_ENABLED
280 Vp_StPtMtV_imp(&y_d(),a,P,P_trans,*
this,H_trans,x,b);
295 namespace GPMSIP = AbstractLinAlgPack::GenPermMatrixSliceIteratorPack;
296 #ifdef PROFILE_HACK_ENABLED
376 #ifdef PROFILE_HACK_ENABLED
391 #ifdef PROFILE_HACK_ENABLED
408 ,
"MatrixSymHessianRelaxNonSing::assert_initialized(): Error, Not initalized yet!" );
void V_InvMtV(VectorMutable *v_lhs, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2) const
Teuchos::Ordinal size_type
Typedef for the size type of elements that are used by the library.
AbstractLinAlgPack::size_type size_type
size_type dim() const
Returns the number of elements of the VectorSliceTmpl.
void Vt_S(VectorMutable *v_lhs, const value_type &alpha)
v_lhs *= alpha
void Vp_StPtMtV(VectorMutable *v_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs1, BLAS_Cpp::Transp P_rhs1_trans, const MatrixOp &M_rhs2, BLAS_Cpp::Transp M_rhs2_trans, const Vector &v_rhs3, value_type beta=1.0)
v_lhs = alpha * op(P_rhs1) * op(M_rhs2) * v_rhs3 + beta * v_rhs
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
size_type rows(size_type rows, size_type cols, BLAS_Cpp::Transp _trans)
Return rows of a possible transposed matrix.
Helper class that takes care of timing.
const f_int const f_int const f_int const f_dbl_prec const f_dbl_prec const f_dbl_prec const f_dbl_prec const f_dbl_prec * H
void initialize(const G_ptr_t &G_ptr, const vec_mut_ptr_t &M_diag_ptr, const space_ptr_t &space=Teuchos::null)
Initialize the Hessian and the relaxation terms.
void Mp_StPtMtP(MatrixOp *mwo_lhs, value_type alpha, const GenPermMatrixSlice &P_rhs1, BLAS_Cpp::Transp P_rhs1_trans, const MatrixOp &M_rhs, BLAS_Cpp::Transp trans_rhs, const GenPermMatrixSlice &P_rhs2, BLAS_Cpp::Transp P_rhs2_trans)
mwo_lhs += alpha * op(P_rhs1) * op(M_rhs) * op(P_rhs2).
void Mp_StPtMtP(MatrixSymOp *sym_lhs, value_type alpha, EMatRhsPlaceHolder dummy_place_holder, const GenPermMatrixSlice &gpms_rhs, BLAS_Cpp::Transp gpms_rhs_trans, value_type beta) const
void Vp_StPtMtV(DVectorSlice *vs_lhs, value_type alpha, const GenPermMatrixSlice &gpms_rhs1, BLAS_Cpp::Transp trans_rhs1, const MatrixOp &mwo_rhs2, BLAS_Cpp::Transp trans_rhs2, const DVectorSlice &vs_rhs3, value_type beta=1.0)
vs_lhs = alpha * op(gpms_rhs1) * op(mwo_rhs2) * vs_rhs3 + beta * vs_lhs.
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
. One-based subregion index range class.
Extract a constant DenseLinAlgPack::DVectorSlice view of a Vector object.
void assert_initialized() const
Matrix class for non-singular Hessian matrix augmented with a terms for "Big M" relaxation variables...
const VectorSpace & space_cols() const
void V_InvMtV(VectorMutable *v_lhs, const MatrixNonsing &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2)
v_lhs = inv(op(M_rhs1)) * v_rhs2
f_dbl_prec f_dbl_prec f_dbl_prec * S
void Mp_StM(MatrixOp *mwo_lhs, value_type alpha, const MatrixOp &M_rhs, BLAS_Cpp::Transp trans_rhs)
void Vp_StMtV(VectorMutable *v_lhs, value_type alpha, const MatrixOp &M_rhs1, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2, value_type beta=1.0)
v_lhs = alpha * op(M_rhs1) * v_rhs2 + beta * v_lhs (BLAS xGEMV)
const G_ptr_t & G_ptr() const
const f_int f_dbl_prec a[]
Base class for all matrices that support basic matrix operations.
SparseVectorSlice< SparseElement< index_type, value_type > > SpVectorSlice
Transp trans_not(Transp _trans)
Return the opposite of the transpose argument.
AbstractLinAlgPack::value_type value_type
void Vp_MtV_assert_sizes(size_type v_lhs_size, size_type m_rhs1_rows, size_type m_rhs1_cols, BLAS_Cpp::Transp trans_rhs1, size_type v_rhs2_size)
v_lhs += op(m_rhs1) * v_rhs2
FortranTypes::f_dbl_prec value_type
Typedef for the value type of elements that is used for the library.
void Vp_StMtV(VectorMutable *v_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const Vector &v_rhs2, value_type beta) const
Extract a non-const DenseLinAlgPack::DVectorSlice view of a VectorMutable object. ...
const AbstractLinAlgPack::MatrixSymDiagStd & M() const
size_type rows() const
Returns 0 if not initalized (this->diag() == NULL).
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
size_type cols(size_type rows, size_type cols, BLAS_Cpp::Transp _trans)
Return columns of a possible transposed matrix.
EOrderedBy ordered_by() const
bool Mp_StM(MatrixOp *mwo_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs) const
#define TEUCHOS_TEST_FOR_EXCEPT(throw_exception_test)
const MatrixSymOpNonsing & G() const
Concrete matrix type to represent general permutation (mapping) matrices.
MatrixSymHessianRelaxNonSing()
Construct uninitialized.