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
26
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>;
68 static constexpr u32 dim = shambase::VectorProperties<Tvec>::dimension;
69
70 // Use GSPH ghost handler with Newtonian field names
71 using GhostHandle = gsph::GSPHGhostHandler<Tvec>;
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
93 Component<SerialPatchTree<Tvec>> serial_patch_tree;
94
96 std::shared_ptr<solvergraph::GhostHandlerEdge<Tvec>> ghost_handler;
97 Component<GhostHandleCache> ghost_patch_cache;
98
100 Component<shambase::DistributedData<shamrock::patch::PatchDataLayer>> merged_xyzh;
101
103 Component<shambase::DistributedData<RTree>> merged_pos_trees;
104 Component<shambase::DistributedData<shamtree::KarrasRadixTreeField<Tscal>>>
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;
113 Component<shambase::DistributedData<shamrock::patch::PatchDataLayer>>
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
136 Component<shamrock::ComputeField<Tvec>> old_axyz;
137 Component<shamrock::ComputeField<Tscal>> old_duint;
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
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
std::shared_ptr< shamrock::solvergraph::Field< Tvec > > grad_pressure
std::shared_ptr< shamrock::solvergraph::RankGetter > patch_rank_owner
std::shared_ptr< shamrock::patch::PatchDataLayerLayout > xyzh_ghost_layout
std::shared_ptr< shamrock::solvergraph::Field< Tscal > > density
std::shared_ptr< shamrock::solvergraph::Field< Tscal > > omega
std::shared_ptr< shamrock::solvergraph::Field< Tscal > > pressure
std::shared_ptr< shamrock::solvergraph::Field< Tvec > > grad_vz
Component< shambase::DistributedData< RTree > > merged_pos_trees
std::shared_ptr< shamrock::solvergraph::Indexes< u32 > > part_counts
Component< SerialPatchTree< Tvec > > serial_patch_tree
std::shared_ptr< shamrock::solvergraph::Field< Tvec > > grad_density
std::shared_ptr< shammodels::sph::solvergraph::NeighCache > neigh_cache
std::shared_ptr< solvergraph::GhostHandlerEdge< Tvec > > ghost_handler
Component< shamrock::ComputeField< Tvec > > old_axyz
Component< shambase::DistributedData< shamrock::patch::PatchDataLayer > > merged_xyzh
std::shared_ptr< shamrock::solvergraph::FieldRefs< Tvec > > positions_with_ghosts
std::shared_ptr< shamrock::solvergraph::Field< Tvec > > grad_vy