![]() |
ryujin 2.5.0 revision c64172211cf21344cb9b9b0f3a1266aa6400d392
|

Classes | |
| struct | ryujin::get_value_type< T > |
Type traits and packed index handling | |
| 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_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<typename Number > | |
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number | ryujin::safe_division (const Number &numerator, const Number &denominator) |
| 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) |
SIMD based access to vectors and arrays of vectors | |
| 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) |
Exception handling in SIMD context | |
| #define | AssertThrowSIMD(variable, condition, exception) |
SIMD related functions and classes (base/simd.h).
| #define AssertThrowSIMD | ( | variable, | |
| condition, | |||
| exception | |||
| ) |
Mixed serial/SIMD variant of the dealii AssertThrow macro. If variable is just a plain double or float, then this macro defaults to a simple call to dealii::AssertThrow(condition(variable), exception). Otherwise (if decltype(variable) has a subscript operator operator[], the dealii::AssertThrow macro is expanded for all components of the variable.
|
inline |
|
inline |
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::positive_part | ( | const Number | number | ) |
Return the positive part of a number.
Definition at line 134 of file simd.h.
Referenced by ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::compute_gap(), ryujin::ShallowWater::WaveSpeedEstimatorView< dim, Number, MemorySpace >::compute_h_star(), ryujin::ShallowWater::WaveSpeedEstimatorView< dim, Number, MemorySpace >::compute_lambda(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::compute_lambda_max(), ryujin::ShallowWater::HyperbolicSystemView< dim, Number, MemorySpace >::inverse_water_depth_mollified(), ryujin::ShallowWater::WaveSpeedEstimatorView< dim, Number, MemorySpace >::lambda1_minus(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::lambda1_minus(), ryujin::ShallowWater::WaveSpeedEstimatorView< dim, Number, MemorySpace >::lambda3_plus(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::lambda3_plus(), ryujin::Euler::LimiterView< dim, Number, MemorySpace >::limit(), ryujin::EulerAEOS::LimiterView< dim, Number, MemorySpace >::limit(), ryujin::EulerBarotropic::LimiterView< dim, Number, MemorySpace >::limit(), ryujin::ScalarConservation::LimiterView< dim, Number, MemorySpace >::limit(), ryujin::ShallowWater::LimiterView< dim, Number, MemorySpace >::limit(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_failsafe(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_interpolated(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_RS_full(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_single_gamma(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_SS_full(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_two_rarefaction(), ryujin::EulerAEOS::HyperbolicSystemView< dim, Number, MemorySpace >::surrogate_harten_entropy(), ryujin::EulerAEOS::HyperbolicSystemView< dim, Number, MemorySpace >::surrogate_pressure(), and ryujin::EulerAEOS::HyperbolicSystemView< dim, Number, MemorySpace >::surrogate_speed_of_sound().
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::negative_part | ( | const Number | number | ) |
Return the negative part of a number.
Definition at line 146 of file simd.h.
Referenced by ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::compute_gap(), ryujin::ShallowWater::WaveSpeedEstimatorView< dim, Number, MemorySpace >::compute_lambda(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::compute_lambda_max(), ryujin::Euler::LimiterView< dim, Number, MemorySpace >::limit(), ryujin::EulerAEOS::LimiterView< dim, Number, MemorySpace >::limit(), ryujin::EulerBarotropic::LimiterView< dim, Number, MemorySpace >::limit(), ryujin::ScalarConservation::LimiterView< dim, Number, MemorySpace >::limit(), and ryujin::ShallowWater::LimiterView< dim, Number, MemorySpace >::limit().
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number ryujin::safe_division | ( | const Number & | numerator, |
| const Number & | denominator | ||
| ) |
For various divisions we have a mathematical guarantee that the numerator and denominator are nonnegative and the limit (of zero numerator and denominator) must converge to zero. The following function takes care of rounding issues when computing such quotients by (a) avoiding division by zero and (b) ensuring non-negativity of the result.
Definition at line 164 of file simd.h.
References ryujin::min.
Referenced by ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::alpha(), ryujin::EulerAEOS::IndicatorView< dim, Number, MemorySpace >::alpha(), ryujin::EulerBarotropic::IndicatorView< dim, Number, MemorySpace >::alpha(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::df(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::f(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::lambda1_minus(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::lambda3_plus(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_failsafe(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_interpolated(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_RS_full(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_single_gamma(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_SS_full(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_two_rarefaction(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::phi_of_p_max(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::rarefaction_fan_pressure(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::rho_star(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::safe_division(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::speed_of_sound(), ryujin::EulerAEOS::HyperbolicSystemView< dim, Number, MemorySpace >::surrogate_gamma(), ryujin::EulerAEOS::HyperbolicSystemView< dim, Number, MemorySpace >::surrogate_harten_entropy_derivative(), and ryujin::EulerAEOS::HyperbolicSystemView< dim, Number, MemorySpace >::surrogate_pressure().
| 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 182 of file simd.h.
Referenced by ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::compute(), ryujin::ShallowWater::WaveSpeedEstimatorView< dim, Number, MemorySpace >::compute_h_star(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::df(), ryujin::ShallowWater::WaveSpeedEstimatorView< dim, Number, MemorySpace >::f(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::f(), ryujin::Euler::LimiterView< dim, Number, MemorySpace >::limit(), ryujin::EulerAEOS::LimiterView< dim, Number, MemorySpace >::limit(), ryujin::ShallowWater::LimiterView< dim, Number, MemorySpace >::limit(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_interpolated(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_RS_full(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_single_gamma(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_two_rarefaction(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_upper_bound(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::rho_star(), and ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::solve().
|
inline |
| DEAL_II_HOST_DEVICE_ALWAYS_INLINE T ryujin::fixed_power | ( | const T | x | ) |
| DEAL_II_HOST_DEVICE T ryujin::pow | ( | const T | x, |
| const T | b | ||
| ) |
Custom serial pow function.
Referenced by ryujin::ShallowWaterInitialStates::SlopingFriction< Description, dim, Number >::compute(), ryujin::EulerInitialStates::IsentropicVortex< Description, dim, Number >::compute(), ryujin::ShallowWaterInitialStates::FlowOverBump< Description, dim, Number >::compute(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::df(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::f(), ryujin::ShallowWater::HyperbolicSystem::fill_precomputed_values(), ryujin::Euler::HyperbolicSystemView< dim, Number, MemorySpace >::harten_entropy(), ryujin::Euler::HyperbolicSystemView< dim, Number, MemorySpace >::harten_entropy_derivative(), ryujin::Euler::LimiterView< dim, Number, MemorySpace >::limit(), ryujin::EulerAEOS::LimiterView< dim, Number, MemorySpace >::limit(), ryujin::Euler::HyperbolicSystemView< dim, Number, MemorySpace >::mathematical_entropy(), ryujin::Euler::HyperbolicSystemView< dim, Number, MemorySpace >::mathematical_entropy_derivative(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_interpolated(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_RS_full(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_single_gamma(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_SS_full(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::p_star_two_rarefaction(), ryujin::pow(), ryujin::pow(), ryujin::Euler::HyperbolicSystemView< dim, Number, MemorySpace >::prescribe_riemann_characteristic(), ryujin::Euler::HyperbolicSystemView< dim, Number, MemorySpace >::prescribe_riemann_characteristic(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::rarefaction_fan_pressure(), ryujin::EulerAEOS::NASGRiemannSolverView< Number, options, MemorySpace >::rho_star(), ryujin::Euler::HyperbolicSystemView< dim, Number, MemorySpace >::specific_entropy(), ryujin::EulerAEOS::HyperbolicSystemView< dim, Number, MemorySpace >::surrogate_harten_entropy(), ryujin::EulerAEOS::HyperbolicSystemView< dim, Number, MemorySpace >::surrogate_harten_entropy_derivative(), and ryujin::EulerAEOS::HyperbolicSystemView< dim, Number, MemorySpace >::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.
| 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.
| DEAL_II_HOST_DEVICE T ryujin::fast_pow | ( | const T | x, |
| const T | b, | ||
| const Bias | bias = Bias::none |
||
| ) |
Custom serial approximate pow function.
Referenced by ryujin::fast_pow(), and ryujin::fast_pow().
| 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.
| 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.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Write out the given VectorizedArray to the vector
Definition at line 519 of file simd.h.
Referenced by ryujin::NavierStokes::VelocityMatrix< dim, Number, Number2 >::compute_diagonal().
|
inline |
|
inline |
Return the k-th serialized component of a Tensor of VectorizedArray
Definition at line 574 of file simd.h.
References ryujin::serialize_tensor().
Referenced by ryujin::serialize_tensor().
|
inline |
Variant of above function for serial Tensors that simply returns the given tensor.
Definition at line 600 of file simd.h.
References ryujin::serial.
|
inline |
Update the k-th serial component of a Tensor of VectorizedArray
Definition at line 616 of file simd.h.
References ryujin::assign_serial_tensor(), and ryujin::serial.
Referenced by ryujin::assign_serial_tensor().
|
inline |
Variant of above function for serial Tensors that simply assigns the given tensor as is.
Definition at line 640 of file simd.h.
References ryujin::serial.