35#define NODE_EDGES_RHO(X_RO, X_RW) \
37 X_RO(ScalarEdgeScal, dt_interp) \
38 X_RO(AMRGraphEdge, cell_neigh_graph) \
39 X_RO(shamrock::solvergraph::IFieldSpan<Tscal>, spans_block_cell_sizes) \
40 X_RO(shamrock::solvergraph::IFieldSpan<Tvec>, spans_cell0block_aabb_lower) \
41 X_RO(shamrock::solvergraph::IFieldSpan<Tscal>, spans_rhos) \
42 X_RO(shamrock::solvergraph::IFieldSpan<Tvec>, spans_grad_rho) \
43 X_RO(shamrock::solvergraph::IFieldSpan<Tscal>, spans_dt_rho) \
46 X_RW(LinkFieldScal, rho_face_xp) \
47 X_RW(LinkFieldScal, rho_face_xm) \
48 X_RW(LinkFieldScal, rho_face_yp) \
49 X_RW(LinkFieldScal, rho_face_ym) \
50 X_RW(LinkFieldScal, rho_face_zp) \
51 X_RW(LinkFieldScal, rho_face_zm)
53#define NODE_EDGES_VEL(X_RO, X_RW) \
55 X_RO(ScalarEdgeScal, dt_interp) \
56 X_RO(AMRGraphEdge, cell_neigh_graph) \
57 X_RO(shamrock::solvergraph::IFieldSpan<Tscal>, spans_block_cell_sizes) \
58 X_RO(shamrock::solvergraph::IFieldSpan<Tvec>, spans_cell0block_aabb_lower) \
59 X_RO(shamrock::solvergraph::IFieldSpan<Tvec>, spans_vel) \
60 X_RO(shamrock::solvergraph::IFieldSpan<Tvec>, spans_dx_vel) \
61 X_RO(shamrock::solvergraph::IFieldSpan<Tvec>, spans_dy_vel) \
62 X_RO(shamrock::solvergraph::IFieldSpan<Tvec>, spans_dz_vel) \
63 X_RO(shamrock::solvergraph::IFieldSpan<Tvec>, spans_dt_vel) \
66 X_RW(LinkFieldVec, vel_face_xp) \
67 X_RW(LinkFieldVec, vel_face_xm) \
68 X_RW(LinkFieldVec, vel_face_yp) \
69 X_RW(LinkFieldVec, vel_face_ym) \
70 X_RW(LinkFieldVec, vel_face_zp) \
71 X_RW(LinkFieldVec, vel_face_zm)
73#define NODE_EDGES_PRESS(X_RO, X_RW) \
75 X_RO(ScalarEdgeScal, dt_interp) \
76 X_RO(AMRGraphEdge, cell_neigh_graph) \
77 X_RO(shamrock::solvergraph::IFieldSpan<Tscal>, spans_block_cell_sizes) \
78 X_RO(shamrock::solvergraph::IFieldSpan<Tvec>, spans_cell0block_aabb_lower) \
79 X_RO(shamrock::solvergraph::IFieldSpan<Tscal>, spans_press) \
80 X_RO(shamrock::solvergraph::IFieldSpan<Tvec>, spans_grad_P) \
81 X_RO(shamrock::solvergraph::IFieldSpan<Tscal>, spans_dt_press) \
84 X_RW(LinkFieldScal, press_face_xp) \
85 X_RW(LinkFieldScal, press_face_xm) \
86 X_RW(LinkFieldScal, press_face_yp) \
87 X_RW(LinkFieldScal, press_face_ym) \
88 X_RW(LinkFieldScal, press_face_zp) \
89 X_RW(LinkFieldScal, press_face_zm)
91#define NODE_EDGES_RHO_DUST(X_RO, X_RW) \
93 X_RO(ScalarEdgeScal, dt_interp) \
94 X_RO(AMRGraphEdge, cell_neigh_graph) \
95 X_RO(shamrock::solvergraph::IFieldSpan<Tscal>, spans_block_cell_sizes) \
96 X_RO(shamrock::solvergraph::IFieldSpan<Tvec>, spans_cell0block_aabb_lower) \
97 X_RO(shamrock::solvergraph::IFieldSpan<Tscal>, spans_rhos_dust) \
98 X_RO(shamrock::solvergraph::IFieldSpan<Tvec>, spans_grad_rho_dust) \
99 X_RO(shamrock::solvergraph::IFieldSpan<Tscal>, spans_dt_rho_dust) \
102 X_RW(LinkFieldScal, rho_dust_face_xp) \
103 X_RW(LinkFieldScal, rho_dust_face_xm) \
104 X_RW(LinkFieldScal, rho_dust_face_yp) \
105 X_RW(LinkFieldScal, rho_dust_face_ym) \
106 X_RW(LinkFieldScal, rho_dust_face_zp) \
107 X_RW(LinkFieldScal, rho_dust_face_zm)
109#define NODE_EDGES_VEL_DUST(X_RO, X_RW) \
111 X_RO(ScalarEdgeScal, dt_interp) \
112 X_RO(AMRGraphEdge, cell_neigh_graph) \
113 X_RO(shamrock::solvergraph::IFieldSpan<Tscal>, spans_block_cell_sizes) \
114 X_RO(shamrock::solvergraph::IFieldSpan<Tvec>, spans_cell0block_aabb_lower) \
115 X_RO(shamrock::solvergraph::IFieldSpan<Tvec>, spans_vel_dust) \
116 X_RO(shamrock::solvergraph::IFieldSpan<Tvec>, spans_dx_vel_dust) \
117 X_RO(shamrock::solvergraph::IFieldSpan<Tvec>, spans_dy_vel_dust) \
118 X_RO(shamrock::solvergraph::IFieldSpan<Tvec>, spans_dz_vel_dust) \
119 X_RO(shamrock::solvergraph::IFieldSpan<Tvec>, spans_dt_vel_dust) \
122 X_RW(LinkFieldVec, vel_dust_face_xp) \
123 X_RW(LinkFieldVec, vel_dust_face_xm) \
124 X_RW(LinkFieldVec, vel_dust_face_yp) \
125 X_RW(LinkFieldVec, vel_dust_face_ym) \
126 X_RW(LinkFieldVec, vel_dust_face_zp) \
127 X_RW(LinkFieldVec, vel_dust_face_zm)
131 template<
class Tvec,
class Tgr
idVec>
133 using Tscal = shambase::VecComponent<Tvec>;
143 InterpolateToFaceRho(
u32 block_size) : block_size(block_size) {}
145 EXPAND_NODE_EDGES(NODE_EDGES_RHO)
149 inline virtual std::string
_impl_get_label()
const {
return "InterpolateRhoToFaceRho"; };
154 template<
class Tvec,
class Tgr
idVec>
156 using Tscal = shambase::VecComponent<Tvec>;
166 InterpolateToFaceVel(
u32 block_size) : block_size(block_size) {}
168 EXPAND_NODE_EDGES(NODE_EDGES_VEL)
172 inline virtual std::string
_impl_get_label()
const {
return "InterpolateVelToFaceVel"; };
177 template<
class Tvec,
class Tgr
idVec>
179 using Tscal = shambase::VecComponent<Tvec>;
189 InterpolateToFacePress(
u32 block_size) : block_size(block_size) {}
191 EXPAND_NODE_EDGES(NODE_EDGES_PRESS)
196 return "InterpolatePressToFacePress";
202 template<
class Tvec,
class Tgr
idVec>
204 using Tscal = shambase::VecComponent<Tvec>;
215 InterpolateToFaceRhoDust(
u32 block_size,
u32 ndust)
216 : block_size(block_size), ndust(ndust) {}
218 EXPAND_NODE_EDGES(NODE_EDGES_RHO_DUST)
223 return "InterpolateRhoDustToFaceRhoDust";
229 template<
class Tvec,
class Tgr
idVec>
231 using Tscal = shambase::VecComponent<Tvec>;
242 InterpolateToFaceVelDust(
u32 block_size,
u32 ndust)
243 : block_size(block_size), ndust(ndust) {}
245 EXPAND_NODE_EDGES(NODE_EDGES_VEL_DUST)
250 return "InterpolateVelDustToFaceVelDust";
260#undef NODE_EDGES_PRESS
261#undef NODE_EDGES_RHO_DUST
262#undef NODE_EDGES_VEL_DUST
std::uint32_t u32
32 bit unsigned integer
void _impl_evaluate_internal()
evaluate 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
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
void _impl_evaluate_internal()
evaluate the node
void _impl_evaluate_internal()
evaluate 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
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
void _impl_evaluate_internal()
evaluate the node
void _impl_evaluate_internal()
evaluate 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.
namespace for the basegodunov model modules