ryujin 2.5.0 revision c64172211cf21344cb9b9b0f3a1266aa6400d392
Loading...
Searching...
No Matches
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
ryujin Namespace Reference

Namespaces

namespace  BarotropicEquationsOfState
 
namespace  Concept
 
namespace  DoFRenumbering
 
namespace  DoFTools
 
namespace  ElectrostaticConfigurations
 
namespace  EquationsOfState
 
namespace  Euler
 
namespace  EulerAEOS
 
namespace  EulerBarotropic
 
namespace  EulerInitialStates
 
namespace  EulerPoisson
 
namespace  Fluxes
 
namespace  Geometries
 
namespace  GridGenerator
 
namespace  Interface
 
namespace  internal
 
namespace  Manifolds
 
namespace  NavierStokes
 
namespace  ScalarConservation
 
namespace  ShallowWater
 
namespace  ShallowWaterInitialStates
 

Classes

struct  ArrayReducer
 
class  AssemblyCopyData
 
class  AssemblyScratchData
 
class  BarotropicEquationOfState
 
class  Checkpointing
 
class  ComputingTimer
 
class  Correction
 
class  CubicSpline
 
class  CutCellDecomposition
 
class  DeviceTimer
 
class  Discretization
 
class  ElectrostaticConfiguration
 
class  Environment
 
struct  Equation
 
class  EquationOfState
 
class  EquationRegistration
 
class  ErrorEvaluation
 
class  Flux
 
class  Geometry
 
class  GeoTIFFReader
 
struct  get_value_type
 
struct  get_value_type< dealii::VectorizedArray< T, width > >
 
class  HyperbolicModule
 
class  InitialState
 
class  InitialValues
 
class  LaplaceOperator
 
class  Lazy
 
class  Library
 
class  Logger
 
class  MeshAdaptor
 
class  MeshAlignment
 
class  MGSmoother
 
class  MGTransfer
 
class  Mirrored
 
class  MirroredStorage
 
class  MPIEnsemble
 
class  MPIEnsembleContainer
 
class  MultiComponentVector
 
class  MultiComponentVectorView
 
class  OfflineData
 
class  Postprocessor
 
class  Quantities
 
class  Restart
 
class  Scheduler
 
class  SelectView
 
class  Simulation
 
class  SolutionTransfer
 
class  SparseMatrix
 
class  SparseMatrixView
 
class  SparsityPattern
 
class  SparsityPatternView
 
struct  StateVector
 
struct  StubParabolicDescription
 
class  StubParabolicModule
 
class  StubParabolicSystem
 
struct  TaskComposition
 
struct  TaskContext
 
class  TimeIntegrator
 
class  TransfiniteInterpolationManifold
 
class  Trigger
 
class  UpdateOperator
 
class  VTUOutput
 

Typedefs

using selected_memory_space_t = std::conditional_t< have_separate_memory_spaces, dealii::MemorySpace::Default, dealii::MemorySpace::Host >
 
template<typename MemorySpace >
using other_space_t = std::conditional_t< std::is_same_v< MemorySpace, dealii::MemorySpace::Host >, dealii::MemorySpace::Default, dealii::MemorySpace::Host >
 
using EquationOfStateLibrary = Library< EquationOfState, const std::string & >
 
using BarotropicEquationOfStateLibrary = Library< BarotropicEquationOfState, const std::string & >
 
template<int dim, typename Number = double>
using ElectrostaticConfigurationLibrary = Library< ElectrostaticConfiguration< dim, Number >, const std::string & >
 
template<int dim>
using GeometryLibrary = Library< Geometry< dim >, const std::string & >
 
template<typename Number >
using ScalarHostVector = dealii::LinearAlgebra::distributed::Vector< Number >
 
template<typename Number >
using ScalarVector = MultiComponentVector< Number >
 
using FluxLibrary = Library< Flux, const std::string & >
 
template<typename HyperbolicDescription , int dim, typename Number = double>
using InitialStateLibrary = Library< InitialState< HyperbolicDescription, dim, Number >, const typename HyperbolicDescription::HyperbolicSystem &, const std::string & >
 

Enumerations

enum class  HeightNormalization { HeightNormalization::none , HeightNormalization::minimum , HeightNormalization::average , HeightNormalization::maximum }
 
