|
template<typename Number > |
DEAL_II_ALWAYS_INLINE Number | ryujin::positive_part (const Number number) |
|
template<typename Number > |
DEAL_II_ALWAYS_INLINE Number | ryujin::negative_part (const Number number) |
|
template<int N, typename T > |
T | ryujin::fixed_power (const T x) |
|
template<typename T > |
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 > |
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::load_value (const V &vector, unsigned int i) |
|
template<typename T , typename V > |
DEAL_II_ALWAYS_INLINE T | ryujin::load_value (const V &vector, const unsigned int *js) |
|
template<typename T , typename V > |
DEAL_II_ALWAYS_INLINE void | ryujin::store_value (V &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.
std::shared_ptr< const dealii::Utilities::MPI::Partitioner > ryujin::create_vector_partitioner |
( |
const std::shared_ptr< const dealii::Utilities::MPI::Partitioner > & |
scalar_partitioner, |
|
|
const unsigned int |
n_components |
|
) |
| |
This function takes a scalar MPI partitioner scalar_partitioner
as argument and returns a shared pointer to a new "vector" multicomponent partitioner that defines storage and MPI synchronization for a vector consisting of n_comp
components. The vector partitioner is intended to efficiently store non-scalar vectors such as the state vectors U. Let (U_i)_k denote the k-th component of a state vector element U_i, we then store
\begin{align}
(U_0)_0, (U_0)_1, (U_0)_2, (U_0)_3, (U_0)_4,
(U_1)_0, (U_1)_1, (U_1)_2, (U_1)_3, (U_1)_4,
\ldots
\end{align}
- Note
- This function is used to efficiently set up a single vector partitioner in OfflineData used in all MultiComponentVector instances.
Definition at line 11 of file multicomponent_vector.cc.
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 80 of file simd.h.
template<typename T , typename V >
DEAL_II_ALWAYS_INLINE T ryujin::load_value |
( |
const V & |
vector, |
|
|
unsigned int |
i |
|
) |
| |
|
inline |
Return a VectorizedArray with { U[i] , U[i + 1] , ... , U[i + VectorizedArray::size() - 1] }
Definition at line 243 of file simd.h.
template<typename T , typename V >
DEAL_II_ALWAYS_INLINE T ryujin::load_value |
( |
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 269 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, 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 |