ryujin 2.1.1 revision 5b63c078534504e9d75978bd539bf7ffb02e1157
|
Classes | |
class | ryujin::Vectors::MultiComponentVector< Number, n_comp, simd_length > |
struct | ryujin::get_value_type< T > |
Functions | |
std::shared_ptr< const dealii::Utilities::MPI::Partitioner > | ryujin::Vectors::create_vector_partitioner (const std::shared_ptr< const dealii::Utilities::MPI::Partitioner > &scalar_partitioner, const unsigned int n_components) |
Type traits and packed index handling | |
template<typename T > | |
unsigned int | ryujin::get_stride_size = 1 |
template<unsigned int length, typename Functor > | |
DEAL_II_ALWAYS_INLINE auto | ryujin::generate_iterators (Functor f) -> std::array< auto, length > |
template<typename T > | |
DEAL_II_ALWAYS_INLINE void | ryujin::increment_iterators (T &iterators) |
Transcendental and other mathematical operations | |
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) |
SIMD based access to vectors and arrays of vectors | |
template<typename T , typename V > | |
DEAL_II_ALWAYS_INLINE T | ryujin::get_entry (const V &vector, unsigned int i) |
template<typename T , typename T2 > | |
DEAL_II_ALWAYS_INLINE T | ryujin::get_entry (const std::vector< T2 > &vector, unsigned int i) |
template<typename T , typename V > | |
DEAL_II_ALWAYS_INLINE T | ryujin::get_entry (const V &vector, const unsigned int *js) |
template<typename T , typename T2 > | |
DEAL_II_ALWAYS_INLINE T | ryujin::get_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.
std::shared_ptr< const dealii::Utilities::MPI::Partitioner > ryujin::Vectors::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}
|
inline |
|
inline |
|
inline |
Return the positive part of a number.
Definition at line 112 of file simd.h.
Referenced by ryujin::Euler::RiemannSolver< dim, Number >::compute_gap(), ryujin::ShallowWater::RiemannSolver< dim, Number >::compute_h_star(), ryujin::ShallowWater::RiemannSolver< dim, Number >::compute_lambda(), ryujin::Euler::RiemannSolver< dim, Number >::compute_lambda(), ryujin::EulerAEOS::RiemannSolver< dim, Number >::compute_lambda(), ryujin::ShallowWater::HyperbolicSystemView< dim, Number >::inverse_water_depth_mollified(), ryujin::ShallowWater::RiemannSolver< dim, Number >::lambda1_minus(), ryujin::Euler::RiemannSolver< dim, Number >::lambda1_minus(), ryujin::EulerAEOS::RiemannSolver< dim, Number >::lambda1_minus(), ryujin::Euler::RiemannSolver< dim, Number >::lambda3_plus(), ryujin::EulerAEOS::RiemannSolver< dim, Number >::lambda3_plus(), ryujin::ShallowWater::RiemannSolver< dim, Number >::lambda3_plus(), ryujin::Euler::Limiter< dim, Number >::limit(), ryujin::EulerAEOS::Limiter< dim, Number >::limit(), ryujin::ScalarConservation::Limiter< dim, Number >::limit(), ryujin::ShallowWater::Limiter< dim, Number >::limit(), ryujin::EulerAEOS::RiemannSolver< dim, Number >::p_star_interpolated(), ryujin::EulerAEOS::RiemannSolver< dim, Number >::p_star_RS_full(), ryujin::EulerAEOS::RiemannSolver< dim, Number >::p_star_SS_full(), and ryujin::Euler::RiemannSolver< dim, Number >::p_star_two_rarefaction().
|
inline |
Return the negative part of a number.
Definition at line 124 of file simd.h.
Referenced by ryujin::NavierStokes::ParabolicSolver< Description, dim, Number >::backward_euler_step(), ryujin::Euler::RiemannSolver< dim, Number >::compute_gap(), ryujin::ShallowWater::RiemannSolver< dim, Number >::compute_lambda(), ryujin::Euler::RiemannSolver< dim, Number >::compute_lambda(), ryujin::EulerAEOS::RiemannSolver< dim, Number >::compute_lambda(), ryujin::Euler::Limiter< dim, Number >::limit(), ryujin::EulerAEOS::Limiter< dim, Number >::limit(), ryujin::ScalarConservation::Limiter< dim, Number >::limit(), and ryujin::ShallowWater::Limiter< dim, Number >::limit().
|
inline |
T ryujin::pow | ( | const T | x, |
const T | b | ||
) |
Custom serial pow function.
Referenced by ryujin::ShallowWaterInitialStates::SlopingFriction< Description, dim, Number >::compute(), ryujin::EulerInitialStates::Rarefaction< Description, dim, Number >::compute(), ryujin::EulerInitialStates::Noh< Description, dim, Number >::compute(), ryujin::EulerInitialStates::IsentropicVortex< Description, dim, Number >::compute(), ryujin::EulerInitialStates::LeBlanc< Description, dim, Number >::compute(), ryujin::ShallowWaterInitialStates::FlowOverBump< Description, dim, Number >::compute(), ryujin::ShallowWaterInitialStates::Soliton< Description, dim, Number >::compute(), ryujin::TimeLoop< Description, dim, Number >::compute_error(), ryujin::Geometries::Airfoil< dim >::create_triangulation(), ryujin::Euler::RiemannSolver< dim, Number >::df(), ryujin::Euler::RiemannSolver< dim, Number >::f(), ryujin::fast_pow_impl(), ryujin::Euler::HyperbolicSystemView< dim, Number >::harten_entropy(), ryujin::Euler::HyperbolicSystemView< dim, Number >::harten_entropy_derivative(), ryujin::Euler::Limiter< dim, Number >::limit(), ryujin::EulerAEOS::Limiter< dim, Number >::limit(), ryujin::Euler::HyperbolicSystemView< dim, Number >::mathematical_entropy(), ryujin::Euler::HyperbolicSystemView< dim, Number >::mathematical_entropy_derivative(), ryujin::EulerAEOS::RiemannSolver< dim, Number >::p_star_interpolated(), ryujin::EulerAEOS::RiemannSolver< dim, Number >::p_star_RS_full(), ryujin::EulerAEOS::RiemannSolver< dim, Number >::p_star_SS_full(), ryujin::Euler::RiemannSolver< dim, Number >::p_star_two_rarefaction(), ryujin::Euler::HyperbolicSystemView< dim, Number >::precomputation_loop(), ryujin::Euler::HyperbolicSystemView< dim, Number >::prescribe_riemann_characteristic(), ryujin::Manifolds::GradingManifold< dim >::pull_back(), ryujin::Manifolds::GradingManifold< dim >::push_forward(), ryujin::EulerInitialStates::Rarefaction< Description, dim, Number >::Rarefaction(), ryujin::Euler::HyperbolicSystemView< dim, Number >::specific_entropy(), ryujin::EulerAEOS::HyperbolicSystemView< dim, Number >::surrogate_harten_entropy(), ryujin::EulerAEOS::HyperbolicSystemView< dim, Number >::surrogate_harten_entropy_derivative(), and ryujin::EulerAEOS::HyperbolicSystemView< dim, Number >::surrogate_specific_entropy().
dealii::VectorizedArray< T, width > ryujin::pow | ( | const dealii::VectorizedArray< T, width > | x, |
const T | b | ||
) |
Custom implementation of a vectorized pow function.
Definition at line 256 of file simd.template.h.
References ryujin::pow().
dealii::VectorizedArray< T, width > ryujin::pow | ( | const dealii::VectorizedArray< T, width > | x, |
const dealii::VectorizedArray< T, width > | b | ||
) |
Custom implementation of a vectorized pow function with vectorized exponent.
Definition at line 266 of file simd.template.h.
References ryujin::pow().
T ryujin::fast_pow | ( | const T | x, |
const T | b, | ||
const Bias | bias = Bias::none |
||
) |
Custom serial approximate pow function.
dealii::VectorizedArray< T, width > ryujin::fast_pow | ( | const dealii::VectorizedArray< T, width > | x, |
const T | b, | ||
const Bias | bias = Bias::none |
||
) |
Custom implementation of an approximate, vectorized pow function.
Definition at line 345 of file simd.template.h.
References ryujin::pow().
dealii::VectorizedArray< T, width > ryujin::fast_pow | ( | const dealii::VectorizedArray< T, width > | x, |
const dealii::VectorizedArray< T, width > | b, | ||
const Bias | bias = Bias::none |
||
) |
Custom implementation of an approximate, vectorized pow function with vectorized exponent.
Definition at line 355 of file simd.template.h.
References ryujin::pow().
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Write out the given VectorizedArray to the vector
Definition at line 357 of file simd.h.
Referenced by ryujin::SparseMatrixSIMD< Number, n_components, simd_length >::read_in().
|
inline |
|
inline |
Return the k-th serialized component of a Tensor of VectorizedArray
Definition at line 412 of file simd.h.
References ryujin::serialize_tensor().
Referenced by ryujin::serialize_tensor().
|
inline |
|
inline |
Update the the k-th serial component of a Tensor of VectorizedArray
Definition at line 454 of file simd.h.
References ryujin::assign_serial_tensor().
Referenced by ryujin::assign_serial_tensor().
|
inline |