1#ifndef TATOOINE_DIFFERENTIATED_FLOWMAP_H
2#define TATOOINE_DIFFERENTIATED_FLOWMAP_H
11template <flowmap_concept Flowmap>
19 return flowmap_type::num_dimensions();
21 using vec_type =
typename flowmap_type::vec_type;
22 using pos_type =
typename flowmap_type::pos_type;
47 auto offset = pos_type::zeros();
51 derivative.col(i) =
m_flowmap(y0 + offset, t0, tau) * dx -
74template <flowmap_concept Flowmap>
79template <flowmap_concept Flowmap>
84template <flowmap_concept Flowmap>
89template <flowmap_concept Flowmap>
94template <flowmap_concept Flowmap>
99template <flowmap_concept Flowmap>
101 typename Flowmap::pos_type
const&)
106 std::forward<decltype(flowmap)>(
flowmap)};
112 std::forward<decltype(flowmap)>(
flowmap), epsilon};
118 std::decay_t<
decltype(
flowmap)>::num_dimensions()>
auto&& epsilon) {
120 std::forward<decltype(flowmap)>(
flowmap),
121 std::forward<decltype(epsilon)>(epsilon)};
132 std::decay_t<
decltype(
flowmap)>::num_dimensions()>
auto&& epsilon) {
134 std::forward<decltype(flowmap)>(
flowmap),
135 std::forward<decltype(epsilon)>(epsilon)};
140template <flowmap_concept Flowmap>
147template <
typename Flowmap>
151template <
typename Flowmap>
162template <
typename Flowmap>
166template <
typename Flowmap>
Definition: concepts.h:33
Definition: concepts.h:39
Definition: tensor_concepts.h:36
Definition: flowmap_concept.h:15
static constexpr numerical_t numerical
Definition: tags.h:93
Definition: algorithm.h:6
auto flowmap(vectorfield< V, Real, NumDimensions > const &v, tag::numerical_t)
Definition: numerical_flowmap.h:412
constexpr auto diff(polynomial< Real, Degree > const &f)
Definition: polynomial.h:179
static constexpr forward_tag forward
Definition: tags.h:9
static constexpr auto is_differentiated_flowmap
Definition: differentiated_flowmap.h:171
Definition: differentiated_flowmap.h:141
Definition: differentiated_flowmap.h:160
Default differentiated flowmap uses central differences for differentiating.
Definition: differentiated_flowmap.h:12
typename flowmap_type::pos_type pos_type
Definition: differentiated_flowmap.h:22
numerically_differentiated_flowmap(convertible_to< Flowmap > auto &&flowmap, vec_type const &epsilon)
Definition: differentiated_flowmap.h:38
auto set_epsilon(vec_type &&epsilon)
Definition: differentiated_flowmap.h:68
auto epsilon(std::size_t i) -> auto &
Definition: differentiated_flowmap.h:66
std::decay_t< Flowmap > flowmap_type
Definition: differentiated_flowmap.h:15
static constexpr auto default_epsilon
Definition: differentiated_flowmap.h:25
vec_type m_epsilon
Definition: differentiated_flowmap.h:29
typename flowmap_type::vec_type vec_type
Definition: differentiated_flowmap.h:21
auto epsilon() const -> auto const &
Definition: differentiated_flowmap.h:63
auto set_epsilon(vec_type const &epsilon)
Definition: differentiated_flowmap.h:67
static constexpr auto num_dimensions() -> std::size_t
Definition: differentiated_flowmap.h:18
typename flowmap_type::real_type real_type
Definition: differentiated_flowmap.h:17
auto flowmap() -> auto &
Definition: differentiated_flowmap.h:70
numerically_differentiated_flowmap(convertible_to< Flowmap > auto &&flowmap, real_type const epsilon=default_epsilon)
Definition: differentiated_flowmap.h:32
auto epsilon() -> auto &
Definition: differentiated_flowmap.h:64
auto operator()(pos_type const &y0, real_type const t0, real_type const tau) const
Definition: differentiated_flowmap.h:58
auto epsilon(std::size_t i) const
Definition: differentiated_flowmap.h:65
auto flowmap() const -> auto const &
Definition: differentiated_flowmap.h:69
auto evaluate(pos_type const &y0, real_type const t0, real_type const tau) const
Definition: differentiated_flowmap.h:43
mat< real_type, num_dimensions(), num_dimensions()> mat_type
Definition: differentiated_flowmap.h:23
flowmap_type m_flowmap
Definition: differentiated_flowmap.h:28