36 io::ExportVTU exportVTU{
"io-VTUExport",
".", mesh, io::Export::ExportKind::TimeWindows, 1, context.rank, context.size};
37 exportVTU.doExport(0, 0.0);
46 mesh.createVertex(Eigen::Vector2d::Zero());
47 mesh.createVertex(Eigen::Vector2d::Constant(1));
51 io::ExportVTU exportVTU{
"io-VTUExport",
".", mesh, io::Export::ExportKind::TimeWindows, 1, context.rank, context.size};
61 mesh.createVertex(Eigen::Vector2d::Zero());
62 mesh.createVertex(Eigen::Vector2d::Constant(1));
65 io::ExportVTU exportVTU{
"io-VTUExport",
".", mesh, io::Export::ExportKind::TimeWindows, 1, context.rank, context.size};
75 if (context.isPrimary()) {
83 io::ExportVTU exportVTU{
"io-VTUExport",
".", mesh, io::Export::ExportKind::TimeWindows, 1, context.rank, context.size};
84 exportVTU.doExport(0, 0.0);
87 if (context.isPrimary()) {
97 if (context.isPrimary()) {
98 mesh.createVertex(Eigen::Vector2d::Zero());
100 mesh.createVertex(Eigen::Vector2d::Constant(1));
105 io::ExportVTU exportVTU{
"io-VTUExport",
".", mesh, io::Export::ExportKind::TimeWindows, 1, context.rank, context.size};
109 if (context.isPrimary()) {
119 if (context.isPrimary()) {
120 mesh.createVertex(Eigen::Vector2d::Zero());
122 mesh.createVertex(Eigen::Vector2d::Constant(1));
125 BOOST_TEST_REQUIRE(
data->timeStepsStorage().empty());
127 io::ExportVTU exportVTU{
"io-VTUExport",
".", mesh, io::Export::ExportKind::TimeWindows, 1, context.rank, context.size};
131 if (context.isPrimary()) {
141 if (context.isPrimary()) {
142 mesh.createVertex(Eigen::Vector2d::Zero());
144 mesh.createVertex(Eigen::Vector2d::Constant(1));
146 auto missing = mesh.createData(
"missing", 2, 0_dataID);
147 BOOST_TEST_REQUIRE(missing->timeStepsStorage().empty());
151 io::ExportVTU exportVTU{
"io-VTUExport",
".", mesh, io::Export::ExportKind::TimeWindows, 1, context.rank, context.size};
155 if (context.isPrimary()) {
168 mesh::PtrData dataScalar = mesh.createData(
"dataScalar", 1, 0_dataID);
169 mesh::PtrData dataVector = mesh.createData(
"dataVector", dimensions, 1_dataID);
170 dataScalar->requireDataGradient();
171 dataVector->requireDataGradient();
173 mesh.createVertex(Eigen::Vector2d::Constant(0.0));
174 mesh.createVertex(Eigen::Vector2d::Constant(1.0));
177 scalar.values.setLinSpaced(0, 1);
178 scalar.gradients.setOnes();
179 dataScalar->setSampleAtTime(0, scalar);
182 vectorial.values.setLinSpaced(0, 1);
183 vectorial.gradients.setOnes();
184 dataVector->setSampleAtTime(0, vectorial);
186 io::ExportVTU exportVTU{
"io-VTUExport",
".", mesh, io::Export::ExportKind::TimeWindows, 1, context.rank, context.size};
188 exportVTU.doExport(1, 1.0);
201 dataScalar->requireDataGradient();
202 dataVector->requireDataGradient();
208 scalar.
values.setLinSpaced(0, 1);
210 dataScalar->setSampleAtTime(0, scalar);
213 vectorial.
values.setLinSpaced(0, 1);
215 dataVector->setSampleAtTime(0, vectorial);
217 io::ExportVTU exportVTU{
"io-VTUExport",
".", mesh, io::Export::ExportKind::TimeWindows, 1, context.rank, context.size};
218 exportVTU.doExport(0, 0.0);
219 exportVTU.doExport(1, 1.0);
229 mesh::Vertex &v1 = mesh.createVertex(Eigen::Vector2d::Zero());
230 mesh::Vertex &v2 = mesh.createVertex(Eigen::Vector2d::Constant(1));
231 mesh::Vertex &v3 = mesh.createVertex(Eigen::Vector2d{1.0, 0.0});
233 mesh.createEdge(v1, v2);
234 mesh.createEdge(v2, v3);
235 mesh.createEdge(v3, v1);
237 io::ExportVTU exportVTU{
"io-VTUExport",
".", mesh, io::Export::ExportKind::TimeWindows, 1, context.rank, context.size};
239 exportVTU.doExport(1, 1.0);
250 if (context.isRank(0)) {
260 }
else if (context.isRank(1)) {
262 }
else if (context.isRank(2)) {
270 }
else if (context.isRank(3)) {
274 io::ExportVTU exportVTU{
"io-VTUExport",
".", mesh, io::Export::ExportKind::TimeWindows, 1, context.rank, context.size};
275 exportVTU.doExport(0, 0.0);
276 exportVTU.doExport(1, 1.0);
278 testing::expectFiles(fmt::format(
"Mesh-io-VTUExport.init_{}.vtu", context.rank), fmt::format(
"Mesh-io-VTUExport.dt1_{}.vtu", context.rank));
279 if (context.isPrimary()) {
291 if (context.isRank(0)) {
292 mesh::Vertex &v1 = mesh.createVertex(Eigen::Vector3d::Zero());
293 mesh::Vertex &v2 = mesh.createVertex(Eigen::Vector3d::Constant(1));
294 mesh::Vertex &v3 = mesh.createVertex(Eigen::Vector3d{1.0, 0.0, 0.0});
299 mesh.createTriangle(e1, e2, e3);
301 mesh.setVertexOffsets({3, 3, 6, 7});
303 }
else if (context.isRank(1)) {
305 }
else if (context.isRank(2)) {
306 mesh::Vertex &v1 = mesh.createVertex(Eigen::Vector3d::Constant(1));
307 mesh::Vertex &v2 = mesh.createVertex(Eigen::Vector3d::Constant(2));
308 mesh::Vertex &v3 = mesh.createVertex(Eigen::Vector3d{0.0, 1.0, 0.0});
313 mesh.createTriangle(e1, e2, e3);
314 }
else if (context.isRank(3)) {
315 mesh.createVertex(Eigen::Vector3d::Constant(3.0));
318 io::ExportVTU exportVTU{
"io-VTUExport",
".", mesh, io::Export::ExportKind::TimeWindows, 1, context.rank, context.size};
320 exportVTU.doExport(1, 1.0);
322 testing::expectFiles(fmt::format(
"Mesh-io-VTUExport.init_{}.vtu", context.rank), fmt::format(
"Mesh-io-VTUExport.dt1_{}.vtu", context.rank));
323 if (context.isPrimary()) {
335 mesh::Vertex &vm = mesh.createVertex(Eigen::Vector3d::Zero());
336 if (context.isRank(0)) {
337 mesh::Vertex &v1 = mesh.createVertex(Eigen::Vector3d{-1.0, 1.0, 0.0});
338 mesh::Vertex &v2 = mesh.createVertex(Eigen::Vector3d{1.0, 1.0, 0.0});
339 mesh::Vertex &vo = mesh.createVertex(Eigen::Vector3d{0.0, 2.0, 0.0});
343 mesh.createTriangle(em1, e12, e2m);
346 mesh.createTriangle(eo1, e12, e2o);
347 mesh.setVertexOffsets({3, 6, 9, 12});
349 }
else if (context.isRank(1)) {
350 mesh::Vertex &v1 = mesh.createVertex(Eigen::Vector3d{1.0, -1.0, 0.0});
351 mesh::Vertex &v2 = mesh.createVertex(Eigen::Vector3d{-1.0, -1.0, 0.0});
352 mesh::Vertex &vo = mesh.createVertex(Eigen::Vector3d{0.0, -2.0, 0.0});
356 mesh.createTriangle(em1, e12, e2m);
359 mesh.createTriangle(eo1, e12, e2o);
360 }
else if (context.isRank(2)) {
361 mesh::Vertex &v1 = mesh.createVertex(Eigen::Vector3d{-1.0, 1.0, 0.0});
362 mesh::Vertex &v2 = mesh.createVertex(Eigen::Vector3d{-1.0, -1.0, 0.0});
363 mesh::Vertex &vo = mesh.createVertex(Eigen::Vector3d{-2.0, 0.0, 0.0});
367 mesh.createTriangle(em1, e12, e2m);
370 mesh.createTriangle(eo1, e12, e2o);
371 }
else if (context.isRank(3)) {
372 mesh::Vertex &v1 = mesh.createVertex(Eigen::Vector3d{1.0, 1.0, 0.0});
373 mesh::Vertex &v2 = mesh.createVertex(Eigen::Vector3d{1.0, -1.0, 0.0});
374 mesh::Vertex &vo = mesh.createVertex(Eigen::Vector3d{2.0, 0.0, 0.0});
378 mesh.createTriangle(em1, e12, e2m);
381 mesh.createTriangle(eo1, e12, e2o);
384 io::ExportVTU exportVTU{
"io-VTUExport",
".", mesh, io::Export::ExportKind::TimeWindows, 1, context.rank, context.size};
386 exportVTU.doExport(1, 1.0);
388 testing::expectFiles(fmt::format(
"Mesh-io-VTUExport.init_{}.vtu", context.rank), fmt::format(
"Mesh-io-VTUExport.dt1_{}.vtu", context.rank));
389 if (context.isPrimary()) {
400 mesh::Vertex &v0 = mesh.createVertex(Eigen::Vector3d::Zero());
401 mesh::Vertex &v1 = mesh.createVertex(Eigen::Vector3d{1.0, 0.0, 0.0});
402 mesh::Vertex &v2 = mesh.createVertex(Eigen::Vector3d{0.0, 1.0, 0.0});
403 mesh::Vertex &v3 = mesh.createVertex(Eigen::Vector3d{0.0, 0.0, 1.0});
405 mesh.createTetrahedron(v0, v1, v2, v3);
407 io::ExportVTU exportVTU{
"io-VTUExport",
".", mesh, io::Export::ExportKind::TimeWindows, 1, context.rank, context.size};
409 exportVTU.doExport(1, 1.0);
422 if (context.isRank(0)) {
423 mesh::Vertex &v000 = mesh.createVertex(Eigen::Vector3d{0.0, 0.0, 0.0});
424 mesh::Vertex &v001 = mesh.createVertex(Eigen::Vector3d{0.0, 0.0, 1.0});
425 mesh::Vertex &v011 = mesh.createVertex(Eigen::Vector3d{0.0, 1.0, 1.0});
426 mesh::Vertex &v111 = mesh.createVertex(Eigen::Vector3d{1.0, 1.0, 1.0});
427 mesh::Vertex &v010 = mesh.createVertex(Eigen::Vector3d{0.0, 1.0, 0.0});
429 mesh.createTetrahedron(v000, v001, v011, v111);
430 mesh.createTetrahedron(v000, v010, v011, v111);
431 mesh.setVertexOffsets({4, 8, 8, 12});
433 }
else if (context.isRank(1)) {
434 mesh::Vertex &v000 = mesh.createVertex(Eigen::Vector3d{0.0, 0.0, 0.0});
435 mesh::Vertex &v001 = mesh.createVertex(Eigen::Vector3d{0.0, 0.0, 1.0});
436 mesh::Vertex &v101 = mesh.createVertex(Eigen::Vector3d{1.0, 0.0, 1.0});
437 mesh::Vertex &v111 = mesh.createVertex(Eigen::Vector3d{1.0, 1.0, 1.0});
438 mesh::Vertex &v100 = mesh.createVertex(Eigen::Vector3d{1.0, 0.0, 0.0});
440 mesh.createTetrahedron(v000, v001, v101, v111);
441 mesh.createTetrahedron(v000, v100, v101, v111);
442 }
else if (context.isRank(3)) {
443 mesh::Vertex &v000 = mesh.createVertex(Eigen::Vector3d{0.0, 0.0, 0.0});
444 mesh::Vertex &v010 = mesh.createVertex(Eigen::Vector3d{0.0, 1.0, 0.0});
445 mesh::Vertex &v100 = mesh.createVertex(Eigen::Vector3d{1.0, 0.0, 0.0});
446 mesh::Vertex &v111 = mesh.createVertex(Eigen::Vector3d{1.0, 1.0, 1.0});
447 mesh::Vertex &v110 = mesh.createVertex(Eigen::Vector3d{1.0, 1.0, 0.0});
449 mesh.createTetrahedron(v000, v010, v110, v111);
450 mesh.createTetrahedron(v000, v100, v110, v111);
453 io::ExportVTU exportVTU{
"io-VTUExport",
".", mesh, io::Export::ExportKind::TimeWindows, 1, context.rank, context.size};
455 exportVTU.doExport(1, 1.0);
457 testing::expectFiles(fmt::format(
"Mesh-io-VTUExport.init_{}.vtu", context.rank), fmt::format(
"Mesh-io-VTUExport.dt1_{}.vtu", context.rank));
458 if (context.isPrimary()) {
BOOST_AUTO_TEST_CASE(ExportDataWithGradient3D)
BOOST_AUTO_TEST_SUITE(PreProcess)
BOOST_AUTO_TEST_SUITE_END()
#define PRECICE_TEST_SETUP(...)
Creates and attaches a TestSetup to a Boost test case.
void doExport(int index, double time) final override
Export the mesh and writes files.
Linear edge of a mesh, defined by two Vertex objects.
Container and creator for meshes.
PtrData & createData(const std::string &name, int dimension, DataID id, int waveformDegree=time::Time::DEFAULT_WAVEFORM_DEGREE)
Create only data for vertex.
void setVertexOffsets(VertexOffsets vertexOffsets)
Only used for tests.
Edge & createEdge(Vertex &vertexOne, Vertex &vertexTwo)
Creates and initializes an Edge object.
Vertex & createVertex(const Eigen::Ref< const Eigen::VectorXd > &coords)
Creates and initializes a Vertex object.
provides Mesh, Data and primitives.
void expectFiles(Args... args)
Main namespace of the precice library.
Eigen::MatrixXd gradients
The gradients of the data. Use gradients.col(d*i+k) to get the gradient of vertex i,...
Sample & setZero()
Sets values and gradients to zero.