MOOCHO (Single Doxygen Collection) Version of the Day
Public Member Functions
ConstrainedOptPack::MatrixSymAddDelBunchKaufman Class Reference

This class maintains the factorization of symmetric indefinite matrix using a Bunch & Kaufman factorization. More...

#include <ConstrainedOptPack_MatrixSymAddDelBunchKaufman.hpp>

Inheritance diagram for ConstrainedOptPack::MatrixSymAddDelBunchKaufman:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 MatrixSymAddDelBunchKaufman ()
 Initializes with 0x0 and pivot_tols == (0.0,0.0,0.0).
void pivot_tols (PivotTolerances pivot_tols)
 Pivot tolerance used durring the cholesky factorization (it may be zero).
PivotTolerances pivot_tols () const
 

Overridden from MatrixSymAddDelUpdateableWithOpNonsingular

const MatrixSymOpNonsing & op_interface () const
 
MatrixSymAddDelUpdateable & update_interface ()
 
const MatrixSymAddDelUpdateable & update_interface () const
 

Overridden from MatrixSymAddDelUpdateable

void initialize (value_type alpha, size_type max_size)
 
void initialize (const DMatrixSliceSym &A, size_type max_size, bool force_factorization, Inertia inertia, PivotTolerances pivot_tols)
 
size_type max_size () const
 
Inertia inertia () const
 
void set_uninitialized ()
 
void augment_update (const DVectorSlice *t, value_type alpha, bool force_refactorization, EEigenValType add_eigen_val, PivotTolerances pivot_tols)
 
void delete_update (size_type jd, bool force_refactorization, EEigenValType drop_eigen_val, PivotTolerances pivot_tols)
 

Overridden from MatrixSymOpNonsingSerial

typedef std::vector
< FortranTypes::f_int > 
IPIV_t
size_type S_size_
bool S_indef_
bool fact_updated_
bool fact_in1_
MatrixSymAddDelUpdateable::Inertia inertia_
DMatrix S_store1_
DMatrix S_store2_
IPIV_t IPIV_
DVector WORK_
MatrixSymPosDefCholFactor S_chol_
size_type rows () const
 
std::ostream & output (std::ostream &out) const
 
void Vp_StMtV (DVectorSlice *vs_lhs, value_type alpha, BLAS_Cpp::Transp trans_rhs1, const DVectorSlice &vs_rhs2, value_type beta) const
 
void V_InvMtV (DVectorSlice *vs_lhs, BLAS_Cpp::Transp trans_rhs1, const DVectorSlice &vs_rhs2) const
 
DMatrixSliceTriEle DU (size_type S_size, bool fact_in1)
 Get view of DU.
const DMatrixSliceTriEle DU (size_type S_size, bool fact_in1) const
 
DMatrixSliceSym S (size_type S_size)
 Get view of lower part of S.
const DMatrixSliceSym S (size_type S_size) const
 
void assert_initialized () const
 
void resize_DU_store (bool in_store1)
 
void copy_and_factor_matrix (size_type S_size, bool fact_in1)
 Copy the original matrix into the new storage location and factorize it.
void factor_matrix (size_type S_size, bool fact_in1)
 Factor the current set matrix in-place (do not copy the original).
bool compute_assert_inertia (size_type S_size, bool fact_in1, const Inertia &expected_inertia, const char func_name[], PivotTolerances pivot_tols, Inertia *comp_inertia, std::ostringstream *err_msg, value_type *gamma)
 Compute the new inertia and validate that it is what the client says it was.
 MatrixSymAddDelBunchKaufman (const MatrixSymAddDelBunchKaufman &)
 Not defined and not to be called.
MatrixSymAddDelBunchKaufmanoperator= (const MatrixSymAddDelBunchKaufman &)

Detailed Description

This class maintains the factorization of symmetric indefinite matrix using a Bunch & Kaufman factorization.

When the matix in question is positive definite or negative definite then a cholesky factorization will be used for greater efficiency. As much as possible the class trys to keep runtime costs down to a minimum while still maintaining a stable factorization.

ToDo: This matrix class could also handle the case of a single negative or positive eigen value in an efficient manner as well.

Definition at line 53 of file ConstrainedOptPack_MatrixSymAddDelBunchKaufman.hpp.


Member Typedef Documentation

typedef std::vector<FortranTypes::f_int> ConstrainedOptPack::MatrixSymAddDelBunchKaufman::IPIV_t [private]

Constructor & Destructor Documentation

ConstrainedOptPack::MatrixSymAddDelBunchKaufman::MatrixSymAddDelBunchKaufman ( )

Initializes with 0x0 and pivot_tols == (0.0,0.0,0.0).

Definition at line 43 of file ConstrainedOptPack_MatrixSymAddDelBunchKaufman.cpp.

ConstrainedOptPack::MatrixSymAddDelBunchKaufman::MatrixSymAddDelBunchKaufman ( const MatrixSymAddDelBunchKaufman ) [private]

Not defined and not to be called.


Member Function Documentation

void ConstrainedOptPack::MatrixSymAddDelBunchKaufman::pivot_tols ( PivotTolerances  pivot_tols)

Pivot tolerance used durring the cholesky factorization (it may be zero).

Definition at line 47 of file ConstrainedOptPack_MatrixSymAddDelBunchKaufman.cpp.

