Fabric class for ARPACK eigenvalue solver for a constrained problem. More...

#include <arpackFabric.hh>

Inheritance diagram for eigensolver::ArPackFabric:
eigensolver::SolverFabric< Real > concepts::OutputOperator

Public Member Functions

 ArPackFabric (int kmax=1, Real tol=0.0, const int maxiter=300, enum ArPackSymm::which target=ArPackSymm::SM, enum ArPackSymm::modus mode=ArPackSymm::REGINV, const Real sigma=0.0, const concepts::Vector< Real > *start=0)
 Constructor. More...
 
virtual ArPackSymmoperator() (concepts::Operator< Real > &stiff, concepts::Operator< Real > &mass)
 Creates an eigenvalue solver which solves the abstract eigenvalue problem defined by stiff and mass. More...
 
virtual ~ArPackFabric ()
 

Protected Member Functions

virtual std::ostream & info (std::ostream &os) const
 Returns information in an output stream. More...
 

Private Member Functions

 ArPackFabric (const ArPackFabric &)
 
void bucklingMode_ (concepts::Operator< Real > &stiff, concepts::Operator< Real > &mass)
 
void cayleyMode_ (concepts::Operator< Real > &stiff, concepts::Operator< Real > &mass)
 
void normalMode_ (concepts::Operator< Real > &stiff, concepts::Operator< Real > &mass)
 
void reginvMode_ (concepts::Operator< Real > &stiff, concepts::Operator< Real > &mass)
 
void shiftinvMode_ (concepts::Operator< Real > &stiff, concepts::Operator< Real > &mass)
 

Private Attributes

std::unique_ptr< concepts::Operator< Real > > B_
 
int kmax_
 Number of eigenpairs to be computed. More...
 
int maxiter_
 Maximum number of Arnoldi iterations allowed. More...
 
enum ArPackSymm::modus mode_
 Mode in which ARPACK should be used. More...
 
std::unique_ptr< concepts::Operator< Real > > OP_
 
const Real sigma_
 Shift for the shift-invert, Buckling or Cayley mode. More...
 
std::unique_ptr< ArPackSymmsolver_
 
const concepts::Vector< Real > * start_
 Starting vector, if not given ARPACK invents one. More...
 
enum ArPackSymm::which target_
 What sort of eigenvalues to compute. More...
 
std::unique_ptr< concepts::Operator< Real > > tmp1_
 
std::unique_ptr< concepts::Operator< Real > > tmp2_
 
Real tol_
 Convergence tolerance for the eigenpairs. More...
 

Detailed Description

Fabric class for ARPACK eigenvalue solver for a constrained problem.

Author
Philipp Frauenfelder, 2002
Test:

test::GolubExample

test::GolubExampleSum

test::MaxwellTransmissionEVP

Definition at line 24 of file arpackFabric.hh.

Constructor & Destructor Documentation

◆ ArPackFabric() [1/2]

eigensolver::ArPackFabric::ArPackFabric ( int  kmax = 1,
Real  tol = 0.0,
const int  maxiter = 300,
enum ArPackSymm::which  target = ArPackSymm::SM,
enum ArPackSymm::modus  mode = ArPackSymm::REGINV,
const Real  sigma = 0.0,
const concepts::Vector< Real > *  start = 0 
)
inline

Constructor.

Parameters
kmaxNumber of eigenpairs to be computed
tolConvergence tolerance for the eigenpairs. The default value 0.0 is replaced by DLAMCH('EPS') from LAPACK.
maxiterMaximum number of Arnoldi iterations allowed
targetWhat sort of eigenvalues to compute
modeMode in which ARPACK should be used
sigmaShift for the shift-invert, Buckling or Cayley mode
startStarting vector, if not given ARPACK invents one

Definition at line 36 of file arpackFabric.hh.

◆ ~ArPackFabric()

virtual eigensolver::ArPackFabric::~ArPackFabric ( )
virtual

◆ ArPackFabric() [2/2]

eigensolver::ArPackFabric::ArPackFabric ( const ArPackFabric )
private

