36 Eigen::VectorXd inValuesScalar = Eigen::VectorXd::Zero(2);
37 Eigen::VectorXd inValuesVector = Eigen::VectorXd::Zero(4);
38 inValuesScalar << 1.0, 2.0;
39 inValuesVector << 1.0, 2.0, 3.0, 4.0;
48 mapping.setMeshes(inMesh, outMesh);
49 BOOST_TEST(
mapping.hasComputedMapping() ==
false);
53 Eigen::VectorXd outValuesScalar = Eigen::VectorXd::Zero(2);
55 mapping.map(inSample, outValuesScalar);
56 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
57 BOOST_TEST(outValuesScalar(0) == inValuesScalar(0));
58 BOOST_TEST(outValuesScalar(1) == inValuesScalar(1));
59 Eigen::VectorXd outValuesVector = Eigen::VectorXd::Zero(4);
61 mapping.map(inSample, outValuesVector);
62 BOOST_CHECK(
equals(inValuesVector, outValuesVector));
69 mapping.map(inSample, outValuesScalar);
70 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
71 BOOST_TEST(outValuesScalar(0) == inValuesScalar(0));
72 BOOST_TEST(outValuesScalar(1) == inValuesScalar(1));
74 mapping.map(inSample, outValuesVector);
75 BOOST_CHECK(
equals(inValuesVector, outValuesVector));
82 mapping.map(inSample, outValuesScalar);
83 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
84 BOOST_TEST(outValuesScalar(1) == inValuesScalar(0));
85 BOOST_TEST(outValuesScalar(0) == inValuesScalar(1));
87 mapping.map(inSample, outValuesVector);
88 Eigen::Vector4d expected(3.0, 4.0, 1.0, 2.0);
89 BOOST_CHECK(
equals(expected, outValuesVector));
95 mapping.map(inSample, outValuesScalar);
96 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
97 BOOST_TEST(outValuesScalar(1) == inValuesScalar(1));
98 BOOST_TEST(outValuesScalar(0) == inValuesScalar(1));
100 mapping.map(inSample, outValuesVector);
101 expected << 3.0, 4.0, 3.0, 4.0;
102 BOOST_CHECK(
equals(expected, outValuesVector));
115 Eigen::VectorXd inValues = Eigen::VectorXd::Zero(2);
126 mapping.setMeshes(inMesh, outMesh);
127 BOOST_TEST(
mapping.hasComputedMapping() ==
false);
131 Eigen::VectorXd outValues = Eigen::VectorXd::Zero(2);
133 mapping.map(inSample, outValues);
134 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
135 BOOST_TEST(outValues(0) == inValues(0));
136 BOOST_TEST(outValues(1) == inValues(1));
137 outValues = Eigen::VectorXd::Constant(outValues.size(), 0.0);
144 mapping.map(inSample, outValues);
145 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
146 BOOST_TEST(outValues(0) == inValues(0));
147 BOOST_TEST(outValues(1) == inValues(1));
148 outValues = Eigen::VectorXd::Constant(outValues.size(), 0.0);
155 mapping.map(inSample, outValues);
156 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
157 BOOST_TEST(outValues(1) == inValues(0));
158 BOOST_TEST(outValues(0) == inValues(1));
159 outValues = Eigen::VectorXd::Constant(outValues.size(), 0.0);
162 outVertex1.
setCoords(Eigen::Vector2d::Constant(-1.0));
165 mapping.map(inSample, outValues);
166 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
167 BOOST_TEST(outValues(0) == inValues(0) + inValues(1));
168 BOOST_TEST(outValues(1) == 0.0);
188 Eigen::VectorXd inValues = Eigen::VectorXd::Zero(4);
208 mapping.setMeshes(inMesh, outMesh);
209 BOOST_TEST(
mapping.hasComputedMapping() ==
false);
213 Eigen::VectorXd outValues = Eigen::VectorXd::Zero(4);
214 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
216 mapping.map(inSample, outValues);
221 for (
int dim = 0; dim < inputIntegral.size(); ++dim) {
222 BOOST_TEST(inputIntegral(dim) == outputIntegral(dim));
225 double scaleFactor = outValues(0) / inValues(0);
226 BOOST_TEST(scaleFactor != 1.0);
228 BOOST_TEST(inValues(0) * scaleFactor == outValues(0));
229 BOOST_TEST(inValues(1) * scaleFactor == outValues(1));
230 BOOST_TEST(inValues(2) * scaleFactor == outValues(2));
231 BOOST_TEST(inValues(3) * scaleFactor == outValues(3));
264 PtrMesh inMesh = create2DLinSpaceMesh<4>(
"InMesh", dimensions, 0, 1);
267 PtrMesh outMesh = create2DLinSpaceMesh<3>(
"OutMesh", dimensions, 0, 1);
272 mapping.setMeshes(inMesh, outMesh);
273 BOOST_TEST(
mapping.hasComputedMapping() ==
false);
275 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
277 Eigen::VectorXd inValues = Eigen::VectorXd::Zero(4);
279 Eigen::VectorXd outValues = Eigen::VectorXd::Zero(3);
280 mapping.map(inSample, outValues);
282 BOOST_TEST(!outValues.hasNaN());
283 BOOST_TEST(outValues.isZero());
286 BOOST_TEST(!inputIntegral.hasNaN());
287 BOOST_TEST(inputIntegral.isZero());
290 BOOST_TEST(!outputIntegral.hasNaN());
291 BOOST_TEST(outputIntegral.isZero());
301 PtrMesh inMesh = create2DLinSpaceMesh<4>(
"InMesh", dimensions, 0, 1);
304 PtrMesh outMesh = create2DLinSpaceMesh<3>(
"OutMesh", dimensions, 0, 1);
309 mapping.setMeshes(inMesh, outMesh);
310 BOOST_TEST(
mapping.hasComputedMapping() ==
false);
312 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
314 Eigen::Vector4d inValues{1, 1, -1, -1};
316 Eigen::VectorXd outValues = Eigen::VectorXd::Zero(3);
317 mapping.map(inSample, outValues);
319 BOOST_TEST(!outValues.hasNaN());
320 BOOST_TEST((outValues.array() == 0.0).count() == 0);
323 BOOST_TEST(!inputIntegral.hasNaN());
324 BOOST_TEST(inputIntegral(0) == 0.0);
327 BOOST_TEST(!outputIntegral.hasNaN());
328 BOOST_TEST(outputIntegral(0) == 0.0);
338 PtrMesh inMesh = create2DLinSpaceMesh<4>(
"InMesh", dimensions, 0, 1);
341 PtrMesh outMesh = create2DLinSpaceMesh<3>(
"OutMesh", dimensions, 0, 1);
346 mapping.setMeshes(inMesh, outMesh);
347 BOOST_TEST(
mapping.hasComputedMapping() ==
false);
349 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
351 Eigen::VectorXd inValues(8);
352 inValues << 1, 0, 0.5, 0, 1.5, 0, 1, 0;
354 Eigen::VectorXd outValues = Eigen::VectorXd::Zero(6);
355 mapping.map(inSample, outValues);
357 BOOST_TEST(!outValues.hasNaN());
358 BOOST_TEST((outValues.array() == 0.0).count() == 3);
361 BOOST_TEST(!inputIntegral.hasNaN());
362 BOOST_TEST(inputIntegral(0) == 1.0);
363 BOOST_TEST(inputIntegral(1) == 0.0);
366 BOOST_TEST(!outputIntegral.hasNaN());
367 BOOST_TEST(outputIntegral(0) == 1.0);
368 BOOST_TEST(outputIntegral(1) == 0.0);
378 PtrMesh inMesh = create2DLinSpaceMesh<4>(
"InMesh", dimensions, 0, 1);
381 PtrMesh outMesh = create2DLinSpaceMesh<3>(
"OutMesh", dimensions, 0, 1);
386 mapping.setMeshes(inMesh, outMesh);
387 BOOST_TEST(
mapping.hasComputedMapping() ==
false);
389 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
391 Eigen::VectorXd inValues(8);
392 inValues << 2, 1, 3, 1, 1, -1, 2, -1;
394 Eigen::VectorXd outValues = Eigen::VectorXd::Zero(6);
395 mapping.map(inSample, outValues);
397 BOOST_TEST(!outValues.hasNaN());
398 BOOST_TEST((outValues.array() == 0.0).count() == 0);
401 BOOST_TEST(!inputIntegral.hasNaN());
402 BOOST_TEST(inputIntegral(0) == 2.0);
403 BOOST_TEST(inputIntegral(1) == 0.0);
406 BOOST_TEST(!outputIntegral.hasNaN());
407 BOOST_TEST(outputIntegral(0) == 2.0);
408 BOOST_TEST(outputIntegral(1) == 0.0);
431 Eigen::VectorXd inValues(5);
453 mapping.setMeshes(inMesh, outMesh);
454 BOOST_TEST(
mapping.hasComputedMapping() ==
false);
456 Eigen::VectorXd outValues(5);
459 mapping.map(inSample, outValues);
461 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
466 Eigen::VectorXd expectedIntegral(1);
467 expectedIntegral << 3.0;
469 BOOST_TEST(inputIntegral(0) == expectedIntegral(0));
471 for (
int dim = 0; dim < inputIntegral.size(); ++dim) {
472 BOOST_TEST(inputIntegral(dim) == outputIntegral(dim));
475 double scaleFactor = outValues(0) / inValues(0);
476 BOOST_TEST(scaleFactor != 1.0);
478 BOOST_TEST(
math::equals(inValues(0) * scaleFactor, outValues(0)));
479 BOOST_TEST(inValues(1) * scaleFactor == outValues(1));
480 BOOST_TEST(inValues(2) * scaleFactor == outValues(2));
481 BOOST_TEST(inValues(3) * scaleFactor == outValues(3));
503 Eigen::VectorXd inValues(5);
524 mapping.setMeshes(inMesh, outMesh);
525 BOOST_TEST(
mapping.hasComputedMapping() ==
false);
527 Eigen::VectorXd outValues(5);
530 mapping.map(inSample, outValues);
532 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
537 Eigen::VectorXd expectedIntegral(1);
538 expectedIntegral << 6.5 * 1. / 12;
540 BOOST_TEST(inputIntegral(0) == expectedIntegral(0));
542 for (
int dim = 0; dim < inputIntegral.size(); ++dim) {
543 BOOST_TEST(inputIntegral(dim) == outputIntegral(dim));
546 double scaleFactor = outValues(0) / inValues(0);
547 BOOST_TEST(scaleFactor != 1.0);
549 BOOST_TEST(
math::equals(inValues(0) * scaleFactor, outValues(0)));
550 BOOST_TEST(inValues(1) * scaleFactor == outValues(1));
551 BOOST_TEST(inValues(2) * scaleFactor == outValues(2));
552 BOOST_TEST(inValues(3) * scaleFactor == outValues(3));
boost::test_tools::predicate_result equals(const std::vector< float > &VectorA, const std::vector< float > &VectorB, float tolerance)
equals to be used in tests. Compares two std::vectors using a given tolerance. Prints both operands o...
Tetrahedron & createTetrahedron(Vertex &vertexOne, Vertex &vertexTwo, Vertex &vertexThree, Vertex &vertexFour)
Creates and initializes a Tetrahedron object.
constexpr bool equals(const Eigen::MatrixBase< DerivedA > &A, const Eigen::MatrixBase< DerivedB > &B, double tolerance=NUMERICAL_ZERO_DIFFERENCE)
Compares two Eigen::MatrixBase for equality up to tolerance.
Eigen::VectorXd integrateSurface(const PtrMesh &mesh, const Eigen::VectorXd &input)
Given the data and the mesh, this function returns the surface integral. Assumes no overlap exists fo...
Eigen::VectorXd integrateVolume(const PtrMesh &mesh, const Eigen::VectorXd &input)
Given the data and the mesh, this function returns the volume integral. Assumes no overlap exists for...
boost::test_tools::predicate_result equals(const std::vector< float > &VectorA, const std::vector< float > &VectorB, float tolerance)
equals to be used in tests. Compares two std::vectors using a given tolerance. Prints both operands o...