Shamrock 2025.10.0
Astrophysical Code
Loading...
Searching...
No Matches
NodeUpdateDerivsVaryingAlphaAVDustTVA.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
19#include "shambackends/vec.hpp"
25
26#define NODE_EDGES(X_RO, X_RW) \
27 /* scalars */ \
28 X_RO(shamrock::solvergraph::ScalarEdge<Tscal>, gpart_mass) \
29 X_RO(shamrock::solvergraph::ScalarEdge<Tscal>, alpha_u) \
30 X_RO(shamrock::solvergraph::ScalarEdge<Tscal>, beta_AV) \
31 \
32 /* counts */ \
33 X_RO(shamrock::solvergraph::Indexes<u32>, part_counts) \
34 X_RO(shamrock::solvergraph::Indexes<u32>, part_counts_with_ghost) \
35 \
36 /* fields */ \
37 X_RO(shamrock::solvergraph::IFieldSpan<Tvec>, xyz) \
38 X_RO(shamrock::solvergraph::IFieldSpan<Tscal>, hpart) \
39 X_RO(shamrock::solvergraph::IFieldSpan<Tvec>, vxyz) \
40 X_RO(shamrock::solvergraph::IFieldSpan<Tscal>, uint) \
41 X_RO(shamrock::solvergraph::IFieldSpan<Tscal>, omega) \
42 X_RO(shamrock::solvergraph::IFieldSpan<Tscal>, pressure) \
43 X_RO(shamrock::solvergraph::IFieldSpan<Tscal>, cs) \
44 X_RO(shamrock::solvergraph::IFieldSpan<Tscal>, alpha_AV) \
45 X_RO(shamrock::solvergraph::IFieldSpan<Tscal>, s_j) \
46 \
47 /* neigh */ \
48 X_RO(shammodels::sph::solvergraph::NeighCache, neigh_cache) \
49 \
50 /* outputs */ \
51 X_RW(shamrock::solvergraph::IFieldSpan<Tvec>, axyz) \
52 X_RW(shamrock::solvergraph::IFieldSpan<Tscal>, duint)
53
55
56 template<class Tvec, template<class> class SPHKernel>
57 class NodeUpdateDerivsVaryingAlphaAVDustTVA : public shamrock::solvergraph::INode {
58
59 using Tscal = shambase::VecComponent<Tvec>;
60
61 static constexpr Tscal kernel_radius = SPHKernel<Tscal>::Rkern;
62
63 u32 ndust;
64
65 public:
66 NodeUpdateDerivsVaryingAlphaAVDustTVA(u32 ndust) : ndust(ndust) {}
67
68 EXPAND_NODE_EDGES(NODE_EDGES)
69
71
72 inline virtual std::string _impl_get_label() const {
73 return "UpdateDerivsVaryingAlphaAVDustTVA";
74 };
75
76 inline virtual std::string _impl_get_tex() const { return "TODO"; };
77 };
78} // namespace shammodels::sph::modules
79
80#undef NODE_EDGES
std::uint32_t u32
32 bit unsigned integer
Inode is node between data edges, takes multiple inputs, multiple outputs.
Definition INode.hpp:31
namespace for the sph model modules