Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
shammodels::sph::Solver< Tvec, SPHKernel > Class Template Reference

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

PatchSchedulerscheduler ()
 
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

ShamrockCtxcontext
 
SolverStorage< Tvec, u_morton > storage {}
 
Config solver_config
 
SolverLog solve_logs
 
std::vector< SolverStepCallbacktimestep_callbacks {}
 

Static Public Attributes

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

Detailed Description

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

The shamrock SPH model.

Template Parameters
Tvec
SPHKernel

Definition at line 61 of file Solver.hpp.

Member Typedef Documentation

◆ Config

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

Definition at line 67 of file Solver.hpp.

◆ GhostHandle

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

Definition at line 94 of file Solver.hpp.

◆ GhostHandleCache

template<class Tvec , template< class > class SPHKernel>
using shammodels::sph::Solver< Tvec, SPHKernel >::GhostHandleCache = typename GhostHandle::CacheMap

Definition at line 95 of file Solver.hpp.

◆ Kernel

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

Definition at line 65 of file Solver.hpp.

◆ RTree

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

Definition at line 152 of file Solver.hpp.

◆ Tscal

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

Definition at line 63 of file Solver.hpp.

◆ u_morton

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

Definition at line 69 of file Solver.hpp.

Constructor & Destructor Documentation

◆ Solver()

template<class Tvec , template< class > class SPHKernel>
shammodels::sph::Solver< Tvec, SPHKernel >::Solver ( ShamrockCtx context)
inline

Definition at line 209 of file Solver.hpp.

Member Function Documentation

◆ apply_corrector()

template<class Tvec , template< class > class Kern>
bool shammodels::sph::Solver< Tvec, Kern >::apply_corrector ( Tscal  dt,
u64  Npart_all 
)
Returns
true corrector is converged
false corrector is not converged

Definition at line 1566 of file Solver.cpp.

◆ apply_position_boundary()

template<class Tvec , template< class > class Kern>
void shammodels::sph::Solver< Tvec, Kern >::apply_position_boundary ( Tscal  time_val)

Applies position-based boundary conditions.

Applies position boundary conditions to the particles.

Parameters
time_valthe current time value

Definition at line 734 of file Solver.cpp.

+ Here is the call graph for this function:

◆ build_ghost_cache()

template<class Tvec , template< class > class Kern>
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.

◆ build_merged_pos_trees()

template<class Tvec , template< class > class Kern>
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:

◆ clear_ghost_cache()

template<class Tvec , template< class > class Kern>
void shammodels::sph::Solver< Tvec, Kern >::clear_ghost_cache ( )

Clears ghost particle cache to free memory.

Definition at line 796 of file Solver.cpp.

◆ clear_merged_pos_trees()

template<class Tvec , template< class > class Kern>
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.

◆ communicate_merge_ghosts_fields()

template<class Tvec , template< class > class Kern>
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:

◆ compute_eos_fields()

template<class Tvec , template< class > class Kern>
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:

◆ compute_presteps_rint()

template<class Tvec , template< class > class Kern>
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.

◆ do_predictor_leapfrog()

template<class Tvec , template< class > class Kern>
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:

◆ evolve_once()

template<class Tvec , template< class > class Kern>
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:

◆ evolve_once_time_expl()

template<class Tvec , template< class > class SPHKernel>
Tscal shammodels::sph::Solver< Tvec, SPHKernel >::evolve_once_time_expl ( Tscal  t_current,
Tscal  dt_input 
)
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:

◆ evolve_until()

template<class Tvec , template< class > class SPHKernel>
bool shammodels::sph::Solver< Tvec, SPHKernel >::evolve_until ( Tscal  target_time,
i32  niter_max 
)
inline

Definition at line 239 of file Solver.hpp.

◆ gen_ghost_handler()

template<class Tvec , template< class > class SPHKernel>
void shammodels::sph::Solver< Tvec, SPHKernel >::gen_ghost_handler ( Tscal  time_val)
inline

Definition at line 97 of file Solver.hpp.

◆ gen_serial_patch_tree()

template<class Tvec , template< class > class Kern>
void shammodels::sph::Solver< Tvec, Kern >::gen_serial_patch_tree ( )

Definition at line 720 of file Solver.cpp.

◆ init_ghost_layout()

template<class Tvec , template< class > class Kern>
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:

◆ init_required_fields()