enum class  TransferPolicy { TransferPolicy::explicit_transfers , TransferPolicy::implicit_transfers , TransferPolicy::implicit_transfers_host_resident , TransferPolicy::implicit_transfers_default_resident }
 
enum  Boundary : dealii::types::boundary_id {
  do_nothing = 0 , periodic = 1 , slip = 2 , no_slip = 3 ,
  dirichlet = 4 , dynamic = 5 , dirichlet_momentum = 6 , dirichlet_velocity = 7
}
 
enum class  Ansatz {
  Ansatz::cg_q1 , Ansatz::cg_q2 , Ansatz::cg_q3 , Ansatz::dg_q1 ,
  Ansatz::dg_q2 , Ansatz::dg_q3
}
 
enum class  MeshType { MeshType::serial , MeshType::parallel_shared , MeshType::parallel_distributed , MeshType::parallel_fullydistributed }
 
enum class  AdaptationStrategy { AdaptationStrategy::global_refinement , AdaptationStrategy::random_adaptation , AdaptationStrategy::smoothness_indicators }
 
enum class  MarkingStrategy { MarkingStrategy::fixed_threshold }
 
enum class  CFLRecoveryStrategy { CFLRecoveryStrategy::none , CFLRecoveryStrategy::bang_bang_control , CFLRecoveryStrategy::cruise_control }
 
enum class  TimeSteppingScheme {
  TimeSteppingScheme::ssprk_22 , TimeSteppingScheme::ssprk_33 , TimeSteppingScheme::erk_11 , TimeSteppingScheme::erk_22 ,
  TimeSteppingScheme::erk_33 , TimeSteppingScheme::erk_43 , TimeSteppingScheme::erk_54 , TimeSteppingScheme::strang_ssprk_33_cn ,
  TimeSteppingScheme::strang_erk_33_cn , TimeSteppingScheme::strang_erk_43_cn , TimeSteppingScheme::imex_11 , TimeSteppingScheme::imex_22 ,
  TimeSteppingScheme::imex_33
}
 
enum class  IDViolationStrategy : std::uint8_t { IDViolationStrategy::warn , IDViolationStrategy::raise_exception }
 
enum class  TaskPhase : std::uint8_t { TaskPhase::pre_step , TaskPhase::adapt , TaskPhase::step , TaskPhase::post_step }
 
enum class  TriggerMode : std::uint8_t { TriggerMode::every_cycle , TriggerMode::timer_tick , TriggerMode::wall_clock , TriggerMode::time_points }
 
enum class  StateVectorPart { StateVectorPart::state , StateVectorPart::precomputed , StateVectorPart::dynamic_state , StateVectorPart::dynamic_precomputed }
 

Functions

constexpr bool performs_implicit_transfers (const TransferPolicy policy)
 
template<int dim, typename Number , typename MemorySpace , typename Object >
auto make_select_view (const Object &object)
 
template<typename ScalarNumber , typename Functor , typename... Args>
void cpu_simd_loop (const std::string &region_name, const Functor &body, const unsigned int left, const unsigned int internal, const unsigned int right, Args &&...args)
 
template<typename ScalarNumber , typename Functor , typename... Args>
void gpu_loop (const std::string &region_name, const Functor &body, const unsigned int left, const unsigned int internal, const unsigned int right, Args &&...args)
 
template<typename MemorySpace , typename ScalarNumber , typename Functor , typename... Args>
void loop (const std::string &region_name, const Functor &body, const unsigned int left, const unsigned int internal, const unsigned int right, Args &&...args)
 
template<typename Reducer , typename Functor , typename... Args>
void cpu_reduction_loop (const std::string &region_name, const Functor &body, const Reducer &reducer, const unsigned int left, const unsigned int right, Args &&...args)
 
template<typename Reducer , typename Functor , typename... Args>
void gpu_reduction_loop (const std::string &region_name, const Functor &body, const Reducer &reducer, const unsigned int left, const unsigned int right, Args &&...args)
 
template<typename MemorySpace , typename Reducer , typename Functor , typename... Args>
void reduction_loop (const std::string &region_name, const Functor &body, const Reducer &reducer, const unsigned int left, const unsigned int right, Args &&...args)
 
