Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
SolverStorage.hpp
Go to the documentation of this file.
1// -------------------------------------------------------//
2//
3// SHAMROCK code for hydrodynamics
4// Copyright (c) 2021-2026 Timothée David--Cléris <tim.shamrock@proton.me>
5// SPDX-License-Identifier: CeCILL Free Software License Agreement v2.1
6// Shamrock is licensed under the CeCILL 2.1 License, see LICENSE for more information
7//
8// -------------------------------------------------------//
9
10#pragma once
11
29#include "shambackends/vec.hpp"
46#include <memory>
47
48namespace shammodels::gsph {
49
50 template<class T>
51 using Component = shambase::StorageComponent<T>;
52
65 template<class Tvec, class Tmorton>
67 using Tscal = shambase::VecComponent<Tvec>;
69
70 // Use GSPH ghost handler with Newtonian field names
72 using GhostHandleCache = typename GhostHandle::CacheMap;
73
75
77
79 std::shared_ptr<shamrock::solvergraph::Indexes<u32>> part_counts;
80 std::shared_ptr<shamrock::solvergraph::Indexes<u32>> part_counts_with_ghost;
81
83 std::shared_ptr<shamrock::solvergraph::FieldRefs<Tvec>> positions_with_ghosts;
84 std::shared_ptr<shamrock::solvergraph::FieldRefs<Tscal>> hpart_with_ghosts;
85
87 std::shared_ptr<shammodels::sph::solvergraph::NeighCache> neigh_cache;
88
90 std::shared_ptr<shamrock::solvergraph::RankGetter> patch_rank_owner;
91
94
96 std::shared_ptr<solvergraph::GhostHandlerEdge<Tvec>> ghost_handler;
97 Component<GhostHandleCache> ghost_patch_cache;
98
101
105 rtree_rint_field;
106
108 std::shared_ptr<shamrock::solvergraph::Field<Tscal>> omega;
109
111 std::shared_ptr<shamrock::patch::PatchDataLayerLayout> xyzh_ghost_layout;
112 std::shared_ptr<shamrock::patch::PatchDataLayerLayout> ghost_layout;
114 merged_patchdata_ghost;
115
117 std::shared_ptr<shamrock::solvergraph::Field<Tscal>> density;
118
120 std::shared_ptr<shamrock::solvergraph::Field<Tscal>> pressure;
121 std::shared_ptr<shamrock::solvergraph::Field<Tscal>> soundspeed;
122
125 std::shared_ptr<shamrock::solvergraph::Field<Tvec>> grad_density;
126 std::shared_ptr<shamrock::solvergraph::Field<Tvec>> grad_pressure;
127 std::shared_ptr<shamrock::solvergraph::Field<Tvec>> grad_vx;
128 std::shared_ptr<shamrock::solvergraph::Field<Tvec>> grad_vy;
129 std::shared_ptr<shamrock::solvergraph::Field<Tvec>> grad_vz;
130
133 Tscal h_per_cs_min = std::numeric_limits<Tscal>::max();
134
138
140 struct Timings {
141 f64 interface = 0;
142 f64 neighbors = 0;
143 f64 io = 0;
145
146 void reset() { *this = {}; }
147 } timings_details;
148 };
149
150} // namespace shammodels::gsph
GSPH-specific ghost handler using Newtonian physics field names.
SolverGraph edge for GSPH ghost handler.
Declare a class to register and retrieve nodes and edges from a unique container.
double f64
Alias for double.
std::uint32_t u32
32 bit unsigned integer
Container for objects shared between two distributed data elements.
Helper class for Storage Module of any solver.
A graph container for managing solver nodes and edges with type-safe access.
A Compressed Leaf Bounding Volume Hierarchy (CLBVH) for neighborhood queries.
This file contains the definition for the stacktrace related functionality.
f64 riemann
Time spent in Riemann solver.
Runtime storage for GSPH solver.
std::shared_ptr< shamrock::solvergraph::Field< Tvec > > grad_vx
\nabla v_x
std::shared_ptr< shamrock::solvergraph::Field< Tvec > > grad_pressure
\nabla P
std::shared_ptr< shamrock::solvergraph::RankGetter > patch_rank_owner
Patch rank ownership.
std::shared_ptr< shamrock::patch::PatchDataLayerLayout > xyzh_ghost_layout
Ghost data layout and merged data.
std::shared_ptr< shamrock::solvergraph::Field< Tscal > > density
Density field computed via SPH summation.
std::shared_ptr< shamrock::solvergraph::Field< Tscal > > omega
Grad-h correction factor (Omega)
std::shared_ptr< shamrock::solvergraph::Field< Tscal > > pressure
Thermodynamic fields computed from EOS.
std::shared_ptr< shamrock::solvergraph::Field< Tvec > > grad_vz
\nabla v_z
Component< shambase::DistributedData< RTree > > merged_pos_trees
Radix trees for neighbor search.
std::shared_ptr< shamrock::solvergraph::Indexes< u32 > > part_counts
Particle counts per patch.
Component< SerialPatchTree< Tvec > > serial_patch_tree
Serial patch tree for load balancing.
std::shared_ptr< shamrock::solvergraph::Field< Tvec > > grad_density
\nabla \rho
std::shared_ptr< shammodels::sph::solvergraph::NeighCache > neigh_cache
Neighbor cache - uses shamrock's tree-based neighbor search.
std::shared_ptr< solvergraph::GhostHandlerEdge< Tvec > > ghost_handler
Ghost handler for boundary particles.
Component< shamrock::ComputeField< Tvec > > old_axyz
Old derivatives for predictor-corrector integration.
Component< shambase::DistributedData< shamrock::patch::PatchDataLayer > > merged_xyzh
Merged position-h data for neighbor search.
std::shared_ptr< shamrock::solvergraph::FieldRefs< Tvec > > positions_with_ghosts
Position and smoothing length fields with ghosts.
std::shared_ptr< shamrock::solvergraph::Field< Tvec > > grad_vy
\nabla v_y