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
20#include "shambackends/vec.hpp"
21#include "shammath/riemann.hpp"
29
31
32 using RiemannSolverMode = shammodels::basegodunov::RiemannSolverMode;
34 using Direction = shammodels::basegodunov::modules::Direction;
35
36 template<class Tvec, class TgridVec, RiemannSolverMode mode, Direction dir>
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{
69 get_ro_edge<solvergraph::OrientedAMRGraphEdge<Tvec, TgridVec>>(0),
70 get_ro_edge<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>(1),
71 get_ro_edge<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>>(2),
72 get_ro_edge<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>(3),
73 get_rw_edge<solvergraph::NeighGraphLinkFieldEdge<Tscal>>(0),
74 get_rw_edge<solvergraph::NeighGraphLinkFieldEdge<Tvec>>(1),
75 get_rw_edge<solvergraph::NeighGraphLinkFieldEdge<Tscal>>(2),
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>
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{
115 get_ro_edge<solvergraph::OrientedAMRGraphEdge<Tvec, TgridVec>>(0),
116 get_ro_edge<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>(1),
117 get_ro_edge<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>>(2),
118 get_rw_edge<solvergraph::NeighGraphLinkFieldEdge<Tscal>>(0),
119 get_rw_edge<solvergraph::NeighGraphLinkFieldEdge<Tvec>>(1)};
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>
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:
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>
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:
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:30
T & get_rw_edge(int slot)
Get a read write edge and cast it to the type T.
Definition INode.hpp:86
void __internal_set_rw_edges(std::vector< std::shared_ptr< IEdge > > new_rw_edges)
Set the read write edges.
Definition INode.hpp:181
void __internal_set_ro_edges(std::vector< std::shared_ptr< IEdge > > new_ro_edges)
Set the read only edges.
Definition INode.hpp:171
const T & get_ro_edge(int slot)
Get a read only edge and cast it to the type T.
Definition INode.hpp:80
namespace for the basegodunov model modules
DustRiemannSolverMode
Dust Riemann solver mode enum.
From original version by Thomas Guillet (T.A.Guillet@exeter.ac.uk)
This file contain states and Riemann solvers for dust.