void print_revision_and_version (std::ostream &stream)
 
template<typename Number >
void transform_to_local_range (const dealii::Utilities::MPI::Partitioner &partitioner, dealii::AffineConstraints< Number > &affine_constraints)
 
template<typename VECTOR >
void transform_to_local_range (const dealii::Utilities::MPI::Partitioner &partitioner, VECTOR &vector)
 
template<typename Setup >
void write_parameter_files (const std::string &name, bool write_detailed_description, const Setup &setup)
 
std::map< std::string, Equation > & equations ()
 
template<int dim, typename Number , typename Number2 >
DEAL_II_ALWAYS_INLINE dealii::Tensor< 1, dim, Number > apply_B_n (const dealii::Tensor< 1,(dim==2 ? 1 :dim), Number > &magnetic_field, const Number2 theta_tau, const dealii::Tensor< 1, dim, Number > &velocity)
 
template<int dim, typename Number , typename Number2 >
DEAL_II_ALWAYS_INLINE dealii::Tensor< 1, dim, Number > apply_B_n_inverse (const dealii::Tensor< 1,(dim==2 ? 1 :dim), Number > &magnetic_field, const Number2 &theta_tau, const dealii::Tensor< 1, dim, Number > &velocity)
 
std::shared_ptr< const dealii::Utilities::MPI::Partitioner > create_vector_partitioner (const std::shared_ptr< const dealii::Utilities::MPI::Partitioner > &scalar_partitioner, const unsigned int n_comp)
 
template<typename Number , int n_comp, int warp_size, int simd_length, typename FullMatrix >
void distribute_local_to_global (const FullMatrix &cell_matrix, const std::vector< dealii::types::global_dof_index > &dof_indices_row, const std::vector< dealii::types::global_dof_index > &dof_indices_column, const dealii::AffineConstraints< Number > &affine_constraints, SparseMatrix< Number, n_comp, warp_size, simd_length > &sparse_matrix)
 
template<typename Number , int n_comp, int warp_size, int simd_length, typename FullMatrix , typename Vector >
void distribute_local_to_global (const FullMatrix &cell_matrix, const std::vector< dealii::types::global_dof_index > &dof_indices, const dealii::AffineConstraints< Number > &affine_constraints, SparseMatrix< Number, n_comp, warp_size, simd_length > &sparse_matrix)
 
template<typename MemorySpace , typename Number , std::same_as< StateVectorPart >... Parts>
void copy_to_memory_space (const StateVector< Number > &state_vector, Parts... parts)
 
template<typename MemorySpace , typename Number >
void copy_to_memory_space (const MultiComponentVector< Number > &vector)
 
template<typename MemorySpace , typename Number , std::same_as< StateVectorPart >... Parts>
void move_to_memory_space (StateVector< Number > &state_vector, Parts... parts)
 
template<typename MemorySpace , typename Number >
void move_to_memory_space (MultiComponentVector< Number > &vector)
 
template<typename MemorySpace , typename Number >
void sadd (StateVector< Number > &dst, const Number s, const Number b, const StateVector< Number > &src)
 
template<typename Number , typename OfflineData >
void debug_poison_invalid_values (StateVector< Number > &state_vector, const OfflineData &offline_data)
 
Various convenience wrappers for dealing with dealii::Function,

dealii::Tensor:

template<int dim, typename Number , typename Callable >
ToFunction< dim, Number, Callable > to_function (const Callable &callable, const unsigned int k)
 
template<typename FT , int problem_dim = FT::dimension, typename TT = typename FT::value_type, typename T = typename TT::value_type>
DEAL_II_HOST_DEVICE_ALWAYS_INLINE dealii::Tensor< 1, problem_dim, T > contract (const FT &flux_ij, const TT &c_ij)
 
template<typename FT , int problem_dim = FT::dimension>
DEAL_II_HOST_DEVICE_ALWAYS_INLINE FT add (const FT &flux_left_ij, const FT &flux_right_ij)
 
Functions
template<typename Number >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE void quadratic_newton_step (Number &p_1, Number &p_2, const Number phi_p_1, const Number phi_p_2, const Number dphi_p_1, const Number dphi_p_2, const Number sign=Number(1.0))
 
