29 size_t max_iter = 1000;
30 Float a_min = up ? ac : 0;
31 Float a_max = up ? 100 : ac;
32 for (
size_t k = 0; abs(a_max - a_min) > tol; ++k) {
33 Float a1 = (a_max + a_min)/2;
34 Float lambda1 = 8*sqr(a1/cosh(a1));
35 if ((up &&
lambda > lambda1) || (!up &&
lambda < lambda1))
38 check_macro (k < max_iter,
"lambda2alpha: max_iter=" << k
39 <<
" reached and err=" << a_max - a_min);
41 return(a_max + a_min)/2;
see the Float page for the full documentation
check_macro(expr1.have_homogeneous_space(Xh1), "dual(expr1,expr2); expr1 should have homogeneous space. HINT: use dual(interpolate(Xh, expr1),expr2)")
Float lambda2alpha(Float lambda, bool up=false)
The combustion problem – the critical parameter value as a function.