1#ifndef TATOOINE_DUFFING_OSCILLATOR_H
2#define TATOOINE_DUFFING_OSCILLATOR_H
6#include <boost/math/constants/constants.hpp>
11template <
typename Real>
19 static constexpr auto pi = boost::math::constants::pi<Real>();
47template <
typename Real>
49 :
vectorfield<forced_duffing_oscillator<Real>, Real, 2> {
56 static constexpr auto pi = boost::math::constants::pi<Real>();
62 return {x(1), x(0) - x(0) * x(0) * x(0) +
m_eps * std::sin(t)};
Definition: duffing_oscillator.h:12
Real m_alpha
Definition: duffing_oscillator.h:18
auto delta() const
Definition: duffing_oscillator.h:42
static constexpr auto pi
Definition: duffing_oscillator.h:19
auto beta() -> auto &
Definition: duffing_oscillator.h:38
Real m_delta
Definition: duffing_oscillator.h:18
Real m_beta
Definition: duffing_oscillator.h:18
auto alpha() const
Definition: duffing_oscillator.h:36
constexpr auto in_domain(const pos_type &, Real) const -> bool override
Definition: duffing_oscillator.h:30
auto delta() -> auto &
Definition: duffing_oscillator.h:41
auto beta() const
Definition: duffing_oscillator.h:39
auto alpha() -> auto &
Definition: duffing_oscillator.h:35
constexpr auto evaluate(const pos_type &x, Real) const -> tensor_type override
Definition: duffing_oscillator.h:24
constexpr duffing_oscillator(Real delta, Real alpha, Real beta) noexcept
Definition: duffing_oscillator.h:21
Definition: duffing_oscillator.h:49
constexpr auto evaluate(pos_type const &x, Real const t) const -> tensor_type
Definition: duffing_oscillator.h:61
constexpr forced_duffing_oscillator(Real eps=0.25) noexcept
Definition: duffing_oscillator.h:58
Real m_eps
Definition: duffing_oscillator.h:55
constexpr auto in_domain(pos_type const &, Real const) const -> bool
Definition: duffing_oscillator.h:65
static constexpr auto pi
Definition: duffing_oscillator.h:56
~forced_duffing_oscillator() override=default
vec< real_type, NumDimensions > pos_type
Definition: field.h:20
Tensor tensor_type
Definition: field.h:18