ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
Loading...
Searching...
No Matches
lb_kernels.cuh
Go to the documentation of this file.
1/*
2 * Copyright (C) 2021-2024 The ESPResSo project
3 *
4 * This file is part of ESPResSo.
5 *
6 * ESPResSo is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * ESPResSo is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20#pragma once
21
23
24#include "lb_kernels.hpp"
25
34
39
40namespace walberla {
41namespace detail {
42
43using lbmpy::Arch;
44
45template <> struct KernelTrait<double, Arch::GPU> {
46 using CollisionModelThermalized =
47 pystencils::CollideSweepDoublePrecisionThermalizedCUDA;
48 using CollisionModelLeesEdwards =
49 pystencils::CollideSweepDoublePrecisionLeesEdwardsCUDA;
50 using StreamSweep = pystencils::StreamSweepDoublePrecisionCUDA;
51 using InitialPDFsSetter = pystencils::InitialPDFsSetterDoublePrecisionCUDA;
52};
53
54template <> struct KernelTrait<float, Arch::GPU> {
55 using CollisionModelThermalized =
56 pystencils::CollideSweepSinglePrecisionThermalizedCUDA;
57 using CollisionModelLeesEdwards =
58 pystencils::CollideSweepSinglePrecisionLeesEdwardsCUDA;
59 using StreamSweep = pystencils::StreamSweepSinglePrecisionCUDA;
60 using InitialPDFsSetter = pystencils::InitialPDFsSetterSinglePrecisionCUDA;
61};
62
63template <> struct BoundaryHandlingTrait<double, Arch::GPU> {
64 using Dynamic_UBB = lbm::Dynamic_UBB_double_precisionCUDA;
65};
66
67template <> struct BoundaryHandlingTrait<float, Arch::GPU> {
68 using Dynamic_UBB = lbm::Dynamic_UBB_single_precisionCUDA;
69};
70
71} // namespace detail
72} // namespace walberla
Arch