3 #include "../types.hpp" 4 #include "../utilities/squeeze.hpp" 5 #include "../utilities/adaptors.hpp" 9 namespace propagators {
24 template<
int N,
int D>
26 static void apply(HaWpParamSet<D>& params,
28 params.updateq( 0.5 * delta_t * params.p() );
29 params.updateQ( 0.5 * delta_t * params.P() );
30 params.updateS( 0.25 * delta_t * params.p().dot(params.p()) );
42 static const typename std::remove_reference<decltype(std::declval<L>()[0])>::type&
apply(
const L& level,
int i) {
50 static const L&
apply(
const L& level,
int i) {
61 template<
int N,
int D,
bool MODE>
63 template<
class Potential>
64 static void apply(
int i,
const Potential &V, HaWpParamSet<D> ¶ms,
const real_t &delta_t) {
66 const auto& leading_level_taylor = V.get_leading_level().taylor_at(
complex_t(1,0) * Squeeze<D,
RVector<D>>::
apply(params.q()));
68 params.updateP( -delta_t *
HelperL<MODE>::apply(std::get<2>(leading_level_taylor),i) * params.Q() );
81 template<
int N,
int D>
83 template<
class Potential>
84 static void inhomogeneous(
int i,
const Potential &V, HaWpParamSet<D> ¶ms,
const real_t &delta_t) {
87 template<
class Potential>
88 static void homogeneous(
const Potential &V, HaWpParamSet<D> ¶ms,
const real_t &delta_t) {
96 template<
class Packet,
class Potential,
class IP,
int N,
int D>
100 const Potential& V) {
102 for (
auto& component : packet.components()) {
103 size += component.coefficients().size();
114 const dim_t n_nodes = nodes.cols();
117 #pragma omp parallel for schedule(guided) 118 for(
int l = 0; l < n_nodes; ++l) {
127 F = IP::build_matrix(packet, op);
134 template<
class Packet,
class Potential,
class IP,
int D>
137 const Packet& packet,
138 const Potential &V) {
145 const dim_t n_nodes = nodes.cols();
148 #pragma omp parallel for schedule(guided) 149 for(
int l = 0; l < n_nodes; ++l) {
157 F = IP::build_matrix(packet, op);
169 template<
class Packet,
class Potential,
int N,
int D,
class IP>
171 static void apply(Packet &packet,
const Potential& V,
const real_t& delta_t) {
180 coefficients = (factor * F).exp() * coefficients;
182 PacketToCoefficients<Packet>::from(coefficients, packet);
GVector< complex_t, R > CVector
Definition: types.hpp:50
static void inhomogeneous(int i, const Potential &V, HaWpParamSet< D > ¶ms, const real_t &delta_t)
Definition: basic_steps.hpp:84
Propagate one step with the non-quadratic potential remainder part W.
Definition: basic_steps.hpp:170
Definition: coefficients_file_parser.cpp:10
Performs commong code of StepU for all specializations.
Definition: basic_steps.hpp:62
static const std::remove_reference< decltype(std::declval< L >)[0])>::type & apply(const L &level, int i)
Definition: basic_steps.hpp:42
Eigen::Matrix< real_t, R, C > RMatrix
Definition: types.hpp:22
static void build(CMatrix< Eigen::Dynamic, Eigen::Dynamic > &F, const Packet &packet, const Potential &V)
Definition: basic_steps.hpp:98
std::complex< real_t > complex_t
Definition: types.hpp:15
double real_t
Definition: types.hpp:14
static void homogeneous(const Potential &V, HaWpParamSet< D > ¶ms, const real_t &delta_t)
Definition: basic_steps.hpp:88
Definition: squeeze.hpp:33
Helper class for StepU. If Mode then level is supscripted in i.
Definition: basic_steps.hpp:40
Builds the inner product matrix.
Definition: basic_steps.hpp:97
static const L & apply(const L &level, int i)
Definition: basic_steps.hpp:50
This class represents the Hagedorn parameter set .
Definition: hawp_paramset.hpp:24
GVector< real_t, R > RVector
Definition: types.hpp:53
static void build(CMatrix< Eigen::Dynamic, Eigen::Dynamic > &F, const Packet &packet, const Potential &V)
Definition: basic_steps.hpp:136
Propagate one step with the quadratic potential part U.
Definition: basic_steps.hpp:82
function L
Definition: jquery.js:16
static void apply(Packet &packet, const Potential &V, const real_t &delta_t)
Definition: basic_steps.hpp:171
Eigen::Matrix< complex_t, R, C > CMatrix
Definition: types.hpp:19
Definition: squeeze.hpp:7
static void apply(int i, const Potential &V, HaWpParamSet< D > ¶ms, const real_t &delta_t)
Definition: basic_steps.hpp:64
static void apply(HaWpParamSet< D > ¶ms, const real_t &delta_t)
Definition: basic_steps.hpp:26
Definition: adaptors.hpp:146
int dim_t
Definition: types.hpp:16
Propagate one step with the kinetic operator T.
Definition: basic_steps.hpp:25