![]() |
Shamrock 2025.10.0
Astrophysical Code
|
The shamrock SPH model. More...
#include <shammodels/sph/include/shammodels/sph/Solver.hpp>
Collaboration diagram for shammodels::sph::Solver< Tvec, SPHKernel >:Classes | |
| struct | SolverStepCallback |
Public Types | |
| using | Tscal = shambase::VecComponent< Tvec > |
| using | Kernel = SPHKernel< Tscal > |
| using | Config = SolverConfig< Tvec, SPHKernel > |
| using | u_morton = typename Config::u_morton |
| using | GhostHandle = sph::BasicSPHGhostHandler< Tvec > |
| using | GhostHandleCache = typename GhostHandle::CacheMap |
| using | RTree = typename Config::RTree |
Public Member Functions | |
| PatchScheduler & | scheduler () |
| void | init_required_fields () |
| void | gen_serial_patch_tree () |
| void | reset_serial_patch_tree () |
| void | gen_ghost_handler (Tscal time_val) |
| void | reset_ghost_handler () |
| void | build_ghost_cache () |
| Builds ghost particle interface cache for inter-patch communication. | |
| void | clear_ghost_cache () |
| Clears ghost particle cache to free memory. | |
| void | merge_position_ghost () |
| Merges ghost particle positions from neighboring patches. | |
| void | build_merged_pos_trees () |
| Builds spatial BVH trees for merged positions including ghosts. | |
| void | clear_merged_pos_trees () |
| Clears merged position trees to free memory. | |
| void | compute_presteps_rint () |
| Computes maximum smoothing length in tree nodes for neighbor search. | |
| void | reset_presteps_rint () |
| Resets tree radius interval field. | |
| void | start_neighbors_cache () |
| Builds neighbor particle cache for SPH calculations. | |
| void | reset_neighbors_cache () |
| Resets neighbor cache. | |
| void | sph_prestep (Tscal time_val, Tscal dt) |
| Performs pre-step operations for SPH timestep. | |
| void | apply_position_boundary (Tscal time_val) |
| Applies position-based boundary conditions. | |
| void | do_predictor_leapfrog (Tscal dt) |
| Performs predictor step for leapfrog integration. | |
| void | update_artificial_viscosity (Tscal dt) |
| Updates artificial viscosity coefficients for shock capturing. | |
| void | init_ghost_layout () |
| Initializes data layout for ghost particle fields. | |
| void | communicate_merge_ghosts_fields () |
| Communicates and merges ghost particle fields across processes. | |
| void | reset_merge_ghosts_fields () |
| Resets merged ghost field data. | |
| void | compute_eos_fields () |
| Computes equation of state fields (pressure, sound speed) | |
| void | reset_eos_fields () |
| Frees memory allocated for EOS fields. | |
| void | prepare_corrector () |
| Saves old derivative fields for predictor-corrector integration. | |
| void | update_derivs () |
| Updates time derivatives and applies external forces. | |
| bool | apply_corrector (Tscal dt, u64 Npart_all) |
| void | update_sync_load_values () |
| Updates load balancing values and synchronizes patch ownership. | |
| Solver (ShamrockCtx &context) | |
| void | init_solver_graph () |
| Initializes the solver graph for computation pipeline. | |
| void | vtk_do_dump (std::string filename, bool add_patch_world_id) |
| Writes VTK dump file for visualization. | |
| void | set_debug_dump (bool _do_debug_dump, std::string _debug_dump_filename) |
| void | print_timestep_logs () |
| TimestepLog | evolve_once () |
| Performs one complete SPH timestep evolution. | |
| Tscal | evolve_once_time_expl (Tscal t_current, Tscal dt_input) |
| Evolves system by one explicit timestep with specified time and dt. | |
| bool | evolve_until (Tscal target_time, i32 niter_max) |
Public Attributes | |
| ShamrockCtx & | context |
| SolverStorage< Tvec, u_morton > | storage {} |
| Config | solver_config |
| SolverLog | solve_logs |
| std::vector< SolverStepCallback > | timestep_callbacks {} |
Static Public Attributes | |
| static constexpr u32 | dim = shambase::VectorProperties<Tvec>::dimension |
| static constexpr Tscal | Rkern = Kernel::Rkern |
The shamrock SPH model.
| Tvec | |
| SPHKernel |
Definition at line 61 of file Solver.hpp.
| using shammodels::sph::Solver< Tvec, SPHKernel >::Config = SolverConfig<Tvec, SPHKernel> |
Definition at line 67 of file Solver.hpp.
| using shammodels::sph::Solver< Tvec, SPHKernel >::GhostHandle = sph::BasicSPHGhostHandler<Tvec> |
Definition at line 94 of file Solver.hpp.
| using shammodels::sph::Solver< Tvec, SPHKernel >::GhostHandleCache = typename GhostHandle::CacheMap |
Definition at line 95 of file Solver.hpp.
| using shammodels::sph::Solver< Tvec, SPHKernel >::Kernel = SPHKernel<Tscal> |
Definition at line 65 of file Solver.hpp.
| using shammodels::sph::Solver< Tvec, SPHKernel >::RTree = typename Config::RTree |
Definition at line 152 of file Solver.hpp.
| using shammodels::sph::Solver< Tvec, SPHKernel >::Tscal = shambase::VecComponent<Tvec> |
Definition at line 63 of file Solver.hpp.
| using shammodels::sph::Solver< Tvec, SPHKernel >::u_morton = typename Config::u_morton |
Definition at line 69 of file Solver.hpp.
|
inline |
Definition at line 209 of file Solver.hpp.
| bool shammodels::sph::Solver< Tvec, Kern >::apply_corrector | ( | Tscal | dt, |
| u64 | Npart_all | ||
| ) |
Definition at line 1566 of file Solver.cpp.
| void shammodels::sph::Solver< Tvec, Kern >::apply_position_boundary | ( | Tscal | time_val | ) |
Applies position-based boundary conditions.
Applies position boundary conditions to the particles.
| time_val | the current time value |
Definition at line 734 of file Solver.cpp.
Here is the call graph for this function:| void shammodels::sph::Solver< Tvec, Kern >::build_ghost_cache | ( | ) |
Builds ghost particle interface cache for inter-patch communication.
Definition at line 780 of file Solver.cpp.
| void shammodels::sph::Solver< Tvec, Kern >::build_merged_pos_trees | ( | ) |
Builds spatial BVH trees for merged positions including ghosts.
Definition at line 845 of file Solver.cpp.
Here is the call graph for this function:| void shammodels::sph::Solver< Tvec, Kern >::clear_ghost_cache | ( | ) |
Clears ghost particle cache to free memory.
Definition at line 796 of file Solver.cpp.
| void shammodels::sph::Solver< Tvec, Kern >::clear_merged_pos_trees | ( | ) |
Clears merged position trees to free memory.
Definition at line 850 of file Solver.cpp.
| void shammodels::sph::Solver< Tvec, Kern >::communicate_merge_ghosts_fields | ( | ) |
Communicates and merges ghost particle fields across processes.
Definition at line 1254 of file Solver.cpp.
Here is the call graph for this function:| void shammodels::sph::Solver< Tvec, Kern >::compute_eos_fields | ( | ) |
Computes equation of state fields (pressure, sound speed)
Definition at line 1504 of file Solver.cpp.
Here is the call graph for this function:| void shammodels::sph::Solver< Tvec, Kern >::compute_presteps_rint | ( | ) |
Computes maximum smoothing length in tree nodes for neighbor search.
Definition at line 1182 of file Solver.cpp.
| void shammodels::sph::Solver< Tvec, Kern >::do_predictor_leapfrog | ( | Tscal | dt | ) |
Performs predictor step for leapfrog integration.
Definition at line 856 of file Solver.cpp.
Here is the call graph for this function:| shammodels::sph::TimestepLog shammodels::sph::Solver< Tvec, Kern >::evolve_once | ( | ) |
Performs one complete SPH timestep evolution.
patch_rank_owner is automatically updated since it is just a lambda
must be after the mpi timer to not count the barrier of the system metrics
Definition at line 1578 of file Solver.cpp.
Here is the call graph for this function:
|
inline |
Evolves system by one explicit timestep with specified time and dt.
Definition at line 232 of file Solver.hpp.
Here is the call graph for this function:
|
inline |
Definition at line 239 of file Solver.hpp.
|
inline |
Definition at line 97 of file Solver.hpp.
| void shammodels::sph::Solver< Tvec, Kern >::gen_serial_patch_tree | ( | ) |
Definition at line 720 of file Solver.cpp.
| void shammodels::sph::Solver< Tvec, Kern >::init_ghost_layout | ( | ) |
Initializes data layout for ghost particle fields.
Definition at line 1167 of file Solver.cpp.
Here is the call graph for this function:
|
inline |
Definition at line 87 of file Solver.hpp.
| void shammodels::sph::Solver< Tvec, Kern >::init_solver_graph | ( | ) |
Initializes the solver graph for computation pipeline.
Definition at line 108 of file Solver.cpp.
Here is the call graph for this function:| void shammodels::sph::Solver< Tvec, Kern >::merge_position_ghost | ( | ) |
Merges ghost particle positions from neighboring patches.
Definition at line 802 of file Solver.cpp.
Here is the call graph for this function:| void shammodels::sph::Solver< Tvec, Kern >::prepare_corrector | ( | ) |
Saves old derivative fields for predictor-corrector integration.
Definition at line 1516 of file Solver.cpp.
Here is the call graph for this function:
|
inline |
Definition at line 221 of file Solver.hpp.
| void shammodels::sph::Solver< Tvec, Kern >::reset_eos_fields | ( | ) |
Frees memory allocated for EOS fields.
Definition at line 1510 of file Solver.cpp.
Here is the call graph for this function:
|
inline |
Definition at line 141 of file Solver.hpp.
| void shammodels::sph::Solver< Tvec, Kern >::reset_merge_ghosts_fields | ( | ) |
Resets merged ghost field data.
Definition at line 1484 of file Solver.cpp.
| void shammodels::sph::Solver< Tvec, Kern >::reset_neighbors_cache | ( | ) |
Resets neighbor cache.
Definition at line 1249 of file Solver.cpp.
| void shammodels::sph::Solver< Tvec, Kern >::reset_presteps_rint | ( | ) |
Resets tree radius interval field.
Definition at line 1219 of file Solver.cpp.
|
inline |
Definition at line 91 of file Solver.hpp.
|
inline |
Definition at line 74 of file Solver.hpp.
|
inline |
Definition at line 217 of file Solver.hpp.
| void shammodels::sph::Solver< Tvec, Kern >::sph_prestep | ( | Tscal | time_val, |
| Tscal | dt | ||
| ) |
Performs pre-step operations for SPH timestep.
Definition at line 920 of file Solver.cpp.
Here is the call graph for this function:| void shammodels::sph::Solver< Tvec, Kern >::start_neighbors_cache | ( | ) |
Builds neighbor particle cache for SPH calculations.
Definition at line 1224 of file Solver.cpp.
Here is the call graph for this function:| void shammodels::sph::Solver< Tvec, Kern >::update_artificial_viscosity | ( | Tscal | dt | ) |
Updates artificial viscosity coefficients for shock capturing.
Definition at line 1493 of file Solver.cpp.
| void shammodels::sph::Solver< Tvec, Kern >::update_derivs | ( | ) |
Updates time derivatives and applies external forces.
Definition at line 1556 of file Solver.cpp.
Here is the call graph for this function:| void shammodels::sph::Solver< Tvec, Kern >::update_sync_load_values | ( | ) |
Updates load balancing values and synchronizes patch ownership.
Definition at line 1571 of file Solver.cpp.
| void shammodels::sph::Solver< Tvec, Kern >::vtk_do_dump | ( | std::string | filename, |
| bool | add_patch_world_id | ||
| ) |
Writes VTK dump file for visualization.
Definition at line 557 of file Solver.cpp.
Here is the call graph for this function:| ShamrockCtx& shammodels::sph::Solver< Tvec, SPHKernel >::context |
Definition at line 73 of file Solver.hpp.
|
staticconstexpr |
Definition at line 64 of file Solver.hpp.
|
staticconstexpr |
Definition at line 71 of file Solver.hpp.
| SolverLog shammodels::sph::Solver< Tvec, SPHKernel >::solve_logs |
Definition at line 79 of file Solver.hpp.
| Config shammodels::sph::Solver< Tvec, SPHKernel >::solver_config |
Definition at line 78 of file Solver.hpp.
| SolverStorage<Tvec, u_morton> shammodels::sph::Solver< Tvec, SPHKernel >::storage {} |
Definition at line 76 of file Solver.hpp.
| std::vector<SolverStepCallback> shammodels::sph::Solver< Tvec, SPHKernel >::timestep_callbacks {} |
Definition at line 85 of file Solver.hpp.