16 const size_t Np = particles.size();
17 #pragma omp parallel for 18 for (
size_t i = 0; i < Np; i++)
20 particles[i].position += particles[i].velocity*da;
35 const size_t Np = particles.size();
39 #pragma omp parallel for private(vel) 40 for (
size_t i = 0; i < Np; i++)
44 particles[i].velocity = vel*dDda;
51 const size_t Np = particles.size();
55 const FTYPE_t Om = cosmo.
Omega_m;
57 const FTYPE_t f1 = 3/(2*a)*(Om+2*OL)/(Om+OL);
58 const FTYPE_t f2 = 3/(2*a)*Om/(Om+OL)*D/a;
60 #pragma omp parallel for private(force) 61 for (
size_t i = 0; i < Np; i++)
64 assign_from(force_field, particles[i].position, force);
65 force = force*f2 - particles[i].velocity*f1;
66 particles[i].velocity += force*da;
73 const size_t Np = particles.size();
77 const FTYPE_t Om = cosmo.
Omega_m;
79 const FTYPE_t f1 = 3/(2*a)*(Om+2*OL)/(Om+OL);
80 const FTYPE_t f2 = 3/(2*a)*Om/(Om+OL)/a;
82 #pragma omp parallel for private(force) 83 for (
size_t i = 0; i < Np; i++)
86 assign_from(force_field, particles[i].position, force);
87 force = force*f2 - particles[i].velocity*f1;
88 particles[i].velocity += force*da;
class handling particles (position only)
handle cosmological functions like power spectrum, growth, etc.
void stream_step(const double da, std::vector< Particle_v< double >> &particles)
functions for integration of particle trajectories
void kick_step_w_momentum(const Cosmo_Param &cosmo, const double a, const double da, std::vector< Particle_v< double >> &particles, const std::vector< Mesh > &force_field)
cosmological & CCL parameters
void stream_kick_stream(const double da, std::vector< Particle_v< double >> &particles, std::function< void()> kick_step, size_t per)
various simulation parameters
static std::enable_if< std::is_integral< T >::value, T >::type get_per(T vec, size_t per)
basic functions to work with mesh
void kick_step_w_momentum_pm(const Cosmo_Param &cosmo, const double a, const double da, std::vector< Particle_v< double >> &particles, const std::vector< Mesh > &force_field)
float pow(float base, unsigned long int exp)
void kick_step_no_momentum(const Cosmo_Param &cosmo, const double a, std::vector< Particle_v< double >> &particles, const std::vector< Mesh > &vel_field)
void assign_from(const Mesh &field, const Vec_3D< double > &position, double &value, double mod)
double growth_change(double a, const Cosmo_Param &cosmo)