Type traits and packed index handling
template<unsigned int length, typename Functor >
DEAL_II_ALWAYS_INLINE auto generate_iterators (Functor f) -> std::array< auto, length >
 
template<typename T >
DEAL_II_ALWAYS_INLINE void increment_iterators (T &iterators)
 
SIMD based access to vectors and arrays of vectors
template<typename T , typename V >
DEAL_II_ALWAYS_INLINE T read_entry (const V &vector, unsigned int i)
 
template<typename T , typename T2 >
DEAL_II_ALWAYS_INLINE T read_entry (const std::vector< T2 > &vector, unsigned int i)
 
template<typename T , typename V >
DEAL_II_ALWAYS_INLINE T read_entry (const V &vector, const unsigned int *js)
 
template<typename T , typename T2 >
DEAL_II_ALWAYS_INLINE T read_entry (const std::vector< T2 > &vector, const unsigned int *js)
 
template<typename T , typename V >
DEAL_II_ALWAYS_INLINE void write_entry (V &vector, const T &values, unsigned int i)
 
template<typename T , typename T2 >
DEAL_II_ALWAYS_INLINE void 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 > 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 > 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 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 assign_serial_tensor (dealii::Tensor< rank, dim, Number > &result, const dealii::Tensor< rank, dim, Number > &serial, const unsigned int k)
 

Variables

constexpr bool have_separate_memory_spaces
 
constexpr unsigned int warp_size
 
template<typename T >
constexpr bool has_n_mpi_ensembles_v = auto::value
 

Transcendental and other mathematical operations

enum class  Bias { none , max , min }
 
template<typename Number >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number positive_part (const Number number)
 
template<typename Number >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number negative_part (const Number number)
 
template<typename Number >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number safe_division (const Number &numerator, const Number &denominator)
 
template<dealii::SIMDComparison predicate, typename Number >
DEAL_II_HOST_DEVICE_ALWAYS_INLINE Number 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 > 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 fixed_power (const T x)
 
template<typename T >
DEAL_II_HOST_DEVICE T pow (const T x, const T b)
 
template<typename T , std::size_t width>
dealii::VectorizedArray< T, width > pow (const dealii::VectorizedArray< T, width > x, const T b)
 
template<typename T , std::size_t width>
dealii::VectorizedArray< T, width > pow (const dealii::VectorizedArray< T, width > x, const dealii::VectorizedArray< T, width > b)
 
template<>
DEAL_II_HOST_DEVICE_ALWAYS_INLINE float pow (const float x, const float b)
 
template<>
DEAL_II_HOST_DEVICE_ALWAYS_INLINE double pow (const double x, const double b)
 
template<typename T >
DEAL_II_HOST_DEVICE T fast_pow (const T x, const T b, const Bias bias=Bias::none)
 
template<typename T , std::size_t width>
dealii::VectorizedArray< T, width > 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 > fast_pow (const dealii::VectorizedArray< T, width > x, const dealii::VectorizedArray< T, width > b, const Bias bias=Bias::none)
 
template<>
DEAL_II_HOST_DEVICE_ALWAYS_INLINE float fast_pow (const float x, const float b, const Bias bias)
 
template<>
DEAL_II_HOST_DEVICE_ALWAYS_INLINE double fast_pow (const double x, const double b, const Bias bias)
 

Enumeration Type Documentation

◆ Bias

enum class ryujin::Bias
strong

Controls the bias of the fast_pow() functions.

Enumerator
none 

No specific bias.

max 

Guarantee an upper bound, i.e., fast_pow(x,b) >= pow(x,b).

min 

Guarantee a lower bound, i.e., fast_pow(x,b) >= pow(x,b).

Definition at line 306 of file simd.h.

Function Documentation

◆ cpu_reduction_loop()

template<typename Reducer , typename Functor , typename... Args>
void ryujin::cpu_reduction_loop ( const std::string &  region_name,
const Functor &  body,
const Reducer &  reducer,
const unsigned int  left,
const unsigned int  right,
Args &&...  args 
)
inline

Definition at line 413 of file loop.h.

References LIKWID_MARKER_START, LIKWID_MARKER_STOP, and RYUJIN_PRAGMA.

Referenced by reduction_loop().

