1# -*- coding: utf-8 -*- 2<%inherit file='base'/> 3<%namespace module='pyfr.backends.base.makoutil' name='pyfr'/> 4 5<%pyfr:kernel name='localerrest' ndim='2' 6 err='in fpdtype_t[${str(nvars)}]' 7 errprev='inout fpdtype_t[${str(nvars)}]' 8 dtau_upts='inout fpdtype_t[${str(nvars)}]'> 9 fpdtype_t ferr, ufac, vfac; 10 11% for i in range(nvars): 12 ferr = fabs(${1/atol}*err[${i}]); 13 ufac = pow(ferr, ${-expa}) * pow(errprev[${i}], ${expb}); 14 vfac = min(${maxf}, max(${minf}, ${saff}*ufac)); 15 16 // Compute the size of the next step 17 dtau_upts[${i}] = min(max(vfac*dtau_upts[${i}], ${dtau_min}), ${dtau_max}); 18 errprev[${i}] = ferr; 19% endfor 20</%pyfr:kernel> 21