Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
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)
 
std::pair< Tvec, Tvec > get_ideal_fcc_box (Tscal dr, std::pair< Tvec, Tvec > box)
 
std::pair< Tvec, Tvec > get_ideal_hcp_box (Tscal dr, std::pair< Tvec, Tvec > box)
 
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 ()
 
bool evolve_until (Tscal target_time, i32 niter_max)
 

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 855 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 486 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 1108 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 495 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 621 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 285 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,
val,
Tvec  center,
Tscal  h_ker 
)
inline

Definition at line 726 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 177 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 775 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 817 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 866 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 927 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 957 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>
bool shammodels::sph::Model< Tvec, SPHKernel >::evolve_until ( Tscal  target_time,
i32  niter_max 
)
inline

Definition at line 962 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 1218 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 131 of file Model.hpp.

◆ get_ideal_fcc_box()

template<class Tvec , template< class > class SPHKernel>
auto shammodels::sph::Model< Tvec, SPHKernel >::get_ideal_fcc_box ( Tscal  dr,
std::pair< Tvec, Tvec >  box 
)

Definition at line 146 of file Model.cpp.

◆ get_ideal_hcp_box()

template<class Tvec , template< class > class SPHKernel>
auto shammodels::sph::Model< Tvec, SPHKernel >::get_ideal_hcp_box ( Tscal  dr,
std::pair< Tvec, Tvec >  box 
)

Definition at line 477 of file Model.cpp.

◆ 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 141 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 757 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 1240 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 888 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 1506 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 226 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 275 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 365 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 154 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 133 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 189 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 846 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,
val,
std::pair< Tvec, Tvec >  box,
u32  ivar 
)
inline

Definition at line 655 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,
val,
Tvec  center,
Tscal  radius 
)
inline

Definition at line 694 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 857 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 856 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 855 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 860 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 864 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 863 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>
constexpr 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: