Fast Methods for Cosmological Simulations
FastSim serves as a tool for quick N-body simulations in modified gravity.
core_app.h
Go to the documentation of this file.
1 
9 #pragma once
10 #include "stdafx.h"
11 #include "app_var.hpp"
12 #include "core_power.h"
13 #include "params.hpp"
14 #include "precision.hpp"
15 #include "class_particles.hpp"
16 
17 void set_unpert_pos(const Sim_Param &sim, std::vector<Particle_x<FTYPE_t>>& particles);
18 void set_unpert_pos_w_vel(const Sim_Param &sim, std::vector<Particle_v<FTYPE_t>>& particles, const std::vector< Mesh> &vel_field);
19 void set_pert_pos(const Sim_Param &sim, const FTYPE_t a, std::vector<Particle_x<FTYPE_t>>& particles, const std::vector< Mesh> &vel_field);
20 void set_pert_pos(const Sim_Param &sim, const FTYPE_t a, std::vector<Particle_v<FTYPE_t>>& particles, const std::vector< Mesh> &vel_field);
21 
22 void gen_rho_dist_k(const Sim_Param &sim, Mesh& rho, const FFTW_PLAN_TYPE &p_F);
23 void gen_pot_k(const Mesh& rho_k, Mesh& pot_k);
24 void gen_pot_k(Mesh& rho_k);
25 void gen_displ_k(std::vector<Mesh>& vel_field, const Mesh& pot_k);
26 void gen_displ_k_cic(std::vector<Mesh>& vel_field, const Mesh& pot_k);
27 void gen_displ_k_S2(std::vector<Mesh>& vel_field, const Mesh& pot_k, const FTYPE_t a);
28 
29 template <class T>
30 void get_rho_from_par(const std::vector<T>& particles, Mesh& rho, const Sim_Param &sim);
31 bool get_vel_from_par(const std::vector<Particle_v<FTYPE_t>>& particles, std::vector<Mesh>& vel_field, const Sim_Param &sim);
32 bool get_vel_from_par(const std::vector<Particle_x<FTYPE_t>>& particles, std::vector<Mesh>& vel_field, const Sim_Param &sim);
33 
34 void pwr_spec_k(const Mesh &rho_k, Mesh& power_aux);
35 void pwr_spec_k_init(const Mesh &rho_k, Mesh& power_aux);
36 void vel_pwr_spec_k(const std::vector<Mesh> &vel_field, Mesh& power_aux);
37 void gen_pow_spec_binned(const Sim_Param &sim, const Mesh &power_aux, Data_Vec<FTYPE_t, 2>& pwr_spec_binned);
38 void gen_pow_spec_binned_init(const Sim_Param &sim, const Mesh &power_aux, const size_t half_length, Data_Vec<FTYPE_t, 2>& pwr_spec_binned);
39 template<class P, typename T, size_t N> // P = everything callable P_k(k), T = float-type, N = number
40 void gen_pow_spec_binned_from_extrap(const Sim_Param &sim, const P &P_k, Data_Vec<T, N>& pwr_spec_binned);
41 void gen_dens_binned(const Mesh& rho, std::vector<size_t> &dens_binned, const Sim_Param &sim);
void gen_dens_binned(const Mesh &rho, std::vector< size_t > &dens_binned, const Sim_Param &sim)
Definition: core_app.cpp:627
class handling particles (position only)
handle cosmological functions like power spectrum, growth, etc.
void pwr_spec_k_init(const Mesh &rho_k, Mesh &power_aux)
Definition: core_app.cpp:349
: class storing simulation parameters
Definition: params.hpp:193
: creates a mesh of N*N*(N+2) cells
Definition: class_mesh.hpp:95
define container Particle (with and without velocity)
void gen_rho_dist_k(const Sim_Param &sim, Mesh &rho, const FFTW_PLAN_TYPE &p_F)
Generate density distributions in k-space.
Definition: core_app.cpp:267
void gen_pow_spec_binned_init(const Sim_Param &sim, const Mesh &power_aux, const size_t half_length, Data_Vec< double, 2 > &pwr_spec_binned)
Definition: core_app.cpp:468
void gen_displ_k_S2(std::vector< Mesh > &vel_field, const Mesh &pot_k, const double a)
Definition: core_app.cpp:586
class handling particles (position only)
system include files and for project-specific include files that are used frequently but are changed ...
declaration in params.hpp
Definition: core_power.h:19
void gen_pow_spec_binned_from_extrap(const Sim_Param &sim, const P &P_k, Data_Vec< T, N > &pwr_spec_binned)
Definition: core_app.cpp:478
bool get_vel_from_par(const std::vector< Particle_v< double >> &particles, std::vector< Mesh > &vel_field, const Sim_Param &sim)
Definition: core_app.cpp:300
void pwr_spec_k(const Mesh &rho_k, Mesh &power_aux)
Definition: core_app.cpp:324
various simulation parameters
classes handling approximations data
void gen_pow_spec_binned(const Sim_Param &sim, const Mesh &power_aux, Data_Vec< double, 2 > &pwr_spec_binned)
Definition: core_app.cpp:460
void set_pert_pos(const Sim_Param &sim, const double a, std::vector< Particle_x< double >> &particles, const std::vector< Mesh > &vel_field)
Definition: core_app.cpp:114
#define FFTW_PLAN_TYPE
Definition: precision.hpp:26
single / double / long double definitions
void vel_pwr_spec_k(const std::vector< Mesh > &vel_field, Mesh &power_aux)
Definition: core_app.cpp:366
void set_unpert_pos(const Sim_Param &sim, std::vector< Particle_x< double >> &particles)
Definition: core_app.cpp:82
void gen_displ_k(std::vector< Mesh > &vel_field, const Mesh &pot_k)
Definition: core_app.cpp:623
void gen_displ_k_cic(std::vector< Mesh > &vel_field, const Mesh &pot_k)
Definition: core_app.cpp:625
void get_rho_from_par(const std::vector< T > &particles, Mesh &rho, const Sim_Param &sim)
Definition: core_app.cpp:278
void set_unpert_pos_w_vel(const Sim_Param &sim, std::vector< Particle_v< double >> &particles, const std::vector< Mesh > &vel_field)
Definition: core_app.cpp:97
void gen_pot_k(const Mesh &rho_k, Mesh &pot_k)
Definition: core_app.cpp:496