MOOCHO (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | List of all members
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]

Public Member Functions

 MatrixSymAddDelBunchKaufman ()
 Initializes with 0x0 and pivot_tols == (0.0,0.0,0.0). More...
 
void pivot_tols (PivotTolerances pivot_tols)
 Pivot tolerance used durring the cholesky factorization (it may be zero). More...
 
PivotTolerances pivot_tols () const
 
- Public Member Functions inherited from ConstrainedOptPack::MatrixSymAddDelUpdateableWithOpNonsingular
virtual ~MatrixSymAddDelUpdateableWithOpNonsingular ()
 

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. More...
 
const DMatrixSliceTriEle DU (size_type S_size, bool fact_in1) const
 
DMatrixSliceSym S (size_type S_size)
 Get view of lower part of S. More...
 
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. More...
 
void factor_matrix (size_type S_size, bool fact_in1)
 Factor the current set matrix in-place (do not copy the original). More...
 
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. More...
 
 MatrixSymAddDelBunchKaufman (const MatrixSymAddDelBunchKaufman &)
 Not defined and not to be called. More...
 
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 66 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 56 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 60 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 
)
inlineprivate

Get view of DU.

Definition at line 234 of file ConstrainedOptPack_MatrixSymAddDelBunchKaufman.hpp.

const DMatrixSliceTriEle ConstrainedOptPack::MatrixSymAddDelBunchKaufman::DU ( size_type  S_size,
bool  fact_in1 
) const
inlineprivate
DMatrixSliceSym ConstrainedOptPack::MatrixSymAddDelBunchKaufman::S ( size_type  S_size)
inlineprivate

Get view of lower part of S.

Definition at line 251 of file ConstrainedOptPack_MatrixSymAddDelBunchKaufman.hpp.

const DMatrixSliceSym ConstrainedOptPack::MatrixSymAddDelBunchKaufman::S ( size_type  S_size) const
inlineprivate
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 733 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 742 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 754 of file ConstrainedOptPack_MatrixSymAddDelBunchKaufman.cpp.

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

Member Data Documentation

size_type ConstrainedOptPack::MatrixSymAddDelBunchKaufman::S_size_
private
bool ConstrainedOptPack::MatrixSymAddDelBunchKaufman::S_indef_
private
bool ConstrainedOptPack::MatrixSymAddDelBunchKaufman::fact_updated_
private
bool ConstrainedOptPack::MatrixSymAddDelBunchKaufman::fact_in1_
private
MatrixSymAddDelUpdateable::Inertia ConstrainedOptPack::MatrixSymAddDelBunchKaufman::inertia_
private
DMatrix ConstrainedOptPack::MatrixSymAddDelBunchKaufman::S_store1_
private
DMatrix ConstrainedOptPack::MatrixSymAddDelBunchKaufman::S_store2_
private
IPIV_t ConstrainedOptPack::MatrixSymAddDelBunchKaufman::IPIV_
private
DVector ConstrainedOptPack::MatrixSymAddDelBunchKaufman::WORK_
mutableprivate
MatrixSymPosDefCholFactor ConstrainedOptPack::MatrixSymAddDelBunchKaufman::S_chol_
private

The documentation for this class was generated from the following files: