Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
shammodels::sph::Model< Tvec, SPHKernel > Class Template Reference

The shamrock SPH model. More...

#include <shammodels/sph/include/shammodels/sph/Model.hpp>

Collaboration diagram for shammodels::sph::Model< Tvec, SPHKernel >:

Public Types

using Tscal = shambase::VecComponent<Tvec>
using Kernel = SPHKernel<Tscal>
using Solver = Solver<Tvec, SPHKernel>
using SolverConfig = typename Solver::Config

Public Member Functions

 Model (ShamrockCtx &ctx)
void init ()
 Initialise the model and all the related data structures (patch scheduler in particular).
void init_scheduler (u32 crit_split, u32 crit_merge)
template<std::enable_if_t< dim==3, int > = 0>
Tvec get_box_dim_fcc_3d (Tscal dr, u32 xcnt, u32 ycnt, u32 zcnt)
void set_cfl_cour (Tscal cfl_cour)
void set_cfl_force (Tscal cfl_force)
void set_eta_sink (Tscal eta_sink)
Tscal get_time ()
void set_time (Tscal t)
Tscal get_dt_sph ()
void set_next_dt (Tscal dt)
Tscal get_cfl_multipler ()
void set_cfl_multipler (Tscal lambda)
void set_particle_mass (Tscal gpart_mass)
Tscal get_particle_mass ()
void resize_simulation_box (std::pair< Tvec, Tvec > box)
SolverConfig gen_config_from_phantom_dump (PhantomDump &phdump, bool bypass_error)
void init_from_phantom_dump (PhantomDump &phdump, Tscal hpart_fact_load=1.0)
PhantomDump make_phantom_dump ()
void do_vtk_dump (std::string filename, bool add_patch_world_id)
void set_debug_dump (bool _do_debug_dump, std::string _debug_dump_filename)
u64 get_total_part_count ()
f64 total_mass_to_part_mass (f64 totmass)
Tscal get_hfact ()
Tscal rho_h (Tscal h)
void add_cube_fcc_3d (Tscal dr, std::pair< Tvec, Tvec > _box)
void add_cube_hcp_3d (Tscal dr, std::pair< Tvec, Tvec > _box)
void add_cube_hcp_3d_v2 (Tscal dr, std::pair< Tvec, Tvec > _box)
std::unique_ptr< modules::SPHSetup< Tvec, SPHKernel > > get_setup ()
void add_big_disc_3d (Tvec center, Tscal central_mass, u32 Npart, Tscal r_in, Tscal r_out, Tscal disc_mass, Tscal p, Tscal H_r_in, Tscal q, std::mt19937 eng)
void add_sink (Tscal mass, Tvec pos, Tvec velocity, Tscal accretion_radius)
template<class T>
void set_field_value_lambda (std::string field_name, const std::function< T(Tvec)> pos_to_val, const u32 offset)
template<class T>
void overwrite_field_value (std::string field_name, const std::function< std::vector< T >(py::dict)> field_compute, const u32 offset)
template<std::enable_if_t< dim==3, int > = 0>
Tscal add_disc_3d (Tvec center, Tscal central_mass, u32 Npart, Tscal r_in, Tscal r_out, Tscal disc_mass, Tscal p, Tscal H_r_in, Tscal q)
 Add a disc distribution.
template<std::enable_if_t< dim==3, int > = 0>
void add_cube_disc_3d (Tvec center, u32 Npart, Tscal p, Tscal rho_0, Tscal m, Tscal r_in, Tscal r_out, Tscal q, Tscal cmass)
void remap_positions (std::function< Tvec(Tvec)> map)
void push_particle (std::vector< Tvec > &part_pos_insert, std::vector< Tscal > &part_hpart_insert, std::vector< Tscal > &part_u_insert)
void push_particle_mhd (std::vector< Tvec > &part_pos_insert, std::vector< Tscal > &part_hpart_insert, std::vector< Tscal > &part_u_insert, std::vector< Tvec > &part_B_on_rho_insert, std::vector< Tscal > &part_psi_on_ch_insert)
template<class T>
void set_value_in_a_box (std::string field_name, T val, std::pair< Tvec, Tvec > box, u32 ivar)
template<class T>
void set_value_in_sphere (std::string field_name, T val, Tvec center, Tscal radius)
template<class T>
void add_kernel_value (std::string field_name, T val, Tvec center, Tscal h_ker)
template<class T>
get_sum (std::string name)
Tvec get_closest_part_to (Tvec pos)
void apply_momentum_offset (Tvec offset)
void apply_position_offset (Tvec offset)
void set_solver_config (typename Solver::Config cfg)
f64 solver_logs_last_rate ()
u64 solver_logs_last_obj_count ()
f64 solver_logs_cumulated_step_time ()
void solver_logs_reset_cumulated_step_time ()
u64 solver_logs_step_count ()
void solver_logs_reset_step_count ()
void change_htolerances (Tscal in_coarse, Tscal in_fine)
void load_from_dump (std::string fname)
 Load the state of the SPH model from a dump file.
void dump (std::string fname)
 Dump the state of the SPH model to a file.
f64 evolve_once_time_expl (f64 t_curr, f64 dt_input)
TimestepLog timestep ()
void evolve_once ()
EvolveUntilResults evolve_until (Tscal target_time, i32 niter_max, f64 max_walltime=-1)

Public Attributes

ShamrockCtxctx
Solver solver

Static Public Attributes

static constexpr u32 dim = shambase::VectorProperties<Tvec>::dimension

Detailed Description

template<class Tvec, template< class > class SPHKernel>
class shammodels::sph::Model< Tvec, SPHKernel >

The shamrock SPH model.

Template Parameters
Tvec
SPHKernel

Definition at line 56 of file Model.hpp.

Member Typedef Documentation

◆ Kernel

template<class Tvec, template< class > class SPHKernel>
using shammodels::sph::Model< Tvec, SPHKernel >::Kernel = SPHKernel<Tscal>

Definition at line 60 of file Model.hpp.

◆ Solver

template<class Tvec, template< class > class SPHKernel>
using shammodels::sph::Model< Tvec, SPHKernel >::Solver = Solver<Tvec, SPHKernel>

Definition at line 62 of file Model.hpp.

◆ SolverConfig

template<class Tvec, template< class > class SPHKernel>
using shammodels::sph::Model< Tvec, SPHKernel >::SolverConfig = typename Solver::Config

Definition at line 63 of file Model.hpp.

◆ Tscal

template<class Tvec, template< class > class SPHKernel>
using shammodels::sph::Model< Tvec, SPHKernel >::Tscal = shambase::VecComponent<Tvec>

Definition at line 58 of file Model.hpp.

Constructor & Destructor Documentation

◆ Model()

template<class Tvec, template< class > class SPHKernel>
shammodels::sph::Model< Tvec, SPHKernel >::Model ( ShamrockCtx & ctx)
inline

Definition at line 72 of file Model.hpp.

Member Function Documentation

◆ add_big_disc_3d()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::add_big_disc_3d ( Tvec center,
Tscal central_mass,
u32 Npart,
Tscal r_in,
Tscal r_out,
Tscal disc_mass,
Tscal p,
Tscal H_r_in,
Tscal q,
std::mt19937 eng )

Definition at line 840 of file Model.cpp.

◆ add_cube_disc_3d()

template<class Tvec, template< class > class SPHKernel>
template<std::enable_if_t< dim==3, int > = 0>
void shammodels::sph::Model< Tvec, SPHKernel >::add_cube_disc_3d ( Tvec center,
u32 Npart,
Tscal p,
Tscal rho_0,
Tscal m,
Tscal r_in,
Tscal r_out,
Tscal q,
Tscal cmass )
inline

Definition at line 500 of file Model.hpp.

◆ add_cube_fcc_3d()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::add_cube_fcc_3d ( Tscal dr,
std::pair< Tvec, Tvec > _box )

Definition at line 1093 of file Model.cpp.

◆ add_cube_hcp_3d()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::add_cube_hcp_3d ( Tscal dr,
std::pair< Tvec, Tvec > _box )

Definition at line 480 of file Model.cpp.

◆ add_cube_hcp_3d_v2()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::add_cube_hcp_3d_v2 ( Tscal dr,
std::pair< Tvec, Tvec > _box )

Definition at line 606 of file Model.cpp.

◆ add_disc_3d()

