|
| template<typename Number > |
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number | ryujin::positive_part (const Number number) |
| |
| template<typename Number > |
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number | ryujin::negative_part (const Number number) |
| |
| template<dealii::SIMDComparison predicate, typename Number > |
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number | ryujin::compare_and_apply_mask (const Number &left, const Number &right, const Number &true_value, const Number &false_value) |
| |
| template<dealii::SIMDComparison predicate, typename T , std::size_t width> |
| DEAL_II_ALWAYS_INLINE dealii::VectorizedArray< T, width > | ryujin::compare_and_apply_mask (const dealii::VectorizedArray< T, width > &left, const dealii::VectorizedArray< T, width > &right, const dealii::VectorizedArray< T, width > &true_value, const dealii::VectorizedArray< T, width > &false_value) |
| |
| template<int N, typename T > |
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE T | ryujin::fixed_power (const T x) |
| |
| template<typename T > |
| DEAL_II_HOST_DEVICE T | ryujin::pow (const T x, const T b) |
| |
| template<typename T , std::size_t width> |
| dealii::VectorizedArray< T, width > | ryujin::pow (const dealii::VectorizedArray< T, width > x, const T b) |
| |
| template<typename T , std::size_t width> |
| dealii::VectorizedArray< T, width > | ryujin::pow (const dealii::VectorizedArray< T, width > x, const dealii::VectorizedArray< T, width > b) |
| |
| template<typename T > |
| DEAL_II_HOST_DEVICE T | ryujin::fast_pow (const T x, const T b, const Bias bias=Bias::none) |
| |
| template<typename T , std::size_t width> |
| dealii::VectorizedArray< T, width > | ryujin::fast_pow (const dealii::VectorizedArray< T, width > x, const T b, const Bias bias=Bias::none) |
| |
| template<typename T , std::size_t width> |
| dealii::VectorizedArray< T, width > | ryujin::fast_pow (const dealii::VectorizedArray< T, width > x, const dealii::VectorizedArray< T, width > b, const Bias bias=Bias::none) |
| |
|
| template<typename T , typename V > |
| DEAL_II_ALWAYS_INLINE T | ryujin::read_entry (const V &vector, unsigned int i) |
| |
| template<typename T , typename T2 > |
| DEAL_II_ALWAYS_INLINE T | ryujin::read_entry (const std::vector< T2 > &vector, unsigned int i) |
| |
| template<typename T , typename V > |
| DEAL_II_ALWAYS_INLINE T | ryujin::read_entry (const V &vector, const unsigned int *js) |
| |
| template<typename T , typename T2 > |
| DEAL_II_ALWAYS_INLINE T | ryujin::read_entry (const std::vector< T2 > &vector, const unsigned int *js) |
| |
| template<typename T , typename V > |
| DEAL_II_ALWAYS_INLINE void | ryujin::write_entry (V &vector, const T &values, unsigned int i) |
| |
| template<typename T , typename T2 > |
| DEAL_II_ALWAYS_INLINE void | ryujin::write_entry (std::vector< T2 > &vector, const T &values, unsigned int i) |
| |
| template<int rank, int dim, std::size_t width, typename Number > |
| DEAL_II_ALWAYS_INLINE dealii::Tensor< rank, dim, Number > | ryujin::serialize_tensor (const dealii::Tensor< rank, dim, dealii::VectorizedArray< Number, width > > &vectorized, const unsigned int k) |
| |
| template<int rank, int dim, typename Number > |
| DEAL_II_ALWAYS_INLINE dealii::Tensor< rank, dim, Number > | ryujin::serialize_tensor (const dealii::Tensor< rank, dim, Number > &serial, const unsigned int k) |
| |
| template<int rank, int dim, std::size_t width, typename Number > |
| DEAL_II_ALWAYS_INLINE void | ryujin::assign_serial_tensor (dealii::Tensor< rank, dim, dealii::VectorizedArray< Number, width > > &result, const dealii::Tensor< rank, dim, Number > &serial, const unsigned int k) |
| |
| template<int rank, int dim, typename Number > |
| DEAL_II_ALWAYS_INLINE void | ryujin::assign_serial_tensor (dealii::Tensor< rank, dim, Number > &result, const dealii::Tensor< rank, dim, Number > &serial, const unsigned int k) |
| |
SIMD related functions and classes.
template<unsigned int length, typename Functor >
| DEAL_II_ALWAYS_INLINE auto ryujin::generate_iterators |
( |
Functor |
f | ) |
-> std::array<auto, length>
|
|
inline |
Given a callable object f(k), this function creates a std::array with elements initialized as follows:
{ f(0) , f(1) , ... , f(length - 1) }
We use this function to create an array of sparsity iterators that cannot be default initialized.
Definition at line 118 of file simd.h.
template<dealii::SIMDComparison predicate, typename Number >
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::compare_and_apply_mask |
( |
const Number & |
left, |
|
|
const Number & |
right, |
|
|
const Number & |
true_value, |
|
|
const Number & |
false_value |
|
) |
| |
A wrapper around dealii::compare_and_apply_mask() for scalar number types that is annotated with DEAL_II_HOST_DEVICE so that it can be used in device code.
Definition at line 176 of file simd.h.
Referenced by ryujin::Euler::WaveSpeedEstimatorView< dim, Number, MemorySpace >::compute(), ryujin::Euler::WaveSpeedEstimatorView< dim, Number, MemorySpace >::df(), ryujin::Euler::WaveSpeedEstimatorView< dim, Number, MemorySpace >::f(), and ryujin::Euler::LimiterView< dim, Number, MemorySpace >::limit().
template<dealii::SIMDComparison predicate, typename T , std::size_t width>
| DEAL_II_ALWAYS_INLINE dealii::VectorizedArray< T, width > ryujin::compare_and_apply_mask |
( |
const dealii::VectorizedArray< T, width > & |
left, |
|
|
const dealii::VectorizedArray< T, width > & |
right, |
|
|
const dealii::VectorizedArray< T, width > & |
true_value, |
|
|
const dealii::VectorizedArray< T, width > & |
false_value |
|
) |
| |
|
inline |
Variant of above function for VectorizedArray that simply forwards to the dealii::compare_and_apply_mask() implementation. (Host only.)
Definition at line 210 of file simd.h.
template<typename T , typename V >
| DEAL_II_ALWAYS_INLINE T ryujin::read_entry |
( |
const V & |
vector, |
|
|
unsigned int |
i |
|
) |
| |
|
inline |
Return a VectorizedArray with { U[i] , U[i + 1] , ... , U[i + VectorizedArray::size() - 1] }
Definition at line 400 of file simd.h.
template<typename T , typename V >
| DEAL_II_ALWAYS_INLINE T ryujin::read_entry |
( |
const V & |
vector, |
|
|
const unsigned int * |
js |
|
) |
| |
|
inline |
Return a VectorizedArray with { U[js[0] , U[js[1]] , ... , U[js[VectorizedArray::size() - 1]] }
Definition at line 462 of file simd.h.
template<int rank, int dim, std::size_t width, typename Number >
| DEAL_II_ALWAYS_INLINE dealii::Tensor< rank, dim, Number > ryujin::serialize_tensor |
( |
const dealii::Tensor< rank, dim, dealii::VectorizedArray< Number, width > > & |
vectorized, |
|
|
const unsigned int |
k |
|
) |
| |
|
inline |
template<int rank, int dim, typename Number >
| DEAL_II_ALWAYS_INLINE dealii::Tensor< rank, dim, Number > ryujin::serialize_tensor |
( |
const dealii::Tensor< rank, dim, Number > & |
serial, |
|
|
const unsigned int |
k |
|
) |
| |
|
inline |
Variant of above function for serial Tensors that simply returns the given tensor.
Definition at line 594 of file simd.h.
References ryujin::serial.
template<int rank, int dim, std::size_t width, typename Number >
| DEAL_II_ALWAYS_INLINE void ryujin::assign_serial_tensor |
( |
dealii::Tensor< rank, dim, dealii::VectorizedArray< Number, width > > & |
result, |
|
|
const dealii::Tensor< rank, dim, Number > & |
serial, |
|
|
const unsigned int |
k |
|
) |
| |
|
inline |
template<int rank, int dim, typename Number >
| DEAL_II_ALWAYS_INLINE void ryujin::assign_serial_tensor |
( |
dealii::Tensor< rank, dim, Number > & |
result, |
|
|
const dealii::Tensor< rank, dim, Number > & |
serial, |
|
|
const unsigned int |
k |
|
) |
| |
|
inline |
Variant of above function for serial Tensors that simply assigns the given tensor as is.
Definition at line 634 of file simd.h.
References ryujin::serial.