Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
NodeComputeFlux.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
20#include "shambackends/vec.hpp"
21#include "shammath/riemann.hpp"
29
31
32 using RiemannSolverMode = shammodels::basegodunov::RiemannSolverMode;
33 using DustRiemannSolverMode = shammodels::basegodunov::DustRiemannSolverMode;
34 using Direction = shammodels::basegodunov::modules::Direction;
35
36 template<class Tvec, class TgridVec, RiemannSolverMode mode, Direction dir>
37 class NodeComputeFluxGasDirMode : public shamrock::solvergraph::INode {
38 using Tscal = shambase::VecComponent<Tvec>;
39
40 Tscal gamma;
41
42 public:
43 NodeComputeFluxGasDirMode(Tscal gamma) : gamma(gamma) {}
44
54
55 inline void set_edges(
56 std::shared_ptr<solvergraph::OrientedAMRGraphEdge<Tvec, TgridVec>> cell_neigh_graph,
57 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face,
58 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face,
59 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> press_face,
60 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face,
61 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face,
62 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rhoe_face) {
63 __internal_set_ro_edges({cell_neigh_graph, rho_face, vel_face, press_face});
64 __internal_set_rw_edges({flux_rho_face, flux_rhov_face, flux_rhoe_face});
65 }
66
67 inline Edges get_edges() {
68 return Edges{
70 get_ro_edge<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>(1),
72 get_ro_edge<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>(3),
74 get_rw_edge<solvergraph::NeighGraphLinkFieldEdge<Tvec>>(1),
76 };
77 }
78
80
81 inline virtual std::string _impl_get_label() const { return "NodeComputeFluxGasDirMode"; };
82
83 virtual std::string _impl_get_tex() const;
84 };
85
86 template<class Tvec, class TgridVec, DustRiemannSolverMode mode, Direction dir>
87 class NodeComputeFluxDustDirMode : public shamrock::solvergraph::INode {
88 using Tscal = shambase::VecComponent<Tvec>;
89
90 u32 ndust;
91
92 public:
93 NodeComputeFluxDustDirMode(u32 ndust) : ndust(ndust) {}
94
102
103 inline void set_edges(
104 std::shared_ptr<solvergraph::OrientedAMRGraphEdge<Tvec, TgridVec>> cell_neigh_graph,
105 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face,
106 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face,
107 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face,
108 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face) {
109 __internal_set_ro_edges({cell_neigh_graph, rho_face, vel_face});
110 __internal_set_rw_edges({flux_rho_face, flux_rhov_face});
111 }
112
113 inline Edges get_edges() {
114 return Edges{
116 get_ro_edge<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>(1),
118 get_rw_edge<solvergraph::NeighGraphLinkFieldEdge<Tscal>>(0),
120 }
121
123
124 inline virtual std::string _impl_get_label() const { return "NodeComputeFluxDustDirMode"; };
125
126 virtual std::string _impl_get_tex() const;
127 };
128
129 template<class Tvec, class TgridVec, RiemannSolverMode mode>
130 class NodeComputeFluxGasMode : public shamrock::solvergraph::OperationSequence {
131 using Tscal = shambase::VecComponent<Tvec>;
132
133 inline static auto make_sequence(
134 Tscal gamma,
135
136 std::shared_ptr<solvergraph::OrientedAMRGraphEdge<Tvec, TgridVec>> cell_neigh_graph,
137
138 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_xp,
139 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_xm,
140 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_yp,
141 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_ym,
142 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_zp,
143 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_zm,
144
145 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_xp,
146 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_xm,
147 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_yp,
148 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_ym,
149 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_zp,
150 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_zm,
151
152 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>
153 press_face_xp,
154 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>
155 press_face_xm,
156 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>
157 press_face_yp,
158 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>
159 press_face_ym,
160 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>
161 press_face_zp,
162 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>
163 press_face_zm,
164
165 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_xp,
166 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_xm,
167 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_yp,
168 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_ym,
169 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_zp,
170 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_zm,
171
172 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_xp,
173 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_xm,
174 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_yp,
175 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_ym,
176 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_zp,
177 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_zm,
178
179 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rhoe_face_xp,
180 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rhoe_face_xm,
181 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rhoe_face_yp,
182 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rhoe_face_ym,
183 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rhoe_face_zp,
184 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rhoe_face_zm
185
186 ) -> std::vector<std::shared_ptr<shamrock::solvergraph::INode>> {
187
188 std::vector<std::shared_ptr<shamrock::solvergraph::INode>> flux_sequence;
189
191 node_xm(gamma);
192 node_xm.set_edges(
193 cell_neigh_graph,
194 rho_face_xm,
195 vel_face_xm,
196 press_face_xm,
197 flux_rho_face_xm,
198 flux_rhov_face_xm,
199 flux_rhoe_face_xm);
201 node_xp(gamma);
202 node_xp.set_edges(
203 cell_neigh_graph,
204 rho_face_xp,
205 vel_face_xp,
206 press_face_xp,
207 flux_rho_face_xp,
208 flux_rhov_face_xp,
209 flux_rhoe_face_xp);
210
212 node_ym(gamma);
213 node_ym.set_edges(
214 cell_neigh_graph,
215 rho_face_ym,
216 vel_face_ym,
217 press_face_ym,
218 flux_rho_face_ym,
219 flux_rhov_face_ym,
220 flux_rhoe_face_ym);
222 node_yp(gamma);
223 node_yp.set_edges(
224 cell_neigh_graph,
225 rho_face_yp,
226 vel_face_yp,
227 press_face_yp,
228 flux_rho_face_yp,
229 flux_rhov_face_yp,
230 flux_rhoe_face_yp);
232 node_zm(gamma);
233 node_zm.set_edges(
234 cell_neigh_graph,
235 rho_face_zm,
236 vel_face_zm,
237 press_face_zm,
238 flux_rho_face_zm,
239 flux_rhov_face_zm,
240 flux_rhoe_face_zm);
242 node_zp(gamma);
243 node_zp.set_edges(
244 cell_neigh_graph,
245 rho_face_zp,
246 vel_face_zp,
247 press_face_zp,
248 flux_rho_face_zp,
249 flux_rhov_face_zp,
250 flux_rhoe_face_zp);
251
252 flux_sequence.push_back(std::make_shared<decltype(node_xm)>(std::move(node_xm)));
253 flux_sequence.push_back(std::make_shared<decltype(node_xp)>(std::move(node_xp)));
254 flux_sequence.push_back(std::make_shared<decltype(node_ym)>(std::move(node_ym)));
255 flux_sequence.push_back(std::make_shared<decltype(node_yp)>(std::move(node_yp)));
256 flux_sequence.push_back(std::make_shared<decltype(node_zm)>(std::move(node_zm)));
257 flux_sequence.push_back(std::make_shared<decltype(node_zp)>(std::move(node_zp)));
258
259 return flux_sequence;
260 };
261
262 public:
263 NodeComputeFluxGasMode(
264 std::string name,
265 Tscal gamma,
266
267 std::shared_ptr<solvergraph::OrientedAMRGraphEdge<Tvec, TgridVec>> cell_neigh_graph,
268
269 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_xp,
270 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_xm,
271 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_yp,
272 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_ym,
273 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_zp,
274 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_zm,
275
276 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_xp,
277 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_xm,
278 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_yp,
279 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_ym,
280 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_zp,
281 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_zm,
282
283 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>
284 press_face_xp,
285 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>
286 press_face_xm,
287 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>
288 press_face_yp,
289 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>
290 press_face_ym,
291 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>
292 press_face_zp,
293 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>
294 press_face_zm,
295
296 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_xp,
297 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_xm,
298 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_yp,
299 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_ym,
300 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_zp,
301 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_zm,
302
303 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_xp,
304 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_xm,
305 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_yp,
306 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_ym,
307 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_zp,
308 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_zm,
309
310 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rhoe_face_xp,
311 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rhoe_face_xm,
312 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rhoe_face_yp,
313 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rhoe_face_ym,
314 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rhoe_face_zp,
315 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rhoe_face_zm)
316 : OperationSequence(
317 std::move(name),
318 make_sequence(
319 gamma,
320 cell_neigh_graph,
321 rho_face_xp,
322 rho_face_xm,
323 rho_face_yp,
324 rho_face_ym,
325 rho_face_zp,
326 rho_face_zm,
327 vel_face_xp,
328 vel_face_xm,
329 vel_face_yp,
330 vel_face_ym,
331 vel_face_zp,
332 vel_face_zm,
333 press_face_xp,
334 press_face_xm,
335 press_face_yp,
336 press_face_ym,
337 press_face_zp,
338 press_face_zm,
339 flux_rho_face_xp,
340 flux_rho_face_xm,
341 flux_rho_face_yp,
342 flux_rho_face_ym,
343 flux_rho_face_zp,
344 flux_rho_face_zm,
345 flux_rhov_face_xp,
346 flux_rhov_face_xm,
347 flux_rhov_face_yp,
348 flux_rhov_face_ym,
349 flux_rhov_face_zp,
350 flux_rhov_face_zm,
351 flux_rhoe_face_xp,
352 flux_rhoe_face_xm,
353 flux_rhoe_face_yp,
354 flux_rhoe_face_ym,
355 flux_rhoe_face_zp,
356 flux_rhoe_face_zm)) {}
357 };
358
359 template<class Tvec, class TgridVec, DustRiemannSolverMode mode>
360 class NodeComputeFluxDustMode : public shamrock::solvergraph::OperationSequence {
361 using Tscal = shambase::VecComponent<Tvec>;
362
363 inline static auto make_sequence(
364 u32 ndust,
365
366 std::shared_ptr<solvergraph::OrientedAMRGraphEdge<Tvec, TgridVec>> cell_neigh_graph,
367
368 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_xp,
369 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_xm,
370 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_yp,
371 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_ym,
372 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_zp,
373 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_zm,
374
375 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_xp,
376 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_xm,
377 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_yp,
378 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_ym,
379 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_zp,
380 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_zm,
381
382 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_xp,
383 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_xm,
384 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_yp,
385 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_ym,
386 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_zp,
387 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_zm,
388
389 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_xp,
390 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_xm,
391 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_yp,
392 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_ym,
393 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_zp,
394 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_zm
395
396 ) -> std::vector<std::shared_ptr<shamrock::solvergraph::INode>> {
397
398 std::vector<std::shared_ptr<shamrock::solvergraph::INode>> flux_sequence;
399
401 node_xm(ndust);
402 node_xm.set_edges(
403 cell_neigh_graph, rho_face_xm, vel_face_xm, flux_rho_face_xm, flux_rhov_face_xm);
405 node_xp(ndust);
406 node_xp.set_edges(
407 cell_neigh_graph, rho_face_xp, vel_face_xp, flux_rho_face_xp, flux_rhov_face_xp);
408
410 node_ym(ndust);
411 node_ym.set_edges(
412 cell_neigh_graph, rho_face_ym, vel_face_ym, flux_rho_face_ym, flux_rhov_face_ym);
414 node_yp(ndust);
415 node_yp.set_edges(
416 cell_neigh_graph, rho_face_yp, vel_face_yp, flux_rho_face_yp, flux_rhov_face_yp);
418 node_zm(ndust);
419 node_zm.set_edges(
420 cell_neigh_graph, rho_face_zm, vel_face_zm, flux_rho_face_zm, flux_rhov_face_zm);
422 node_zp(ndust);
423 node_zp.set_edges(
424 cell_neigh_graph, rho_face_zp, vel_face_zp, flux_rho_face_zp, flux_rhov_face_zp);
425
426 flux_sequence.push_back(std::make_shared<decltype(node_xm)>(std::move(node_xm)));
427 flux_sequence.push_back(std::make_shared<decltype(node_xp)>(std::move(node_xp)));
428 flux_sequence.push_back(std::make_shared<decltype(node_ym)>(std::move(node_ym)));
429 flux_sequence.push_back(std::make_shared<decltype(node_yp)>(std::move(node_yp)));
430 flux_sequence.push_back(std::make_shared<decltype(node_zm)>(std::move(node_zm)));
431 flux_sequence.push_back(std::make_shared<decltype(node_zp)>(std::move(node_zp)));
432
433 return flux_sequence;
434 };
435
436 public:
437 NodeComputeFluxDustMode(
438 std::string name,
439 u32 ndust,
440
441 std::shared_ptr<solvergraph::OrientedAMRGraphEdge<Tvec, TgridVec>> cell_neigh_graph,
442
443 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_xp,
444 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_xm,
445 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_yp,
446 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_ym,
447 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_zp,
448 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_zm,
449
450 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_xp,
451 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_xm,
452 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_yp,
453 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_ym,
454 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_zp,
455 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_zm,
456
457 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_xp,
458 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_xm,
459 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_yp,
460 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_ym,
461 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_zp,
462 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_zm,
463
464 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_xp,
465 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_xm,
466 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_yp,
467 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_ym,
468 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_zp,
469 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_zm)
470 : OperationSequence(
471 std::move(name),
472 make_sequence(
473 ndust,
474 cell_neigh_graph,
475 rho_face_xp,
476 rho_face_xm,
477 rho_face_yp,
478 rho_face_ym,
479 rho_face_zp,
480 rho_face_zm,
481 vel_face_xp,
482 vel_face_xm,
483 vel_face_yp,
484 vel_face_ym,
485 vel_face_zp,
486 vel_face_zm,
487 flux_rho_face_xp,
488 flux_rho_face_xm,
489 flux_rho_face_yp,
490 flux_rho_face_ym,
491 flux_rho_face_zp,
492 flux_rho_face_zm,
493 flux_rhov_face_xp,
494 flux_rhov_face_xm,
495 flux_rhov_face_yp,
496 flux_rhov_face_ym,
497 flux_rhov_face_zp,
498 flux_rhov_face_zm)) {}
499 };
500
501} // namespace shammodels::basegodunov::modules
std::uint32_t u32
32 bit unsigned integer
virtual std::string _impl_get_label() const
get the label of the node
virtual std::string _impl_get_tex() const
get the tex of the node
virtual std::string _impl_get_tex() const
get the tex of the node
virtual std::string _impl_get_label() const
get the label of the node
Inode is node between data edges, takes multiple inputs, multiple outputs.
Definition INode.hpp:31
T & get_rw_edge(int slot)
Get a read write edge and cast it to the type T.
Definition INode.hpp:97
void __internal_set_rw_edges(std::vector< std::shared_ptr< IEdge > > new_rw_edges)
Set the read write edges.
Definition INode.hpp:249
void __internal_set_ro_edges(std::vector< std::shared_ptr< IEdge > > new_ro_edges)
Set the read only edges.
Definition INode.hpp:238
const T & get_ro_edge(int slot)
Get a read only edge and cast it to the type T.
Definition INode.hpp:91
namespace for the basegodunov model modules
DustRiemannSolverMode
Dust Riemann solver mode enum.
Umbrella header pulling in the gas states and all gas Riemann solvers (Rusanov, HLL,...
Umbrella header pulling in the dust states and all dust Riemann solvers (HLL, Huang & Bai).