57 Eigen::VectorXd inValues(3);
58 inValues = Eigen::VectorXd::Constant(inValues.size(), value);
59 Eigen::VectorXd values(2);
60 values = Eigen::VectorXd::Constant(values.size(), 0.0);
62 mapping.setMeshes(inMesh, outMesh);
66 BOOST_TEST_CONTEXT(*inMesh)
68 BOOST_TEST(values(0) == value * 1.5);
69 BOOST_TEST(values(1) == value * 1.5);
81 Eigen::VectorXd inValues(3);
82 inValues = Eigen::VectorXd::Constant(inValues.size(), value);
83 Eigen::VectorXd values(2);
84 values = Eigen::VectorXd::Constant(values.size(), 0.0);
86 mapping.setMeshes(inMesh, outMesh);
90 BOOST_TEST_CONTEXT(*inMesh)
92 BOOST_TEST(values(0) == value * 2.0);
93 BOOST_TEST(values(1) == value * 1.0);
98 values = Eigen::VectorXd::Constant(values.size(), 0.0);
101 BOOST_TEST_CONTEXT(*inMesh)
103 BOOST_TEST(values(0) == value * 2.0);
104 BOOST_TEST(values(1) == value * 1.0);
113 using namespace mesh;
121 double valueVertex1 = 1.0;
122 double valueVertex2 = 2.0;
123 Eigen::VectorXd inValues(2);
124 inValues(0) = valueVertex1;
125 inValues(1) = valueVertex2;
133 mapping.setMeshes(inMesh, outMesh);
134 BOOST_TEST(
mapping.hasComputedMapping() ==
false);
142 Eigen::VectorXd outValues = Eigen::VectorXd::Zero(3);
144 mapping.map(inSample, outValues);
147 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
148 BOOST_TEST(outValues(0) == (valueVertex1 + valueVertex2) * 0.5);
149 BOOST_TEST(outValues(1) == valueVertex1);
150 BOOST_TEST(outValues(2) == valueVertex2);
154 outValues = Eigen::VectorXd::Constant(outValues.size(), 0.0);
156 mapping.map(inSample, outValues);
157 BOOST_TEST(outValues(0) == (valueVertex1 + valueVertex2) * 0.5);
158 BOOST_TEST(outValues(1) == valueVertex1);
159 BOOST_TEST(outValues(2) == valueVertex2);
168 mapping.setMeshes(inMesh, outMesh);
169 BOOST_TEST(
mapping.hasComputedMapping() ==
false);
176 Eigen::VectorXd outValues = Eigen::VectorXd::Zero(3);
177 outValues = Eigen::VectorXd::Constant(outValues.size(), 0.0);
181 mapping.map(inSample, outValues);
182 BOOST_TEST(outValues(0) == valueVertex1);
183 BOOST_TEST(outValues(1) == valueVertex2);
184 BOOST_TEST(outValues(2) == (valueVertex1 + valueVertex2) * 0.5);
188 outValues = Eigen::VectorXd::Constant(outValues.size(), 0.0);
190 mapping.map(inSample, outValues);
191 BOOST_TEST(outValues(0) == valueVertex1);
192 BOOST_TEST(outValues(1) == valueVertex2);
193 BOOST_TEST(outValues(2) == (valueVertex1 + valueVertex2) * 0.5);
201 using namespace mesh;
209 double valueVertex1 = 1.0;
210 double valueVertex2 = 2.0;
211 Eigen::VectorXd inValues(2);
212 inValues(0) = valueVertex1;
213 inValues(1) = valueVertex2;
218 Eigen::VectorXd outValues(3);
221 mapping.setMeshes(inMesh, outMesh);
222 BOOST_TEST(
mapping.hasComputedMapping() ==
false);
232 outValues = Eigen::VectorXd::Constant(outValues.size(), 0.0);
238 mapping.map(inSample, outValues);
241 double scaleFactor = outValues(1) / inValues(0);
242 BOOST_TEST(scaleFactor != 1.0);
245 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
246 for (
int dim = 0; dim < inputIntegral.size(); ++dim) {
247 BOOST_TEST(inputIntegral(dim) == outputIntegral(dim));
249 BOOST_TEST(outValues(0) == (inValues(0) + inValues(1)) * 0.5 * scaleFactor);
250 BOOST_TEST(outValues(1) == inValues(0) * scaleFactor);
251 BOOST_TEST(outValues(2) == inValues(1) * scaleFactor);
258 using namespace mesh;
266 double valueVertex1 = 1.0;
267 double valueVertex2 = 2.0;
268 Eigen::VectorXd inValues(2);
269 inValues(0) = valueVertex1;
270 inValues(1) = valueVertex2;
276 Eigen::VectorXd outValues(3);
279 mapping.setMeshes(inMesh, outMesh);
280 BOOST_TEST(
mapping.hasComputedMapping() ==
false);
289 outValues = Eigen::VectorXd::Constant(outValues.size(), 0.0);
293 mapping.map(inSample, outValues);
296 double scaleFactor = outValues(0) / inValues(0);
297 BOOST_TEST(scaleFactor != 1.0);
300 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
301 for (
int dim = 0; dim < inputIntegral.size(); ++dim) {
302 BOOST_TEST(inputIntegral(dim) == outputIntegral(dim));
304 BOOST_TEST(outValues(0) == inValues(0) * scaleFactor);
305 BOOST_TEST(outValues(1) == inValues(1) * scaleFactor);
306 BOOST_TEST(outValues(2) == (inValues(0) + inValues(1)) * 0.5 * scaleFactor);
313 using namespace mesh;
325 double valueVertex1 = 1.0;
326 double valueVertex2 = 2.0;
327 double valueVertex3 = 3.0;
328 Eigen::VectorXd values(3);
329 values(0) = valueVertex1;
330 values(1) = valueVertex2;
331 values(2) = valueVertex3;
338 mapping.setMeshes(inMesh, outMesh);
339 BOOST_TEST(
mapping.hasComputedMapping() ==
false);
345 Eigen::VectorXd outValues = Eigen::VectorXd::Zero(3);
349 mapping.map(inSample, outValues);
352 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
353 BOOST_TEST_CONTEXT(*inMesh)
355 BOOST_TEST(outValues(0) == (valueVertex1 + valueVertex2) * 0.5);
356 BOOST_TEST(outValues(1) == (valueVertex1 + valueVertex3) * 0.5);
357 BOOST_TEST(outValues(2) == (valueVertex2 + valueVertex3) * 0.5);
365 using namespace mesh;
374 double valueVertex1 = 1.0;
375 double valueVertex2 = 2.0;
376 double valueVertex3 = 3.0;
377 Eigen::VectorXd values(3);
378 values(0) = valueVertex1;
379 values(1) = valueVertex2;
380 values(2) = valueVertex3;
387 mapping.setMeshes(inMesh, outMesh);
388 BOOST_TEST(
mapping.hasComputedMapping() ==
false);
395 Eigen::VectorXd outValues = Eigen::VectorXd::Zero(3);
398 mapping.map(inSample, outValues);
401 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
402 BOOST_TEST_CONTEXT(*inMesh)
404 BOOST_TEST(outValues(0) == valueVertex1);
405 BOOST_TEST(outValues(1) == valueVertex2);
406 BOOST_TEST(outValues(2) == valueVertex3);
415 constexpr int dimensions = 3;
432 Eigen::VectorXd inValues = Eigen::VectorXd::Zero(4);
433 inValues << 1.0, 1.0, 1.0, 1.0;
439 Eigen::VectorXd outValues = Eigen::VectorXd::Zero(2);
440 outValues << 0.0, 0.0;
444 mapping.setMeshes(inMesh, outMesh);
445 BOOST_TEST(
mapping.hasComputedMapping() ==
false);
448 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
449 BOOST_TEST_INFO(
"In Data:" << inValues);
450 BOOST_TEST_INFO(
"Out Data before Mapping:" << outValues);
452 mapping.map(inSample, outValues);
453 BOOST_TEST_INFO(
"Out Data after Mapping:" << outValues);
454 BOOST_TEST(outValues == outValues.cwiseAbs());
462 constexpr int dimensions = 3;
466 const double z1 = 0.1;
467 const double z2 = -0.1;
468 auto &v00 = inMesh->
createVertex(Eigen::Vector3d(0, 0, 0));
469 auto &v01 = inMesh->
createVertex(Eigen::Vector3d(0, 1, 0));
470 auto &v10 = inMesh->
createVertex(Eigen::Vector3d(1, 0, z1));
471 auto &v11 = inMesh->
createVertex(Eigen::Vector3d(1, 1, z1));
472 auto &v20 = inMesh->
createVertex(Eigen::Vector3d(2, 0, z2));
473 auto &v21 = inMesh->
createVertex(Eigen::Vector3d(2, 1, z2));
489 Eigen::VectorXd inValues = Eigen::VectorXd::Constant(6, 1.0);
494 Eigen::VectorXd outValues = Eigen::VectorXd::Constant(1, 0.0);
498 mapping.setMeshes(inMesh, outMesh);
499 BOOST_TEST(
mapping.hasComputedMapping() ==
false);
502 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
504 BOOST_TEST_INFO(
"In Data:" << inValues);
505 BOOST_TEST_INFO(
"Out Data before Mapping:" << outValues);
507 mapping.map(inSample, outValues);
508 BOOST_TEST_INFO(
"Out Data after Mapping:" << outValues);
509 BOOST_TEST(outValues(0) == 1.0);
517 constexpr int dimensions = 3;
520 const double z1 = 0.1;
521 const double z2 = -0.1;
522 auto &v00 = inMesh->
createVertex(Eigen::Vector3d(0, 0, 0));
523 auto &v01 = inMesh->
createVertex(Eigen::Vector3d(0, 1, 0));
524 auto &v10 = inMesh->
createVertex(Eigen::Vector3d(1, 0, z1));
525 auto &v11 = inMesh->
createVertex(Eigen::Vector3d(1, 1, z1));
526 auto &v20 = inMesh->
createVertex(Eigen::Vector3d(2, 0, z2));
527 auto &v21 = inMesh->
createVertex(Eigen::Vector3d(2, 1, z2));
543 Eigen::VectorXd inValues = Eigen::VectorXd::Constant(6, 1.0);
546 auto &outV1 = outMesh->
createVertex(Eigen::Vector3d{0.7, 0.5, 0.0});
547 auto &outV2 = outMesh->
createVertex(Eigen::Vector3d{0.5, 0.0, 0.05});
548 auto &outV3 = outMesh->
createVertex(Eigen::Vector3d{0.5, 0.0, 0.0});
549 auto &outE1 = outMesh->
createEdge(outV1, outV2);
550 auto &outE2 = outMesh->
createEdge(outV2, outV3);
551 auto &outE3 = outMesh->
createEdge(outV1, outV3);
553 Eigen::VectorXd outValues = Eigen::VectorXd::Constant(3, 0.0);
557 mapping.setMeshes(inMesh, outMesh);
558 BOOST_TEST(
mapping.hasComputedMapping() ==
false);
561 BOOST_TEST(
mapping.hasComputedMapping() ==
true);
564 mapping.map(inSample, outValues);
569 for (
int dim = 0; dim < inputIntegral.size(); ++dim) {
570 BOOST_TEST(inputIntegral(dim) == outputIntegral(dim));
603 constexpr int dimensions = 3;
607 auto &vc0 = inMesh->
createVertex(Eigen::Vector3d(3, 0, 0));
608 auto &vc1 = inMesh->
createVertex(Eigen::Vector3d(3, 2, 0));
609 auto &vc2 = inMesh->
createVertex(Eigen::Vector3d(4, 1, 0));
610 makeTriangle(inMesh, vc0, vc1, vc2);
613 auto &vf0 = inMesh->
createVertex(Eigen::Vector3d(0, 0, -1));
614 auto &vf1 = inMesh->
createVertex(Eigen::Vector3d(0, 2, -1));
615 auto &vf2 = inMesh->
createVertex(Eigen::Vector3d(0, 1, 1));
616 makeTriangle(inMesh, vf0, vf1, vf2);
618 Eigen::VectorXd inValues(5);
619 inValues << 0, 0, 0, 1, 1;
623 Eigen::VectorXd outValues = Eigen::VectorXd::Constant(1, 0.0);
628 BOOST_TEST(values(0) == 0.0);
639 auto &vf0 = inMesh->
createVertex(Eigen::Vector3d(0, 0, -1));
640 auto &vf1 = inMesh->
createVertex(Eigen::Vector3d(0, 1, 1));
641 auto &vf2 = inMesh->
createVertex(Eigen::Vector3d(0, 2, -1));
642 makeTriangle(inMesh, vf0, vf1, vf2);
645 auto &vc0 = inMesh->
createVertex(Eigen::Vector3d(3, 0, 0));
646 auto &vc1 = inMesh->
createVertex(Eigen::Vector3d(3, 2, 0));
647 auto &vc2 = inMesh->
createVertex(Eigen::Vector3d(4, 1, 0));
648 makeTriangle(inMesh, vc0, vc1, vc2);
650 Eigen::VectorXd inValues(6);
651 inValues << 1, 1, 1, 0, 0, 0;
655 Eigen::VectorXd outValues = Eigen::VectorXd::Constant(1, 0.0);
659 BOOST_TEST(values(0) == 1.0);
667 constexpr int dimensions = 3;
671 auto &vc0 = inMesh->
createVertex(Eigen::Vector3d(0, 0, 0));
672 auto &vc1 = inMesh->
createVertex(Eigen::Vector3d(0, 2, 0));
676 auto &vf0 = inMesh->
createVertex(Eigen::Vector3d(3, 0, 0));
677 auto &vf1 = inMesh->
createVertex(Eigen::Vector3d(3, 2, 2));
678 auto &vf2 = inMesh->
createVertex(Eigen::Vector3d(3, 1, 0));
679 makeTriangle(inMesh, vf0, vf1, vf2);
681 Eigen::VectorXd inValues(5);
682 inValues << 0, 1, 2, 2, 2;
686 Eigen::VectorXd outValues = Eigen::VectorXd::Constant(1, 0.0);
692 BOOST_TEST(values(0) == 0.5);
700 constexpr int dimensions = 3;
705 auto &vc0 = inMesh->
createVertex(Eigen::Vector3d(0, 0, 0));
706 auto &vc1 = inMesh->
createVertex(Eigen::Vector3d(0, 2, 2));
707 auto &vc2 = inMesh->
createVertex(Eigen::Vector3d(0, 1, 0));
708 makeTriangle(inMesh, vc0, vc1, vc2);
711 auto &vf0 = inMesh->
createVertex(Eigen::Vector3d(3, 0, 0));
712 auto &vf1 = inMesh->
createVertex(Eigen::Vector3d(3, 2, 2));
713 auto &vf2 = inMesh->
createVertex(Eigen::Vector3d(3, 1, 0));
714 makeTriangle(inMesh, vf0, vf1, vf2);
716 Eigen::VectorXd inValues(6);
717 inValues << 1, 1, 1, 0, 0, 0;
721 Eigen::VectorXd outValues = Eigen::VectorXd::Constant(1, 0.0);
725 BOOST_TEST(values(0) == 1.0);
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...