template<typename fs_type>
class Feel::Aitken< fs_type >
Aitken relaxation method for fixed point iterations.
auto Xh = space_type::New(mesh);
auto residual = Xh->element();
auto u_old->element();
auto u_new->element();
AitkenType relaxmethod = (AitkenType)this->vm()["relaxmethod"].as<int>();
Aitken<space_type> aitken( Xh, relaxmethod,init_theta, tol );
in
this last
case the relaxation parameter
theta remains fixed
during the itérations(
theta = init_theta) and the particular case (init_theta=1)
corresponds to the case without relaxation
while(!aitken.isFinished())
{
u_old = u_new;
commpute u_new;
residual = u_new-u_old;
u_new = aitken.apply(residual, u_new);
aitken.printInfo();
++aitken;
}
- Author
- Goncalo Pena
-
Christophe Prud'homme
-
Vincent Chabannes
space_ptrtype Xh;
space_type::element_type residual( Xh );
space_type::element_type u_old( Xh );
space_type::element_type u_new( Xh );
Aitken<space_type> aitken( Xh );
aitken.initialize( residual, u_new );
aitken.resetPreviousParameter();
for( int i = 0; i < niter; ++i )
{
aitken.SetElement( residual, u_new );
theta = aitken.calculateParameter();
aitken.shiftRight();
u_old = u_new;
}
- Author
- Vincent Chabannes
|
typedef std::map< std::string,
double > | convergence_iteration_type |
|
typedef std::map< int,
convergence_iteration_type > | convergence_type |
|
typedef
functionspace_type::template
Element< typename
functionspace_type::value_type,
typename VectorUblas< typename
functionspace_type::value_type >
::range::type > | element_range_type |
|
typedef
functionspace_type::template
Element< typename
functionspace_type::value_type,
typename VectorUblas< typename
functionspace_type::value_type >
::range::type > | element_range_type |
|
typedef
functionspace_type::element_type | element_type |
|
typedef
functionspace_type::element_type | element_type |
|
typedef boost::shared_ptr
< functionspace_type > | functionspace_ptrtype |
|
typedef boost::shared_ptr
< functionspace_type > | functionspace_ptrtype |
|
typedef fs_type | functionspace_type |
|
typedef fs_type | functionspace_type |
|
typedef Aitken< fs_type > | self_type |
|
|
| Aitken (functionspace_ptrtype _Xh, double _failsafeParameter=0.1) |
|
| Aitken (Aitken const &tc) |
|
| Aitken (functionspace_ptrtype _Xh, AitkenType _aitkenType=AITKEN_STANDARD, double _failsafeParameter=1.0, double _tol=1.0e-6, double _minParam=1e-4) |
|
| Aitken (Aitken const &tc) |
|
double | calculateParameter () |
|
void | calculateParameter () |
|
void | computeResidualNorm () |
|
convergence_type const & | convergenceHistory () const |
|
void | forceConvergence (bool b) |
|
void | initialize (element_type const &residual, element_type const &elem) |
|
void | initialize (element_type const &residual, element_range_type const &elem) |
|
bool | isFinished () |
|
uint | nIterations () |
|
template<typename eltType > |
element_type | operator() (element_type const &residual, eltType const &elem, bool _forceRelax=false) |
|
self_type & | operator++ () |
|
void | printInfo () |
|
void | relaxationStep (element_type &new_elem) |
|
template<typename eltType > |
void | relaxationStep (eltType &new_elem) |
|
void | resetPreviousParameter () |
|
double | residualNorm () |
|
void | restart () |
|
void | saveConvergenceHistory (std::string const &fname) const |
|
void | setElement (element_type const &residual, element_type const &elem) |
|
void | setElement (element_type const &residual, element_range_type const &elem) |
|
void | setElement (element_type const &residual, element_type const &elem) |
|
void | setElement (element_type const &residual, element_range_type const &elem) |
|
void | setTheta (double v) |
|
void | setType (AitkenType t) |
| set Aitken method type
|
|
void | shiftRight () |
|
void | shiftRight () |
|
double | theta () |
|
AitkenType | type () const |
|
| ~Aitken () |
|
| ~Aitken () |
|