Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
SumFluxDust.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_DUST(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 /* ------------------- outputs ------------------- */ \
56 X_RW(shamrock::solvergraph::IFieldSpan<Tscal>, spans_dtrho) /* time derivative of density*/ \
57 X_RW(shamrock::solvergraph::IFieldSpan<Tvec>, spans_dtrhov) /* time derivative of momentum*/
58
60 template<class T>
62
63 template<class Tvec, class TgridVec>
65 using Tscal = shambase::VecComponent<Tvec>;
67
68 u32 block_size;
69 Tscal dxfact;
70 u32 ndust;
71
72 public:
73 NodeSumFluxDust(u32 block_size, Tscal dxfact, u32 ndust)
74 : block_size(block_size), dxfact(dxfact), ndust(ndust) {}
75
77
78 EXPAND_NODE_EDGES(NODE_SUM_FLUX_DUST)
79
81
82 inline virtual std::string _impl_get_label() const { return "SumFluxDust"; }
83
84 inline virtual std::string _impl_get_tex() const { return "TODO"; };
85 };
86
87} // namespace shammodels::basegodunov::modules
88
89#undef NODE_SUM_FLUX_DUST
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