Fast Methods for Cosmological Simulations
FastSim serves as a tool for quick N-body simulations in modified gravity.
frozen_potential.cpp
Go to the documentation of this file.
1 
9 #include "frozen_potential.hpp"
10 #include "core_app.h"
11 #include "core_mesh.h"
12 #include "integration.hpp"
13 #include "params.hpp"
14 
16  App_Var<Particle_v<FTYPE_t>>(sim, "FP", "Frozen-potential approximation") {}
17 
18 App_Var_FP::App_Var_FP(const Sim_Param &sim, const std::string& app_short, const std::string& app_long):
19  App_Var<Particle_v<FTYPE_t>>(sim, app_short, app_long) {}
20 
22 {// Leapfrog method for frozen-potential
23  auto kick_step = [&](){ kick_step_w_momentum(sim.cosmo, a_half(), da(), particles, app_field); };
25 }
26 
28  App_Var_FP(sim, "PM", "Particle-mesh approximation") {}
29 
31 {// Leapfrog method for frozen-potential
32  auto kick_step = [&]()
33  {
34  // Get discrete density from particles
36 
37  // get rho_k
39 
40  // get potential
42 
43  // CIC correction of potential, get forces in real space
45 
46  // apply forces
48  };
50 }
class containing core variables and methods for approximations
Definition: app_var.hpp:41
: class containing variables and methods for Frozen-potential approximation
virtual void pot_corr(std::vector< Mesh > &vel_field, Mesh &pot_k)
void get_rho_from_par(const std::vector< T > &particles, Mesh &rho, const Sim_Param &sim)
Definition: core_app.cpp:278
void stream_kick_stream(const double da, std::vector< Particle_v< double >> &particles, std::function< void()> kick_step, size_t per)
Definition: integration.cpp:24
class handling particles (position only)
Box_Opt box_opt
Definition: params.hpp:202
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)
Definition: integration.cpp:48
App_Var_PM(const Sim_Param &sim)
: class storing simulation parameters
Definition: params.hpp:193
void fftw_execute_dft_r2c(const FFTW_PLAN_TYPE &p_F, Mesh &rho)
compute forward (real to complex) FFT on mesh (inplace)
Definition: core_mesh.cpp:247
functions for integration of particle trajectories
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)
Definition: integration.cpp:70
void gen_pot_k(const Mesh &rho_k, Mesh &pot_k)
Definition: core_app.cpp:496
std::vector< Mesh > app_field
Definition: app_var.hpp:63
Frozen-potential approximation interface.
Cosmo_Param cosmo
Definition: params.hpp:206
interface for common functions for all types of approximations
various simulation parameters
std::vector< Particle_v< double > > particles
Definition: app_var.hpp:65
App_Var_FP(const Sim_Param &sim)
void upd_pos() override
basic functions to work with mesh
size_t mesh_num
Definition: params.hpp:58
void upd_pos() override