Tatooine
harmonic_oscilator.h
Go to the documentation of this file.
1#ifndef TATOOINE_FIELDS_ANALYTICAL_NUMERICAL_HARMONIC_OSCILATOR_H
2#define TATOOINE_FIELDS_ANALYTICAL_NUMERICAL_HARMONIC_OSCILATOR_H
3//==============================================================================
4#include <tatooine/field.h>
5//==============================================================================
7//==============================================================================
9template <typename Real>
10struct harmonic_oscilator : vectorfield<harmonic_oscilator<Real>, Real, 2> {
13 using typename parent_type::tensor_type;
14 //============================================================================
15 Real m_gamma;
16 //============================================================================
17 explicit constexpr harmonic_oscilator(Real const gamma = 0.15) noexcept
18 : m_gamma{gamma} {}
19 //------------------------------------------------------------------------------
20 constexpr harmonic_oscilator(harmonic_oscilator const&) = default;
21 constexpr harmonic_oscilator(harmonic_oscilator&&) noexcept = default;
22 //------------------------------------------------------------------------------
23 constexpr auto operator=(harmonic_oscilator const&)
24 -> harmonic_oscilator& = default;
25 constexpr auto operator=(harmonic_oscilator&&) noexcept
26 -> harmonic_oscilator& = default;
27 //------------------------------------------------------------------------------
28 virtual ~harmonic_oscilator() = default;
29 //----------------------------------------------------------------------------
30 [[nodiscard]] constexpr auto evaluate(fixed_size_vec<2> auto const& p,
31 Real const t) const -> tensor_type {
32 return tensor_type{p.y(), -p.x() - m_gamma * p.y()};
33 }
34};
35//==============================================================================
36} // namespace tatooine::analytical::numerical
37//==============================================================================
38#endif
Definition: tensor_concepts.h:33
Definition: abcflow.h:7
Harmonic Oscilator.
Definition: harmonic_oscilator.h:10
constexpr harmonic_oscilator(harmonic_oscilator &&) noexcept=default
constexpr harmonic_oscilator(harmonic_oscilator const &)=default
constexpr harmonic_oscilator(Real const gamma=0.15) noexcept
Definition: harmonic_oscilator.h:17
Real m_gamma
Definition: harmonic_oscilator.h:15
constexpr auto evaluate(fixed_size_vec< 2 > auto const &p, Real const t) const -> tensor_type
Definition: harmonic_oscilator.h:30
Definition: field.h:134
Tensor tensor_type
Definition: field.h:18