void operator()() { j1 = (traj_x(nt2::_(2,M-1),nt2::_(3,N)) - traj_x(nt2::_(2,M-1),nt2::_(1,N-2)))/(2*dX); j2 = (traj_x(nt2::_(3,M),nt2::_(2,N-1)) - traj_x(nt2::_(1,M-2),nt2::_(2,N-1)))/(2*dY); j3 = (traj_y(nt2::_(2,M-1),nt2::_(3,N)) - traj_y(nt2::_(2,M-1),nt2::_(1,N-2)))/(2*dX); j4 = (traj_y(nt2::_(3,M),nt2::_(2,N-1)) - traj_y(nt2::_(1,M-2),nt2::_(2,N-1)))/(2*dY); jacob1 = nt2::sqr(j1) + nt2::sqr(j3); jacob2 = j1*j2 + j3*j4; jacob4 = nt2::sqr(j2) + nt2::sqr(j4); sqrtdelta = nt2::sqrt(nt2::sqr(jacob1+jacob4) - T(4)*(jacob1*jacob4-nt2::sqr(jacob2))); lambda(nt2::_,nt2::_,1) = T(0.5)*(jacob1 + jacob4 + sqrtdelta); lambda(nt2::_,nt2::_,2)= T(0.5)*(jacob1 + jacob4 - sqrtdelta); res= nt2::maximum(lambda,3); }
Compute_FTLE(std::size_t m, std::size_t n, T const& min, T const& max ) : M(m),N(n), dX(0.01), dY(0.01), traj_x(nt2::of_size(m,n)), traj_y(nt2::of_size(m,n)), lambda(nt2::of_size(m-2, n-2,2)) { for(std::size_t j = 1; j <= N; ++j) for(std::size_t i = 1; i <= M; ++i) traj_y(i,j) = traj_x(i,j) = roll<T>(min,max);; }
Compute(std::size_t m, std::size_t n, T const& min, T const& max ) : M(m),N(n), dX(0.01), dY(0.01), traj_x(nt2::of_size(m,n)), traj_y(nt2::of_size(m,n)) , j1(nt2::of_size(m-2, n-2)), j2(nt2::of_size(m-2, n-2)), j3(nt2::of_size(m-2, n-2)) , j4(nt2::of_size(m-2, n-2)), jacob1(nt2::of_size(m-2, n-2)), jacob2(nt2::of_size(m-2, n-2)) , jacob4(nt2::of_size(m-2, n-2)), sqrtdelta(nt2::of_size(m-2, n-2)), lambda(nt2::of_size(m-2, n-2,2)) , res(nt2::of_size(m-2, n-2)) { for(std::size_t j = 1; j <= N; ++j){ for(std::size_t i = 1; i <= M; ++i){ traj_y(i,j) = traj_x(i,j) = roll<T>(min,max); } } }