MatrixSymAddDelUpdateable::PivotTolerances ConstrainedOptPack::MatrixSymAddDelBunchKaufman::pivot_tols ( ) const
const MatrixSymOpNonsing & ConstrainedOptPack::MatrixSymAddDelBunchKaufman::op_interface ( ) const [virtual]
MatrixSymAddDelUpdateable & ConstrainedOptPack::MatrixSymAddDelBunchKaufman::update_interface ( ) [virtual]
const MatrixSymAddDelUpdateable & ConstrainedOptPack::MatrixSymAddDelBunchKaufman::update_interface ( ) const [virtual]
void ConstrainedOptPack::MatrixSymAddDelBunchKaufman::initialize ( value_type  alpha,
size_type  max_size 
)
void ConstrainedOptPack::MatrixSymAddDelBunchKaufman::initialize ( const DMatrixSliceSym &  A,
size_type  max_size,
bool  force_factorization,
Inertia  inertia,
PivotTolerances  pivot_tols 
)
size_type ConstrainedOptPack::MatrixSymAddDelBunchKaufman::max_size ( ) const
MatrixSymAddDelUpdateable::Inertia ConstrainedOptPack::MatrixSymAddDelBunchKaufman::inertia ( ) const
void ConstrainedOptPack::MatrixSymAddDelBunchKaufman::set_uninitialized ( )
void ConstrainedOptPack::MatrixSymAddDelBunchKaufman::augment_update ( const DVectorSlice *  t,
value_type  alpha,
bool  force_refactorization,
EEigenValType  add_eigen_val,
PivotTolerances  pivot_tols 
)
void ConstrainedOptPack::MatrixSymAddDelBunchKaufman::delete_update ( size_type  jd,
bool  force_refactorization,
EEigenValType  drop_eigen_val,
PivotTolerances  pivot_tols 
)
size_type ConstrainedOptPack::MatrixSymAddDelBunchKaufman::rows ( ) const
std::ostream & ConstrainedOptPack::MatrixSymAddDelBunchKaufman::output ( std::ostream &  out) const
void ConstrainedOptPack::MatrixSymAddDelBunchKaufman::Vp_StMtV ( DVectorSlice *  vs_lhs,
value_type  alpha,
BLAS_Cpp::Transp  trans_rhs1,
const DVectorSlice &  vs_rhs2,
value_type  beta 
) const
void ConstrainedOptPack::MatrixSymAddDelBunchKaufman::V_InvMtV ( DVectorSlice *  vs_lhs,
BLAS_Cpp::Transp  trans_rhs1,
const DVectorSlice &  vs_rhs2 
) const
DMatrixSliceTriEle ConstrainedOptPack::MatrixSymAddDelBunchKaufman::DU ( size_type  S_size,
bool  fact_in1 
) [inline, private]

Get view of DU.

Definition at line 221 of file ConstrainedOptPack_MatrixSymAddDelBunchKaufman.hpp.

const DMatrixSliceTriEle ConstrainedOptPack::MatrixSymAddDelBunchKaufman::DU ( size_type  S_size,
bool  fact_in1 
) const [inline, private]
DMatrixSliceSym ConstrainedOptPack::MatrixSymAddDelBunchKaufman::S ( size_type  S_size) [inline, private]

Get view of lower part of S.

Definition at line 238 of file ConstrainedOptPack_MatrixSymAddDelBunchKaufman.hpp.

const DMatrixSliceSym ConstrainedOptPack::MatrixSymAddDelBunchKaufman::S ( size_type  S_size) const [inline, private]
void ConstrainedOptPack::MatrixSymAddDelBunchKaufman::assert_initialized ( ) const [private]
void ConstrainedOptPack::MatrixSymAddDelBunchKaufman::resize_DU_store ( bool  in_store1) [private]
void ConstrainedOptPack::MatrixSymAddDelBunchKaufman::copy_and_factor_matrix ( size_type  S_size,
bool  fact_in1 
) [private]

Copy the original matrix into the new storage location and factorize it.

Will throw DenseLinAlgLAPack::FactorizationException if singular.

Definition at line 714 of file ConstrainedOptPack_MatrixSymAddDelBunchKaufman.cpp.

void ConstrainedOptPack::MatrixSymAddDelBunchKaufman::factor_matrix ( size_type  S_size,
bool  fact_in1 
) [private]

Factor the current set matrix in-place (do not copy the original).

Will throw DenseLinAlgLAPack::FactorizationException if singular.

Definition at line 723 of file ConstrainedOptPack_MatrixSymAddDelBunchKaufman.cpp.

bool ConstrainedOptPack::MatrixSymAddDelBunchKaufman::compute_assert_inertia ( size_type  S_size,
bool  fact_in1,
const Inertia &  expected_inertia,
const char  func_name[],
PivotTolerances  pivot_tols,
Inertia *  comp_inertia,
std::ostringstream *  err_msg,
value_type *  gamma 
) [private]

Compute the new inertia and validate that it is what the client says it was.

Will throw exceptions if the matrix is singular or has the wrong inertia. If the matrix is near singular then true will be returned, the update should succeed but a warning exception should be thrown

Definition at line 735 of file ConstrainedOptPack_MatrixSymAddDelBunchKaufman.cpp.

MatrixSymAddDelBunchKaufman& ConstrainedOptPack::MatrixSymAddDelBunchKaufman::operator= ( const MatrixSymAddDelBunchKaufman ) [private]

Member Data Documentation

MatrixSymAddDelUpdateable::Inertia ConstrainedOptPack::MatrixSymAddDelBunchKaufman::inertia_ [private]
MatrixSymPosDefCholFactor ConstrainedOptPack::MatrixSymAddDelBunchKaufman::S_chol_ [private]

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines