SimiLie
Loading...
Searching...
No Matches
form.hpp
1// SPDX-FileCopyrightText: 2024 Baptiste Legouix
2// SPDX-License-Identifier: MIT
3
4#pragma once
5
6#include <ddc/ddc.hpp>
7
8#include "cochain.hpp"
9#include "cosimplex.hpp"
10
11namespace sil {
12
13namespace exterior {
14
15namespace detail {
16
17template <class T, class ElementType, class LayoutStridedPolicy>
18struct FormWrapper;
19
20template <misc::NotSpecialization<Chain> T, class ElementType, class LayoutStridedPolicy>
21struct FormWrapper<T, ElementType, LayoutStridedPolicy>
22{
23 using type = Cosimplex<T, ElementType>;
24};
25
26template <misc::Specialization<Chain> T, class ElementType, class LayoutStridedPolicy>
27struct FormWrapper<T, ElementType, LayoutStridedPolicy>
28{
30};
31
32/*
33template <misc::NotSpecialization<Chain> Head, class ElementType, class LayoutStridedPoliy >
34FormWrapper(Head, ElementType) -> FormWrapper<Head, ElementType, LayoutStridedPolicy, Kokkos::DefaultHostExecutionSpace>;
35
36template <misc::Specialization<Chain> Head, class ElementType, class LayoutStridedPolicy, class ExecSpace>
37FormWrapper(Head, ElementType, Allocator) -> FormWrapper<Head, ElementType, LayoutStridedPolicy, ExecSpace>;
38*/
39
40} // namespace detail
41
42// Usage should be avoided because CTAD cannot go through it
43template <class T, class ElementType = double, class LayoutStridedPolicy = Kokkos::LayoutRight>
44using Form = typename detail::FormWrapper<T, ElementType, LayoutStridedPolicy>::type;
45
46} // namespace exterior
47
48} // namespace sil
typename detail::FormWrapper< T, ElementType, LayoutStridedPolicy >::type Form
Definition form.hpp:44
Cochain(ChainType, TensorType) -> Cochain< ChainType, typename TensorType::value_type, ddc::detail::mdspan_to_kokkos_layout_t< typename TensorType::layout_type > >
The top-level namespace of SimiLie.
Definition csr.hpp:14