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
18
21#include "shambackends/vec.hpp"
31namespace shammodels::zeus {
32
33 template<class T>
34 using Component = shambase::StorageComponent<T>;
35
36 template<class Tvec, class TgridVec, class Tmorton>
38 public:
39 using Tscal = shambase::VecComponent<Tvec>;
40 using Tgridscal = shambase::VecComponent<TgridVec>;
41 static constexpr u32 dim = shambase::VectorProperties<Tvec>::dimension;
42
43 using RTree = RadixTree<Tmorton, TgridVec>;
44
45 Component<SerialPatchTree<TgridVec>> serial_patch_tree;
46
47 Component<GhostZonesData<Tvec, TgridVec>> ghost_zone_infos;
48
49 Component<std::shared_ptr<shamrock::patch::PatchDataLayerLayout>> ghost_layout;
50 Component<std::shared_ptr<shamrock::patch::PatchDataLayerLayout>> ghost_layout_Q;
51
52 Component<shambase::DistributedData<shamrock::MergedPatchData>> merged_patchdata_ghost;
53 Component<shambase::DistributedData<shamrock::MergedPatchData>> merged_patchdata_ghost_Q;
54 Component<shambase::DistributedData<shammath::AABB<TgridVec>>> merge_patch_bounds;
55 Component<shambase::DistributedData<RTree>> trees;
56
57 Component<shamrock::tree::ObjectCacheHandler> neighbors_cache;
58
59 Component<shamrock::ComputeField<Tscal>> pressure;
60
71 Component<shambase::DistributedData<sycl::buffer<u8>>> face_normals_lookup;
72
73 Component<shambase::DistributedData<NeighFaceList<Tvec>>> face_lists;
74
75 Component<shamrock::ComputeField<Tvec>> vel_n;
76 Component<shamrock::ComputeField<Tvec>> vel_n_xp;
77 Component<shamrock::ComputeField<Tvec>> vel_n_yp;
78 Component<shamrock::ComputeField<Tvec>> vel_n_zp;
79
80 Component<shamrock::ComputeField<Tscal>> rho_n_xm;
81 Component<shamrock::ComputeField<Tscal>> rho_n_ym;
82 Component<shamrock::ComputeField<Tscal>> rho_n_zm;
83
84 Component<shamrock::ComputeField<Tscal>> pres_n_xm;
85 Component<shamrock::ComputeField<Tscal>> pres_n_ym;
86 Component<shamrock::ComputeField<Tscal>> pres_n_zm;
87
88 Component<shamrock::ComputeField<Tvec>> q_AV_n_xm;
89 Component<shamrock::ComputeField<Tvec>> q_AV_n_ym;
90 Component<shamrock::ComputeField<Tvec>> q_AV_n_zm;
91
92 Component<shamrock::ComputeField<Tvec>> forces;
93
94 Component<shamrock::ComputeField<Tvec>> q_AV;
95 Component<shamrock::ComputeField<Tscal>> div_v_n;
96
97 Component<shamrock::ComputeField<sycl::vec<Tscal, 8>>> Q;
98 Component<shamrock::ComputeField<sycl::vec<Tscal, 8>>> a_x;
99 Component<shamrock::ComputeField<sycl::vec<Tscal, 8>>> a_y;
100 Component<shamrock::ComputeField<sycl::vec<Tscal, 8>>> a_z;
101
102 Component<shamrock::ComputeField<sycl::vec<Tscal, 8>>> Q_xm;
103 Component<shamrock::ComputeField<sycl::vec<Tscal, 8>>> Q_ym;
104 Component<shamrock::ComputeField<sycl::vec<Tscal, 8>>> Q_zm;
105
106 Component<shamrock::ComputeField<sycl::vec<Tscal, 8>>> Qstar_x;
107 Component<shamrock::ComputeField<sycl::vec<Tscal, 8>>> Qstar_y;
108 Component<shamrock::ComputeField<sycl::vec<Tscal, 8>>> Qstar_z;
109
110 Component<shamrock::ComputeField<sycl::vec<Tscal, 8>>> Flux_x;
111 Component<shamrock::ComputeField<sycl::vec<Tscal, 8>>> Flux_y;
112 Component<shamrock::ComputeField<sycl::vec<Tscal, 8>>> Flux_z;
113 Component<shamrock::ComputeField<sycl::vec<Tscal, 8>>> Flux_xp;
114 Component<shamrock::ComputeField<sycl::vec<Tscal, 8>>> Flux_yp;
115 Component<shamrock::ComputeField<sycl::vec<Tscal, 8>>> Flux_zp;
116
121 Component<shamrock::ComputeField<Tvec>> gradu;
122
123 struct Timings {
124 f64 interface = 0;
125 f64 neighbors = 0;
126 f64 io = 0;
127
129 void reset() { *this = {}; }
130 } timings_details;
131 };
132
133} // namespace shammodels::zeus
double f64
Alias for double.
std::uint32_t u32
32 bit unsigned integer
The radix tree.
Definition RadixTree.hpp:50
Component< shambase::DistributedData< sycl::buffer< u8 > > > face_normals_lookup
Component< shamrock::ComputeField< Tvec > > gradu
namespace for the zeus model
This file contains the definition for the stacktrace related functionality.
void reset()
Reset the timings logged in the storage.