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)
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 55 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 59 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 61 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 62 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 57 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 71 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 829 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 483 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 1082 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 469 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 595 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 282 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 723 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 174 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 772 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 814 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 863 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 116 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 924 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 954 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 44 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 959 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 1192 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 89 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 97 of file Model.cpp.

◆ get_hfact()

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

Definition at line 128 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 106 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 138 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 754 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 86 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 56 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 1214 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 82 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 885 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 1480 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 223 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 267 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 357 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 146 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 108 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 130 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 93 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 96 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 120 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 99 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 186 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 102 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 843 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 652 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 691 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 854 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 853 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 852 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 857 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 861 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 860 of file Model.hpp.

◆ timestep()

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

Definition at line 51 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 92 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 65 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 58 of file Model.hpp.

◆ solver

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

Definition at line 67 of file Model.hpp.


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