template<class Tvec, template< class > class SPHKernel>
template<std::enable_if_t< dim==3, int > = 0>
Tscal shammodels::sph::Model< Tvec, SPHKernel >::add_disc_3d ( Tvec center,
Tscal central_mass,
u32 Npart,
Tscal r_in,
Tscal r_out,
Tscal disc_mass,
Tscal p,
Tscal H_r_in,
Tscal q )
inline

Add a disc distribution.

Parameters
centerposition of the center of the disc
central_massstar mass
Npartnumber of particles
r_ininner radius
r_outouter radius
disc_massdisc mass
pdensity power profile
H_r_ininner radisu H/r
qsoundspeed power profile
Returns
Tscal

Definition at line 299 of file Model.hpp.

Here is the call graph for this function:

◆ add_kernel_value()

template<class Tvec, template< class > class SPHKernel>
template<class T>
void shammodels::sph::Model< Tvec, SPHKernel >::add_kernel_value ( std::string field_name,
T val,
Tvec center,
Tscal h_ker )
inline

Definition at line 740 of file Model.hpp.

◆ add_sink()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::add_sink ( Tscal mass,
Tvec pos,
Tvec velocity,
Tscal accretion_radius )
inline

Definition at line 183 of file Model.hpp.

◆ apply_momentum_offset()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::apply_momentum_offset ( Tvec offset)
inline

Definition at line 789 of file Model.hpp.

◆ apply_position_offset()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::apply_position_offset ( Tvec offset)
inline

Definition at line 834 of file Model.hpp.

◆ change_htolerances()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::change_htolerances ( Tscal in_coarse,
Tscal in_fine )
inline

Definition at line 884 of file Model.hpp.

◆ do_vtk_dump()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::do_vtk_dump ( std::string filename,
bool add_patch_world_id )
inline

Definition at line 125 of file Model.hpp.

◆ dump()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::dump ( std::string fname)
inline

Dump the state of the SPH model to a file.

Parameters
fnameThe name of the dump file.

TODO: replace supplied metadata by solver config json

Definition at line 977 of file Model.hpp.

Here is the call graph for this function:

◆ evolve_once()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::evolve_once ( )
inline

Definition at line 1001 of file Model.hpp.

◆ evolve_once_time_expl()

template<class Tvec, template< class > class SPHKernel>
f64 shammodels::sph::Model< Tvec, SPHKernel >::evolve_once_time_expl ( f64 t_curr,
f64 dt_input )

Definition at line 46 of file Model.cpp.

◆ evolve_until()

template<class Tvec, template< class > class SPHKernel>
EvolveUntilResults shammodels::sph::Model< Tvec, SPHKernel >::evolve_until ( Tscal target_time,
i32 niter_max,
f64 max_walltime = -1 )
inline

Definition at line 1006 of file Model.hpp.

◆ gen_config_from_phantom_dump()

template<class Tvec, template< class > class SPHKernel>
auto shammodels::sph::Model< Tvec, SPHKernel >::gen_config_from_phantom_dump ( PhantomDump & phdump,
bool bypass_error )

Definition at line 1203 of file Model.cpp.

◆ get_box_dim_fcc_3d()

template<class Tvec, template< class > class SPHKernel>
template<std::enable_if_t< dim==3, int > = 0>
Tvec shammodels::sph::Model< Tvec, SPHKernel >::get_box_dim_fcc_3d ( Tscal dr,
u32 xcnt,
u32 ycnt,
u32 zcnt )
inline

Definition at line 90 of file Model.hpp.

◆ get_cfl_multipler()

template<class Tvec, template< class > class SPHKernel>
Tscal shammodels::sph::Model< Tvec, SPHKernel >::get_cfl_multipler ( )
inline

Definition at line 108 of file Model.hpp.

◆ get_closest_part_to()

template<class Tvec, template< class > class SPHKernel>
auto shammodels::sph::Model< Tvec, SPHKernel >::get_closest_part_to ( Tvec pos)

Definition at line 108 of file Model.cpp.

◆ get_dt_sph()

template<class Tvec, template< class > class SPHKernel>
Tscal shammodels::sph::Model< Tvec, SPHKernel >::get_dt_sph ( )
inline

Definition at line 106 of file Model.hpp.

◆ get_hfact()

template<class Tvec, template< class > class SPHKernel>
Tscal shammodels::sph::Model< Tvec, SPHKernel >::get_hfact ( )
inline

Definition at line 137 of file Model.hpp.

◆ get_particle_mass()

