26 struct KernelConsToPrimDust {
27 using Tscal = shambase::VecComponent<Tvec>;
29 inline static void kernel(
30 const shambase::DistributedData<shamrock::PatchDataFieldSpanPointer<Tscal>>
32 const shambase::DistributedData<shamrock::PatchDataFieldSpanPointer<Tvec>>
35 shambase::DistributedData<shamrock::PatchDataFieldSpanPointer<Tvec>> &spans_vel_dust,
36 const shambase::DistributedData<u32> &sizes,
40 shambase::DistributedData<u32> cell_counts
42 u32 cell_count = block_count * block_size * ndust;
47 shamsys::instance::get_compute_scheduler_ptr(),
48 sham::DDMultiRef{spans_rho_dust, spans_rhov_dust},
49 sham::DDMultiRef{spans_vel_dust},
52 const Tscal *__restrict rho_dust,
53 const Tvec *__restrict rhov_dust,
54 Tvec *__restrict vel_dust) {
55 auto d_conststate = shammath::DustConsState<Tvec>{rho_dust[i], rhov_dust[i]};
56 shammath::FluidStateDust<Tvec> dust_fluid{};
57 auto d_prim_state = dust_fluid.cons_to_prim(d_conststate);
59 vel_dust[i] = d_prim_state.vel;
71 auto edges = get_edges();
73 edges.spans_rho_dust.check_sizes(edges.sizes.indexes);
74 edges.spans_rhov_dust.check_sizes(edges.sizes.indexes);
76 edges.spans_vel_dust.ensure_sizes(edges.sizes.indexes);
78 KernelConsToPrimDust<Tvec>::kernel(
79 edges.spans_rho_dust.get_spans(),
80 edges.spans_rhov_dust.get_spans(),
81 edges.spans_vel_dust.get_spans(),
89 std::string tex = R
"tex(
90 Conservative to primitive variable (dust)
93 {spans_vel_dust}_{i,j} &= \frac{ {spans_rhov_dust}_{i,j} }{ {spans_rho_dust}_{i,j} } \\
94 i &\in [0,{sizes} * N_{\rm cell/block}) \\
95 j &\in [0,n_{\rm dust}) \\
96 n_{\rm dust} & = {ndust} \\
97 N_{\rm cell/block} & = {block_size}
101 replace_edges_tex_symbols(tex);
Field variant object to instanciate a variant on the patch types.
constexpr const char * sizes
Temporary sizes for h-iteration.
Header file describing a Node Instance.
std::uint32_t u32
32 bit unsigned integer
std::uint64_t u64
64 bit unsigned integer
virtual std::string _impl_get_tex() const
get the tex of the node
void _impl_evaluate_internal()
evaluate 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.
void replace_all(std::string &inout, std::string_view what, std::string_view with)
replace all occurence of a search string with another
namespace for the basegodunov model modules
Umbrella header pulling in the dust states and all dust Riemann solvers (HLL, Huang & Bai).
#define __shamrock_stack_entry()
Macro to create a stack entry.