Serac
0.1
Serac is an implicit thermal strucural mechanics simulation code.
|
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"
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... | |
Implements a std::tuple-like object that works in CUDA kernels.
Definition in file tuple.hpp.