template<class Tvec, template< class > class SPHKernel>
Tscal shammodels::sph::Model< Tvec, SPHKernel >::get_particle_mass ( )
inline

Definition at line 115 of file Model.hpp.

◆ get_setup()

template<class Tvec, template< class > class SPHKernel>
std::unique_ptr< modules::SPHSetup< Tvec, SPHKernel > > shammodels::sph::Model< Tvec, SPHKernel >::get_setup ( )
inline

Definition at line 147 of file Model.hpp.

◆ get_sum()

template<class Tvec, template< class > class SPHKernel>
template<class T>
T shammodels::sph::Model< Tvec, SPHKernel >::get_sum ( std::string name)
inline

Definition at line 771 of file Model.hpp.

◆ get_time()

template<class Tvec, template< class > class SPHKernel>
Tscal shammodels::sph::Model< Tvec, SPHKernel >::get_time ( )
inline

Definition at line 104 of file Model.hpp.

◆ get_total_part_count()

template<class Tvec, template< class > class SPHKernel>
u64 shammodels::sph::Model< Tvec, SPHKernel >::get_total_part_count ( )

Definition at line 97 of file Model.cpp.

◆ init()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::init ( )

Initialise the model and all the related data structures (patch scheduler in particular).

Definition at line 58 of file Model.cpp.

Here is the call graph for this function:

◆ init_from_phantom_dump()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::init_from_phantom_dump ( PhantomDump & phdump,
Tscal hpart_fact_load = 1.0 )

Definition at line 1225 of file Model.cpp.

◆ init_scheduler()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::init_scheduler ( u32 crit_split,
u32 crit_merge )
inline

Old way of doing it, for backward compatibility it just overrides the values in the config before calling init()

Definition at line 83 of file Model.hpp.

Here is the call graph for this function:

◆ load_from_dump()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::load_from_dump ( std::string fname)
inline

Load the state of the SPH model from a dump file.

Parameters
fnameThe name of the dump file.

TODO: load solver config from metadata

Definition at line 906 of file Model.hpp.

Here is the call graph for this function:

◆ make_phantom_dump()

template<class Tvec, template< class > class SPHKernel>
shammodels::sph::PhantomDump shammodels::sph::Model< Tvec, SPHKernel >::make_phantom_dump ( )

Definition at line 1491 of file Model.cpp.

◆ overwrite_field_value()

template<class Tvec, template< class > class SPHKernel>
template<class T>
void shammodels::sph::Model< Tvec, SPHKernel >::overwrite_field_value ( std::string field_name,
const std::function< std::vector< T >(py::dict)> field_compute,
const u32 offset )
inline

Definition at line 240 of file Model.hpp.

◆ push_particle()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::push_particle ( std::vector< Tvec > & part_pos_insert,
std::vector< Tscal > & part_hpart_insert,
std::vector< Tscal > & part_u_insert )

Definition at line 278 of file Model.cpp.

◆ push_particle_mhd()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::push_particle_mhd ( std::vector< Tvec > & part_pos_insert,
std::vector< Tscal > & part_hpart_insert,
std::vector< Tscal > & part_u_insert,
std::vector< Tvec > & part_B_on_rho_insert,
std::vector< Tscal > & part_psi_on_ch_insert )

Definition at line 368 of file Model.cpp.

◆ remap_positions()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::remap_positions ( std::function< Tvec(Tvec)> map)

Definition at line 157 of file Model.cpp.

◆ resize_simulation_box()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::resize_simulation_box ( std::pair< Tvec, Tvec > box)
inline

Definition at line 117 of file Model.hpp.

◆ rho_h()

template<class Tvec, template< class > class SPHKernel>
Tscal shammodels::sph::Model< Tvec, SPHKernel >::rho_h ( Tscal h)
inline

Definition at line 139 of file Model.hpp.

◆ set_cfl_cour()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::set_cfl_cour ( Tscal cfl_cour)
inline

Definition at line 94 of file Model.hpp.

◆ set_cfl_force()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::set_cfl_force ( Tscal cfl_force)
inline

Definition at line 97 of file Model.hpp.

◆ set_cfl_multipler()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::set_cfl_multipler ( Tscal lambda)
inline

Definition at line 109 of file Model.hpp.

◆ set_debug_dump()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::set_debug_dump ( bool _do_debug_dump,
std::string _debug_dump_filename )
inline

