ug4
|
#include <power_method.h>
Public Types | |
typedef TAlgebra | algebra_type |
typedef TAlgebra::matrix_type | matrix_type |
typedef TAlgebra::vector_type | vector_type |
typedef vector_type::value_type | vector_value_type |
Public Member Functions | |
int | calculate_max_eigenvalue () |
int | calculate_min_eigenvalue () |
size_t | get_iterations () |
double | get_max_eigenvalue () |
double | get_min_eigenvalue () |
PowerMethod () | |
void | print_eigenvector () |
void | print_matrix_A () |
void | print_matrix_B () |
void | set_linear_operator_A (SmartPtr< ILinearOperator< vector_type > > loA) |
void | set_linear_operator_B (SmartPtr< ILinearOperator< vector_type > > loB) |
void | set_max_iterations (size_t maxIterations) |
void | set_precision (double precision) |
void | set_solver (SmartPtr< ILinearOperatorInverse< vector_type > > solver) |
void | set_start_vector (SmartPtr< vector_type > vec) |
Public Attributes | |
size_t | m_iteration |
Private Types | |
typedef IPreconditioner< TAlgebra >::matrix_operator_type | matrix_operator_type |
Private Member Functions | |
double | B_norm (vector_type &x) |
SmartPtr< vector_type > | create_approximation_vector () |
void | normalize_approximations () |
Private Attributes | |
double | m_dMaxEigenvalue |
double | m_dMinEigenvalue |
double | m_dPrecision |
size_t | m_maxIterations |
int | m_numDirichletRows |
SmartPtr< vector_type > | m_spEigenvector |
SmartPtr< vector_type > | m_spEigenvectorOld |
SmartPtr< ILinearOperator< vector_type > > | m_spLinOpA |
SmartPtr< ILinearOperator< vector_type > > | m_spLinOpB |
SmartPtr< matrix_operator_type > | m_spMatOpA |
SmartPtr< matrix_operator_type > | m_spMatOpB |
SmartPtr< vector_type > | m_spResidual |
SmartPtr< ILinearOperatorInverse< vector_type > > | m_spSolver |
std::vector< bool > | m_vbDirichlet |
Power Method Eigensolver
The Power Method solves generalized eigenvalue problems of the form A v = lambda B v calculating the largest/smallest (in terms of abs(lambda)) eigenvalues of the problem for sparse matrices A and B which e.g. emerge from FE or FV discretizations.
typedef TAlgebra ug::PowerMethod< TAlgebra >::algebra_type |
|
private |
typedef TAlgebra::matrix_type ug::PowerMethod< TAlgebra >::matrix_type |
typedef TAlgebra::vector_type ug::PowerMethod< TAlgebra >::vector_type |
typedef vector_type::value_type ug::PowerMethod< TAlgebra >::vector_value_type |
|
inline |
References ug::PowerMethod< TAlgebra >::m_dMaxEigenvalue, ug::PowerMethod< TAlgebra >::m_dMinEigenvalue, ug::PowerMethod< TAlgebra >::m_dPrecision, ug::PowerMethod< TAlgebra >::m_iteration, ug::PowerMethod< TAlgebra >::m_maxIterations, ug::PowerMethod< TAlgebra >::m_numDirichletRows, ug::PowerMethod< TAlgebra >::m_spLinOpA, ug::PowerMethod< TAlgebra >::m_spLinOpB, ug::PowerMethod< TAlgebra >::m_spMatOpA, ug::PowerMethod< TAlgebra >::m_spMatOpB, SPNULL, and UG_LOG.
|
inlineprivate |
References ug::EnergyNorm(), ug::PowerMethod< TAlgebra >::m_spMatOpB, and SPNULL.
Referenced by ug::PowerMethod< TAlgebra >::normalize_approximations().
|
inline |
References ug::PowerMethod< TAlgebra >::create_approximation_vector(), ug::PowerMethod< TAlgebra >::m_dMaxEigenvalue, ug::PowerMethod< TAlgebra >::m_dPrecision, ug::PowerMethod< TAlgebra >::m_iteration, ug::PowerMethod< TAlgebra >::m_maxIterations, ug::PowerMethod< TAlgebra >::m_spEigenvector, ug::PowerMethod< TAlgebra >::m_spEigenvectorOld, ug::PowerMethod< TAlgebra >::m_spLinOpA, ug::PowerMethod< TAlgebra >::m_spLinOpB, ug::PowerMethod< TAlgebra >::m_spResidual, ug::PowerMethod< TAlgebra >::m_spSolver, ug::PowerMethod< TAlgebra >::m_vbDirichlet, ug::PowerMethod< TAlgebra >::normalize_approximations(), PROFILE_FUNC_GROUP, ug::PST_CONSISTENT, SPNULL, UG_COND_THROW, UG_LOG, and ug::VecScaleAdd().
|
inline |
References ug::PowerMethod< TAlgebra >::create_approximation_vector(), ug::PowerMethod< TAlgebra >::m_dMinEigenvalue, ug::PowerMethod< TAlgebra >::m_dPrecision, ug::PowerMethod< TAlgebra >::m_iteration, ug::PowerMethod< TAlgebra >::m_maxIterations, ug::PowerMethod< TAlgebra >::m_spEigenvector, ug::PowerMethod< TAlgebra >::m_spEigenvectorOld, ug::PowerMethod< TAlgebra >::m_spLinOpA, ug::PowerMethod< TAlgebra >::m_spLinOpB, ug::PowerMethod< TAlgebra >::m_spResidual, ug::PowerMethod< TAlgebra >::m_spSolver, ug::PowerMethod< TAlgebra >::m_vbDirichlet, ug::PowerMethod< TAlgebra >::normalize_approximations(), PROFILE_FUNC_GROUP, ug::PST_ADDITIVE, ug::PST_CONSISTENT, SPNULL, UG_COND_THROW, UG_LOG, and ug::VecScaleAdd().
|
inlineprivate |
|
inline |
References ug::PowerMethod< TAlgebra >::m_iteration.
|
inline |
References ug::PowerMethod< TAlgebra >::m_dMaxEigenvalue.
|
inline |
References ug::PowerMethod< TAlgebra >::m_dMinEigenvalue.
|
inlineprivate |
|
inline |
References ug::PowerMethod< TAlgebra >::m_spEigenvector.
|
inline |
References ug::PowerMethod< TAlgebra >::m_spMatOpA, and ug::PrintMatrix().
|
inline |
References ug::PowerMethod< TAlgebra >::m_spMatOpB, and ug::PrintMatrix().
|
inline |
|
inline |
|
inline |
References ug::PowerMethod< TAlgebra >::m_maxIterations.
|
inline |
References ug::PowerMethod< TAlgebra >::m_dPrecision.
|
inline |
References ug::PowerMethod< TAlgebra >::m_spSolver.
|
inline |
References ug::PowerMethod< TAlgebra >::m_spEigenvector.
|
private |
|
private |
|
private |
size_t ug::PowerMethod< TAlgebra >::m_iteration |
|
private |
|
private |
|
private |
Referenced by ug::PowerMethod< TAlgebra >::calculate_max_eigenvalue(), ug::PowerMethod< TAlgebra >::calculate_min_eigenvalue(), ug::PowerMethod< TAlgebra >::create_approximation_vector(), ug::PowerMethod< TAlgebra >::normalize_approximations(), ug::PowerMethod< TAlgebra >::print_eigenvector(), and ug::PowerMethod< TAlgebra >::set_start_vector().
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |