Serac  0.1
Serac is an implicit thermal strucural mechanics simulation code.
Classes | Namespaces | Functions
tuple.hpp File Reference

Implements a std::tuple-like object that works in CUDA kernels. More...

#include <utility>
#include "serac/infrastructure/accelerator.hpp"
#include "serac/numerics/functional/tuple_tensor_dual_functions.hpp"
Include dependency graph for tuple.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  serac::tuple< T >
 This is a class that mimics most of std::tuple's interface, except that it is usable in CUDA kernels and admits some arithmetic operator overloads. More...
 
struct  serac::tuple< T0 >
 Type that mimics std::tuple. More...
 
struct  serac::tuple< T0, T1 >
 Type that mimics std::tuple. More...
 
struct  serac::tuple< T0, T1, T2 >
 Type that mimics std::tuple. More...
 
struct  serac::tuple< T0, T1, T2, T3 >
 Type that mimics std::tuple. More...
 
struct  serac::tuple< T0, T1, T2, T3, T4 >
 Type that mimics std::tuple. More...
 
struct  serac::tuple< T0, T1, T2, T3, T4, T5 >
 Type that mimics std::tuple. More...
 
struct  serac::tuple< T0, T1, T2, T3, T4, T5, T6 >
 Type that mimics std::tuple. More...
 
struct  serac::tuple< T0, T1, T2, T3, T4, T5, T6, T7 >
 Type that mimics std::tuple. More...
 
struct  serac::tuple_size< Types >
 
struct  serac::tuple_size< serac::tuple< Types... > >
 
struct  serac::tuple_element< I, tuple< Head, Tail... > >
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
struct  serac::tuple_element< 0, tuple< Head, Tail... > >
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
struct  serac::is_tuple< T >
 Trait for checking if a type is a serac::tuple. More...
 
struct  serac::is_tuple< serac::tuple< T... > >
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. More...
 
struct  serac::is_tuple_of_tuples< T >
 Trait for checking if a type if a serac::tuple containing only serac::tuple. More...
 
struct  serac::is_tuple_of_tuples< serac::tuple< T... > >
 Trait for checking if a type if a serac::tuple containing only serac::tuple. More...
 

Namespaces

 serac
 Accelerator functionality.
 

Functions

template<typename... T>
 serac::tuple (T...) -> tuple< T... >
 Class template argument deduction rule for tuples. More...
 
template<typename... T>
SERAC_HOST_DEVICE tuple< T... > serac::make_tuple (const T &... args)
 helper function for combining a list of values into a tuple More...
 
template<int i, typename... T>
constexpr SERAC_HOST_DEVICE auto & serac::get (tuple< T... > &values)
 return a reference to the ith tuple entry More...
 
template<int i, typename... T>
constexpr SERAC_HOST_DEVICE const auto & serac::get (const tuple< T... > &values)
 return a copy of the ith tuple entry More...
 
template<int i, typename... T>
constexpr SERAC_HOST_DEVICE auto serac::type (const tuple< T... > &values)
 a function intended to be used for extracting the ith type from a tuple. More...
 
template<typename... S, typename... T, int... i>
constexpr SERAC_HOST_DEVICE auto serac::plus_helper (const tuple< S... > &x, const tuple< T... > &y, std::integer_sequence< int, i... >)
 A helper function for the + operator of tuples. More...
 
template<typename... S, typename... T>
constexpr SERAC_HOST_DEVICE auto serac::operator+ (const tuple< S... > &x, const tuple< T... > &y)
 return a tuple of values defined by elementwise sum of x and y More...
 
template<typename... T, int... i>
constexpr SERAC_HOST_DEVICE void serac::plus_equals_helper (tuple< T... > &x, const tuple< T... > &y, std::integer_sequence< int, i... >)
 A helper function for the += operator of tuples. More...
 
template<typename... T>
constexpr SERAC_HOST_DEVICE auto serac::operator+= (tuple< T... > &x, const tuple< T... > &y)
 add values contained in y, to the tuple x More...
 
template<typename... T, int... i>
constexpr SERAC_HOST_DEVICE void serac::minus_equals_helper (tuple< T... > &x, const tuple< T... > &y, std::integer_sequence< int, i... >)
 A helper function for the -= operator of tuples. More...
 
template<typename... T>
constexpr SERAC_HOST_DEVICE auto serac::operator-= (tuple< T... > &x, const tuple< T... > &y)
 add values contained in y, to the tuple x More...
 
template<typename... S, typename... T, int... i>
constexpr SERAC_HOST_DEVICE auto serac::minus_helper (const tuple< S... > &x, const tuple< T... > &y, std::integer_sequence< int, i... >)
 A helper function for the - operator of tuples. More...
 
template<typename... S, typename... T>
constexpr SERAC_HOST_DEVICE auto serac::operator- (const tuple< S... > &x, const tuple< T... > &y)
 return a tuple of values defined by elementwise difference of x and y More...
 
template<typename... T, int... i>
constexpr SERAC_HOST_DEVICE auto serac::unary_minus_helper (const tuple< T... > &x, std::integer_sequence< int, i... >)
 A helper function for the - operator of tuples. More...
 
template<typename... T>
constexpr SERAC_HOST_DEVICE auto serac::operator- (const tuple< T... > &x)
 return a tuple of values defined by applying the unary minus operator to each element of x More...
 
template<typename... S, typename... T, int... i>
constexpr SERAC_HOST_DEVICE auto serac::div_helper (const tuple< S... > &x, const tuple< T... > &y, std::integer_sequence< int, i... >)
 A helper function for the / operator of tuples. More...
 
template<typename... S, typename... T>
constexpr SERAC_HOST_DEVICE auto serac::operator/ (const tuple< S... > &x, const tuple< T... > &y)
 return a tuple of values defined by elementwise division of x by y More...
 
template<typename... T, int... i>
constexpr SERAC_HOST_DEVICE auto serac::div_helper (const double a, const tuple< T... > &x, std::integer_sequence< int, i... >)
 A helper function for the / operator of tuples. More...
 
template<typename... T, int... i>
constexpr SERAC_HOST_DEVICE auto serac::div_helper (const tuple< T... > &x, const double a, std::integer_sequence< int, i... >)
 A helper function for the / operator of tuples. More...
 
template<typename... T>
constexpr SERAC_HOST_DEVICE auto serac::operator/ (const double a, const tuple< T... > &x)
 return a tuple of values defined by division of a by the elements of x More...
 
template<typename... T>
constexpr SERAC_HOST_DEVICE auto serac::operator/ (const tuple< T... > &x, const double a)
 return a tuple of values defined by elementwise division of x by a More...
 
template<typename... S, typename... T, int... i>
constexpr SERAC_HOST_DEVICE auto serac::mult_helper (const tuple< S... > &x, const tuple< T... > &y, std::integer_sequence< int, i... >)
 A helper function for the * operator of tuples. More...
 
template<typename... S, typename... T>
constexpr SERAC_HOST_DEVICE auto serac::operator* (const tuple< S... > &x, const tuple< T... > &y)
 return a tuple of values defined by elementwise multiplication of x and y More...
 
template<typename... T, int... i>
constexpr SERAC_HOST_DEVICE auto serac::mult_helper (const double a, const tuple< T... > &x, std::integer_sequence< int, i... >)
 A helper function for the * operator of tuples. More...
 
template<typename... T, int... i>
constexpr SERAC_HOST_DEVICE auto serac::mult_helper (const tuple< T... > &x, const double a, std::integer_sequence< int, i... >)
 A helper function for the * operator of tuples. More...
 
template<typename... T>
constexpr SERAC_HOST_DEVICE auto serac::operator* (const double a, const tuple< T... > &x)
 multiply each component of x by the value a on the left More...
 
template<typename... T>
constexpr SERAC_HOST_DEVICE auto serac::operator* (const tuple< T... > &x, const double a)
 multiply each component of x by the value a on the right More...
 
template<typename... T, std::size_t... i>
auto & serac::print_helper (std::ostream &out, const serac::tuple< T... > &A, std::integer_sequence< size_t, i... >)
 helper used to implement printing a tuple of values More...
 
template<typename... T>
auto & serac::operator<< (std::ostream &out, const serac::tuple< T... > &A)
 print a tuple of values More...
 
template<typename lambda , typename... T, int... i>
SERAC_HOST_DEVICE auto serac::apply_helper (lambda f, tuple< T... > &args, std::integer_sequence< int, i... >)
 A helper to apply a lambda to a tuple. More...
 
template<typename lambda , typename... T>
SERAC_HOST_DEVICE auto serac::apply (lambda f, tuple< T... > &args)
 a way of passing an n-tuple to a function that expects n separate arguments More...
 
template<typename lambda , typename... T, int... i>
SERAC_HOST_DEVICE auto serac::apply_helper (lambda f, const tuple< T... > &args, std::integer_sequence< int, i... >)
 
template<typename lambda , typename... T>
SERAC_HOST_DEVICE auto serac::apply (lambda f, const tuple< T... > &args)
 a way of passing an n-tuple to a function that expects n separate arguments More...
 

Detailed Description

Implements a std::tuple-like object that works in CUDA kernels.

Definition in file tuple.hpp.