template<class Tvec , template< class > class SPHKernel>
void shammodels::sph::Solver< Tvec, SPHKernel >::init_required_fields ( )
inline

Definition at line 87 of file Solver.hpp.

◆ init_solver_graph()

template<class Tvec , template< class > class Kern>
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:

◆ merge_position_ghost()

template<class Tvec , template< class > class Kern>
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:

◆ prepare_corrector()

template<class Tvec , template< class > class Kern>
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:

◆ print_timestep_logs()

template<class Tvec , template< class > class SPHKernel>
void shammodels::sph::Solver< Tvec, SPHKernel >::print_timestep_logs ( )
inline

Definition at line 221 of file Solver.hpp.

◆ reset_eos_fields()

template<class Tvec , template< class > class Kern>
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:

◆ reset_ghost_handler()

template<class Tvec , template< class > class SPHKernel>
void shammodels::sph::Solver< Tvec, SPHKernel >::reset_ghost_handler ( )
inline

Definition at line 141 of file Solver.hpp.

◆ reset_merge_ghosts_fields()

template<class Tvec , template< class > class Kern>
void shammodels::sph::Solver< Tvec, Kern >::reset_merge_ghosts_fields ( )

Resets merged ghost field data.

Definition at line 1484 of file Solver.cpp.

◆ reset_neighbors_cache()

template<class Tvec , template< class > class Kern>
void shammodels::sph::Solver< Tvec, Kern >::reset_neighbors_cache ( )

Resets neighbor cache.

Definition at line 1249 of file Solver.cpp.

◆ reset_presteps_rint()

template<class Tvec , template< class > class Kern>
void shammodels::sph::Solver< Tvec, Kern >::reset_presteps_rint ( )

Resets tree radius interval field.

Definition at line 1219 of file Solver.cpp.

◆ reset_serial_patch_tree()

template<class Tvec , template< class > class SPHKernel>
void shammodels::sph::Solver< Tvec, SPHKernel >::reset_serial_patch_tree ( )
inline

Definition at line 91 of file Solver.hpp.

◆ scheduler()

template<class Tvec , template< class > class SPHKernel>
PatchScheduler & shammodels::sph::Solver< Tvec, SPHKernel >::scheduler ( )
inline

Definition at line 74 of file Solver.hpp.

◆ set_debug_dump()

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

Definition at line 217 of file Solver.hpp.

◆ sph_prestep()

template<class Tvec , template< class > class Kern>
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:

◆ start_neighbors_cache()

template<class Tvec , template< class > class Kern>
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:

◆ update_artificial_viscosity()

template<class Tvec , template< class > class Kern>
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.

◆ update_derivs()

template<class Tvec , template< class > class Kern>
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:

◆ update_sync_load_values()

template<class Tvec , template< class > class Kern>
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.

◆ vtk_do_dump()

template<class Tvec , template< class > class Kern>
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:

Member Data Documentation

◆ context

template<class Tvec , template< class > class SPHKernel>
ShamrockCtx& shammodels::sph::Solver< Tvec, SPHKernel >::context

Definition at line 73 of file Solver.hpp.

◆ dim

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

Definition at line 64 of file Solver.hpp.

◆ Rkern

template<class Tvec , template< class > class SPHKernel>
constexpr Tscal shammodels::sph::Solver< Tvec, SPHKernel >::Rkern = Kernel::Rkern
staticconstexpr

Definition at line 71 of file Solver.hpp.

◆ solve_logs

template<class Tvec , template< class > class SPHKernel>
SolverLog shammodels::sph::Solver< Tvec, SPHKernel >::solve_logs

Definition at line 79 of file Solver.hpp.

◆ solver_config

template<class Tvec , template< class > class SPHKernel>
Config shammodels::sph::Solver< Tvec, SPHKernel >::solver_config

Definition at line 78 of file Solver.hpp.

◆ storage

template<class Tvec , template< class > class SPHKernel>
SolverStorage<Tvec, u_morton> shammodels::sph::Solver< Tvec, SPHKernel >::storage {}

Definition at line 76 of file Solver.hpp.

◆ timestep_callbacks

template<class Tvec , template< class > class SPHKernel>
std::vector<SolverStepCallback> shammodels::sph::Solver< Tvec, SPHKernel >::timestep_callbacks {}

Definition at line 85 of file Solver.hpp.


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