From 78dac62395f83a58a271b8a356df22aabf47d314 Mon Sep 17 00:00:00 2001 From: David Knapp Date: Mon, 3 Jul 2023 14:10:48 +0200 Subject: [PATCH 01/10] Added a new vtk-file-type for parallel vtk types --- src/t8_vtk/t8_vtk_types.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/t8_vtk/t8_vtk_types.h b/src/t8_vtk/t8_vtk_types.h index 0d19196e54..8d6b52991e 100644 --- a/src/t8_vtk/t8_vtk_types.h +++ b/src/t8_vtk/t8_vtk_types.h @@ -60,9 +60,10 @@ const t8_eclass_t t8_cmesh_vtk_type_to_t8_type[82] = { */ typedef enum vtk_file_type { - VTK_FILE_ERROR = -1, /*For Testing purpose. */ + VTK_FILE_ERROR = -1, /* For Testing purpose. */ VTK_UNSTRUCTURED_FILE = 0, VTK_POLYDATA_FILE = 1, + VTK_PARALLEL_FILE = 2, /* All parallel vtk files. */ VTK_NUM_TYPES } vtk_file_type_t; From 265741676b938f86575e013765daf1c8624d8ff6 Mon Sep 17 00:00:00 2001 From: David Knapp Date: Mon, 3 Jul 2023 14:29:33 +0200 Subject: [PATCH 02/10] Added new file for parallel vtk_file reader --- src/Makefile.am | 2 ++ src/t8_vtk/t8_vtk_parallel.cxx | 23 +++++++++++++++++++++++ src/t8_vtk/t8_vtk_parallel.hxx | 26 ++++++++++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 src/t8_vtk/t8_vtk_parallel.cxx create mode 100644 src/t8_vtk/t8_vtk_parallel.hxx diff --git a/src/Makefile.am b/src/Makefile.am index 01610da342..4e419f9004 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -85,6 +85,7 @@ libt8_internal_headers = \ src/t8_cmesh/t8_cmesh_offset.h \ src/t8_vtk/t8_vtk_polydata.hxx \ src/t8_vtk/t8_vtk_unstructured.hxx \ + src/t8-vtk/t8_vtk_parallel.hxx \ src/t8_forest/t8_forest_cxx.h \ src/t8_forest/t8_forest_ghost.h \ src/t8_forest/t8_forest_balance.h src/t8_forest/t8_forest_types.h \ @@ -126,6 +127,7 @@ libt8_compiled_sources = \ src/t8_cmesh/t8_cmesh_testcases.c \ src/t8_vtk/t8_vtk_polydata.cxx \ src/t8_vtk/t8_vtk_unstructured.cxx \ + src/t8_vtk/t8_vtk_parallel.cxx \ src/t8_vtk/t8_vtk_reader.cxx diff --git a/src/t8_vtk/t8_vtk_parallel.cxx b/src/t8_vtk/t8_vtk_parallel.cxx new file mode 100644 index 0000000000..66ece92da6 --- /dev/null +++ b/src/t8_vtk/t8_vtk_parallel.cxx @@ -0,0 +1,23 @@ +/* +This file is part of t8code. +t8code is a C library to manage a collection (a forest) of multiple +connected adaptive space-trees of general element classes in parallel. + +Copyright (C) 2015 the developers + +t8code is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +t8code is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with t8code; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +#include "t8_vtk_parallel.hxx" diff --git a/src/t8_vtk/t8_vtk_parallel.hxx b/src/t8_vtk/t8_vtk_parallel.hxx new file mode 100644 index 0000000000..7650cdda75 --- /dev/null +++ b/src/t8_vtk/t8_vtk_parallel.hxx @@ -0,0 +1,26 @@ +/* +This file is part of t8code. +t8code is a C library to manage a collection (a forest) of multiple +connected adaptive space-trees of general element classes in parallel. + +Copyright (C) 2015 the developers + +t8code is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +t8code is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with t8code; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +*/ + +#ifndef T8_VTK_PARALLEL_HXX +#define T8_VTK_PARALLEL_HXX + +#endif /* T8_VTK_PARALLEL_HXX */ From 663638c6c46e9b872a0ce2e43311fce60ccfc145 Mon Sep 17 00:00:00 2001 From: David Knapp Date: Mon, 3 Jul 2023 15:15:29 +0200 Subject: [PATCH 03/10] setup header --- src/t8_vtk/t8_vtk_parallel.cxx | 6 ++++++ src/t8_vtk/t8_vtk_parallel.hxx | 15 +++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/t8_vtk/t8_vtk_parallel.cxx b/src/t8_vtk/t8_vtk_parallel.cxx index 66ece92da6..42b116031a 100644 --- a/src/t8_vtk/t8_vtk_parallel.cxx +++ b/src/t8_vtk/t8_vtk_parallel.cxx @@ -21,3 +21,9 @@ along with t8code; if not, write to the Free Software Foundation, Inc., */ #include "t8_vtk_parallel.hxx" + +vtk_read_success_t +t8_read_parallel (const char *filename, vtkSmartPointer < vtkDataSet > grid) +{ + return read_failure; +} diff --git a/src/t8_vtk/t8_vtk_parallel.hxx b/src/t8_vtk/t8_vtk_parallel.hxx index 7650cdda75..eadc75cf73 100644 --- a/src/t8_vtk/t8_vtk_parallel.hxx +++ b/src/t8_vtk/t8_vtk_parallel.hxx @@ -23,4 +23,19 @@ along with t8code; if not, write to the Free Software Foundation, Inc., #ifndef T8_VTK_PARALLEL_HXX #define T8_VTK_PARALLEL_HXX +#include +#include "t8_vtk_types.h>" + +/** + * given a filename to a parallel vtk file and its data-files, + * read a piece of the data-files (like .vtu, .vtp, ...). + * + * \param[in] filename The name of a parallel vtk file (.pvtu for example) + * \param[in] grid On input a vtkSmartPointer, that will hold the grid described + * by the pieces read on this proc. + * \returns non-zero on success, zero if the reading failed. + */ +vtk_read_success_t t8_read_parallel (const char *filename, + vtkSmartPointer < vtkDataSet > grid); + #endif /* T8_VTK_PARALLEL_HXX */ From 50bb2d7434acbffee652116142684b6b75f77d7a Mon Sep 17 00:00:00 2001 From: David Knapp Date: Mon, 3 Jul 2023 15:49:37 +0200 Subject: [PATCH 04/10] Started to implement parallel reader --- src/t8_vtk/t8_vtk_parallel.cxx | 43 +++++++++++++++++++++++++++++++++- src/t8_vtk/t8_vtk_parallel.hxx | 3 ++- 2 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/t8_vtk/t8_vtk_parallel.cxx b/src/t8_vtk/t8_vtk_parallel.cxx index 42b116031a..8311eb7af9 100644 --- a/src/t8_vtk/t8_vtk_parallel.cxx +++ b/src/t8_vtk/t8_vtk_parallel.cxx @@ -22,8 +22,49 @@ along with t8code; if not, write to the Free Software Foundation, Inc., #include "t8_vtk_parallel.hxx" +#if T8_WITH_VTK +#include + vtk_read_success_t -t8_read_parallel (const char *filename, vtkSmartPointer < vtkDataSet > grid) +t8_read_parallel (const char *filename, vtkSmartPointer < vtkDataSet > grid, + sc_MPI_Comm comm) { + /* Check if we can open the parallel file */ + FILE *first_check; + first_check = fopen (filename, "r"); + if (first_check == NULL) { + t8_errorf ("Can not find the file %s\n", filename); + return read_failure; + } + fclose (first_check); + + /* Setup parallel reader. */ + vtkSmartPointer < vtkXMLPDataReader > reader = + vtkSmartPointer < vtkXMLPDataReader >::New (); + if (!reader->CanReadFile (filename)) { + return read_failure; + } + /* Get mpi size and rank */ + const int total_num_pieces = reader->GetNumberOfPieces (); + int mpiret; + int mpisize; + mpiret = sc_MPI_Comm_size (comm, &mpisize); + SC_CHECK_MPI (mpiret); + + int mpirank; + mpiret = sc_MPI_Comm_rank (comm & mpirank); + SC_CHECK_MPI (mpiret); + + /* Setup number of pieces to read on this proc. */ + int local_num_pieces = 0; + if (mpisize >= total_num_pieces) { + local_num_pieces = mpirank < mpisize ? 1 : 0; + } + else { + local_num_pieces = total_num_pieces / mpisize * mpirank; + } + return read_failure; } + +#endif diff --git a/src/t8_vtk/t8_vtk_parallel.hxx b/src/t8_vtk/t8_vtk_parallel.hxx index eadc75cf73..c206248ad3 100644 --- a/src/t8_vtk/t8_vtk_parallel.hxx +++ b/src/t8_vtk/t8_vtk_parallel.hxx @@ -36,6 +36,7 @@ along with t8code; if not, write to the Free Software Foundation, Inc., * \returns non-zero on success, zero if the reading failed. */ vtk_read_success_t t8_read_parallel (const char *filename, - vtkSmartPointer < vtkDataSet > grid); + vtkSmartPointer < vtkDataSet > grid, + sc_MPI_Comm comm); #endif /* T8_VTK_PARALLEL_HXX */ From d4180928e38c109305bd673bfbfa34366fc0ddbd Mon Sep 17 00:00:00 2001 From: David Knapp Date: Tue, 4 Jul 2023 13:49:08 +0200 Subject: [PATCH 05/10] Implementation of a pvtu reader. a) a simple pvtu reader, reading everything on a single proc. b) a distributed pvtu reader, reading chunks of the files on several procs. TODO: Build the partition of the cmesh when using b). --- .../IO/cmesh/vtk/t8_cmesh_read_from_vtk.cxx | 10 ++-- src/t8_vtk/t8_vtk_parallel.cxx | 52 +++++++++++++++---- src/t8_vtk/t8_vtk_parallel.hxx | 9 +++- src/t8_vtk/t8_vtk_reader.cxx | 16 +++++- src/t8_vtk/t8_vtk_unstructured.cxx | 13 +++++ test/t8_IO/t8_gtest_vtk_reader.cxx | 4 +- 6 files changed, 87 insertions(+), 17 deletions(-) diff --git a/example/IO/cmesh/vtk/t8_cmesh_read_from_vtk.cxx b/example/IO/cmesh/vtk/t8_cmesh_read_from_vtk.cxx index a16e54130d..6073433324 100644 --- a/example/IO/cmesh/vtk/t8_cmesh_read_from_vtk.cxx +++ b/example/IO/cmesh/vtk/t8_cmesh_read_from_vtk.cxx @@ -162,11 +162,13 @@ main (int argc, char **argv) "The prefix of the output-file."); sc_options_add_int (opt, 'c', "num_cell_values", &num_keys, 0, "Number of values per cell stored in the vtk-file."); - sc_options_add_int (opt, 't', "type_of_file", &vtk_file_type, -1, - " Set the type of the data in the file.\n" - "0 for vtkUnstructuredGrid \n" "1 for vtkPolyData"); sc_options_add_bool (opt, 'p', "partition", &partition, 0, - "If set, partition the cmesh uniformly.\n"); + "If set, partition the cmesh uniformly."); + sc_options_add_int (opt, 't', "type_of_file", &vtk_file_type, -1, + "Set the type of the data in the file.\n" + "\t\t\t\t\t0 for vtkUnstructuredGrid \n" + "\t\t\t\t\t1 for vtkPolyData\n" + "\t\t\t\t\t2 for pvtu. Currently not working with -p"); parsed = sc_options_parse (t8_get_package_id (), SC_LP_ERROR, opt, argc, argv); diff --git a/src/t8_vtk/t8_vtk_parallel.cxx b/src/t8_vtk/t8_vtk_parallel.cxx index 8311eb7af9..e46a0e3d96 100644 --- a/src/t8_vtk/t8_vtk_parallel.cxx +++ b/src/t8_vtk/t8_vtk_parallel.cxx @@ -23,7 +23,9 @@ along with t8code; if not, write to the Free Software Foundation, Inc., #include "t8_vtk_parallel.hxx" #if T8_WITH_VTK -#include +#include +#include +#include vtk_read_success_t t8_read_parallel (const char *filename, vtkSmartPointer < vtkDataSet > grid, @@ -37,13 +39,17 @@ t8_read_parallel (const char *filename, vtkSmartPointer < vtkDataSet > grid, return read_failure; } fclose (first_check); - /* Setup parallel reader. */ - vtkSmartPointer < vtkXMLPDataReader > reader = - vtkSmartPointer < vtkXMLPDataReader >::New (); + vtkSmartPointer < vtkXMLPUnstructuredGridReader > reader = + vtkSmartPointer < vtkXMLPUnstructuredGridReader >::New (); if (!reader->CanReadFile (filename)) { + t8_errorf ("Unable to read file.\n"); return read_failure; } + + reader->SetFileName (filename); + reader->UpdateInformation (); + /* Get mpi size and rank */ const int total_num_pieces = reader->GetNumberOfPieces (); int mpiret; @@ -52,19 +58,47 @@ t8_read_parallel (const char *filename, vtkSmartPointer < vtkDataSet > grid, SC_CHECK_MPI (mpiret); int mpirank; - mpiret = sc_MPI_Comm_rank (comm & mpirank); + mpiret = sc_MPI_Comm_rank (comm, &mpirank); SC_CHECK_MPI (mpiret); /* Setup number of pieces to read on this proc. */ - int local_num_pieces = 0; + int last_piece = -1; + int first_piece = 0; if (mpisize >= total_num_pieces) { - local_num_pieces = mpirank < mpisize ? 1 : 0; + /* The first n-procs read a piece each. */ + first_piece = mpirank; + last_piece = first_piece + ((mpirank < mpisize) ? 1 : 0); } else { - local_num_pieces = total_num_pieces / mpisize * mpirank; + first_piece = total_num_pieces / mpisize * mpirank; + last_piece = first_piece; + const int prev_proc_first_piece = + total_num_pieces / mpisize * (mpirank - 1); + last_piece += + first_piece == prev_proc_first_piece ? 0 : total_num_pieces / mpisize; + if (first_piece == total_num_pieces / mpisize * (mpisize - 1)) { + /* Read the last chunk of data */ + last_piece = total_num_pieces - first_piece; + } } - return read_failure; + /* Read the pieces if there are any pieces to read on this proc. */ + if (first_piece < last_piece) { + vtkNew < vtkAppendFilter > append; + for (int ipiece = first_piece; ipiece < last_piece; ipiece++) { + reader->UpdatePiece (ipiece, total_num_pieces, 0); + append->AddInputData (reader->GetOutput ()); + } + /* Merge all read grids together */ + append->Update (); + append->MergePointsOn (); + grid->ShallowCopy (append->GetOutput ()); + t8_debugf ("[D] read %lli cells\n", grid->GetNumberOfCells ()); + } + else { + t8_debugf ("[D] dont read any file on this proc\n"); + } + return read_success; } #endif diff --git a/src/t8_vtk/t8_vtk_parallel.hxx b/src/t8_vtk/t8_vtk_parallel.hxx index c206248ad3..9db1c825bc 100644 --- a/src/t8_vtk/t8_vtk_parallel.hxx +++ b/src/t8_vtk/t8_vtk_parallel.hxx @@ -24,10 +24,14 @@ along with t8code; if not, write to the Free Software Foundation, Inc., #define T8_VTK_PARALLEL_HXX #include -#include "t8_vtk_types.h>" +#include "t8_vtk_types.h" + +#if T8_WITH_VTK +#include +#include /** - * given a filename to a parallel vtk file and its data-files, + * given a filename to a parallel vtk file (for example .pvtu) and its data-files, * read a piece of the data-files (like .vtu, .vtp, ...). * * \param[in] filename The name of a parallel vtk file (.pvtu for example) @@ -39,4 +43,5 @@ vtk_read_success_t t8_read_parallel (const char *filename, vtkSmartPointer < vtkDataSet > grid, sc_MPI_Comm comm); +#endif /* T8_WITH_VTK */ #endif /* T8_VTK_PARALLEL_HXX */ diff --git a/src/t8_vtk/t8_vtk_reader.cxx b/src/t8_vtk/t8_vtk_reader.cxx index c805dd83c4..91a1be5e43 100644 --- a/src/t8_vtk/t8_vtk_reader.cxx +++ b/src/t8_vtk/t8_vtk_reader.cxx @@ -25,6 +25,7 @@ along with t8code; if not, write to the Free Software Foundation, Inc., #include "t8_vtk_reader.hxx" #include "t8_vtk_unstructured.hxx" #include "t8_vtk_polydata.hxx" +#include "t8_vtk_parallel.hxx" #include "t8_vtk_types.h" #include @@ -135,6 +136,16 @@ t8_file_to_vtkGrid (const char *filename, case VTK_POLYDATA_FILE: main_proc_read_successful = t8_read_poly (filename, vtkGrid); break; + case VTK_PARALLEL_FILE: + if (!partition) { + main_proc_read_successful = t8_read_unstructured (filename, vtkGrid); + } + else { + t8_errorf ("Distributed reading is not supported yet.\n"); + vtkGrid = NULL; + break; + } + break; default: vtkGrid = NULL; t8_errorf ("Filetype not supported.\n"); @@ -403,7 +414,7 @@ t8_vtk_reader (const char *filename, const int partition, SC_CHECK_MPI (mpiret); mpiret = sc_MPI_Comm_rank (comm, &mpirank); SC_CHECK_MPI (mpiret); - + t8_debugf ("[D] file_type: %i\n", (int) vtk_file_type); /* Ensure that the main-proc is a valid proc. */ T8_ASSERT (0 <= main_proc && main_proc < mpisize); T8_ASSERT (filename != NULL); @@ -417,6 +428,9 @@ t8_vtk_reader (const char *filename, const int partition, case VTK_POLYDATA_FILE: vtkGrid = vtkSmartPointer < vtkPolyData >::New (); break; + case VTK_PARALLEL_FILE: + vtkGrid = vtkSmartPointer < vtkUnstructuredGrid >::New (); + break; default: t8_errorf ("Filetype is not supported.\n"); break; diff --git a/src/t8_vtk/t8_vtk_unstructured.cxx b/src/t8_vtk/t8_vtk_unstructured.cxx index b77d6159ea..248225b28a 100644 --- a/src/t8_vtk/t8_vtk_unstructured.cxx +++ b/src/t8_vtk/t8_vtk_unstructured.cxx @@ -26,6 +26,7 @@ along with t8code; if not, write to the Free Software Foundation, Inc., #include #include #include +#include vtk_read_success_t t8_read_unstructured (const char *filename, @@ -70,6 +71,18 @@ t8_read_unstructured (const char *filename, grid->ShallowCopy (vtkDataSet::SafeDownCast (reader->GetOutput ())); return read_success; } + else if (strcmp (extension, "pvtu") == 0) { + vtkSmartPointer < vtkXMLPUnstructuredGridReader > reader = + vtkSmartPointer < vtkXMLPUnstructuredGridReader >::New (); + if (!reader->CanReadFile (filename)) { + t8_errorf ("Unable to read file.\n"); + return read_failure; + } + reader->SetFileName (filename); + reader->Update (); + grid->ShallowCopy (vtkDataSet::SafeDownCast (reader->GetOutput ())); + return read_success; + } else { /* Return failure if the reader is not used correctly */ t8_global_errorf ("Please use .vtk or .vtu file\n"); diff --git a/test/t8_IO/t8_gtest_vtk_reader.cxx b/test/t8_IO/t8_gtest_vtk_reader.cxx index 28887addc4..74d9e360b3 100644 --- a/test/t8_IO/t8_gtest_vtk_reader.cxx +++ b/test/t8_IO/t8_gtest_vtk_reader.cxx @@ -119,8 +119,10 @@ TEST_P (vtk_reader, vtk_to_pointSet) } /* *INDENT-OFF* */ +/* Currently does not work for parallel files. Replace with VTK_NUM_TYPES as soon + * as reading and constructing cmeshes from parallel files is enabled. */ INSTANTIATE_TEST_SUITE_P (t8_gtest_vtk_reader, vtk_reader,testing::Combine ( - testing::Range (VTK_FILE_ERROR, VTK_NUM_TYPES), + testing::Range (VTK_FILE_ERROR, VTK_POLYDATA_FILE), testing::Values (0, 1), testing::Range (0,T8_VTK_TEST_NUM_PROCS) )); From bed01c45d1a68118488440a04429c7d00fb32011 Mon Sep 17 00:00:00 2001 From: David Knapp Date: Thu, 13 Jul 2023 08:34:06 +0200 Subject: [PATCH 06/10] Apply suggestions from code review Co-authored-by: Johannes Markert <10619309+jmark@users.noreply.github.com> --- src/t8_vtk/t8_vtk_parallel.hxx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/t8_vtk/t8_vtk_parallel.hxx b/src/t8_vtk/t8_vtk_parallel.hxx index 9db1c825bc..2c3e942e3c 100644 --- a/src/t8_vtk/t8_vtk_parallel.hxx +++ b/src/t8_vtk/t8_vtk_parallel.hxx @@ -31,8 +31,8 @@ along with t8code; if not, write to the Free Software Foundation, Inc., #include /** - * given a filename to a parallel vtk file (for example .pvtu) and its data-files, - * read a piece of the data-files (like .vtu, .vtp, ...). + * Given a filename to a parallel vtk file (for example .pvtu) and its data files, + * read a piece of the data files (like .vtu, .vtp, ...). * * \param[in] filename The name of a parallel vtk file (.pvtu for example) * \param[in] grid On input a vtkSmartPointer, that will hold the grid described From b3605bd62f33a859c70c1cc9dc47eddddc6a6c5f Mon Sep 17 00:00:00 2001 From: David Knapp Date: Thu, 13 Jul 2023 08:43:31 +0200 Subject: [PATCH 07/10] Update years in copyright-statement --- src/t8_vtk/t8_vtk_parallel.cxx | 2 +- src/t8_vtk/t8_vtk_parallel.hxx | 2 +- src/t8_vtk/t8_vtk_reader.cxx | 2 +- src/t8_vtk/t8_vtk_reader.hxx | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/t8_vtk/t8_vtk_parallel.cxx b/src/t8_vtk/t8_vtk_parallel.cxx index e46a0e3d96..e1bf14741f 100644 --- a/src/t8_vtk/t8_vtk_parallel.cxx +++ b/src/t8_vtk/t8_vtk_parallel.cxx @@ -3,7 +3,7 @@ This file is part of t8code. t8code is a C library to manage a collection (a forest) of multiple connected adaptive space-trees of general element classes in parallel. -Copyright (C) 2015 the developers +Copyright (C) 2023 the developers t8code is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/src/t8_vtk/t8_vtk_parallel.hxx b/src/t8_vtk/t8_vtk_parallel.hxx index 2c3e942e3c..2a4b2e2bdb 100644 --- a/src/t8_vtk/t8_vtk_parallel.hxx +++ b/src/t8_vtk/t8_vtk_parallel.hxx @@ -3,7 +3,7 @@ This file is part of t8code. t8code is a C library to manage a collection (a forest) of multiple connected adaptive space-trees of general element classes in parallel. -Copyright (C) 2015 the developers +Copyright (C) 2023 the developers t8code is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/src/t8_vtk/t8_vtk_reader.cxx b/src/t8_vtk/t8_vtk_reader.cxx index ae52c7fbb0..0c9f218100 100644 --- a/src/t8_vtk/t8_vtk_reader.cxx +++ b/src/t8_vtk/t8_vtk_reader.cxx @@ -3,7 +3,7 @@ This file is part of t8code. t8code is a C library to manage a collection (a forest) of multiple connected adaptive space-trees of general element classes in parallel. -Copyright (C) 2015 the developers +Copyright (C) 2023 the developers t8code is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/src/t8_vtk/t8_vtk_reader.hxx b/src/t8_vtk/t8_vtk_reader.hxx index 0f1045a6c9..d4be37ecd5 100644 --- a/src/t8_vtk/t8_vtk_reader.hxx +++ b/src/t8_vtk/t8_vtk_reader.hxx @@ -3,7 +3,7 @@ This file is part of t8code. t8code is a C library to manage a collection (a forest) of multiple connected adaptive space-trees of general element classes in parallel. -Copyright (C) 2015 the developers +Copyright (C) 2023 the developers t8code is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by From 55a9eaca98c337d25cfe9edac5a7bfd4ad961536 Mon Sep 17 00:00:00 2001 From: David Knapp Date: Thu, 13 Jul 2023 09:46:05 +0200 Subject: [PATCH 08/10] Extended vtk-test for non-partitioned read of pvtu files --- test/t8_IO/t8_gtest_vtk_reader.cxx | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/test/t8_IO/t8_gtest_vtk_reader.cxx b/test/t8_IO/t8_gtest_vtk_reader.cxx index 74d9e360b3..7d609c3e65 100644 --- a/test/t8_IO/t8_gtest_vtk_reader.cxx +++ b/test/t8_IO/t8_gtest_vtk_reader.cxx @@ -46,23 +46,28 @@ class vtk_reader : public testing::TestWithParam(GetParam()); main_proc = std::get<2>(GetParam()); + if(file_type == VTK_PARALLEL_FILE && partition){ + GTEST_SKIP(); + } } int file; vtk_file_type_t file_type; int partition; int main_proc; - const char* failing_files[3] = { + const char* failing_files[4] = { "no_file", "non-existing-file.vtu", - "non-existing-file.vtp" + "non-existing-file.vtp", + "non-existing-file.pvtu" }; - const char* test_files[3] = { + const char* test_files[4] = { "no_file", "test/testfiles/test_vtk_tri.vtu", - "test/testfiles/test_vtk_cube.vtp" + "test/testfiles/test_vtk_cube.vtp", + "test/testfiles/test_parallel_file.pvtu" }; - const int num_points[3] = {0, 121, 24}; - const int num_trees[3] = {0, 200, 12}; + const int num_points[4] = {0, 121, 24, 6144}; + const int num_trees[4] = {0, 200, 12, 1024}; }; /* *INDENT-ON* */ @@ -122,7 +127,7 @@ TEST_P (vtk_reader, vtk_to_pointSet) /* Currently does not work for parallel files. Replace with VTK_NUM_TYPES as soon * as reading and constructing cmeshes from parallel files is enabled. */ INSTANTIATE_TEST_SUITE_P (t8_gtest_vtk_reader, vtk_reader,testing::Combine ( - testing::Range (VTK_FILE_ERROR, VTK_POLYDATA_FILE), + testing::Range (VTK_FILE_ERROR, VTK_NUM_TYPES), testing::Values (0, 1), testing::Range (0,T8_VTK_TEST_NUM_PROCS) )); From 17a7192822db7068fb13a2f44a8bfd0c659b909c Mon Sep 17 00:00:00 2001 From: David Knapp Date: Thu, 13 Jul 2023 09:50:08 +0200 Subject: [PATCH 09/10] Added new testfiles for pvtu testing --- configure.ac | 3 +++ test/testfiles/test_parallel_file.pvtu | 15 +++++++++++++++ test/testfiles/test_parallel_file_0.vtu | Bin 0 -> 12699 bytes test/testfiles/test_parallel_file_1.vtu | Bin 0 -> 12593 bytes 4 files changed, 18 insertions(+) create mode 100644 test/testfiles/test_parallel_file.pvtu create mode 100644 test/testfiles/test_parallel_file_0.vtu create mode 100644 test/testfiles/test_parallel_file_1.vtu diff --git a/configure.ac b/configure.ac index c3d14cbb65..172c001792 100644 --- a/configure.ac +++ b/configure.ac @@ -82,6 +82,9 @@ AC_CONFIG_LINKS([test/testfiles/test_msh_file_vers4_ascii.msh:test/testfiles/tes AC_CONFIG_LINKS([test/testfiles/test_msh_file_vers4_bin.msh:test/testfiles/test_msh_file_vers4_bin.msh]) AC_CONFIG_LINKS([test/testfiles/test_vtk_tri.vtu:test/testfiles/test_vtk_tri.vtu]) AC_CONFIG_LINKS([test/testfiles/test_vtk_cube.vtp:test/testfiles/test_vtk_cube.vtp]) +AC_CONFIG_LINKS([test/testfiles/test_parallel_file.pvtu:test/testfiles/test_parallel_file.pvtu]) +AC_CONFIG_LINKS([test/testfiles/test_parallel_file_0.vtu:test/testfiles/test_parallel_file_0.vtu]) +AC_CONFIG_LINKS([test/testfiles/test_parallel_file_1.vtu:test/testfiles/test_parallel_file_1.vtu]) AC_CONFIG_LINKS([example/IO/cmesh/gmsh/circlesquare_hybrid_hole.msh:example/IO/cmesh/gmsh/circlesquare_hybrid_hole.msh]) AC_CONFIG_FILES([tutorials/features/t8_features_curved_meshes_generate_cmesh.geo:tutorials/features/t8_features_curved_meshes_generate_cmesh.geo]) AC_CONFIG_FILES([tutorials/features/t8_features_curved_meshes_generate_cmesh_2d.geo:tutorials/features/t8_features_curved_meshes_generate_cmesh_2d.geo]) diff --git a/test/testfiles/test_parallel_file.pvtu b/test/testfiles/test_parallel_file.pvtu new file mode 100644 index 0000000000..a26e3a0a37 --- /dev/null +++ b/test/testfiles/test_parallel_file.pvtu @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/test/testfiles/test_parallel_file_0.vtu b/test/testfiles/test_parallel_file_0.vtu new file mode 100644 index 0000000000000000000000000000000000000000..a2020e789546b8a2a28b2d7e933d9cd561ea7d2d GIT binary patch literal 12699 zcmeHud011|zBY)EDw89FKtxbbQAmgoh5*M>p;m-akfBB(WGY8YfG|anK?GDLWlVs8 zmQ%15nNlSYlpzcPA<1_Yr4g95M^+W;SomS!+EfaF6YSZG1?p<0^WegpVv)m2~|OTY(yXQ5@d%upXf zj&MQw24OXQ0Aw%Y^+TXm=0KLI>-~I$!SeLqPx}25(2s7Qskzqe|7kUZ!S9{?aHmhO z0b+&aR+EcZCd)OKtor{cu0RtB1S~qxC)g*D{O5W7kgNA`SbG1!a-Tl`KCea)=pXTC z@V~WkWfjtY(m+!<7Ks{NoU>#%~4j?@9nDh$V?#iY>z6 zQzDEw{7%G{Dnk=XKoc=O1iXb-04ijqY&|6ACZqw{!nPncpp~FSTTZ z(PQg%Dl!rhb^j^{rY-*j|F(R|8C{FOyIJIVna^H$N{W@GppY2I-WaHfHDtFn^biYj zfCWWpL$tJ^h6RxQ1yD0ILB+J^C(Dg`$`1CFTbP$=o0r3?%Jizr z&BMxc!^+`vWd?KQRvWEt}t2w9;HjFRcuzHZ^)@o&7n)5tk`~% zF5gq3(L``uZRmQ_uO{V+%|G9R~q@?2$H=A*@{JSwj*0kAlr?QZ9zz` zJpaLQKKmfQ^$ee*!EZUmZ@1vLo#S(*5D%;oY;8m<8o}9$XmLWc!w_vG1Xs5D!Le$# zUUlo~YK~fU%gO3?^Xj&+YAz`Jfo(WjH@p=e&QT6;aSd;Whqr}o8cCHb#(uxf^GZj(m&sqZsQXfU^S|H zVf}6xwMRSkN_7IQD!tJ4`rUs`O@1EaUQRnb6doB|605K<9{A$k)6WP+_qJCm|2C0+ z3WL4pSy5p7x&j$d|Jt z!xKkaKTkVmTk<_HGK>6HCk$icL z)C7p;A*{}&F$ob@Muqqsi*^r2NDao7-W8kN);lt(A4sS$S43F-WLv-{jh#IdN;~`d zN6=^*SJ|l=R1^btv-Mx(JhFb%a1NRS-WAeSaCj8XW7SB#kZpBUB z=;zJYiJyteW^f)2l(+M7!Qq-Juza+IMHLV4Ntk6>|Cbf<;+UDk3ky(+VXA>tRoFtrZgyFkaA|&l3?OuX&70$W^uCJ`O z=<@fpLzY?xhkM{l+NvYc?nxC&#Rc8r#l{~IU3ua!6=P{t+GOOhSSo4?x;~XcERh{i zuH9C%l$G}mlQ7Dbq{ecfz-)l3vPdCf68Ei0x%LOKN5i25JWSqWEZ`Vg0FpD2c zp3D0YKOQ8w%btX+mdkT0ZR1f#g&?5R@9>br+#GdE(ACwWNsUYQlq&Q<^-?Mh{5}}bMjwb1aIfIho->za(P>yC){%}yYwm`Sa?@_ zxFje4R4^iiUvPimr?G!dmw6VAU7D6B6uwD+LcZbL4AjY)K-^=pPYMM!X#9*eX#6T= zPNr+btJmiCtA|IO$WMnvI#qXF58a4t;qYtAlH10|wZzZIY{% zt4)-LckrBn847u)KX%*a?#}QC-0BK>-}SAKOUC>SFqU#}sgy`5FAkXGKYqHLYJgf^ zBFqS0_G{|w#F{#b6X}LliH{DE9-5J0G|9$xF5iH!9Cj;k%kc1fU{{UNs{JM+T1s$= zb3v`ZEkp4?Iq+!lUj?xh^EzzsF0?F}+kzF3OUJj{gC>oC%80kmZnf66g7Y5V`~L9T zW5Gh1xFF>8S93Czj^|p(5rH@QLb4a_TcD&35XenOyobZ&Oz%ds2e+K{R@0SqIvX+5 z*st1)i7eH7GPQz1D;9 ztCp(#CO~SXKNGjFlA6O4M#}fLNnJnMY6RwT34sq|Iu0uq7clbg(k=Zx*(ggjlyl0C zKZ4t-NcTARt6~^R#tS(7^&V4S1FQ`2qJ@dZ>sqtR3HO5ewTW$G(MP#&;P!<8ACHLR zFMT^Q_MRD|59iPNo|x%LRWGV2+uXMIm>wx<*z+r<70blK5Dy`~xc^448;GDN}&j1-3vBIrYBP^U>dyPwJ`B8roai|tJ z1`Fe#8IHn%k7dgQ3v@6@1hBwL-YppVlW&esD^L_vI(ax{uoBIBIq`~lPH-!en{7th z_>v+(Az5ajrG93i9yacDSXaAZz>|4jdeKzw;MC%ts_c9Efyin5x!~)hv?t_#v7^PC zUt`|f0GOK=mYz4oYqtb0U+O_XosRt1=ep$KkRq|%d9cvB0_L}`LW8UGM z71_P6X8^(B&i zh-dSi1yhS>2}|u6?O1VJalT|4P#dd_5TNHWabeG=8$IAF4Z*s?b!!^})^a10-)iX- zNA0=hncM?@mc?*2`5opzN;`o04~@)+w10$ovp-ihqY~_IR#j3R62NisB+$P_NZCof zFM1k_-s3OTp-%@D0{u&&RSkA+;+NWx<-`}_k-$ZE+62*E_8WPKJW#PKosa^T0APCN zH$bnJ1M`W#RTt+Ax5_y8iyW--aE*GU#jm9-detxYPdznJeBZX-5^XD8G~hiR3%V|- zaQ&@PmXYYkc=tvhT?-m_jO@h2=f-T_(Nqz>5@=Kot&vmsnsg6}`t+Wq-dSAS zU?*eO>o*BM_M0D2EE^d1x{`3GTL|Z0oWc9&m@RqzRo>9PT?TXj@x_7)-FLUO-UGDD zV(|>TZK;@;w%Y-M{pTvd5*3a48}s`x|BaAunfkKb;cO>(SRQV9OpO2#Yo9&Hip$M@ z-=b$}aJ6S{5E%QbvMpXmENNOlZbj2>FA20%T0YsOht7eJ)UaPK39&H5j8f@%3lRty zZ6;>6l#Fkef96@SVzTRRaK?&`Tm71!gAX}xnZ7tGcUvG_A>q!WDG~a+0kLVo-yq*S(YCu# z7KNacY5MGGz{yQQ2P3=j>n$d~J%kRo`Gs#ec?nvp;+4oaLef4bl_(h(^f2ZZKyN$z zWnb+bZ=lp*^C=Q`5<2shW0Dl0*Uha60pgQ+%3l|kEIGkSX3xxRz5nLWw|K%Y;$Z&k z+Xmr8WMF;Q(igWQ*)$M>)iw4s%lxubWgCaTJ}GPL@Z6)P)fiXsPmhEod(VmTXM25U z=KCKyS{?&>s~>=`ZAF62$eJ^aG>Vh$1B;;apBGYr^VdnOy@1G`3h^_+qJs#$?IGR|b@P;8 zvAU{9<|=a<4rZ&36qPPY?g1dM;xn{nP-(0N(_E4!v>7$v$wH)6I!&AMqv+a5tA@y?J8KoCG+;8AQmUF-a*w&ePXs zYzih*Pm%ZbaZ|abBkn=z@-AW*z}tTMFLiZh8kONz+Cn9N0?$F?hlySyk6EzAtZ0k| z>SSVF`4h8Jj~>cftv+k>l92d(%kl#;K1)fnHB-9Qb>(T;>c7D!6wL_sgIfbMo-e+g zSoD;T!D!0hHpyTiGWgHpFni;0DsfnoIQ)7W%x)XpHXH0A8@yZ-=0Fopy$OqG!mrc8 zXzAd#=wJ@v?U? zdUtSYcd+Jn@StFfZZJ+c7z+=^D^6n!rg1x`u~yR}356j|1>q)zVTgk0v*e+@$wHOn zVUuLhdi$Z>_QGxU!-woea-5+99HBaA7{L*((;w2(7jDrXHq;kwEE(EgBHU3jY*r$Y zAq?pdgi3^AV}eLwd`N#>2p%7{92ZG~hjxL5o590SuxLZx(7rsOYTmGEo=DnbXpe_* zyT`DRhe*D6=wPozE6v^Hn(z`EIyFYAxUj&L6(v1)*M-0Ow zM2ZVT1`EQS3&U0mGcQ42|B&(al0khfgZ7K_`ZCV@yEv3v96Hp->kAuij19`!1|8Vs zW!L2G+k`?kp~H2&KG*T~)eB5Rf3;)%Y}fpnU7N^mV6*Fs*-c~Yx?FZ6pUtXfH_soaJ%6B~{y_cr2bu;C)TJJ1 z{N(_v;z0AO;@Zo_4XwrXKNUAUE3V5fZv3s7b+@?rjc;w7Z$p!BeW7oY(6=trx3SZg zb;q}PdaO2itbsFDUozG-K311E*4R77xSU79VM2qMq|r@s zNG4g6Ci$|AD+vtBF-CeDBUg`+dXtfTnvprm$Wvon&0$baGBSD?G;>B;6(c8%ku}H2 z2ZdgV52e_KrZV~Ekg=XVJGex0!%Ar@YLaDBy8C{_?cxYN>Xii9I)=X%=;_Q`_ zS&GAKI(IhLU^caMHk&w`IWe2JbM|WfEY)*1qi>dGHJes5n-e*kwK&`7{kIPPwK`n+ zaA%aH>cwc)3x`z`>r~J0QoVd#H4dekJfIrAS@qIY)mTT>q(`bTP}PKT)p&o^l$X?~ z4b+R5s27e>6I-a~_faqZNR9KMCXY~~RjHS#)L3_F5|0{VN=;x=DfeB|qmyYw#}7c(JE=Nl$n&7QBRey!dmxl((i)Ql=MUOfOiQCbCS= zYnxs!FpWc-CJRiXx0+r`GmUjJP3ka>fte=IP2)+XDU-}7S?0wA=7nR-#5U%6J?7<` z%(&CcXHatxfDP)UvtA*alUqZGv#Q^Xe>#ED$-c?0p~QgIwnoID|p-YLG6 zFOKyTC-sSAti%a5;`m5$%A&?A>AyRnzqAtq{VfB3tqgejIsDy={-wRBa<}r|GVqtm zfb^8i-!kx5%D|$ea3|vA>JuekE0^xd7OO5tTb<7&{_$w(QPT0$-A7k`3{!V&zx$ZF z8x4#m0>7Bmvo*dOLw_jguAxBH@X!@9W> z>Oz%Bzibk6$gqpiqA@;sv8cL#4>6Rhd;e8TUF3Q>^lr2YcXy#-43CZ8mEhjA(S@Fz zTZ)%2)H1~9g-6<8@88_5~>jWQ0{DkYxS^HzPQODZaqj2zYR^T#S}u*OxgI& z$J{tyb(ZBF_r-#$c+Euh!M(aBjqds{bX}QsXU1P%(M5=e9+Sx_;REI|3v!!UKeK@) zU$R4)(J5`~B2fEkDlXsl^@8cKLO}c+VsM{9Xp36!}}(}7TZ*cgRL_l7N*^i-o_{MM7aI>PizwRn@(4fg(-vhyt` z2!1(Xh@lN!aZXpYK-+VcbM0%$`A3OpEhh@+fUqLU)2+3%*!!SbH`_S4BL3|>2bKI1 zRAkzGM4yzD!ym9r32l}2cojDjKB#A@+gam(u^_j98=hI4j~te%WHwvpy~wR0 zx0_qOik+B`oL!VMyR|`O6*j;oD~08)jDleeX>Cn{QYqwZhZUlA=ul$D$ H%Z>j9ik{sb literal 0 HcmV?d00001 diff --git a/test/testfiles/test_parallel_file_1.vtu b/test/testfiles/test_parallel_file_1.vtu new file mode 100644 index 0000000000000000000000000000000000000000..093427b2f13943b47719f2975aaaf7174747d505 GIT binary patch literal 12593 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 A)&Kwi literal 0 HcmV?d00001 From 1c3107a22c046793b3f352f15ebac22b16f347f5 Mon Sep 17 00:00:00 2001 From: David Knapp Date: Fri, 14 Jul 2023 13:58:45 +0200 Subject: [PATCH 10/10] Split VTK_PARALLEL_FILE into two --- src/t8_vtk/t8_vtk_reader.cxx | 4 ++-- src/t8_vtk/t8_vtk_types.h | 3 ++- test/t8_IO/t8_gtest_vtk_reader.cxx | 15 ++++++++++++--- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/t8_vtk/t8_vtk_reader.cxx b/src/t8_vtk/t8_vtk_reader.cxx index 0c9f218100..6e35d279c0 100644 --- a/src/t8_vtk/t8_vtk_reader.cxx +++ b/src/t8_vtk/t8_vtk_reader.cxx @@ -136,7 +136,7 @@ t8_file_to_vtkGrid (const char *filename, case VTK_POLYDATA_FILE: main_proc_read_successful = t8_read_poly (filename, vtkGrid); break; - case VTK_PARALLEL_FILE: + case VTK_PARALLEL_UNSTRUCTURED_FILE: if (!partition) { main_proc_read_successful = t8_read_unstructured (filename, vtkGrid); } @@ -427,7 +427,7 @@ t8_vtk_reader (const char *filename, const int partition, case VTK_POLYDATA_FILE: vtkGrid = vtkSmartPointer < vtkPolyData >::New (); break; - case VTK_PARALLEL_FILE: + case VTK_PARALLEL_UNSTRUCTURED_FILE: vtkGrid = vtkSmartPointer < vtkUnstructuredGrid >::New (); break; default: diff --git a/src/t8_vtk/t8_vtk_types.h b/src/t8_vtk/t8_vtk_types.h index 8d6b52991e..77062edbef 100644 --- a/src/t8_vtk/t8_vtk_types.h +++ b/src/t8_vtk/t8_vtk_types.h @@ -63,7 +63,8 @@ typedef enum vtk_file_type VTK_FILE_ERROR = -1, /* For Testing purpose. */ VTK_UNSTRUCTURED_FILE = 0, VTK_POLYDATA_FILE = 1, - VTK_PARALLEL_FILE = 2, /* All parallel vtk files. */ + VTK_PARALLEL_UNSTRUCTURED_FILE = 2, /* For parallel unstructured files. */ + VTK_PARALLEL_POLYDATA_FILE = 3, VTK_NUM_TYPES } vtk_file_type_t; diff --git a/test/t8_IO/t8_gtest_vtk_reader.cxx b/test/t8_IO/t8_gtest_vtk_reader.cxx index 7d609c3e65..f743326e3e 100644 --- a/test/t8_IO/t8_gtest_vtk_reader.cxx +++ b/test/t8_IO/t8_gtest_vtk_reader.cxx @@ -46,7 +46,7 @@ class vtk_reader : public testing::TestWithParam(GetParam()); main_proc = std::get<2>(GetParam()); - if(file_type == VTK_PARALLEL_FILE && partition){ + if(file_type == VTK_PARALLEL_UNSTRUCTURED_FILE && partition){ GTEST_SKIP(); } } @@ -54,11 +54,12 @@ class vtk_reader : public testing::TestWithParam points = t8_vtk_reader_pointSet (test_files[file], 0, 0,