1#ifndef TATOOINE_ANALYTICAL_NUMERICAL_MODIFIED_DOUBLEGYRE_H
2#define TATOOINE_ANALYTICAL_NUMERICAL_MODIFIED_DOUBLEGYRE_H
15template <
typename Real>
22 static constexpr Real
pi = M_PI;
24 static constexpr Real
omega = 2 *
pi * 0.1;
25 static constexpr Real
A = 0.1;
26 static constexpr Real
c = -0.2040811331;
27 static constexpr Real
cc =
c *
c;
28 static constexpr Real
d = 9.964223388;
33 Real
const b = 1 - 2 * a;
34 Real
const f = a * x(0) * x(0) + b * x(0);
35 Real
const df = 2 * a * x(0) + b;
38 pi *
A * gcem::cos(
pi * f) * gcem::sin(
pi * x(1)) * df};
42 Real
const r =
pi / 5 * t +
d;
45 std::clamp<Real>((4 *
pi *
c *
sin(r) - 4 * gcem::asin(2 *
c *
cos(r))) /
49 Real
const p = 5 /
pi * gcem::asin(q) - t;
54 auto at(Real
const t)
const {
69 auto at(Real
const t)
const {
79 template <
template <
typename, std::
size_t>
typename ODESolver>
90 auto at(Real
const t)
const {
99 template <
template <
typename, std::
size_t>
102 Real
const eps = 1e-10)
const {
constexpr auto flowmap(vectorfield< autonomous_particles_test< Real >, Real, 2 > const &v, tag::numerical_t)
Definition: autonomous_particles_test.h:75
constexpr auto cos(arithmetic auto const x)
Definition: math.h:28
constexpr auto sin(arithmetic auto const x)
Definition: math.h:27
Definition: modified_doublegyre.h:68
auto operator()(Real const t) const
Definition: modified_doublegyre.h:72
auto at(Real const t) const
Definition: modified_doublegyre.h:69
Definition: modified_doublegyre.h:53
auto at(Real const t) const
Definition: modified_doublegyre.h:54
auto operator()(Real const t) const
Definition: modified_doublegyre.h:57
Definition: modified_doublegyre.h:80
Real m_t0
Definition: modified_doublegyre.h:81
this_type const & m_v
Definition: modified_doublegyre.h:83
Real m_eps
Definition: modified_doublegyre.h:82
auto operator()(Real const t) const
Definition: modified_doublegyre.h:96
numerical_flowmap< this_type const &, ODESolver > m_flowmap
Definition: modified_doublegyre.h:84
auto at(Real const t) const
Definition: modified_doublegyre.h:90
lagrangian_coherent_structure_type(this_type const &v, Real const t0, Real const eps)
Definition: modified_doublegyre.h:86
Definition: modified_doublegyre.h:16
static constexpr Real A
Definition: modified_doublegyre.h:25
constexpr auto hyperbolic_trajectory(Real t) const
Definition: modified_doublegyre.h:64
static constexpr auto timeoffset(Real const t)
Definition: modified_doublegyre.h:41
constexpr auto hyperbolic_trajectory_spacetime() const
Definition: modified_doublegyre.h:75
constexpr auto hyperbolic_trajectory() const
Definition: modified_doublegyre.h:60
static constexpr Real cc
Definition: modified_doublegyre.h:27
static constexpr Real c
Definition: modified_doublegyre.h:26
auto lagrangian_coherent_structure(Real const t, Real const eps=1e-10) const
Definition: modified_doublegyre.h:101
static constexpr Real omega
Definition: modified_doublegyre.h:24
static constexpr Real d
Definition: modified_doublegyre.h:28
static constexpr Real epsilon
Definition: modified_doublegyre.h:23
static constexpr Real pi
Definition: modified_doublegyre.h:22
constexpr auto evaluate(pos_type const &x, Real const t) const -> tensor_type
Definition: modified_doublegyre.h:30
vec< real_type, NumDimensions > pos_type
Definition: field.h:20
Tensor tensor_type
Definition: field.h:18
Definition: numerical_flowmap.h:17
Definition: rungekuttafehlberg78.h:28