Fast Methods for Cosmological Simulations
FastSim serves as a tool for quick N-body simulations in modified gravity.
App_Var_FP_mod Class Reference

: class containing variables and methods for modified Frozen-potential approximation More...

#include <mod_frozen_potential.hpp>

Inheritance diagram for App_Var_FP_mod:
Collaboration diagram for App_Var_FP_mod:

Classes

class  FP_ppImpl
 

Public Member Functions

 App_Var_FP_mod (const Sim_Param &sim)
 
 ~App_Var_FP_mod ()
 
- Public Member Functions inherited from App_Var< Particle_v< double > >
 App_Var (const Sim_Param &sim, const std::string &app_short, const std::string &app_long)
 
virtual ~App_Var ()
 
void run_simulation ()
 
virtual void update_cosmo (Cosmo_Param &cosmo)
 no truncation by default More...
 
std::string get_out_dir () const
 

Private Member Functions

void pot_corr (std::vector< Mesh > &vel_field, Mesh &pot_k) override
 
void upd_pos () override
 

Private Attributes

const std::unique_ptr< FP_ppImplm_impl
 

Additional Inherited Members

- Protected Member Functions inherited from App_Var< Particle_v< double > >
double a ()
 
double a_half ()
 
double da ()
 
std::string get_z_suffix () const
 
virtual void print_output ()
 
- Protected Attributes inherited from App_Var< Particle_v< double > >
const Sim_Paramsim
 
uint64_t memory_alloc
 
std::vector< Meshapp_field
 
std::vector< Meshpower_aux
 
std::vector< Particle_v< double > > particles
 
Data_Vec< double, 2 > corr_func_binned
 
Data_Vec< double, 2 > pwr_spec_binned
 
Data_Vec< double, 2 > pwr_spec_binned_0
 
Data_Vec< double, 2 > vel_pwr_spec_binned_0
 
FFTW_PLAN_TYPE p_F
 
FFTW_PLAN_TYPE p_B
 
FFTW_PLAN_TYPE p_F_pwr
 
FFTW_PLAN_TYPE p_B_pwr
 
std::vector< size_t > dens_binned
 

Detailed Description

: class containing variables and methods for modified Frozen-potential approximation

PUBLIC METHODS * PUBLIC CLASSES *

Definition at line 34 of file mod_frozen_potential.hpp.

Constructor & Destructor Documentation

App_Var_FP_mod::App_Var_FP_mod ( const Sim_Param sim)

Definition at line 158 of file mod_frozen_potential.cpp.

References m_impl, App_Var< Particle_v< double > >::memory_alloc, and ~App_Var_FP_mod().

158  :
159  App_Var<Particle_v<FTYPE_t>>(sim, "FP_pp", "Modified Frozen-potential approximation"), m_impl(new FP_ppImpl(sim))
160 {
161  memory_alloc += m_impl->memory_alloc;
162 }
const std::unique_ptr< FP_ppImpl > m_impl
class containing core variables and methods for approximations
Definition: app_var.hpp:41
App_Var_FP_mod::~App_Var_FP_mod ( )
default

Referenced by App_Var_FP_mod().

Member Function Documentation

void App_Var_FP_mod::pot_corr ( std::vector< Mesh > &  vel_field,
Mesh pot_k 
)
overrideprivatevirtual

Reimplemented from App_Var< Particle_v< double > >.

Definition at line 166 of file mod_frozen_potential.cpp.

References App_Opt::a, Sim_Param::app_opt, fftw_execute_dft_c2r_triple(), gen_displ_k_S2(), App_Var< Particle_v< double > >::p_B, and App_Var< Particle_v< double > >::sim.

167 {
168  /* Computing displacement in k-space with S2 shaped particles */
169  gen_displ_k_S2(vel_field, pot_k, sim.app_opt.a);
170 
171  /* Computing force in q-space */
172  BOOST_LOG_TRIVIAL(debug) << "Computing force in q-space...";
173  fftw_execute_dft_c2r_triple(p_B, vel_field);
174 }
void fftw_execute_dft_c2r_triple(const FFTW_PLAN_TYPE &p_B, std::vector< Mesh > &rho)
compute three backward (complex to real) FFTs on vector of meshes (inplace)
Definition: core_mesh.cpp:263
double a
Definition: params.hpp:118
App_Opt app_opt
Definition: params.hpp:207
void gen_displ_k_S2(std::vector< Mesh > &vel_field, const Mesh &pot_k, const double a)
Definition: core_app.cpp:586
void App_Var_FP_mod::upd_pos ( )
overrideprivatevirtual

Implements App_Var< Particle_v< double > >.

Definition at line 176 of file mod_frozen_potential.cpp.

References App_Var< Particle_v< double > >::a_half(), App_Var< Particle_v< double > >::app_field, Sim_Param::box_opt, App_Var< Particle_v< double > >::da(), anonymous_namespace{mod_frozen_potential.cpp}::kick_step_w_pp(), m_impl, Box_Opt::mesh_num, App_Var< Particle_v< double > >::particles, App_Var< Particle_v< double > >::sim, and stream_kick_stream().

177 {// Leapfrog method for modified frozen-potential
178  auto kick_step = [&](){ kick_step_w_pp(sim, a_half(), da(), particles, app_field, m_impl->linked_list, m_impl->fs_interp); };
180 }
const std::unique_ptr< FP_ppImpl > m_impl
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
Box_Opt box_opt
Definition: params.hpp:202
void kick_step_w_pp(const Sim_Param &sim, const double a, const double da, std::vector< Particle_v< double >> &particles, const std::vector< Mesh > &force_field, LinkedList &linked_list, Interp_obj &fs_interp)
std::vector< Mesh > app_field
Definition: app_var.hpp:63
std::vector< Particle_v< double > > particles
Definition: app_var.hpp:65
size_t mesh_num
Definition: params.hpp:58

Member Data Documentation

const std::unique_ptr<FP_ppImpl> App_Var_FP_mod::m_impl
private

Definition at line 43 of file mod_frozen_potential.hpp.

Referenced by App_Var_FP_mod(), and upd_pos().


The documentation for this class was generated from the following files: