3#define DOCTEST_CONFIG_IMPLEMENT
5#include "doctest_utils.h"
11DOCTEST_TEST_CASE(
"BLConductanceModel check blc values") {
18 std::vector<uint> UUID_1;
19 UUID_1.push_back(context.
addPatch());
20 UUID_1.push_back(context.
addPatch());
21 UUID_1.push_back(context.
addPatch());
22 UUID_1.push_back(context.
addPatch());
30 blc.disableMessages();
32 DOCTEST_CHECK_NOTHROW(blc.setBoundaryLayerModel(UUID_1.at(0),
"Pohlhausen"));
33 DOCTEST_CHECK_NOTHROW(blc.setBoundaryLayerModel(UUID_1.at(1),
"InclinedPlate"));
34 DOCTEST_CHECK_NOTHROW(blc.setBoundaryLayerModel(UUID_1.at(2),
"Sphere"));
35 DOCTEST_CHECK_NOTHROW(blc.setBoundaryLayerModel(UUID_1.at(3),
"Ground"));
38 DOCTEST_CHECK_NOTHROW(blc.setBoundaryLayerModel(UUID_1.at(3),
"InvalidModel"));
41 DOCTEST_CHECK_NOTHROW(blc.run());
43 std::vector<float> gH(UUID_1.size());
50 DOCTEST_CHECK_NOTHROW(context.
getPrimitiveData(UUID_1.at(0),
"boundarylayer_conductance", gH.at(0)));
51 DOCTEST_CHECK_NOTHROW(context.
getPrimitiveData(UUID_1.at(1),
"boundarylayer_conductance", gH.at(1)));
52 DOCTEST_CHECK_NOTHROW(context.
getPrimitiveData(UUID_1.at(2),
"boundarylayer_conductance", gH.at(2)));
53 DOCTEST_CHECK_NOTHROW(context.
getPrimitiveData(UUID_1.at(3),
"boundarylayer_conductance", gH.at(3)));
55 DOCTEST_CHECK(gH.at(0) == doctest::Approx(0.20914112f).epsilon(err_tol));
56 DOCTEST_CHECK(gH.at(1) == doctest::Approx(0.135347f).epsilon(err_tol));
57 DOCTEST_CHECK(gH.at(2) == doctest::Approx(0.087149f).epsilon(err_tol));
58 DOCTEST_CHECK(gH.at(3) == doctest::Approx(0.465472f).epsilon(err_tol));
61DOCTEST_TEST_CASE(
"Default values handling") {
66 blc.disableMessages();
67 blc.setBoundaryLayerModel(UUID_default,
"Pohlhausen");
70 float default_gH = -1.f;
72 context.
getPrimitiveData(UUID_default,
"boundarylayer_conductance", default_gH);
73 DOCTEST_CHECK(default_gH > 0);
76DOCTEST_TEST_CASE(
"Single-sided primitive handling") {
89 blc.disableMessages();
90 blc.setBoundaryLayerModel(UUID,
"Pohlhausen");
95 DOCTEST_CHECK_NOTHROW(context.
getPrimitiveData(UUID,
"boundarylayer_conductance", gH));
96 DOCTEST_CHECK(gH == doctest::Approx(0.104571f).epsilon(err_tol));
99DOCTEST_TEST_CASE(
"Message flag tests") {
103 DOCTEST_CHECK_NOTHROW(blc.enableMessages());
105 DOCTEST_CHECK_NOTHROW(blc.disableMessages());
108DOCTEST_TEST_CASE(
"setBoundaryLayerModel for all primitives") {
114 blc.disableMessages();
116 DOCTEST_CHECK_NOTHROW(blc.setBoundaryLayerModel(
"Pohlhausen"));
125 DOCTEST_CHECK_NOTHROW(context.
getPrimitiveData(u1,
"boundarylayer_conductance", gH1));
126 DOCTEST_CHECK_NOTHROW(context.
getPrimitiveData(u2,
"boundarylayer_conductance", gH2));
127 DOCTEST_CHECK(gH1 == doctest::Approx(0.20914112f).epsilon(err_tol));
128 DOCTEST_CHECK(gH2 == doctest::Approx(0.20914112f).epsilon(err_tol));
130 DOCTEST_CHECK_NOTHROW(blc.setBoundaryLayerModel(
"InclinedPlate"));
132 DOCTEST_CHECK_NOTHROW(context.
getPrimitiveData(u1,
"boundarylayer_conductance", gH1));
133 DOCTEST_CHECK_NOTHROW(context.
getPrimitiveData(u2,
"boundarylayer_conductance", gH2));
134 DOCTEST_CHECK(gH1 == doctest::Approx(0.135347f).epsilon(err_tol));
135 DOCTEST_CHECK(gH2 == doctest::Approx(0.135347f).epsilon(err_tol));
138 blc.enableMessages();
139 DOCTEST_CHECK_NOTHROW(blc.setBoundaryLayerModel(
"InvalidModel"));
143DOCTEST_TEST_CASE(
"Subset run") {
149 std::vector<uint> UUIDs;
150 UUIDs.push_back(context.
addPatch());
151 UUIDs.push_back(context.
addPatch());
152 UUIDs.push_back(context.
addPatch());
159 blc.disableMessages();
161 blc.setBoundaryLayerModel(UUIDs[0],
"Pohlhausen");
162 blc.setBoundaryLayerModel(UUIDs[1],
"InclinedPlate");
163 blc.setBoundaryLayerModel(UUIDs[2],
"Sphere");
165 std::vector<uint> subsetUUIDs = {UUIDs[0], UUIDs[2]};
166 DOCTEST_CHECK_NOTHROW(blc.run(subsetUUIDs));
173 DOCTEST_CHECK_NOTHROW(context.
getPrimitiveData(UUIDs[0],
"boundarylayer_conductance", gH0));
174 DOCTEST_CHECK_NOTHROW(context.
getPrimitiveData(UUIDs[2],
"boundarylayer_conductance", gH2));
176 DOCTEST_CHECK(gH0 == doctest::Approx(0.20914112f).epsilon(err_tol));
177 DOCTEST_CHECK(gH2 == doctest::Approx(0.087149f).epsilon(err_tol));
180DOCTEST_TEST_CASE(
"Missing parameters and zero inputs") {
183 blc.disableMessages();
191 DOCTEST_CHECK_NOTHROW(blc.run());
193 DOCTEST_CHECK_NOTHROW(context.
getPrimitiveData(UUID,
"boundarylayer_conductance", gH));
194 DOCTEST_CHECK(gH > 0);
198 DOCTEST_CHECK_NOTHROW(blc.run());
199 DOCTEST_CHECK_NOTHROW(context.
getPrimitiveData(UUID,
"boundarylayer_conductance", gH));
200 DOCTEST_CHECK(gH != 0.f);
206 blc.setBoundaryLayerModel(UUID,
"Pohlhausen");
207 DOCTEST_CHECK_NOTHROW(blc.run());
208 DOCTEST_CHECK_NOTHROW(context.
getPrimitiveData(UUID,
"boundarylayer_conductance", gH));
209 DOCTEST_CHECK(gH == 0.f);
211 blc.setBoundaryLayerModel(UUID,
"InclinedPlate");
212 DOCTEST_CHECK_NOTHROW(blc.run());
213 DOCTEST_CHECK_NOTHROW(context.
getPrimitiveData(UUID,
"boundarylayer_conductance", gH));
214 DOCTEST_CHECK(gH > 0);
216 blc.setBoundaryLayerModel(UUID,
"Sphere");
217 DOCTEST_CHECK_NOTHROW(blc.run());
218 DOCTEST_CHECK_NOTHROW(context.
getPrimitiveData(UUID,
"boundarylayer_conductance", gH));
219 DOCTEST_CHECK(gH > 0.f);
221 blc.setBoundaryLayerModel(UUID,
"Ground");
222 DOCTEST_CHECK_NOTHROW(blc.run());
223 DOCTEST_CHECK_NOTHROW(context.
getPrimitiveData(UUID,
"boundarylayer_conductance", gH));
224 DOCTEST_CHECK(gH > 0.f);
228 return helios::runDoctestWithValidation(argc, argv);