Smith  0.1
Smith is an implicit thermal structural mechanics simulation code.
function_signature.hpp
1 // Copyright (c) Lawrence Livermore National Security, LLC and
2 // other Smith Project Developers. See the top-level LICENSE file for
3 // details.
4 //
5 // SPDX-License-Identifier: (BSD-3-Clause)
6 
7 #pragma once
8 #include <camp/camp.hpp>
10 
11 template <typename T>
13 
19 template <typename output_type, typename... input_types>
20 struct FunctionSignature<output_type(input_types...)> {
21  using return_type = output_type;
22  using parameter_types = std::tuple<input_types...>;
23 
25  static constexpr int num_args = sizeof...(input_types);
26 
28  static constexpr auto index_seq = camp::make_int_seq<int, num_args>{};
29 };
30 
41 template <mfem::Geometry::Type geom, typename test, typename... trials>
42 auto trial_elements_tuple(FunctionSignature<test(trials...)>)
43 {
45 }
46 
54 template <mfem::Geometry::Type geom, typename test, typename... trials>
55 auto get_test_element(FunctionSignature<test(trials...)>)
56 {
58 }
This file contains helper traits and enumerations for classifying finite elements.
tuple(T...) -> tuple< T... >
Class template argument deduction rule for tuples.
output_type return_type
the type returned by the function
std::tuple< input_types... > parameter_types
the types of the function arguments
Template prototype for finite element implementations.
This is a class that mimics most of std::tuple's interface, except that it is usable in CUDA kernels ...
Definition: tuple.hpp:28