26 #ifndef __AitkenExtrapolation2
27 #define __AitkenExtrapolation2 1
29 #include <feel/feeldiscr/functionspace.hpp>
30 #include <feel/feelalg/vector.hpp>
64 template<
typename fs_type >
70 typedef fs_type functionspace_type;
71 typedef boost::shared_ptr<functionspace_type> functionspace_ptrtype;
73 typedef typename functionspace_type::element_type element_type;
75 typedef typename functionspace_type::template Element<
typename functionspace_type::value_type,
76 typename VectorUblas<typename functionspace_type::value_type>::range::type > element_range_type;
89 Aitken( functionspace_ptrtype _Xh,
double _failsafeParameter = 0.1 )
92 failsafeParameter( _failsafeParameter ),
93 previousParameter( _failsafeParameter ),
94 previousResidual( Xh,
"previous residual" ),
95 previousElement( Xh,
"previous element" ),
96 currentResidual( Xh,
"current residual" ),
97 currentElement( Xh,
"current element" )
107 failsafeParameter( tc.failsafeParameter ),
108 previousParameter( tc.previousParameter ),
109 previousResidual( tc.previousResidual ),
110 previousElement( tc.previousElement ),
111 currentResidual( tc.currentResidual ),
112 currentElement( tc.currentElement )
126 void initialize( element_type
const& residual, element_type
const& elem )
128 previousResidual = residual;
129 previousElement = elem;
132 void initialize( element_type
const& residual, element_range_type
const& elem )
134 previousResidual = residual;
135 previousElement.zero();
136 previousElement.add( 1.,elem );
147 void setElement( element_type
const& residual, element_type
const& elem )
149 currentResidual = residual;
150 currentElement = elem;
153 void setElement( element_type
const& residual, element_range_type
const& elem )
155 currentResidual = residual;
156 currentElement.zero();
157 currentElement.add( 1.,elem );
175 new_elem = currentResidual;
176 new_elem.scale( -previousParameter );
178 new_elem += currentElement;
187 previousResidual = currentResidual;
188 previousElement = currentElement;
196 previousParameter = failsafeParameter;
204 functionspace_ptrtype Xh;
206 double failsafeParameter, previousParameter;
208 element_type previousResidual, previousElement, currentResidual, currentElement;
213 template<
typename fs_type >
217 element_type aux( Xh,
"aux" );
219 aux = currentResidual;
220 aux -= previousResidual;
224 aux.scale( 1.0/scalar );
226 element_type aux2( Xh,
"aux2" );
228 aux2 = currentElement;
229 aux2 -= previousElement;
232 scalar = -previousParameter*scalar;
239 scalar = failsafeParameter;
242 previousParameter = scalar;