16 m_calc_eigenvectors(true) {
36 problem =
"The LinearEigenSystem_base::eigensolve method has been called\n";
37 problem +=
"but the method has not been implemented ... this should be \n";
38 problem +=
"implemented in the sub-class.";
51 problem =
"In LinearEigenSystem_base.get_tagged_eigenvalues() : there are\n";
52 problem +=
"no eigenvalues that have been tagged. This set is empty.\n";
61 std::cout <<
" number " << j <<
" is a tagged ev.\n";
74 problem =
"In LinearEigenSystem_base.get_tagged_eigenvectors() : there are\n";
75 problem +=
"no eigenvalues that have been tagged. This set is empty.\n";
The collection of CppNoddy exceptions.
Specification of the linear eigensystem base class.
A matrix class that constructs a DENSE matrix as a row major std::vector of DenseVectors.
An DenseVector class – a dense vector object.
void push_back(const _Type &fill)
A pass-thru definition of push_back.
std::size_t size() const
A pass-thru definition to get the size of the vector.
An exception to indicate that an error has been detected in an external (LAPACK) routine.
A generic runtime exception.
A linear Nth-order generalised eigensystem base class.
virtual DenseMatrix< D_complex > get_tagged_eigenvectors() const
Get the the tagged eigenvectors.
virtual void tag_eigenvalues_right(const int &val)
Tag those eigenvalues that are to the right of a specified shft point.
virtual void tag_eigenvalues_all()
Tag all the eigenvalues returned from the ARPACK routine.
virtual void tag_eigenvalues_lower(const int &val)
Tag those eigenvalues that are in the lower half-plane below a specified point.
D_complex m_shift
The complex shift value.
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.
std::set< unsigned, std::less< unsigned > >::iterator iter
DenseVector< D_complex > m_all_eigenvalues
storage for eigenvectors and eigenvalues
virtual void tag_eigenvalues_left(const int &val)
Tag those eigenvalues that are to the left of a specified point.
std::set< unsigned, std::less< unsigned > > m_tagged_indices
a set of tagged eigenvalue indices
virtual void eigensolve()
Solve the matrix linear eigensystem.
D_complex get_shift() const
Get the shift value associated with this class (used for tagging) and eigenvalue tagging.
bool m_calc_eigenvectors
calculate the eigenvectors in any eigenvalue computation
virtual ~LinearEigenSystem_base()
Destructor for a linear system object.
LinearEigenSystem_base()
Constructor for a linear system object.
void set_shift(const D_complex &z)
Set the shift value to be used in tagging.
void set_calc_eigenvectors(bool flag)
Compute the eigenvectors in any eigenvalue computation.
DenseMatrix< D_complex > m_all_eigenvectors
virtual DenseVector< D_complex > get_tagged_eigenvalues() const
Get the the tagged eigenvalues.
virtual void tag_eigenvalues_upper(const int &val)
Tag those eigenvalues that are in the upper half-plane above a specified point.
A collection of OO numerical routines aimed at simple (typical) applied problems in continuum mechani...
std::complex< double > D_complex
A complex double precision number using std::complex.