Member Function Documentation

◆ bucklingMode_()

void eigensolver::ArPackFabric::bucklingMode_ ( concepts::Operator< Real > &  stiff,
concepts::Operator< Real > &  mass 
)
private

◆ cayleyMode_()

void eigensolver::ArPackFabric::cayleyMode_ ( concepts::Operator< Real > &  stiff,
concepts::Operator< Real > &  mass 
)
private

◆ info()

virtual std::ostream& eigensolver::ArPackFabric::info ( std::ostream &  os) const
protectedvirtual

Returns information in an output stream.

Reimplemented from concepts::OutputOperator.

◆ normalMode_()

void eigensolver::ArPackFabric::normalMode_ ( concepts::Operator< Real > &  stiff,
concepts::Operator< Real > &  mass 
)
private

◆ operator()()

virtual ArPackSymm& eigensolver::ArPackFabric::operator() ( concepts::Operator< Real > &  stiff,
concepts::Operator< Real > &  mass 
)
virtual

Creates an eigenvalue solver which solves the abstract eigenvalue problem defined by stiff and mass.

This fabric should only by used once as subsequent uses would invalidate older solvers.

Returns
Pointer to eigenvalue solver

Implements eigensolver::SolverFabric< Real >.

◆ reginvMode_()

void eigensolver::ArPackFabric::reginvMode_ ( concepts::Operator< Real > &  stiff,
concepts::Operator< Real > &  mass 
)
private

◆ shiftinvMode_()

void eigensolver::ArPackFabric::shiftinvMode_ ( concepts::Operator< Real > &  stiff,
concepts::Operator< Real > &  mass 
)
private

Member Data Documentation

◆ B_

std::unique_ptr<concepts::Operator<Real> > eigensolver::ArPackFabric::B_
private

Definition at line 51 of file arpackFabric.hh.

◆ kmax_

int eigensolver::ArPackFabric::kmax_
private

Number of eigenpairs to be computed.

Definition at line 53 of file arpackFabric.hh.

◆ maxiter_

int eigensolver::ArPackFabric::maxiter_
private

Maximum number of Arnoldi iterations allowed.

Definition at line 55 of file arpackFabric.hh.

◆ mode_

enum ArPackSymm::modus eigensolver::ArPackFabric::mode_
private

Mode in which ARPACK should be used.

Definition at line 57 of file arpackFabric.hh.

◆ OP_

std::unique_ptr<concepts::Operator<Real> > eigensolver::ArPackFabric::OP_
private

Definition at line 51 of file arpackFabric.hh.

◆ sigma_

const Real eigensolver::ArPackFabric::sigma_
private

Shift for the shift-invert, Buckling or Cayley mode.

Definition at line 63 of file arpackFabric.hh.

◆ solver_

std::unique_ptr<ArPackSymm> eigensolver::ArPackFabric::solver_
private

Definition at line 50 of file arpackFabric.hh.

◆ start_

const concepts::Vector<Real>* eigensolver::ArPackFabric::start_
private

Starting vector, if not given ARPACK invents one.

Definition at line 65 of file arpackFabric.hh.

◆ target_

enum ArPackSymm::which eigensolver::ArPackFabric::target_
private

What sort of eigenvalues to compute.

Definition at line 57 of file arpackFabric.hh.

◆ tmp1_

std::unique_ptr<concepts::Operator<Real> > eigensolver::ArPackFabric::tmp1_
private

Definition at line 51 of file arpackFabric.hh.

◆ tmp2_

std::unique_ptr<concepts::Operator<Real> > eigensolver::ArPackFabric::tmp2_
private

Definition at line 51 of file arpackFabric.hh.

◆ tol_

Real eigensolver::ArPackFabric::tol_
private

Convergence tolerance for the eigenpairs.

Definition at line 57 of file arpackFabric.hh.


The documentation for this class was generated from the following file:
Page URL: http://wiki.math.ethz.ch/bin/view/Concepts/WebHome
21 August 2020
© 2020 Eidgenössische Technische Hochschule Zürich