CppNoddy
0.92
|
A linear Nth-order generalised eigensystem base class. More...
#include <LinearEigenSystem_base.h>
Public Member Functions | |
LinearEigenSystem_base () | |
Constructor for a linear system object. More... | |
virtual | ~LinearEigenSystem_base () |
Destructor for a linear system object. More... | |
virtual void | eigensolve () |
Solve the matrix linear eigensystem. More... | |
void | set_calc_eigenvectors (bool flag) |
Compute the eigenvectors in any eigenvalue computation. More... | |
void | set_shift (const D_complex &z) |
Set the shift value to be used in tagging. More... | |
D_complex | get_shift () const |
Get the shift value associated with this class (used for tagging) and eigenvalue tagging. More... | |
virtual void | tag_eigenvalues_right (const int &val) |
Tag those eigenvalues that are to the right of a specified shft point. More... | |
virtual void | tag_eigenvalues_left (const int &val) |
Tag those eigenvalues that are to the left of a specified point. More... | |
virtual void | tag_eigenvalues_upper (const int &val) |
Tag those eigenvalues that are in the upper half-plane above a specified point. More... | |
virtual void | tag_eigenvalues_lower (const int &val) |
Tag those eigenvalues that are in the lower half-plane below a specified point. More... | |
virtual void | tag_eigenvalues_disc (const int &val, const double &radius) |
Tag those eigenvalues that are within a disc centred at a point in the complex plane. More... | |
virtual void | tag_eigenvalues_all () |
Tag all the eigenvalues returned from the ARPACK routine. More... | |
virtual void | clear_all_tags () |
virtual DenseVector< D_complex > | get_tagged_eigenvalues () const |
Get the the tagged eigenvalues. More... | |
virtual DenseMatrix< D_complex > | get_tagged_eigenvectors () const |
Get the the tagged eigenvectors. More... | |
Protected Types | |
typedef std::set< unsigned, std::less< unsigned > >::iterator | iter |
typedef std::set< unsigned, std::less< unsigned > >::const_iterator | citer |
Protected Attributes | |
DenseVector< D_complex > | m_all_eigenvalues |
storage for eigenvectors and eigenvalues More... | |
DenseMatrix< D_complex > | m_all_eigenvectors |
std::set< unsigned, std::less< unsigned > > | m_tagged_indices |
a set of tagged eigenvalue indices More... | |
D_complex | m_shift |
The complex shift value. More... | |
bool | m_calc_eigenvectors |
calculate the eigenvectors in any eigenvalue computation More... | |
A linear Nth-order generalised eigensystem base class.
Here we can construct a linear eigenproblem in the form
for matrices
Definition at line 18 of file LinearEigenSystem_base.h.
|
protected |
Definition at line 25 of file LinearEigenSystem_base.h.
|
protected |
Definition at line 23 of file LinearEigenSystem_base.h.
CppNoddy::LinearEigenSystem_base::LinearEigenSystem_base | ( | ) |
Constructor for a linear system object.
Definition at line 14 of file LinearEigenSystem_base.cpp.
|
virtual |
Destructor for a linear system object.
Definition at line 20 of file LinearEigenSystem_base.cpp.
|
inlinevirtual |
Definition at line 79 of file LinearEigenSystem_base.h.
References m_tagged_indices.
|
virtual |
Solve the matrix linear eigensystem.
Reimplemented in CppNoddy::DenseLinearEigenSystem< _Type >.
Definition at line 34 of file LinearEigenSystem_base.cpp.
std::complex< double > CppNoddy::LinearEigenSystem_base::get_shift | ( | ) | const |
Get the shift value associated with this class (used for tagging) and eigenvalue tagging.
Definition at line 29 of file LinearEigenSystem_base.cpp.
References m_shift.
|
virtual |
Get the the tagged eigenvalues.
All of the tagged eigenvalues are returned in a complex vector, with no ordering guaranteed.
Reimplemented in CppNoddy::DenseLinearEigenSystem< _Type >.
Definition at line 48 of file LinearEigenSystem_base.cpp.
References m_all_eigenvalues, m_tagged_indices, p, and CppNoddy::DenseVector< _Type >::push_back().
|
virtual |
Get the the tagged eigenvectors.
All of the eigenvectors associated with the tagged eigenvalues are returned, with the i-th eigenvector corresponding to the i-th eigenvalue as returned by the get_tagged_eigenvalues method. The i-th eigenvector is returned in row i of the complex dense matrix.
Reimplemented in CppNoddy::DenseLinearEigenSystem< _Type >.
Definition at line 71 of file LinearEigenSystem_base.cpp.
References m_all_eigenvectors, m_tagged_indices, and p.
void CppNoddy::LinearEigenSystem_base::set_calc_eigenvectors | ( | bool | flag | ) |
Compute the eigenvectors in any eigenvalue computation.
flag | The boolean value to set. |
Definition at line 43 of file LinearEigenSystem_base.cpp.
References m_calc_eigenvectors.
Referenced by main().
void CppNoddy::LinearEigenSystem_base::set_shift | ( | const D_complex & | z | ) |
Set the shift value to be used in tagging.
z | The shift value to be used |
Definition at line 24 of file LinearEigenSystem_base.cpp.
References m_shift.
Referenced by CppNoddy::HST::Rayleigh< _Type >::global_evp(), and main().
|
virtual |
Tag all the eigenvalues returned from the ARPACK routine.
Definition at line 98 of file LinearEigenSystem_base.cpp.
References m_all_eigenvalues, m_tagged_indices, and CppNoddy::DenseVector< _Type >::size().
|
virtual |
Tag those eigenvalues that are within a disc centred at a point in the complex plane.
val | Tags are added or removed for val +ve or -ve |
radius | The radius of the disc to be considered |
Reimplemented in CppNoddy::DenseLinearEigenSystem< _Type >.
Definition at line 106 of file LinearEigenSystem_base.cpp.
References m_all_eigenvalues, m_shift, m_tagged_indices, and CppNoddy::DenseVector< _Type >::size().
|
virtual |
Tag those eigenvalues that are to the left of a specified point.
val | Tags are added or removed for val +ve or -ve |
Reimplemented in CppNoddy::DenseLinearEigenSystem< _Type >.
Definition at line 140 of file LinearEigenSystem_base.cpp.
References m_all_eigenvalues, m_shift, m_tagged_indices, and CppNoddy::DenseVector< _Type >::size().
|
virtual |
Tag those eigenvalues that are in the lower half-plane below a specified point.
val | Tags are added or removed for val +ve or -ve |
Reimplemented in CppNoddy::DenseLinearEigenSystem< _Type >.
Definition at line 173 of file LinearEigenSystem_base.cpp.
References m_all_eigenvalues, m_shift, m_tagged_indices, and CppNoddy::DenseVector< _Type >::size().
|
virtual |
Tag those eigenvalues that are to the right of a specified shft point.
val | Tags are added or removed for val +ve or -ve |
Reimplemented in CppNoddy::DenseLinearEigenSystem< _Type >.
Definition at line 123 of file LinearEigenSystem_base.cpp.
References m_all_eigenvalues, m_shift, m_tagged_indices, and CppNoddy::DenseVector< _Type >::size().
|
virtual |
Tag those eigenvalues that are in the upper half-plane above a specified point.
val | Tags are added or removed for val +ve or -ve |
Reimplemented in CppNoddy::DenseLinearEigenSystem< _Type >.
Definition at line 157 of file LinearEigenSystem_base.cpp.
References m_all_eigenvalues, m_shift, m_tagged_indices, and CppNoddy::DenseVector< _Type >::size().
|
protected |
storage for eigenvectors and eigenvalues
Definition at line 98 of file LinearEigenSystem_base.h.
Referenced by get_tagged_eigenvalues(), tag_eigenvalues_all(), tag_eigenvalues_disc(), tag_eigenvalues_left(), tag_eigenvalues_lower(), tag_eigenvalues_right(), and tag_eigenvalues_upper().
|
protected |
Definition at line 99 of file LinearEigenSystem_base.h.
Referenced by get_tagged_eigenvectors().
|
protected |
calculate the eigenvectors in any eigenvalue computation
Definition at line 109 of file LinearEigenSystem_base.h.
Referenced by set_calc_eigenvectors().
|
protected |
The complex shift value.
Definition at line 106 of file LinearEigenSystem_base.h.
Referenced by get_shift(), set_shift(), tag_eigenvalues_disc(), tag_eigenvalues_left(), tag_eigenvalues_lower(), tag_eigenvalues_right(), and tag_eigenvalues_upper().
|
protected |
a set of tagged eigenvalue indices
Definition at line 103 of file LinearEigenSystem_base.h.
Referenced by clear_all_tags(), get_tagged_eigenvalues(), get_tagged_eigenvectors(), tag_eigenvalues_all(), tag_eigenvalues_disc(), tag_eigenvalues_left(), tag_eigenvalues_lower(), tag_eigenvalues_right(), and tag_eigenvalues_upper().
© 2012
R.E. Hewitt