Version: SMASH-3.1
propagation.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013-2023
3  * SMASH Team
4  *
5  * GNU General Public License (GPLv3 or later)
6  */
7 
8 #ifndef SRC_INCLUDE_SMASH_PROPAGATION_H_
9 #define SRC_INCLUDE_SMASH_PROPAGATION_H_
10 
11 #include <utility>
12 #include <vector>
13 
14 #include "lattice.h"
15 #include "particles.h"
16 #include "potentials.h"
17 
18 namespace smash {
19 
30  double b_;
37  ExpansionProperties(ExpansionMode mode, double b) : mode_(mode), b_(b) {}
38 };
39 
50 double calc_hubble(double time, const ExpansionProperties &metric);
51 
72 double propagate_straight_line(Particles *particles, double to_time,
73  const std::vector<FourVector> &beam_momentum);
74 
85 void expand_space_time(Particles *particles,
86  const ExperimentParameters &parameters,
87  const ExpansionProperties &metric);
88 
105 void update_momenta(
106  std::vector<Particles> &particles, double dt, const Potentials &pot,
107  RectangularLattice<std::pair<ThreeVector, ThreeVector>> *FB_lat,
108  RectangularLattice<std::pair<ThreeVector, ThreeVector>> *FI3_lat,
109  RectangularLattice<std::pair<ThreeVector, ThreeVector>> *EM_lat,
110  DensityLattice *jB_lat);
111 
112 } // namespace smash
113 #endif // SRC_INCLUDE_SMASH_PROPAGATION_H_
ExpansionMode
Defines properties of expansion for the metric (e.g.
Definition: action.h:24
void update_momenta(std::vector< Particles > &particles, double dt, const Potentials &pot, RectangularLattice< std::pair< ThreeVector, ThreeVector >> *FB_lat, RectangularLattice< std::pair< ThreeVector, ThreeVector >> *FI3_lat, RectangularLattice< std::pair< ThreeVector, ThreeVector >> *EM_lat, DensityLattice *jB_lat)
Updates the momenta of all particles at the current time step according to the equations of motion:
Definition: propagation.cc:111
void expand_space_time(Particles *particles, const ExperimentParameters &parameters, const ExpansionProperties &metric)
Modifies positions and momentum of all particles to account for space-time deformation.
Definition: propagation.cc:86
double propagate_straight_line(Particles *particles, double to_time, const std::vector< FourVector > &beam_momentum)
Propagates the positions of all particles on a straight line to a given moment.
Definition: propagation.cc:44
RectangularLattice< DensityOnLattice > DensityLattice
Conveniency typedef for lattice of density.
Definition: density.h:527
double calc_hubble(double time, const ExpansionProperties &metric)
Calculate the Hubble parameter , which describes how large the expansion flow is.
Definition: propagation.cc:21
Struct containing the type of the metric and the expansion parameter of the metric.
Definition: propagation.h:26
double b_
Expansion parameter in the metric (faster expansion for larger values)
Definition: propagation.h:30
ExpansionMode mode_
Type of metric used.
Definition: propagation.h:28
ExpansionProperties(ExpansionMode mode, double b)
Constructor of ExpansionProperties.
Definition: propagation.h:37