62 using Tmorton = Tmorton_;
63 using Tscal = shambase::VecComponent<Tvec>;
64 using Tgridscal = shambase::VecComponent<TgridVec>;
65 using TgridUint =
typename std::make_unsigned<shambase::VecComponent<TgridVec>>::type;
66 static constexpr u32 dim = shambase::VectorProperties<Tvec>::dimension;
72 std::shared_ptr<shamrock::solvergraph::IDataEdge<std::vector<u64>>> local_patch_ids;
74 std::shared_ptr<shamrock::solvergraph::RankGetter> patch_rank_owner;
76 std::shared_ptr<shamrock::solvergraph::ScalarEdge<Tscal>> dt_over2;
78 std::shared_ptr<shamrock::solvergraph::FieldRefs<TgridVec>> refs_block_min;
79 std::shared_ptr<shamrock::solvergraph::FieldRefs<TgridVec>> refs_block_max;
81 std::shared_ptr<shamrock::solvergraph::ScalarsEdge<TgridVec>> level0_size;
82 std::shared_ptr<shamrock::solvergraph::Field<TgridUint>> amr_block_levels;
84 std::shared_ptr<shamrock::solvergraph::Indexes<u32>> block_counts;
85 std::shared_ptr<shamrock::solvergraph::Indexes<u32>> block_counts_with_ghost;
86 std::shared_ptr<shamrock::solvergraph::FieldRefs<Tscal>> refs_rho;
87 std::shared_ptr<shamrock::solvergraph::FieldRefs<Tvec>> refs_rhov;
88 std::shared_ptr<shamrock::solvergraph::FieldRefs<Tscal>> refs_rhoe;
89 std::shared_ptr<shamrock::solvergraph::FieldRefs<Tscal>> refs_rho_dust;
90 std::shared_ptr<shamrock::solvergraph::FieldRefs<Tvec>> refs_rhov_dust;
92 std::shared_ptr<shamrock::solvergraph::Field<Tvec>> vel;
93 std::shared_ptr<shamrock::solvergraph::Field<Tscal>> press;
94 std::shared_ptr<shamrock::solvergraph::Field<Tvec>> vel_dust;
95 std::shared_ptr<shamrock::solvergraph::Field<Tscal>> rho_primitive;
97 std::shared_ptr<shamrock::solvergraph::Field<Tscal>> block_cell_sizes;
98 std::shared_ptr<shamrock::solvergraph::Field<Tvec>> cell0block_aabb_lower;
99 std::shared_ptr<shamrock::solvergraph::Field<Tvec>> coordinates;
101 std::shared_ptr<shamrock::solvergraph::Field<Tvec>> grad_rho;
102 std::shared_ptr<shamrock::solvergraph::Field<Tvec>> dx_v;
103 std::shared_ptr<shamrock::solvergraph::Field<Tvec>> dy_v;
104 std::shared_ptr<shamrock::solvergraph::Field<Tvec>> dz_v;
105 std::shared_ptr<shamrock::solvergraph::Field<Tvec>> grad_P;
109 std::shared_ptr<shamrock::solvergraph::Field<Tvec>>
dx_v_dust;
111 std::shared_ptr<shamrock::solvergraph::Field<Tvec>>
dy_v_dust;
113 std::shared_ptr<shamrock::solvergraph::Field<Tvec>>
dz_v_dust;
115 std::shared_ptr<shamrock::solvergraph::ScalarEdge<Tscal>> rho_mean;
116 std::shared_ptr<shamrock::solvergraph::ScalarEdge<Tscal>> simulation_volume;
117 std::shared_ptr<shamrock::solvergraph::Field<Tscal>> cell_mass;
119 Component<shambase::DistributedData<shammath::AABB<TgridVec>>> merge_patch_bounds;
121 std::shared_ptr<solvergraph::TreeEdge<Tmorton, TgridVec>> trees;
123 std::shared_ptr<shammodels::basegodunov::solvergraph::OrientedAMRGraphEdge<Tvec, TgridVec>>
126 std::shared_ptr<shammodels::basegodunov::solvergraph::OrientedAMRGraphEdge<Tvec, TgridVec>>
129 std::shared_ptr<shamrock::solvergraph::OperationSequence> solver_sequence;
131 std::shared_ptr<shamrock::solvergraph::OperationSequence> node_cons_to_prim;
132 std::shared_ptr<modules::NodeBuildTrees<Tmorton, TgridVec>> build_trees;
134 Component<SerialPatchTree<TgridVec>> serial_patch_tree;
136 Component<GhostZonesData<Tvec, TgridVec>> ghost_zone_infos;
138 std::shared_ptr<shamrock::patch::PatchDataLayerLayout> ghost_layout;
140 std::shared_ptr<shamrock::solvergraph::PatchDataLayerRefs> source_patches;
142 std::shared_ptr<shamrock::solvergraph::PatchDataLayerEdge> merged_patchdata_ghost;
144 std::shared_ptr<shamrock::solvergraph::PatchDataLayerDDShared> exchange_gz_edge;
146 std::shared_ptr<shamrock::solvergraph::DDSharedScalar<modules::GhostLayerCandidateInfos>>
147 ghost_layers_candidates_edge;
149 std::shared_ptr<shamrock::solvergraph::ScalarEdge<shammath::AABB<TgridVec>>> sim_box_edge;
151 std::shared_ptr<shamrock::solvergraph::DDSharedBuffers<u32>> idx_in_ghost;
153 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_xp;
154 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_xm;
155 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_yp;
156 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_ym;
157 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_zp;
158 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> rho_face_zm;
160 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_xp;
161 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_xm;
162 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_yp;
163 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_ym;
164 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_zp;
165 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_face_zm;
167 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> press_face_xp;
168 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> press_face_xm;
169 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> press_face_yp;
170 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> press_face_ym;
171 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> press_face_zp;
172 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>> press_face_zm;
174 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_xp;
175 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_xm;
176 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_yp;
177 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_ym;
178 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_zp;
179 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_face_zm;
181 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_xp;
182 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_xm;
183 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_yp;
184 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_ym;
185 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_zp;
186 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_face_zm;
188 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rhoe_face_xp;
189 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rhoe_face_xm;
190 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rhoe_face_yp;
191 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rhoe_face_ym;
192 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rhoe_face_zp;
193 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rhoe_face_zm;
195 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_dust_face_xp;
196 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_dust_face_xm;
197 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_dust_face_yp;
198 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_dust_face_ym;
199 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_dust_face_zp;
200 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tscal>> flux_rho_dust_face_zm;
202 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_dust_face_xp;
203 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_dust_face_xm;
204 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_dust_face_yp;
205 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_dust_face_ym;
206 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_dust_face_zp;
207 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<Tvec>> flux_rhov_dust_face_zm;
209 std::shared_ptr<shamrock::solvergraph::Field<Tscal>> dtrho;
210 std::shared_ptr<shamrock::solvergraph::Field<Tvec>> dtrhov;
211 std::shared_ptr<shamrock::solvergraph::Field<Tscal>> dtrhoe;
213 Component<shamrock::ComputeField<Tscal>> rho_next_no_drag;
214 Component<shamrock::ComputeField<Tvec>> rhov_next_no_drag;
215 Component<shamrock::ComputeField<Tscal>> rhoe_next_no_drag;
218 Component<shamrock::ComputeField<Tscal>> rho_d_next_no_drag;
220 Component<shamrock::ComputeField<Tvec>> rhov_d_next_no_drag;
222 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>
224 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>
226 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>
228 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>
230 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>
232 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tscal, 2>>>
235 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_dust_face_xp;
236 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_dust_face_xm;
237 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_dust_face_yp;
238 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_dust_face_ym;
239 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_dust_face_zp;
240 std::shared_ptr<solvergraph::NeighGraphLinkFieldEdge<std::array<Tvec, 2>>> vel_dust_face_zm;
243 std::shared_ptr<shamrock::solvergraph::Field<Tscal>> dtrho_dust;
245 std::shared_ptr<shamrock::solvergraph::Field<Tvec>> dtrhov_dust;