DNDSR 0.1.0.dev1+gcd065ad
Distributed Numeric Data Structure for CFV
Loading...
Searching...
No Matches
EulerP_Evaluator_impl.hpp File Reference

Backend-specific implementation layer for EulerP Evaluator kernel dispatch. More...

#include "EulerP_Evaluator.hpp"
#include <memory>
#include <type_traits>
Include dependency graph for EulerP_Evaluator_impl.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  DNDS::EulerP::Evaluator_impl< B >
 Backend-specific implementation of EulerP Evaluator kernels. More...
 
struct  DNDS::EulerP::Evaluator_impl< B >::RecGradient_Arg
 Device-side argument struct for gradient reconstruction kernels. More...
 
struct  DNDS::EulerP::Evaluator_impl< B >::RecGradient_Arg::Portable
 Trivially-copyable payload holding device views of all kernel data. More...
 
struct  DNDS::EulerP::Evaluator_impl< B >::Cons2PrimMu_Arg
 Device-side argument struct for conservative-to-primitive + viscosity kernel. More...
 
struct  DNDS::EulerP::Evaluator_impl< B >::Cons2PrimMu_Arg::Portable
 Trivially-copyable payload for Cons2PrimMu kernel data. More...
 
struct  DNDS::EulerP::Evaluator_impl< B >::Cons2Prim_Arg
 Device-side argument struct for conservative-to-primitive conversion (no gradients/viscosity). More...
 
struct  DNDS::EulerP::Evaluator_impl< B >::Cons2Prim_Arg::Portable
 
struct  DNDS::EulerP::Evaluator_impl< B >::EstEigenDt_Arg
 Device-side argument struct for eigenvalue estimation and time-step computation. More...
 
struct  DNDS::EulerP::Evaluator_impl< B >::EstEigenDt_Arg::Portable
 
struct  DNDS::EulerP::Evaluator_impl< B >::RecFace2nd_Arg
 Device-side argument struct for 2nd-order face value reconstruction. More...
 
struct  DNDS::EulerP::Evaluator_impl< B >::RecFace2nd_Arg::Portable
 
struct  DNDS::EulerP::Evaluator_impl< B >::Flux2nd_Arg
 Device-side argument struct for 2nd-order flux evaluation and RHS accumulation. More...
 
struct  DNDS::EulerP::Evaluator_impl< B >::Flux2nd_Arg::Portable
 

Namespaces

namespace  DNDS
 the host side operators are provided as implemented
 
namespace  DNDS::EulerP
 Namespace for the EulerP alternative evaluator module with GPU support.
 

Macros

Argument construction macros

Helper macros used inside Evaluator_impl inner arg struct constructors to create device views from host-side Evaluator argument members.

#define DNDS_EULERP_IMPL_ARG_GET_REF(member)   auto &member = arg.member;
 
#define DNDS_EULERP_IMPL_ARG_GET_REF_PORTABLE(member)   auto &member = arg.portable.member;
 
#define DNDS_EULERP_IMPL_ARG_CTOR_INIT_SELF()
 
#define DNDS_EULERP_IMPL_ARG_CTOR_INIT_SSPARR(member)    member(arg.member->template deviceView<B>())
 
#define DNDS_EULERP_IMPL_ARG_CTOR_INIT_VECSSPARR(member, member_v)
 
#define DNDS_EULERP_IMPL_ARG_CTOR_PORTABLE_COPY_SSPARR(member)
 
#define DNDS_EULERP_IMPL_ARG_CTOR_PORTABLE_COPY_SSPARR_BUF(member, buf_name)
 
#define DNDS_EULERP_IMPL_ARG_CTOR_PORTABLE_COPY_VECSSPARR(member, member_v)
 
#define DNDS_EULERP_IMPL_ARG_CTOR_PORTABLE_COPY_VECSSPARR_BUF(member, member_v, buf_name)
 

Detailed Description

Backend-specific implementation layer for EulerP Evaluator kernel dispatch.

