diff --git a/src/lyapunov.c b/src/lyapunov.c index b496cf6..d2c48d3 100644 --- a/src/lyapunov.c +++ b/src/lyapunov.c @@ -214,6 +214,7 @@ int lyapunov_D_step( ){ int lx,ly; double alpha; + int n; // compute fft of u for future use lyapunov_fft_u_T(u,K1,K2,N1,N2,fftu1,fftu2,fftu3,fftu4); @@ -237,14 +238,15 @@ int lyapunov_D_step( // loop over columns for(lx=0;lx<=K1;lx++){ for(ly=(lx>0 ? -K2 : 1);ly<=K2;ly++){ - - // do not use adaptive step algorithms for the tangent flow: it must be locked to the same times as u - if(algorithm==ALGORITHM_RK2){ - lyapunov_D_step_rk2(flow+2*klookup_sym(lx,ly,K2)*MATSIZE, u, K1, K2, N1, N2, alpha, delta, L, g, tmp4, fftu1, fftu2, fftu3, fftu4, fft1, ifft, tmp1, tmp2, irreversible); - } else if (algorithm==ALGORITHM_RK4) { - lyapunov_D_step_rk4(flow+2*klookup_sym(lx,ly,K2)*MATSIZE, u, K1, K2, N1, N2, alpha, delta, L, g, tmp4, fftu1, fftu2, fftu3, fftu4, fft1, ifft, tmp1, tmp2, tmp3, irreversible); - } else { - fprintf(stderr,"bug: unknown algorithm for tangent flow: %u, contact ian.jauslin@rutgers.edu\n",algorithm); + for(n=0;n<=1;n++){ + // do not use adaptive step algorithms for the tangent flow: it must be locked to the same times as u + if(algorithm==ALGORITHM_RK2){ + lyapunov_D_step_rk2(flow+(2*klookup_sym(lx,ly,K2)+n)*MATSIZE, u, K1, K2, N1, N2, alpha, delta, L, g, tmp4, fftu1, fftu2, fftu3, fftu4, fft1, ifft, tmp1, tmp2, irreversible); + } else if (algorithm==ALGORITHM_RK4) { + lyapunov_D_step_rk4(flow+(2*klookup_sym(lx,ly,K2)+n)*MATSIZE, u, K1, K2, N1, N2, alpha, delta, L, g, tmp4, fftu1, fftu2, fftu3, fftu4, fft1, ifft, tmp1, tmp2, tmp3, irreversible); + } else { + fprintf(stderr,"bug: unknown algorithm for tangent flow: %u, contact ian.jauslin@rutgers.edu\n",algorithm); + } } } }