46 using Eigen::VectorXd;
51 if (context.
size > 1) {
53 mesh::Vertex &v1 = mesh->createVertex(Eigen::Vector2d(0.0, 0.0));
54 mesh::Vertex &v2 = mesh->createVertex(Eigen::Vector2d(0.0, 1.0));
56 mesh->createEdge(v1, v2);
59 mesh::Vertex &v2 = mesh->createVertex(Eigen::Vector2d(0.0, 1.0));
60 mesh::Vertex &v3 = mesh->createVertex(Eigen::Vector2d(0.0, 2.0));
62 mesh->createEdge(v2, v3);
66 mesh::Vertex &v1 = mesh->createVertex(Eigen::Vector2d(0.0, 0.0));
67 mesh::Vertex &v2 = mesh->createVertex(Eigen::Vector2d(0.0, 1.0));
68 mesh::Vertex &v3 = mesh->createVertex(Eigen::Vector2d(0.0, 2.0));
70 mesh->createEdge(v1, v2);
71 mesh->createEdge(v2, v3);
75 using precice::testing::operator
""_dataID;
76 PtrData doubleData = mesh->createData(
"DoubleData", 1, 0_dataID);
77 PtrData vectorData = mesh->createData(
"VectorData", 2, 1_dataID);
79 if (context.
size > 1) {
81 doubleData->setSampleAtTime(0,
time::Sample(doubleData->getDimensions(), Eigen::VectorXd{{1.0, 2.0}}));
82 vectorData->setSampleAtTime(0,
time::Sample(vectorData->getDimensions(), Eigen::VectorXd{{1.0, 2.0, 3.0, 4.0}}));
84 doubleData->setSampleAtTime(0,
time::Sample(doubleData->getDimensions(), Eigen::VectorXd{{2.0, 3.0}}));
85 vectorData->setSampleAtTime(0,
time::Sample(vectorData->getDimensions(), Eigen::VectorXd{{3.0, 4.0, 5.0, 6.0}}));
88 doubleData->setSampleAtTime(0,
time::Sample(doubleData->getDimensions(), Eigen::VectorXd{{1., 2., 3.}}));
89 vectorData->setSampleAtTime(0,
time::Sample(vectorData->getDimensions(), Eigen::VectorXd{{1., 2., 3., 4., 5., 6.}}));
92 std::string filename0(
"precice-WatchPointTest-timeseries-0.log");
94 bool isWatchpointClosest =
false;
98 Eigen::Vector2d pointToWatch0(watchPosition[0], watchPosition[1]);
102 watchpoint0.initialize();
103 isWatchpointClosest = watchpoint0.isClosest();
105 watchpoint0.exportPointData(0.0);
108 if (context.size > 1) {
109 if (context.isPrimary()) {
110 doubleData->setSampleAtTime(1,
time::Sample(doubleData->getDimensions(), Eigen::VectorXd{{2., 3.}}));
111 vectorData->setSampleAtTime(1,
time::Sample(vectorData->getDimensions(), Eigen::VectorXd{{2., 3., 4., 5.}}));
113 doubleData->setSampleAtTime(1,
time::Sample(doubleData->getDimensions(), Eigen::VectorXd{{3., 4.}}));
114 vectorData->setSampleAtTime(1,
time::Sample(vectorData->getDimensions(), Eigen::VectorXd{{4., 5., 6., 7.}}));
117 doubleData->setSampleAtTime(1,
time::Sample(doubleData->getDimensions(), Eigen::VectorXd{{2., 3., 4.}}));
118 vectorData->setSampleAtTime(1,
time::Sample(vectorData->getDimensions(), Eigen::VectorXd{{2., 3., 4., 5., 6., 7.}}));
122 watchpoint0.exportPointData(1.0);
124 doubleData->moveToNextWindow();
125 vectorData->moveToNextWindow();
128 watchpoint0.exportPointData(2.0);
132 if (isWatchpointClosest) {
133 BOOST_TEST_CONTEXT(
"Validating watchpoint0")
135 auto result = readDoublesFromTXTFile(filename0, 6);
136 BOOST_TEST(result.size() == expected.size());
137 for (
size_t i = 0; i < result.size(); ++i) {
138 BOOST_TEST_CONTEXT(
"entry index: " << i)
141 BOOST_TEST(equals(result.at(i), expected.at(i)));
258 using namespace mesh;
259 using Eigen::VectorXd;
264 mesh::Vertex &v1 = mesh->createVertex(Eigen::Vector2d(0.0, 0.0));
265 mesh::Vertex &v2 = mesh->createVertex(Eigen::Vector2d(0.0, 1.0));
266 mesh::Vertex &v3 = mesh->createVertex(Eigen::Vector2d(1.0, 2.0));
267 mesh->createEdge(v1, v2);
269 PtrData doubleData = mesh->createData(
"DoubleData", 1, 0_dataID);
270 PtrData vectorData = mesh->createData(
"VectorData", 2, 1_dataID);
274 doubleData->setSampleAtTime(0,
time::Sample(doubleData->getDimensions(), Eigen::VectorXd{{1., 1., 2.}}));
275 vectorData->setSampleAtTime(0,
time::Sample(vectorData->getDimensions(), Eigen::VectorXd{{1., 1., 1., 1., 2., 2.}}));
277 std::string filename0(
"precice-WatchPointTest-reinit-0.log");
278 std::string filename1(
"precice-WatchPointTest-reinit-1.log");
283 Eigen::Vector2d pointToWatch0(0.1, 0.5);
285 Eigen::Vector2d pointToWatch1(1.1, 0.5);
289 watchpoint0.initialize();
290 watchpoint1.initialize();
293 watchpoint0.exportPointData(0.0);
294 watchpoint1.exportPointData(0.0);
297 mesh::Vertex &v4 = mesh->createVertex(Eigen::Vector2d(1.0, 0.0));
298 mesh->createEdge(v3, v4);
299 mesh->index().clear();
300 doubleData->setSampleAtTime(0,
time::Sample(doubleData->getDimensions(), Eigen::VectorXd{{1., 1., 2., 2.}}));
301 vectorData->setSampleAtTime(0,
time::Sample(vectorData->getDimensions(), Eigen::VectorXd{{1., 1., 1., 1., 2., 2., 2., 2.}}));
304 watchpoint0.initialize();
305 watchpoint1.initialize();
308 watchpoint0.exportPointData(1.0);
309 watchpoint1.exportPointData(1.0);
313 BOOST_TEST_CONTEXT(
"Validating watchpoint0")
315 auto result = readDoublesFromTXTFile(filename0, 6);
317 0.0, 0.0, 0.5, 1.0, 1.0, 1.0,
318 1.0, 0.0, 0.5, 1.0, 1.0, 1.0};
319 BOOST_TEST(result.size() == expected.size());
320 for (
size_t i = 0; i < result.size(); ++i) {
321 BOOST_TEST_CONTEXT(
"entry index: " << i)
324 BOOST_TEST(equals(result.at(i), expected.at(i)));
329 BOOST_TEST_CONTEXT(
"Validating watchpoint1")
331 auto result = readDoublesFromTXTFile(filename1, 6);
333 0.0, 0.0, 0.5, 1.0, 1.0, 1.0,
334 1.0, 1.0, 0.5, 2.0, 2.0, 2.0};
335 BOOST_TEST(result.size() == expected.size());
336 for (
size_t i = 0; i < result.size(); ++i) {
337 BOOST_TEST_CONTEXT(
"entry index: " << i)
340 BOOST_TEST(equals(result.at(i), expected.at(i)));
350 using namespace mesh;
351 using Eigen::VectorXd;
356 mesh::Vertex &v1 = mesh->createVertex(Eigen::Vector2d(0.0, 0.0));
357 mesh::Vertex &v2 = mesh->createVertex(Eigen::Vector2d(1.0, 0.0));
358 mesh::Vertex &v3 = mesh->createVertex(Eigen::Vector2d(0.0, 1.0));
359 mesh->createEdge(v1, v2);
360 mesh->createEdge(v2, v3);
361 mesh->createEdge(v3, v1);
362 mesh->createTriangle(v1, v2, v3);
364 PtrData doubleData = mesh->createData(
"DoubleData", 1, 0_dataID);
365 PtrData vectorData = mesh->createData(
"VectorData", 2, 1_dataID);
368 doubleData->setSampleAtTime(0,
time::Sample(doubleData->getDimensions(), Eigen::VectorXd{{1., 1., 2., 2.}}));
369 vectorData->setSampleAtTime(0,
time::Sample(vectorData->getDimensions(), Eigen::VectorXd{{1., 1., 1., 1., 2., 2., 2., 2.}}));
371 std::string filename0(
"precice-WatchPointTest-volumetric2d-0.log");
372 std::string filename1(
"precice-WatchPointTest-volumetric2d-1.log");
377 Eigen::Vector2d pointToWatch0(0.1, 0.5);
379 Eigen::Vector2d pointToWatch1(0.25, 0.25);
383 watchpoint0.initialize();
384 watchpoint1.initialize();
387 watchpoint0.exportPointData(0.0);
388 watchpoint1.exportPointData(0.0);
392 BOOST_TEST_CONTEXT(
"Validating watchpoint0")
394 auto result = readDoublesFromTXTFile(filename0, 6);
396 0.0, 0.1, 0.5, 1.5, 1.5, 1.5};
397 BOOST_TEST(result.size() == expected.size());
398 for (
size_t i = 0; i < result.size(); ++i) {
399 BOOST_TEST_CONTEXT(
"entry index: " << i)
402 BOOST_TEST(equals(result.at(i), expected.at(i)));
407 BOOST_TEST_CONTEXT(
"Validating watchpoint1")
409 auto result = readDoublesFromTXTFile(filename1, 6);
411 0.0, 0.25, 0.25, 1.25, 1.25, 1.25};
412 BOOST_TEST(result.size() == expected.size());
413 for (
size_t i = 0; i < result.size(); ++i) {
414 BOOST_TEST_CONTEXT(
"entry index: " << i)
417 BOOST_TEST(equals(result.at(i), expected.at(i)));
427 using namespace mesh;
428 using Eigen::VectorXd;
433 mesh::Vertex &v1 = mesh->createVertex(Eigen::Vector3d(0.0, 0.0, 0.0));
434 mesh::Vertex &v2 = mesh->createVertex(Eigen::Vector3d(1.0, 0.0, 0.0));
435 mesh::Vertex &v3 = mesh->createVertex(Eigen::Vector3d(0.0, 1.0, 0.0));
436 mesh::Vertex &v4 = mesh->createVertex(Eigen::Vector3d(0.0, 0.0, 1.0));
438 mesh->createTetrahedron(v1, v2, v3, v4);
440 PtrData doubleData = mesh->createData(
"DoubleData", 1, 0_dataID);
443 doubleData->setSampleAtTime(0,
time::Sample(doubleData->getDimensions(), Eigen::VectorXd{{1., 2., 3., 4.}}));
445 std::string filename0(
"precice-WatchPointTest-volumetric3d-0.log");
446 std::string filename1(
"precice-WatchPointTest-volumetric3d-1.log");
451 Eigen::Vector3d pointToWatch0(0.1, 0.5, 0.2);
453 Eigen::Vector3d pointToWatch1(0.25, 0.25, 0.25);
457 watchpoint0.initialize();
458 watchpoint1.initialize();
461 watchpoint0.exportPointData(0.0);
462 watchpoint1.exportPointData(0.0);
466 BOOST_TEST_CONTEXT(
"Validating watchpoint0")
468 auto result = readDoublesFromTXTFile(filename0, 5);
470 0.0, 0.1, 0.5, 0.2, 2.7};
471 BOOST_TEST(result.size() == expected.size());
472 for (
size_t i = 0; i < result.size(); ++i) {
473 BOOST_TEST_CONTEXT(
"entry index: " << i)
476 BOOST_TEST(equals(result.at(i), expected.at(i)));
481 BOOST_TEST_CONTEXT(
"Validating watchpoint1")
483 auto result = readDoublesFromTXTFile(filename1, 5);
485 0.0, 0.25, 0.25, 0.25, 2.5};
486 BOOST_TEST(result.size() == expected.size());
487 for (
size_t i = 0; i < result.size(); ++i) {
488 BOOST_TEST_CONTEXT(
"entry index: " << i)
491 BOOST_TEST(equals(result.at(i), expected.at(i)));
501 using namespace mesh;
502 using Eigen::VectorXd;
507 switch (context.rank) {
509 mesh->createVertex(Eigen::Vector3d(0.0, 0.0, 0.0));
512 mesh::Vertex &v1 = mesh->createVertex(Eigen::Vector3d(0.0, 0.0, 0.0));
513 mesh::Vertex &v2 = mesh->createVertex(Eigen::Vector3d(0.0, 1.0, 0.0));
514 mesh->createEdge(v1, v2);
517 mesh::Vertex &v1 = mesh->createVertex(Eigen::Vector3d(0.0, 0.0, 0.0));
518 mesh::Vertex &v2 = mesh->createVertex(Eigen::Vector3d(0.0, 1.0, 0.0));
519 mesh::Vertex &v3 = mesh->createVertex(Eigen::Vector3d(0.0, 0.0, 1.0));
520 mesh->createTriangle(v1, v2, v3);
524 mesh::Vertex &v1 = mesh->createVertex(Eigen::Vector3d(0.0, 0.0, 0.0));
525 mesh::Vertex &v2 = mesh->createVertex(Eigen::Vector3d(1.0, 0.0, 0.0));
526 mesh::Vertex &v3 = mesh->createVertex(Eigen::Vector3d(0.0, 1.0, 0.0));
527 mesh::Vertex &v4 = mesh->createVertex(Eigen::Vector3d(0.0, 0.0, 1.0));
529 mesh->createTetrahedron(v1, v2, v3, v4);
533 PtrData doubleData = mesh->createData(
"DoubleData", 1, 0_dataID);
536 doubleData->setSampleAtTime(0,
time::Sample(doubleData->getDimensions(), Eigen::VectorXd(context.rank + 1).setLinSpaced(1., context.rank + 1)));
538 std::string filename0(
"precice-WatchPointTest-volumetricParallel-0.log");
544 Eigen::Vector3d pointToWatch0(0.1, 0.2, 0.3);
557 BOOST_TEST_CONTEXT(
"Validating watchpoint0")
559 auto result = readDoublesFromTXTFile(filename0, 5);
561 0.0, 0.1, 0.2, 0.3, 2.4};
562 BOOST_TEST(result.size() = expected.size());
563 for (
size_t i = 0; i < result.size(); ++i) {
564 BOOST_TEST_CONTEXT(
"entry index: " << i)
567 BOOST_TEST(equals(result.at(i), expected.at(i)));
int size
the size of the Communicator of the current participant