Definition at line 129 of file Model.hpp.

◆ set_eta_sink()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::set_eta_sink ( Tscal eta_sink)
inline

Definition at line 100 of file Model.hpp.

◆ set_field_value_lambda()

template<class Tvec, template< class > class SPHKernel>
template<class T>
void shammodels::sph::Model< Tvec, SPHKernel >::set_field_value_lambda ( std::string field_name,
const std::function< T(Tvec)> pos_to_val,
const u32 offset )
inline

Definition at line 203 of file Model.hpp.

◆ set_next_dt()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::set_next_dt ( Tscal dt)
inline

Definition at line 107 of file Model.hpp.

◆ set_particle_mass()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::set_particle_mass ( Tscal gpart_mass)
inline

Definition at line 111 of file Model.hpp.

◆ set_solver_config()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::set_solver_config ( typename Solver::Config cfg)
inline

Definition at line 864 of file Model.hpp.

◆ set_time()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::set_time ( Tscal t)
inline

Definition at line 105 of file Model.hpp.

◆ set_value_in_a_box()

template<class Tvec, template< class > class SPHKernel>
template<class T>
void shammodels::sph::Model< Tvec, SPHKernel >::set_value_in_a_box ( std::string field_name,
T val,
std::pair< Tvec, Tvec > box,
u32 ivar )
inline

Definition at line 669 of file Model.hpp.

◆ set_value_in_sphere()

template<class Tvec, template< class > class SPHKernel>
template<class T>
void shammodels::sph::Model< Tvec, SPHKernel >::set_value_in_sphere ( std::string field_name,
T val,
Tvec center,
Tscal radius )
inline

Definition at line 708 of file Model.hpp.

◆ solver_logs_cumulated_step_time()

template<class Tvec, template< class > class SPHKernel>
f64 shammodels::sph::Model< Tvec, SPHKernel >::solver_logs_cumulated_step_time ( )
inline

Definition at line 875 of file Model.hpp.

◆ solver_logs_last_obj_count()

template<class Tvec, template< class > class SPHKernel>
u64 shammodels::sph::Model< Tvec, SPHKernel >::solver_logs_last_obj_count ( )
inline

Definition at line 874 of file Model.hpp.

◆ solver_logs_last_rate()

template<class Tvec, template< class > class SPHKernel>
f64 shammodels::sph::Model< Tvec, SPHKernel >::solver_logs_last_rate ( )
inline

Definition at line 873 of file Model.hpp.

◆ solver_logs_reset_cumulated_step_time()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::solver_logs_reset_cumulated_step_time ( )
inline

Definition at line 878 of file Model.hpp.

◆ solver_logs_reset_step_count()

template<class Tvec, template< class > class SPHKernel>
void shammodels::sph::Model< Tvec, SPHKernel >::solver_logs_reset_step_count ( )
inline

Definition at line 882 of file Model.hpp.

◆ solver_logs_step_count()

template<class Tvec, template< class > class SPHKernel>
u64 shammodels::sph::Model< Tvec, SPHKernel >::solver_logs_step_count ( )
inline

Definition at line 881 of file Model.hpp.

◆ timestep()

template<class Tvec, template< class > class SPHKernel>
shammodels::sph::TimestepLog shammodels::sph::Model< Tvec, SPHKernel >::timestep ( )

Definition at line 53 of file Model.cpp.

◆ total_mass_to_part_mass()

template<class Tvec, template< class > class SPHKernel>
f64 shammodels::sph::Model< Tvec, SPHKernel >::total_mass_to_part_mass ( f64 totmass)

Definition at line 103 of file Model.cpp.

Member Data Documentation

◆ ctx

template<class Tvec, template< class > class SPHKernel>
ShamrockCtx& shammodels::sph::Model< Tvec, SPHKernel >::ctx

Definition at line 66 of file Model.hpp.

◆ dim

template<class Tvec, template< class > class SPHKernel>
u32 shammodels::sph::Model< Tvec, SPHKernel >::dim = shambase::VectorProperties<Tvec>::dimension
staticconstexpr

Definition at line 59 of file Model.hpp.

◆ solver

template<class Tvec, template< class > class SPHKernel>
Solver shammodels::sph::Model< Tvec, SPHKernel >::solver

Definition at line 68 of file Model.hpp.


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