Defines Evaluator_impl, a template struct parameterized by DeviceBackend (Host or CUDA). For each Evaluator kernel, an inner argument struct wraps the host-side shared_ptr-based Evaluator::*_Arg into device views suitable for kernel execution. The inner Portable sub-struct is trivially copyable and can be passed to CUDA kernels.

Also defines helper macros for constructing device views from Evaluator argument members.

Definition in file EulerP_Evaluator_impl.hpp.

Macro Definition Documentation

◆ DNDS_EULERP_IMPL_ARG_CTOR_INIT_SELF

#define DNDS_EULERP_IMPL_ARG_CTOR_INIT_SELF ( )
Value:
self(self_), \
this_v(self.template deviceView<B>()), \
self_view(this_v)

Definition at line 27 of file EulerP_Evaluator_impl.hpp.

◆ DNDS_EULERP_IMPL_ARG_CTOR_INIT_SSPARR

#define DNDS_EULERP_IMPL_ARG_CTOR_INIT_SSPARR (   member)     member(arg.member->template deviceView<B>())

Definition at line 31 of file EulerP_Evaluator_impl.hpp.

◆ DNDS_EULERP_IMPL_ARG_CTOR_INIT_VECSSPARR

#define DNDS_EULERP_IMPL_ARG_CTOR_INIT_VECSSPARR (   member,
  member_v 
)
Value:
member_v(arg.member.size(), [&](int i) \
{ return arg.member.at(i)->template deviceView<B>(); }), \
member((member_v).deviceView())

Definition at line 33 of file EulerP_Evaluator_impl.hpp.

◆ DNDS_EULERP_IMPL_ARG_CTOR_PORTABLE_COPY_SSPARR

#define DNDS_EULERP_IMPL_ARG_CTOR_PORTABLE_COPY_SSPARR (   member)
Value:
{ \
portable.member = arg.member->template deviceView<B>(); \
}

Definition at line 38 of file EulerP_Evaluator_impl.hpp.

◆ DNDS_EULERP_IMPL_ARG_CTOR_PORTABLE_COPY_SSPARR_BUF

#define DNDS_EULERP_IMPL_ARG_CTOR_PORTABLE_COPY_SSPARR_BUF (   member,
  buf_name 
)
Value:
{ \
portable.member = (buf_name).template deviceView<B>(); \
}

Definition at line 42 of file EulerP_Evaluator_impl.hpp.

◆ DNDS_EULERP_IMPL_ARG_CTOR_PORTABLE_COPY_VECSSPARR

#define DNDS_EULERP_IMPL_ARG_CTOR_PORTABLE_COPY_VECSSPARR (   member,
  member_v 
)
Value:
\
{ \
member_v = std::make_unique<typename decltype(member_v)::element_type>( \
arg.member.size(), [&](int i) \
{ return arg.member.at(i)->template deviceView<B>(); }); \
portable.member = (member_v)->deviceView(); \
}

Definition at line 46 of file EulerP_Evaluator_impl.hpp.

◆ DNDS_EULERP_IMPL_ARG_CTOR_PORTABLE_COPY_VECSSPARR_BUF

#define DNDS_EULERP_IMPL_ARG_CTOR_PORTABLE_COPY_VECSSPARR_BUF (   member,
  member_v,
  buf_name 
)
Value:
\
{ \
member_v = std::make_unique<typename decltype(member_v)::element_type>( \
(buf_name).size(), [&](int i) \
{ return (buf_name).at(i).template deviceView<B>(); }); \
portable.member = (member_v)->deviceView(); \
}

Definition at line 55 of file EulerP_Evaluator_impl.hpp.

◆ DNDS_EULERP_IMPL_ARG_GET_REF

#define DNDS_EULERP_IMPL_ARG_GET_REF (   member)    auto &member = arg.member;

Definition at line 24 of file EulerP_Evaluator_impl.hpp.

◆ DNDS_EULERP_IMPL_ARG_GET_REF_PORTABLE

#define DNDS_EULERP_IMPL_ARG_GET_REF_PORTABLE (   member)    auto &member = arg.portable.member;

Definition at line 25 of file EulerP_Evaluator_impl.hpp.