SimiLie
Loading...
Searching...
No Matches
dedonder_weyl_equations.hpp
1// SPDX-FileCopyrightText: 2026 Baptiste Legouix
2// SPDX-License-Identifier: AGPL-3.0-or-later
3
4#pragma once
5
6#include <cstddef>
7#include <span>
8#include <utility>
9
11
12template <class Hamiltonian>
14{
15 Hamiltonian m_hamiltonian;
16
17public:
18 constexpr explicit DeDonderWeylEquations(Hamiltonian hamiltonian)
19 : m_hamiltonian(std::move(hamiltonian))
20 {
21 }
22
23 template <class Index>
24 [[nodiscard]] constexpr double potential_grad(
25 std::span<double const, Hamiltonian::N> moments) const
26 {
27 return m_hamiltonian.template dhamiltonian_dmoments<Index>(moments);
28 }
29
30 template <class Index>
31 [[nodiscard]] constexpr double potential_grad(double moments_component) const
32 {
33 return m_hamiltonian.template dhamiltonian_dmoments<Index>(moments_component);
34 }
35
36 template <class Index>
37 [[nodiscard]] constexpr double moments_div(std::span<double const, 1> potential) const
38 {
39 static_cast<void>(sizeof(Index));
40 return -m_hamiltonian.dhamiltonian_dpotential(potential[0]);
41 }
42
43 [[nodiscard]] constexpr double moments_div(double potential) const
44 {
45 return -m_hamiltonian.dhamiltonian_dpotential(potential);
46 }
47};
48
49} // namespace similie::physics
constexpr double moments_div(std::span< double const, 1 > potential) const
constexpr double potential_grad(double moments_component) const
constexpr double moments_div(double potential) const
constexpr DeDonderWeylEquations(Hamiltonian hamiltonian)
constexpr double potential_grad(std::span< double const, Hamiltonian::N > moments) const