23using RiemannSolverMode = shammodels::basegodunov::RiemannSolverMode;
25using Direction = shammodels::basegodunov::modules::Direction;
27template<
class Tvec,
class Tgr
idVec, RiemannSolverMode mode, Direction dir>
32 auto edges = get_edges();
34 auto dev_sched = shamsys::instance::get_compute_scheduler_ptr();
36 auto graphs_dir = edges.cell_neigh_graph.get_refs_dir(dir);
38 edges.rho_face.check_size(graphs_dir);
39 edges.vel_face.check_size(graphs_dir);
40 edges.press_face.check_size(graphs_dir);
42 edges.flux_rho_face.resize_according_to(graphs_dir);
43 edges.flux_rhov_face.resize_according_to(graphs_dir);
44 edges.flux_rhoe_face.resize_according_to(graphs_dir);
47 = graphs_dir.template map<u32>([&](
u64 id,
auto &graph) {
48 return graph.get().link_count;
56 edges.rho_face.link_fields, edges.vel_face.link_fields, edges.press_face.link_fields},
58 edges.flux_rho_face.link_fields,
59 edges.flux_rhov_face.link_fields,
60 edges.flux_rhoe_face.link_fields},
62 [gamma = this->gamma](
64 const std::array<Tscal, 2> *rho_face,
65 const std::array<Tvec, 2> *vel_face,
66 const std::array<Tscal, 2> *press_face,
69 Tscal *flux_rhoe_face) {
70 auto rho_ij = rho_face[link_id];
71 auto vel_ij = vel_face[link_id];
72 auto press_ij = press_face[link_id];
75 auto flux_dir = Flux::flux(
76 Tprim{rho_ij[0], press_ij[0], vel_ij[0]},
77 Tprim{rho_ij[1], press_ij[1], vel_ij[1]},
80 flux_rho_face[link_id] = flux_dir.rho;
81 flux_rhov_face[link_id] = flux_dir.rhovel;
82 flux_rhoe_face[link_id] = flux_dir.rhoe;
86template<
class Tvec,
class Tgr
idVec, RiemannSolverMode mode, Direction dir>
92template<
class Tvec,
class Tgr
idVec, DustRiemannSolverMode mode, Direction dir>
97 auto edges = get_edges();
99 auto dev_sched = shamsys::instance::get_compute_scheduler_ptr();
101 auto graphs_dir = edges.cell_neigh_graph.get_refs_dir(dir);
103 edges.rho_face.check_size(graphs_dir);
104 edges.vel_face.check_size(graphs_dir);
106 edges.flux_rho_face.resize_according_to(graphs_dir);
107 edges.flux_rhov_face.resize_according_to(graphs_dir);
110 = graphs_dir.template map<u32>([&](
u64 id,
auto &graph) {
111 return graph.get().link_count * ndust;
119 sham::DDMultiRef{edges.flux_rho_face.link_fields, edges.flux_rhov_face.link_fields},
122 const std::array<Tscal, 2> *rho_face,
123 const std::array<Tvec, 2> *vel_face,
124 Tscal *flux_rho_face,
125 Tvec *flux_rhov_face) {
126 auto rho_ij = rho_face[link_id];
127 auto vel_ij = vel_face[link_id];
131 = Flux::dustflux(Tprim{rho_ij[0], vel_ij[0]}, Tprim{rho_ij[1], vel_ij[1]});
133 flux_rho_face[link_id] = flux_dust_dir.rho;
134 flux_rhov_face[link_id] = flux_dust_dir.rhovel;
138template<
class Tvec,
class Tgr
idVec, DustRiemannSolverMode mode, Direction dir>
144template class shammodels::basegodunov::modules::
145 NodeComputeFluxGasDirMode<f64_3, i64_3, RiemannSolverMode::Rusanov, Direction::xm>;
146template class shammodels::basegodunov::modules::
147 NodeComputeFluxGasDirMode<f64_3, i64_3, RiemannSolverMode::Rusanov, Direction::xp>;
148template class shammodels::basegodunov::modules::
149 NodeComputeFluxGasDirMode<f64_3, i64_3, RiemannSolverMode::Rusanov, Direction::ym>;
150template class shammodels::basegodunov::modules::
151 NodeComputeFluxGasDirMode<f64_3, i64_3, RiemannSolverMode::Rusanov, Direction::yp>;
152template class shammodels::basegodunov::modules::
153 NodeComputeFluxGasDirMode<f64_3, i64_3, RiemannSolverMode::Rusanov, Direction::zm>;
154template class shammodels::basegodunov::modules::
155 NodeComputeFluxGasDirMode<f64_3, i64_3, RiemannSolverMode::Rusanov, Direction::zp>;
157template class shammodels::basegodunov::modules::
158 NodeComputeFluxGasDirMode<f64_3, i64_3, RiemannSolverMode::HLL, Direction::xm>;
159template class shammodels::basegodunov::modules::
160 NodeComputeFluxGasDirMode<f64_3, i64_3, RiemannSolverMode::HLL, Direction::xp>;
161template class shammodels::basegodunov::modules::
162 NodeComputeFluxGasDirMode<f64_3, i64_3, RiemannSolverMode::HLL, Direction::ym>;
163template class shammodels::basegodunov::modules::
164 NodeComputeFluxGasDirMode<f64_3, i64_3, RiemannSolverMode::HLL, Direction::yp>;
165template class shammodels::basegodunov::modules::
166 NodeComputeFluxGasDirMode<f64_3, i64_3, RiemannSolverMode::HLL, Direction::zm>;
167template class shammodels::basegodunov::modules::
168 NodeComputeFluxGasDirMode<f64_3, i64_3, RiemannSolverMode::HLL, Direction::zp>;
170template class shammodels::basegodunov::modules::
171 NodeComputeFluxGasDirMode<f64_3, i64_3, RiemannSolverMode::HLLC, Direction::xm>;
172template class shammodels::basegodunov::modules::
173 NodeComputeFluxGasDirMode<f64_3, i64_3, RiemannSolverMode::HLLC, Direction::xp>;
174template class shammodels::basegodunov::modules::
175 NodeComputeFluxGasDirMode<f64_3, i64_3, RiemannSolverMode::HLLC, Direction::ym>;
176template class shammodels::basegodunov::modules::
177 NodeComputeFluxGasDirMode<f64_3, i64_3, RiemannSolverMode::HLLC, Direction::yp>;
178template class shammodels::basegodunov::modules::
179 NodeComputeFluxGasDirMode<f64_3, i64_3, RiemannSolverMode::HLLC, Direction::zm>;
180template class shammodels::basegodunov::modules::
181 NodeComputeFluxGasDirMode<f64_3, i64_3, RiemannSolverMode::HLLC, Direction::zp>;
183template class shammodels::basegodunov::modules::
184 NodeComputeFluxDustDirMode<f64_3, i64_3, DustRiemannSolverMode::HB, Direction::xm>;
185template class shammodels::basegodunov::modules::
186 NodeComputeFluxDustDirMode<f64_3, i64_3, DustRiemannSolverMode::HB, Direction::xp>;
187template class shammodels::basegodunov::modules::
188 NodeComputeFluxDustDirMode<f64_3, i64_3, DustRiemannSolverMode::HB, Direction::ym>;
189template class shammodels::basegodunov::modules::
190 NodeComputeFluxDustDirMode<f64_3, i64_3, DustRiemannSolverMode::HB, Direction::yp>;
191template class shammodels::basegodunov::modules::
192 NodeComputeFluxDustDirMode<f64_3, i64_3, DustRiemannSolverMode::HB, Direction::zm>;
193template class shammodels::basegodunov::modules::
194 NodeComputeFluxDustDirMode<f64_3, i64_3, DustRiemannSolverMode::HB, Direction::zp>;
196template class shammodels::basegodunov::modules::
197 NodeComputeFluxDustDirMode<f64_3, i64_3, DustRiemannSolverMode::DHLL, Direction::xm>;
198template class shammodels::basegodunov::modules::
199 NodeComputeFluxDustDirMode<f64_3, i64_3, DustRiemannSolverMode::DHLL, Direction::xp>;
200template class shammodels::basegodunov::modules::
201 NodeComputeFluxDustDirMode<f64_3, i64_3, DustRiemannSolverMode::DHLL, Direction::ym>;
202template class shammodels::basegodunov::modules::
203 NodeComputeFluxDustDirMode<f64_3, i64_3, DustRiemannSolverMode::DHLL, Direction::yp>;
204template class shammodels::basegodunov::modules::
205 NodeComputeFluxDustDirMode<f64_3, i64_3, DustRiemannSolverMode::DHLL, Direction::zm>;
206template class shammodels::basegodunov::modules::
207 NodeComputeFluxDustDirMode<f64_3, i64_3, DustRiemannSolverMode::DHLL, Direction::zp>;
Field variant object to instanciate a variant on the patch types.
std::uint32_t u32
32 bit unsigned integer
std::uint64_t u64
64 bit unsigned integer
Represents a collection of objects distributed across patches identified by a u64 id.
void _impl_evaluate_internal()
evaluate the node
virtual std::string _impl_get_tex() const
get the tex of the node
void _impl_evaluate_internal()
evaluate the node
virtual std::string _impl_get_tex() const
get the tex of the node
void distributed_data_kernel_call(sham::DeviceScheduler_ptr dev_sched, RefIn in, RefOut in_out, const shambase::DistributedData< index_t > &thread_counts, Functor &&func)
A variant of sham::kernel_call for distributed data.
DustRiemannSolverMode
Dust Riemann solver mode enum.
This file contains the definition for the stacktrace related functionality.
A variant of sham::MultiRef for distributed data.