◆ gpu_reduction_loop()

template<typename Reducer , typename Functor , typename... Args>
void ryujin::gpu_reduction_loop ( const std::string &  region_name,
const Functor &  body,
const Reducer &  reducer,
const unsigned int  left,
const unsigned int  right,
Args &&...  args 
)
inline

Definition at line 505 of file loop.h.

References NVTX_MARKER_START, and NVTX_MARKER_STOP.

Referenced by reduction_loop().

◆ reduction_loop()

template<typename MemorySpace , typename Reducer , typename Functor , typename... Args>
void ryujin::reduction_loop ( const std::string &  region_name,
const Functor &  body,
const Reducer &  reducer,
const unsigned int  left,
const unsigned int  right,
Args &&...  args 
)
inline

Definition at line 600 of file loop.h.

References cpu_reduction_loop(), and gpu_reduction_loop().

◆ pow() [1/2]

template<>
DEAL_II_HOST_DEVICE_ALWAYS_INLINE float ryujin::pow ( const float  x,
const float  b 
)

Definition at line 272 of file simd.h.

References pow().

◆ pow() [2/2]

template<>
DEAL_II_HOST_DEVICE_ALWAYS_INLINE double ryujin::pow ( const double  x,
const double  b 
)

Definition at line 288 of file simd.h.

References pow().

◆ fast_pow() [1/2]

template<>
DEAL_II_HOST_DEVICE_ALWAYS_INLINE float ryujin::fast_pow ( const float  x,
const float  b,
const Bias  bias 
)

Definition at line 362 of file simd.h.

References fast_pow().

◆ fast_pow() [2/2]

template<>
DEAL_II_HOST_DEVICE_ALWAYS_INLINE double ryujin::fast_pow ( const double  x,
const double  b,
const Bias  bias 
)

Definition at line 379 of file simd.h.

References fast_pow().

◆ apply_B_n()

template<int dim, typename Number , typename Number2 >
DEAL_II_ALWAYS_INLINE dealii::Tensor< 1, dim, Number > ryujin::apply_B_n ( const dealii::Tensor< 1,(dim==2 ? 1 :dim), Number > &  magnetic_field,
const Number2  theta_tau,
const dealii::Tensor< 1, dim, Number > &  velocity 
)
inline

Definition at line 32 of file laplace_operator.h.

◆ apply_B_n_inverse()

template<int dim, typename Number , typename Number2 >
DEAL_II_ALWAYS_INLINE dealii::Tensor< 1, dim, Number > ryujin::apply_B_n_inverse ( const dealii::Tensor< 1,(dim==2 ? 1 :dim), Number > &  magnetic_field,
const Number2 &  theta_tau,
const dealii::Tensor< 1, dim, Number > &  velocity 
)
inline

Definition at line 51 of file laplace_operator.h.

Referenced by ryujin::UpdateOperator< dim, Number >::vmult().

◆ distribute_local_to_global() [1/2]

template<typename Number , int n_comp, int warp_size, int simd_length, typename FullMatrix >
void ryujin::distribute_local_to_global ( const FullMatrix &  cell_matrix,
const std::vector< dealii::types::global_dof_index > &  dof_indices_row,
const std::vector< dealii::types::global_dof_index > &  dof_indices_column,
const dealii::AffineConstraints< Number > &  affine_constraints,
SparseMatrix< Number, n_comp, warp_size, simd_length > &  sparse_matrix 
)

◆ distribute_local_to_global() [2/2]

template<typename Number , int n_comp, int warp_size, int simd_length, typename FullMatrix , typename Vector >
void ryujin::distribute_local_to_global ( const FullMatrix &  cell_matrix,
const std::vector< dealii::types::global_dof_index > &  dof_indices,
const dealii::AffineConstraints< Number > &  affine_constraints,
SparseMatrix< Number, n_comp, warp_size, simd_length > &  sparse_matrix 
)

Variable Documentation

◆ has_n_mpi_ensembles_v

template<typename T >
constexpr bool ryujin::has_n_mpi_ensembles_v = auto::value
constexpr

A trait that determines whether a given HyperbolicDescription struct contains a method or field "n_mpi_ensembles".

Definition at line 107 of file mpi_ensemble_container.h.