![]() |
Shamrock 2025.10.0
Astrophysical Code
|
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 > | |
| 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 | |
| ShamrockCtx & | ctx |
| Solver | solver |
Static Public Attributes | |
| static constexpr u32 | dim = shambase::VectorProperties<Tvec>::dimension |
The shamrock SPH model.
| Tvec | |
| SPHKernel |
| using shammodels::sph::Model< Tvec, SPHKernel >::Kernel = SPHKernel<Tscal> |
| using shammodels::sph::Model< Tvec, SPHKernel >::Solver = Solver<Tvec, SPHKernel> |
| using shammodels::sph::Model< Tvec, SPHKernel >::SolverConfig = typename Solver::Config |
| using shammodels::sph::Model< Tvec, SPHKernel >::Tscal = shambase::VecComponent<Tvec> |
|
inline |
| 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 | ||
| ) |
|
inline |
| void shammodels::sph::Model< Tvec, SPHKernel >::add_cube_fcc_3d | ( | Tscal | dr, |
| std::pair< Tvec, Tvec > | _box | ||
| ) |
| void shammodels::sph::Model< Tvec, SPHKernel >::add_cube_hcp_3d | ( | Tscal | dr, |
| std::pair< Tvec, Tvec > | _box | ||
| ) |
| void shammodels::sph::Model< Tvec, SPHKernel >::add_cube_hcp_3d_v2 | ( | Tscal | dr, |
| std::pair< Tvec, Tvec > | _box | ||
| ) |
|
inline |
Add a disc distribution.
| center | position of the center of the disc |
| central_mass | star mass |
| Npart | number of particles |
| r_in | inner radius |
| r_out | outer radius |
| disc_mass | disc mass |
| p | density power profile |
| H_r_in | inner radisu H/r |
| q | soundspeed power profile |
Definition at line 285 of file Model.hpp.
Here is the call graph for this function:
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
| f64 shammodels::sph::Model< Tvec, SPHKernel >::evolve_once_time_expl | ( | f64 | t_curr, |
| f64 | dt_input | ||
| ) |
|
inline |
| auto shammodels::sph::Model< Tvec, SPHKernel >::gen_config_from_phantom_dump | ( | PhantomDump & | phdump, |
| bool | bypass_error | ||
| ) |
|
inline |
| auto shammodels::sph::Model< Tvec, SPHKernel >::get_closest_part_to | ( | Tvec | pos | ) |
|
inline |
| auto shammodels::sph::Model< Tvec, SPHKernel >::get_ideal_fcc_box | ( | Tscal | dr, |
| std::pair< Tvec, Tvec > | box | ||
| ) |
| auto shammodels::sph::Model< Tvec, SPHKernel >::get_ideal_hcp_box | ( | Tscal | dr, |
| std::pair< Tvec, Tvec > | box | ||
| ) |
|
inline |
|
inline |
|
inline |
| u64 shammodels::sph::Model< Tvec, SPHKernel >::get_total_part_count | ( | ) |
| void shammodels::sph::Model< Tvec, SPHKernel >::init | ( | ) |
| void shammodels::sph::Model< Tvec, SPHKernel >::init_from_phantom_dump | ( | PhantomDump & | phdump, |
| Tscal | hpart_fact_load = 1.0 |
||
| ) |
|
inline |
|
inline |
| shammodels::sph::PhantomDump shammodels::sph::Model< Tvec, SPHKernel >::make_phantom_dump | ( | ) |
|
inline |
| 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 | ||
| ) |
| 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 | ||
| ) |
| void shammodels::sph::Model< Tvec, SPHKernel >::remap_positions | ( | std::function< Tvec(Tvec)> | map | ) |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
| shammodels::sph::TimestepLog shammodels::sph::Model< Tvec, SPHKernel >::timestep | ( | ) |
| f64 shammodels::sph::Model< Tvec, SPHKernel >::total_mass_to_part_mass | ( | f64 | totmass | ) |
| ShamrockCtx& shammodels::sph::Model< Tvec, SPHKernel >::ctx |
|
staticconstexpr |
| Solver shammodels::sph::Model< Tvec, SPHKernel >::solver |