preCICE v3.2.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
GinkgoRadialBasisFctSolverTest.cpp
Go to the documentation of this file.
1#ifndef PRECICE_NO_GINKGO
2
6#include "mesh/Data.hpp"
7#include "mesh/Mesh.hpp"
9#include "mesh/Utils.hpp"
10#include "mesh/Vertex.hpp"
12#include "testing/Testing.hpp"
13
14using namespace precice;
15using namespace precice::mesh;
16using namespace precice::mapping;
17using namespace precice::testing;
19
20BOOST_AUTO_TEST_SUITE(MappingTests)
21BOOST_AUTO_TEST_SUITE(GinkgoRadialBasisFunctionSolver)
22
23#undef doLocalCode
24#define doLocalCode(Type, function, polynomial, EXECUTOR, SOLVER) \
25 { \
26 MappingConfiguration::GinkgoParameter gpm; \
27 gpm.executor = EXECUTOR; \
28 gpm.deviceId = 0; \
29 gpm.solver = SOLVER; \
30 gpm.maxIterations = 100; \
31 gpm.usePreconditioner = false; \
32 RadialBasisFctMapping<GinkgoRadialBasisFctSolver<Type>, MappingConfiguration::GinkgoParameter> consistentMap2D(Mapping::CONSISTENT, 2, function, {{false, false, false}}, polynomial, gpm); \
33 perform2DTestConsistentMapping(consistentMap2D); \
34 RadialBasisFctMapping<GinkgoRadialBasisFctSolver<Type>, MappingConfiguration::GinkgoParameter> consistentMap2DVector(Mapping::CONSISTENT, 2, function, {{false, false, false}}, polynomial, gpm); \
35 perform2DTestConsistentMappingVector(consistentMap2DVector); \
36 RadialBasisFctMapping<GinkgoRadialBasisFctSolver<Type>, MappingConfiguration::GinkgoParameter> consistentMap3D(Mapping::CONSISTENT, 3, function, {{false, false, false}}, polynomial, gpm); \
37 perform3DTestConsistentMapping(consistentMap3D); \
38 RadialBasisFctMapping<GinkgoRadialBasisFctSolver<Type>, MappingConfiguration::GinkgoParameter> scaledConsistentMap2D(Mapping::SCALED_CONSISTENT_SURFACE, 2, function, {{false, false, false}}, polynomial, gpm); \
39 perform2DTestScaledConsistentMapping(scaledConsistentMap2D); \
40 RadialBasisFctMapping<GinkgoRadialBasisFctSolver<Type>, MappingConfiguration::GinkgoParameter> scaledConsistentMap3D(Mapping::SCALED_CONSISTENT_SURFACE, 3, function, {{false, false, false}}, polynomial, gpm); \
41 perform3DTestScaledConsistentMapping(scaledConsistentMap3D); \
42 RadialBasisFctMapping<GinkgoRadialBasisFctSolver<Type>, MappingConfiguration::GinkgoParameter> conservativeMap2D(Mapping::CONSERVATIVE, 2, function, {{false, false, false}}, polynomial, gpm); \
43 perform2DTestConservativeMapping(conservativeMap2D); \
44 RadialBasisFctMapping<GinkgoRadialBasisFctSolver<Type>, MappingConfiguration::GinkgoParameter> conservativeMap2DVector(Mapping::CONSERVATIVE, 2, function, {{false, false, false}}, polynomial, gpm); \
45 perform2DTestConservativeMappingVector(conservativeMap2DVector); \
46 RadialBasisFctMapping<GinkgoRadialBasisFctSolver<Type>, MappingConfiguration::GinkgoParameter> conservativeMap3D(Mapping::CONSERVATIVE, 3, function, {{false, false, false}}, polynomial, gpm); \
47 perform3DTestConservativeMapping(conservativeMap3D); \
48 }
49
50#define TEST_FOR_ALL_RBFS(EXECUTOR, SOLVER) \
51 PRECICE_TEST_SETUP(1_rank, Require::Ginkgo) \
52 BOOST_AUTO_TEST_CASE(MapThinPlateSplines) \
53 { \
54 PRECICE_TEST(); \
55 ThinPlateSplines fct; \
56 doLocalCode(ThinPlateSplines, fct, Polynomial::SEPARATE, EXECUTOR, SOLVER); \
57 } \
58 PRECICE_TEST_SETUP(1_rank, Require::Ginkgo) \
59 BOOST_AUTO_TEST_CASE(MapMultiquadrics) \
60 { \
61 PRECICE_TEST(); \
62 Multiquadrics fct(1e-3); \
63 doLocalCode(Multiquadrics, fct, Polynomial::SEPARATE, EXECUTOR, SOLVER); \
64 } \
65 PRECICE_TEST_SETUP(1_rank, Require::Ginkgo) \
66 BOOST_AUTO_TEST_CASE(MapInverseMultiquadrics) \
67 { \
68 PRECICE_TEST(); \
69 InverseMultiquadrics fct(1e-3); \
70 doLocalCode(InverseMultiquadrics, fct, Polynomial::SEPARATE, EXECUTOR, SOLVER); \
71 } \
72 PRECICE_TEST_SETUP(1_rank, Require::Ginkgo) \
73 BOOST_AUTO_TEST_CASE(MapVolumeSplines) \
74 { \
75 PRECICE_TEST(); \
76 VolumeSplines fct; \
77 doLocalCode(VolumeSplines, fct, Polynomial::SEPARATE, EXECUTOR, SOLVER); \
78 } \
79 PRECICE_TEST_SETUP(1_rank, Require::Ginkgo) \
80 BOOST_AUTO_TEST_CASE(MapGaussian) \
81 { \
82 PRECICE_TEST(); \
83 Gaussian fct(1.0); \
84 doLocalCode(Gaussian, fct, Polynomial::SEPARATE, EXECUTOR, SOLVER); \
85 } \
86 PRECICE_TEST_SETUP(1_rank, Require::Ginkgo) \
87 BOOST_AUTO_TEST_CASE(MapCompactThinPlateSplinesC2) \
88 { \
89 PRECICE_TEST(); \
90 double supportRadius = 1.2; \
91 CompactThinPlateSplinesC2 fct(supportRadius); \
92 doLocalCode(CompactThinPlateSplinesC2, fct, Polynomial::SEPARATE, EXECUTOR, SOLVER); \
93 } \
94 PRECICE_TEST_SETUP(1_rank, Require::Ginkgo) \
95 BOOST_AUTO_TEST_CASE(MapCompactPolynomialC0) \
96 { \
97 PRECICE_TEST(); \
98 double supportRadius = 1.2; \
99 CompactPolynomialC0 fct(supportRadius); \
100 doLocalCode(CompactPolynomialC0, fct, Polynomial::SEPARATE, EXECUTOR, SOLVER); \
101 } \
102 PRECICE_TEST_SETUP(1_rank, Require::Ginkgo) \
103 BOOST_AUTO_TEST_CASE(MapCompactPolynomialC2) \
104 { \
105 PRECICE_TEST(); \
106 double supportRadius = 1.2; \
107 CompactPolynomialC2 fct(supportRadius); \
108 doLocalCode(CompactPolynomialC2, fct, Polynomial::SEPARATE, EXECUTOR, SOLVER); \
109 } \
110 PRECICE_TEST_SETUP(1_rank, Require::Ginkgo) \
111 BOOST_AUTO_TEST_CASE(MapCompactPolynomialC4) \
112 { \
113 PRECICE_TEST(); \
114 double supportRadius = 1.2; \
115 CompactPolynomialC4 fct(supportRadius); \
116 doLocalCode(CompactPolynomialC4, fct, Polynomial::SEPARATE, EXECUTOR, SOLVER); \
117 } \
118 PRECICE_TEST_SETUP(1_rank, Require::Ginkgo) \
119 BOOST_AUTO_TEST_CASE(MapCompactPolynomialC6) \
120 { \
121 PRECICE_TEST(); \
122 double supportRadius = 1.2; \
123 CompactPolynomialC6 fct(supportRadius); \
124 doLocalCode(CompactPolynomialC6, fct, Polynomial::SEPARATE, EXECUTOR, SOLVER); \
125 } \
126 PRECICE_TEST_SETUP(1_rank, Require::Ginkgo) \
127 BOOST_AUTO_TEST_CASE(MapCompactPolynomialC8) \
128 { \
129 PRECICE_TEST(); \
130 double supportRadius = 1.2; \
131 CompactPolynomialC8 fct(supportRadius); \
132 doLocalCode(CompactPolynomialC8, fct, Polynomial::SEPARATE, EXECUTOR, SOLVER); \
133 }
134
135BOOST_AUTO_TEST_SUITE(Reference)
136TEST_FOR_ALL_RBFS("reference-executor", "gmres-solver");
138
139#ifdef PRECICE_WITH_OPENMP
141TEST_FOR_ALL_RBFS("omp-executor", "gmres-solver");
143#endif
144
145#ifdef PRECICE_WITH_CUDA
147TEST_FOR_ALL_RBFS("cuda-executor", "gmres-solver");
149#endif
150
151#ifdef PRECICE_WITH_CUDA
152BOOST_AUTO_TEST_SUITE(cuSolver)
153TEST_FOR_ALL_RBFS("cuda-executor", "qr-solver");
155#endif
156
157#ifdef PRECICE_WITH_HIP
159TEST_FOR_ALL_RBFS("hip-executor", "gmres-solver");
161#endif
162
163#ifdef PRECICE_WITH_HIP
164BOOST_AUTO_TEST_SUITE(hipSolver)
165TEST_FOR_ALL_RBFS("hip-executor", "qr-solver");
167#endif
168
169#undef TEST_FOR_ALL_RBFS
170#undef doLocalCode
171
172BOOST_AUTO_TEST_SUITE_END() // RadialBasisFunctionMapping
174
175#endif
gko::solver::Gmres<> gmres
#define TEST_FOR_ALL_RBFS(EXECUTOR, SOLVER)
BOOST_AUTO_TEST_SUITE(PreProcess)
BOOST_AUTO_TEST_SUITE_END()
contains data mapping from points to meshes.
provides Mesh, Data and primitives.
contains the testing framework.
Definition helper.hpp:9
Main namespace of the precice library.