Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
SumFluxHydro.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
19#include "shambackends/vec.hpp"
26
27#define NODE_SUM_FLUX_HYDRO(X_RO, X_RW) \
28 /* ------------------- inputs ------------------- */ \
29 /* number of blocks */ \
30 X_RO(shamrock::solvergraph::Indexes<u32>, block_counts) \
31 \
32 /* cell neighbor graph */ \
33 X_RO(CellGraphEdge, cell_neigh_graph) \
34 \
35 /* block cell sizes */ \
36 X_RO(shamrock::solvergraph::IFieldSpan<Tscal>, spans_block_cell_sizes) \
37 /* block low corner position */ \
38 X_RO(shamrock::solvergraph::IFieldSpan<Tvec>, spans_cell0block_aabb_lower) \
39 \
40 /* fluxes */ \
41 X_RO(solvergraph::NeighGraphLinkFieldEdge<Tscal>, flux_rho_face_xp) \
42 X_RO(solvergraph::NeighGraphLinkFieldEdge<Tscal>, flux_rho_face_xm) \
43 X_RO(solvergraph::NeighGraphLinkFieldEdge<Tscal>, flux_rho_face_yp) \
44 X_RO(solvergraph::NeighGraphLinkFieldEdge<Tscal>, flux_rho_face_ym) \
45 X_RO(solvergraph::NeighGraphLinkFieldEdge<Tscal>, flux_rho_face_zp) \
46 X_RO(solvergraph::NeighGraphLinkFieldEdge<Tscal>, flux_rho_face_zm) \
47 \
48 X_RO(solvergraph::NeighGraphLinkFieldEdge<Tvec>, flux_rhov_face_xp) \
49 X_RO(solvergraph::NeighGraphLinkFieldEdge<Tvec>, flux_rhov_face_xm) \
50 X_RO(solvergraph::NeighGraphLinkFieldEdge<Tvec>, flux_rhov_face_yp) \
51 X_RO(solvergraph::NeighGraphLinkFieldEdge<Tvec>, flux_rhov_face_ym) \
52 X_RO(solvergraph::NeighGraphLinkFieldEdge<Tvec>, flux_rhov_face_zp) \
53 X_RO(solvergraph::NeighGraphLinkFieldEdge<Tvec>, flux_rhov_face_zm) \
54 \
55 X_RO(solvergraph::NeighGraphLinkFieldEdge<Tscal>, flux_rhoe_face_xp) \
56 X_RO(solvergraph::NeighGraphLinkFieldEdge<Tscal>, flux_rhoe_face_xm) \
57 X_RO(solvergraph::NeighGraphLinkFieldEdge<Tscal>, flux_rhoe_face_yp) \
58 X_RO(solvergraph::NeighGraphLinkFieldEdge<Tscal>, flux_rhoe_face_ym) \
59 X_RO(solvergraph::NeighGraphLinkFieldEdge<Tscal>, flux_rhoe_face_zp) \
60 X_RO(solvergraph::NeighGraphLinkFieldEdge<Tscal>, flux_rhoe_face_zm) \
61 \
62 /* ------------------- outputs ------------------- */ \
63 X_RW(shamrock::solvergraph::IFieldSpan<Tscal>, spans_dtrho) /* time derivative of density*/ \
64 X_RW(shamrock::solvergraph::IFieldSpan<Tvec>, spans_dtrhov) /* time derivative of momentum*/ \
65 X_RW(shamrock::solvergraph::IFieldSpan<Tscal>, spans_dtrhoe) /* time derivative of energy*/
66
68 template<class T>
70
71 template<class Tvec, class TgridVec>
73 using Tscal = shambase::VecComponent<Tvec>;
75
76 u32 block_size;
77 Tscal dxfact;
78
79 public:
80 NodeSumFluxHydro(u32 block_size, Tscal dxfact) : block_size(block_size), dxfact(dxfact) {}
81
83
84 EXPAND_NODE_EDGES(NODE_SUM_FLUX_HYDRO)
85
87
88 inline virtual std::string _impl_get_label() const { return "SumFluxHydro"; }
89
90 inline virtual std::string _impl_get_tex() const { return "TODO"; };
91 };
92
93} // namespace shammodels::basegodunov::modules
94
95#undef NODE_SUM_FLUX_HYDRO
utility to manipulate AMR blocks
std::uint32_t u32
32 bit unsigned integer
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
namespace for the basegodunov model modules
utility class to handle AMR blocks
Definition AMRBlock.hpp:35