From 31d6da9c6be60a159a537f6ac30a3544ebdaa00e Mon Sep 17 00:00:00 2001 From: David Wells Date: Wed, 27 May 2020 11:10:39 -0400 Subject: [PATCH] Remove our deprecated netcdf bindings --- cmake/configure/configure_netcdf.cmake | 20 - cmake/modules/FindNETCDF.cmake | 54 -- doc/doxygen/options.dox.in | 1 - .../incompatibilities/20200527DavidWells-2 | 4 + doc/readme.html | 11 - doc/users/cmake_dealii.html | 1 - doc/users/cmake_user.html | 1 - doc/users/config.sample | 20 - include/deal.II/base/config.h.in | 1 - include/deal.II/base/exceptions.h | 11 - include/deal.II/grid/grid_in.h | 15 +- source/grid/grid_in.cc | 491 +----------------- tests/grid/grid_in.cc | 2 - tests/grid/grid_in_3d.cc | 3 - tests/run_testsuite.cmake | 2 +- 15 files changed, 8 insertions(+), 629 deletions(-) delete mode 100644 cmake/configure/configure_netcdf.cmake delete mode 100644 cmake/modules/FindNETCDF.cmake create mode 100644 doc/news/changes/incompatibilities/20200527DavidWells-2 diff --git a/cmake/configure/configure_netcdf.cmake b/cmake/configure/configure_netcdf.cmake deleted file mode 100644 index 2f89115d97..0000000000 --- a/cmake/configure/configure_netcdf.cmake +++ /dev/null @@ -1,20 +0,0 @@ -## --------------------------------------------------------------------- -## -## Copyright (C) 2012 - 2014 by the deal.II authors -## -## This file is part of the deal.II library. -## -## The deal.II library is free software; you can use it, redistribute -## it, and/or modify it under the terms of the GNU Lesser General -## Public License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## The full text of the license can be found in the file LICENSE.md at -## the top level directory of deal.II. -## -## --------------------------------------------------------------------- - -# -# Configuration for the netcdf library: -# - -CONFIGURE_FEATURE(NETCDF) diff --git a/cmake/modules/FindNETCDF.cmake b/cmake/modules/FindNETCDF.cmake deleted file mode 100644 index 6e98eb92f9..0000000000 --- a/cmake/modules/FindNETCDF.cmake +++ /dev/null @@ -1,54 +0,0 @@ -## --------------------------------------------------------------------- -## -## Copyright (C) 2012 - 2014 by the deal.II authors -## -## This file is part of the deal.II library. -## -## The deal.II library is free software; you can use it, redistribute -## it, and/or modify it under the terms of the GNU Lesser General -## Public License as published by the Free Software Foundation; either -## version 2.1 of the License, or (at your option) any later version. -## The full text of the license can be found in the file LICENSE.md at -## the top level directory of deal.II. -## -## --------------------------------------------------------------------- - -# -# Try to find the NETCDF C and C++ libraries -# -# This module exports -# -# NETCDF_LIBRARIES -# NETCDF_INCLUDE_DIRS -# - -SET(NETCDF_DIR "" CACHE PATH "An optional hint to a NETCDF installation") -SET_IF_EMPTY(NETCDF_DIR "$ENV{NETCDF_DIR}") - -DEAL_II_FIND_PATH(NETCDF_INCLUDE_DIR netcdfcpp.h - HINTS ${NETCDF_DIR} - PATH_SUFFIXES netcdf include - ) - -# -# TODO: -# -# - netcdf might externally depend on hdf5. Check and fix this. -# - separate C++ and C library search -# - -DEAL_II_FIND_LIBRARY(NETCDF_CPLUSPLUS_LIBRARY NAMES netcdf_c++ netcdf_cpp - HINTS ${NETCDF_DIR} - PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib - ) - -DEAL_II_FIND_LIBRARY(NETCDF_C_LIBRARY NAMES netcdf - HINTS ${NETCDF_DIR} - PATH_SUFFIXES lib${LIB_SUFFIX} lib64 lib - ) - -DEAL_II_PACKAGE_HANDLE(NETCDF - LIBRARIES REQUIRED NETCDF_CPLUSPLUS_LIBRARY NETCDF_C_LIBRARY - INCLUDE_DIRS REQUIRED NETCDF_INCLUDE_DIR - CLEAR NETCDF_CPLUSPLUS_LIBRARY NETCDF_C_LIBRARY NETCDF_INCLUDE_DIR - ) diff --git a/doc/doxygen/options.dox.in b/doc/doxygen/options.dox.in index e34c08e1ac..f68e45112c 100644 --- a/doc/doxygen/options.dox.in +++ b/doc/doxygen/options.dox.in @@ -207,7 +207,6 @@ PREDEFINED = DOXYGEN=1 \ DEAL_II_MPI_VERSION_MAJOR=3 \ DEAL_II_MPI_VERSION_MINOR=0 \ DEAL_II_WITH_MUPARSER=1 \ - DEAL_II_WITH_NETCDF=1 \ DEAL_II_WITH_OPENCASCADE=1 \ DEAL_II_WITH_P4EST=1 \ DEAL_II_P4EST_VERSION_MAJOR=2 \ diff --git a/doc/news/changes/incompatibilities/20200527DavidWells-2 b/doc/news/changes/incompatibilities/20200527DavidWells-2 new file mode 100644 index 0000000000..3a8b4352b2 --- /dev/null +++ b/doc/news/changes/incompatibilities/20200527DavidWells-2 @@ -0,0 +1,4 @@ +Removed: The deprecated bindings to the legacy NETCDF C++ library have been +removed. +
+(David Wells, 2020/05/27) diff --git a/doc/readme.html b/doc/readme.html index b37052d0e7..9ee9842e49 100644 --- a/doc/readme.html +++ b/doc/readme.html @@ -526,17 +526,6 @@

-
NetCDF
-
-

- NetCDF is a library that provides services for reading and writing mesh data (and many other things). deal.II can use it to read meshes via one - of the functions of the GridIn class. - NetCDF should be readily packaged by most Linux distributions. To use a self compiled version, pass - -DNETCDF_DIR=/path/to/netcdf to cmake. - The deal.II NetCDF bindings are only compatible with an obsolete version of NetCDF and will be removed in a future release of the library unless newer bindings are contributed. -

-
-
OpenCASCADE diff --git a/doc/users/cmake_dealii.html b/doc/users/cmake_dealii.html index 11088c15b0..63bd88e763 100644 --- a/doc/users/cmake_dealii.html +++ b/doc/users/cmake_dealii.html @@ -466,7 +466,6 @@ DEAL_II_WITH_LAPACK DEAL_II_WITH_METIS DEAL_II_WITH_MPI DEAL_II_WITH_MUPARSER -DEAL_II_WITH_NETCDF DEAL_II_WITH_OPENCASCADE DEAL_II_WITH_P4EST DEAL_II_WITH_PETSC diff --git a/doc/users/cmake_user.html b/doc/users/cmake_user.html index da78db4d29..ef0fa4966e 100644 --- a/doc/users/cmake_user.html +++ b/doc/users/cmake_user.html @@ -856,7 +856,6 @@ DEAL_II_WITH_LAPACK DEAL_II_WITH_METIS DEAL_II_WITH_MPI DEAL_II_WITH_MUPARSER -DEAL_II_WITH_NETCDF DEAL_II_WITH_OPENCASCADE DEAL_II_WITH_P4EST DEAL_II_WITH_PETSC diff --git a/doc/users/config.sample b/doc/users/config.sample index b1eddd3091..c7f66fb934 100644 --- a/doc/users/config.sample +++ b/doc/users/config.sample @@ -355,26 +355,6 @@ # -# -# Netcdf: -# -# SET(DEAL_II_WITH_NETCDF ON CACHE BOOL -# "Build deal.II with support for netcdf" -# ) -# -# Automatic detection: -# -# Specify a hint with CMAKE_PREFIX_PATH or by setting -# SET(NETCDF_DIR "/.../..." CACHE PATH "") -# -# Manual setup: -# -# SET(NETCDF_FOUND TRUE CACHE BOOL "") -# SET(NETCDF_LIBRARIES "library;and;semicolon;separated;list;of;link;interface" CACHE STRING "") -# SET(NETCDF_INCLUDE_DIRS "semicolon;separated;list;of;include;dirs" CACHE STRING "") -# - - # # P4EST: # diff --git a/include/deal.II/base/config.h.in b/include/deal.II/base/config.h.in index bb96f7fe2f..39446a918f 100644 --- a/include/deal.II/base/config.h.in +++ b/include/deal.II/base/config.h.in @@ -51,7 +51,6 @@ #cmakedefine DEAL_II_WITH_METIS #cmakedefine DEAL_II_WITH_MPI #cmakedefine DEAL_II_WITH_MUPARSER -#cmakedefine DEAL_II_WITH_NETCDF #cmakedefine DEAL_II_WITH_OPENCASCADE #cmakedefine DEAL_II_WITH_P4EST #cmakedefine DEAL_II_WITH_PETSC diff --git a/include/deal.II/base/exceptions.h b/include/deal.II/base/exceptions.h index 4f246a3c1a..cdf824d8ad 100644 --- a/include/deal.II/base/exceptions.h +++ b/include/deal.II/base/exceptions.h @@ -1094,17 +1094,6 @@ namespace StandardExceptions "You are attempting to use functionality that is only available " "if deal.II was configured to use MPI."); - /** - * This function requires support for the NetCDF library. - * - * @deprecated Support for NetCDF in deal.II is deprecated. - */ - DeclExceptionMsg( - ExcNeedsNetCDF, - "You are attempting to use functionality that is only available " - "if deal.II was configured to use NetCDF, but cmake did not " - "find a valid NetCDF library."); - /** * This function requires support for the FunctionParser library. */ diff --git a/include/deal.II/grid/grid_in.h b/include/deal.II/grid/grid_in.h index c14680b022..8acf05df8a 100644 --- a/include/deal.II/grid/grid_in.h +++ b/include/deal.II/grid/grid_in.h @@ -40,7 +40,7 @@ struct CellData; /** * This class implements an input mechanism for grid data. It allows to read a * grid structure into a triangulation object. At present, UCD (unstructured - * cell data), DB Mesh, XDA, %Gmsh, Tecplot, NetCDF, UNV, VTK, ASSIMP, and Cubit + * cell data), DB Mesh, XDA, %Gmsh, Tecplot, UNV, VTK, ASSIMP, and Cubit * are supported as input format for grid data. Any numerical data other than * geometric (vertex locations) and topological (how vertices form cells, * faces, and edges) information is ignored, but the readers for the various @@ -327,8 +327,6 @@ public: xda, /// Use read_msh() msh, - /// Use read_netcdf() - netcdf, /// Use read_tecplot() tecplot, /// Use read_vtk() @@ -516,17 +514,6 @@ public: void read_msh(std::istream &in); - /** - * Read grid data from a NetCDF file. The only data format currently - * supported is the TAU grid format. - * - * This function requires the library to be linked with the NetCDF library. - * - * @deprecated Support for NetCDF in deal.II is deprecated. - */ - DEAL_II_DEPRECATED void - read_netcdf(const std::string &filename); - /** * Read grid data from a file containing tecplot ASCII data. This also works * in the absence of any tecplot installation. diff --git a/source/grid/grid_in.cc b/source/grid/grid_in.cc index e4f5d56a00..f47c7efe10 100644 --- a/source/grid/grid_in.cc +++ b/source/grid/grid_in.cc @@ -35,11 +35,6 @@ #include #include - -#ifdef DEAL_II_WITH_NETCDF -# include -#endif - #ifdef DEAL_II_WITH_ASSIMP # include // C++ importer interface # include // Post processing flags @@ -2044,470 +2039,6 @@ GridIn::read_msh(std::istream &in) } -template <> -void -GridIn<1>::read_netcdf(const std::string &) -{ - AssertThrow(false, ExcImpossibleInDim(1)); -} - -template <> -void -GridIn<1, 2>::read_netcdf(const std::string &) -{ - AssertThrow(false, ExcImpossibleInDim(1)); -} - - -template <> -void -GridIn<1, 3>::read_netcdf(const std::string &) -{ - AssertThrow(false, ExcImpossibleInDim(1)); -} - - -template <> -void -GridIn<2, 3>::read_netcdf(const std::string &) -{ - Assert(false, ExcNotImplemented()); -} - -template <> -void -GridIn<2>::read_netcdf(const std::string &filename) -{ -#ifndef DEAL_II_WITH_NETCDF - (void)filename; - AssertThrow(false, ExcNeedsNetCDF()); -#else - const unsigned int dim = 2; - const unsigned int spacedim = 2; - Assert(tria != nullptr, ExcNoTriangulationSelected()); - // this function assumes the TAU - // grid format. - // - // This format stores 2d grids as - // 3d grids. In particular, a 2d - // grid of n_cells quadrilaterals - // in the y=0 plane is duplicated - // to y=1 to build n_cells - // hexaeders. The surface - // quadrilaterals of this 3d grid - // are marked with boundary - // marker. In the following we read - // in all data required, find the - // boundary marker associated with - // the plane y=0, and extract the - // corresponding 2d data to build a - // Triangulation<2>. - - // In the following, we assume that - // the 2d grid lies in the x-z - // plane (y=0). I.e. we choose: - // point[coord]=0, with coord=1 - const unsigned int coord = 1; - // Also x-y-z (0-1-2) point - // coordinates will be transformed - // to x-y (x2d-y2d) coordinates. - // With coord=1 as above, we have - // x-z (0-2) -> (x2d-y2d) - const unsigned int x2d = 0; - const unsigned int y2d = 2; - // For the case, the 2d grid lies - // in x-y or y-z plane instead, the - // following code must be extended - // to find the right value for - // coord, and setting x2d and y2d - // accordingly. - - // First, open the file - NcFile nc(filename.c_str()); - AssertThrow(nc.is_valid(), ExcIO()); - - // then read n_cells - NcDim *elements_dim = nc.get_dim("no_of_elements"); - AssertThrow(elements_dim->is_valid(), ExcIO()); - const unsigned int n_cells = elements_dim->size(); - - // then we read - // int marker(no_of_markers) - NcDim *marker_dim = nc.get_dim("no_of_markers"); - AssertThrow(marker_dim->is_valid(), ExcIO()); - const unsigned int n_markers = marker_dim->size(); - - NcVar *marker_var = nc.get_var("marker"); - AssertThrow(marker_var->is_valid(), ExcIO()); - AssertThrow(marker_var->num_dims() == 1, ExcIO()); - AssertThrow(static_cast(marker_var->get_dim(0)->size()) == - n_markers, - ExcIO()); - - std::vector marker(n_markers); - // use &* to convert - // vector::iterator to int * - marker_var->get(&*marker.begin(), n_markers); - - // next we read - // int boundarymarker_of_surfaces( - // no_of_surfaceelements) - NcDim *bquads_dim = nc.get_dim("no_of_surfacequadrilaterals"); - AssertThrow(bquads_dim->is_valid(), ExcIO()); - const unsigned int n_bquads = bquads_dim->size(); - - NcVar *bmarker_var = nc.get_var("boundarymarker_of_surfaces"); - AssertThrow(bmarker_var->is_valid(), ExcIO()); - AssertThrow(bmarker_var->num_dims() == 1, ExcIO()); - AssertThrow(static_cast(bmarker_var->get_dim(0)->size()) == - n_bquads, - ExcIO()); - - std::vector bmarker(n_bquads); - bmarker_var->get(&*bmarker.begin(), n_bquads); - - // for each marker count the - // number of boundary quads - // which carry this marker - std::map n_bquads_per_bmarker; - for (unsigned int i = 0; i < n_markers; ++i) - { - // the markers should all be - // different - AssertThrow(n_bquads_per_bmarker.find(marker[i]) == - n_bquads_per_bmarker.end(), - ExcIO()); - - n_bquads_per_bmarker[marker[i]] = - count(bmarker.begin(), bmarker.end(), marker[i]); - } - // Note: the n_bquads_per_bmarker - // map could be used to find the - // right coord by finding the - // marker0 such that - // a/ n_bquads_per_bmarker[marker0]==n_cells - // b/ point[coord]==0, - // Condition a/ would hold for at - // least two markers, marker0 and - // marker1, whereas b/ would hold - // for marker0 only. For marker1 we - // then had point[coord]=constant - // with e.g. constant=1 or -1 - - // next we read - // int points_of_surfacequadrilaterals( - // no_of_surfacequadrilaterals, - // points_per_surfacequadrilateral) - NcDim *quad_vertices_dim = nc.get_dim("points_per_surfacequadrilateral"); - AssertThrow(quad_vertices_dim->is_valid(), ExcIO()); - const unsigned int vertices_per_quad = quad_vertices_dim->size(); - AssertThrow(vertices_per_quad == GeometryInfo::vertices_per_cell, - ExcIO()); - - NcVar *vertex_indices_var = nc.get_var("points_of_surfacequadrilaterals"); - AssertThrow(vertex_indices_var->is_valid(), ExcIO()); - AssertThrow(vertex_indices_var->num_dims() == 2, ExcIO()); - AssertThrow(static_cast( - vertex_indices_var->get_dim(0)->size()) == n_bquads, - ExcIO()); - AssertThrow(static_cast( - vertex_indices_var->get_dim(1)->size()) == vertices_per_quad, - ExcIO()); - - std::vector vertex_indices(n_bquads * vertices_per_quad); - vertex_indices_var->get(&*vertex_indices.begin(), - n_bquads, - vertices_per_quad); - - for (const int idx : vertex_indices) - AssertThrow(idx >= 0, ExcIO()); - - // next we read - // double points_xc(no_of_points) - // double points_yc(no_of_points) - // double points_zc(no_of_points) - NcDim *vertices_dim = nc.get_dim("no_of_points"); - AssertThrow(vertices_dim->is_valid(), ExcIO()); - const unsigned int n_vertices = vertices_dim->size(); - - NcVar *points_xc = nc.get_var("points_xc"); - NcVar *points_yc = nc.get_var("points_yc"); - NcVar *points_zc = nc.get_var("points_zc"); - AssertThrow(points_xc->is_valid(), ExcIO()); - AssertThrow(points_yc->is_valid(), ExcIO()); - AssertThrow(points_zc->is_valid(), ExcIO()); - AssertThrow(points_xc->num_dims() == 1, ExcIO()); - AssertThrow(points_yc->num_dims() == 1, ExcIO()); - AssertThrow(points_zc->num_dims() == 1, ExcIO()); - AssertThrow(points_yc->get_dim(0)->size() == static_cast(n_vertices), - ExcIO()); - AssertThrow(points_zc->get_dim(0)->size() == static_cast(n_vertices), - ExcIO()); - AssertThrow(points_xc->get_dim(0)->size() == static_cast(n_vertices), - ExcIO()); - std::vector> point_values( - 3, std::vector(n_vertices)); - points_xc->get(point_values[0].data(), n_vertices); - points_yc->get(point_values[1].data(), n_vertices); - points_zc->get(point_values[2].data(), n_vertices); - - // and fill the vertices - std::vector> vertices(n_vertices); - for (unsigned int i = 0; i < n_vertices; ++i) - { - vertices[i](0) = point_values[x2d][i]; - vertices[i](1) = point_values[y2d][i]; - } - - // For all boundary quads in the - // point[coord]=0 plane add the - // bmarker to zero_plane_markers - std::map zero_plane_markers; - for (unsigned int quad = 0; quad < n_bquads; ++quad) - { - bool zero_plane = true; - for (unsigned int i = 0; i < vertices_per_quad; ++i) - if (point_values[coord][vertex_indices[quad * vertices_per_quad + i]] != - 0) - { - zero_plane = false; - break; - } - - if (zero_plane) - zero_plane_markers[bmarker[quad]] = true; - } - unsigned int sum_of_zero_plane_cells = 0; - for (std::map::const_iterator iter = zero_plane_markers.begin(); - iter != zero_plane_markers.end(); - ++iter) - sum_of_zero_plane_cells += n_bquads_per_bmarker[iter->first]; - AssertThrow(sum_of_zero_plane_cells == n_cells, ExcIO()); - - // fill cells with all quads - // associated with - // zero_plane_markers - std::vector> cells(n_cells); - for (unsigned int quad = 0, cell = 0; quad < n_bquads; ++quad) - { - bool zero_plane = false; - for (std::map::const_iterator iter = - zero_plane_markers.begin(); - iter != zero_plane_markers.end(); - ++iter) - if (bmarker[quad] == iter->first) - { - zero_plane = true; - break; - } - - if (zero_plane) - { - for (unsigned int i = 0; i < vertices_per_quad; ++i) - { - Assert( - point_values[coord] - [vertex_indices[quad * vertices_per_quad + i]] == 0, - ExcNotImplemented()); - cells[cell].vertices[i] = - vertex_indices[quad * vertices_per_quad + i]; - } - ++cell; - } - } - - SubCellData subcelldata; - GridTools::delete_unused_vertices(vertices, cells, subcelldata); - GridReordering::reorder_cells(cells); - tria->create_triangulation_compatibility(vertices, cells, subcelldata); -#endif -} - - -template <> -void -GridIn<3>::read_netcdf(const std::string &filename) -{ -#ifndef DEAL_II_WITH_NETCDF - // do something with the function argument - // to make sure it at least looks used, - // even if it is not - (void)filename; - AssertThrow(false, ExcNeedsNetCDF()); -#else - const unsigned int dim = 3; - const unsigned int spacedim = 3; - Assert(tria != nullptr, ExcNoTriangulationSelected()); - // this function assumes the TAU - // grid format. - - // First, open the file - NcFile nc(filename.c_str()); - AssertThrow(nc.is_valid(), ExcIO()); - - // then read n_cells - NcDim *elements_dim = nc.get_dim("no_of_elements"); - AssertThrow(elements_dim->is_valid(), ExcIO()); - const unsigned int n_cells = elements_dim->size(); - // and n_hexes - NcDim *hexes_dim = nc.get_dim("no_of_hexaeders"); - AssertThrow(hexes_dim->is_valid(), ExcIO()); - const unsigned int n_hexes = hexes_dim->size(); - AssertThrow(n_hexes == n_cells, - ExcMessage("deal.II can handle purely hexaedral grids, only.")); - - // next we read - // int points_of_hexaeders( - // no_of_hexaeders, - // points_per_hexaeder) - NcDim *hex_vertices_dim = nc.get_dim("points_per_hexaeder"); - AssertThrow(hex_vertices_dim->is_valid(), ExcIO()); - const unsigned int vertices_per_hex = hex_vertices_dim->size(); - AssertThrow(vertices_per_hex == GeometryInfo::vertices_per_cell, - ExcIO()); - - NcVar *vertex_indices_var = nc.get_var("points_of_hexaeders"); - AssertThrow(vertex_indices_var->is_valid(), ExcIO()); - AssertThrow(vertex_indices_var->num_dims() == 2, ExcIO()); - AssertThrow(static_cast( - vertex_indices_var->get_dim(0)->size()) == n_cells, - ExcIO()); - AssertThrow(static_cast( - vertex_indices_var->get_dim(1)->size()) == vertices_per_hex, - ExcIO()); - - std::vector vertex_indices(n_cells * vertices_per_hex); - // use &* to convert - // vector::iterator to int * - vertex_indices_var->get(&*vertex_indices.begin(), n_cells, vertices_per_hex); - - for (const int idx : vertex_indices) - AssertThrow(idx >= 0, ExcIO()); - - // next we read - // double points_xc(no_of_points) - // double points_yc(no_of_points) - // double points_zc(no_of_points) - NcDim *vertices_dim = nc.get_dim("no_of_points"); - AssertThrow(vertices_dim->is_valid(), ExcIO()); - const unsigned int n_vertices = vertices_dim->size(); - - NcVar *points_xc = nc.get_var("points_xc"); - NcVar *points_yc = nc.get_var("points_yc"); - NcVar *points_zc = nc.get_var("points_zc"); - AssertThrow(points_xc->is_valid(), ExcIO()); - AssertThrow(points_yc->is_valid(), ExcIO()); - AssertThrow(points_zc->is_valid(), ExcIO()); - AssertThrow(points_xc->num_dims() == 1, ExcIO()); - AssertThrow(points_yc->num_dims() == 1, ExcIO()); - AssertThrow(points_zc->num_dims() == 1, ExcIO()); - AssertThrow(points_yc->get_dim(0)->size() == static_cast(n_vertices), - ExcIO()); - AssertThrow(points_zc->get_dim(0)->size() == static_cast(n_vertices), - ExcIO()); - AssertThrow(points_xc->get_dim(0)->size() == static_cast(n_vertices), - ExcIO()); - std::vector> point_values( - 3, std::vector(n_vertices)); - points_xc->get(point_values[0].data(), n_vertices); - points_yc->get(point_values[1].data(), n_vertices); - points_zc->get(point_values[2].data(), n_vertices); - - // and fill the vertices - std::vector> vertices(n_vertices); - for (unsigned int i = 0; i < n_vertices; ++i) - { - vertices[i](0) = point_values[0][i]; - vertices[i](1) = point_values[1][i]; - vertices[i](2) = point_values[2][i]; - } - - // and cells - std::vector> cells(n_cells); - for (unsigned int cell = 0; cell < n_cells; ++cell) - for (unsigned int i = 0; i < vertices_per_hex; ++i) - cells[cell].vertices[i] = vertex_indices[cell * vertices_per_hex + i]; - - // for setting up the SubCellData - // we read the vertex indices of - // the boundary quadrilaterals and - // their boundary markers - - // first we read - // int points_of_surfacequadrilaterals( - // no_of_surfacequadrilaterals, - // points_per_surfacequadrilateral) - NcDim *quad_vertices_dim = nc.get_dim("points_per_surfacequadrilateral"); - AssertThrow(quad_vertices_dim->is_valid(), ExcIO()); - const unsigned int vertices_per_quad = quad_vertices_dim->size(); - AssertThrow(vertices_per_quad == GeometryInfo::vertices_per_face, - ExcIO()); - - NcVar *bvertex_indices_var = nc.get_var("points_of_surfacequadrilaterals"); - AssertThrow(bvertex_indices_var->is_valid(), ExcIO()); - AssertThrow(bvertex_indices_var->num_dims() == 2, ExcIO()); - const unsigned int n_bquads = bvertex_indices_var->get_dim(0)->size(); - AssertThrow(static_cast( - bvertex_indices_var->get_dim(1)->size()) == - GeometryInfo::vertices_per_face, - ExcIO()); - - std::vector bvertex_indices(n_bquads * vertices_per_quad); - bvertex_indices_var->get(&*bvertex_indices.begin(), - n_bquads, - vertices_per_quad); - - // next we read - // int boundarymarker_of_surfaces( - // no_of_surfaceelements) - NcDim *bquads_dim = nc.get_dim("no_of_surfacequadrilaterals"); - AssertThrow(bquads_dim->is_valid(), ExcIO()); - AssertThrow(static_cast(bquads_dim->size()) == n_bquads, - ExcIO()); - - NcVar *bmarker_var = nc.get_var("boundarymarker_of_surfaces"); - AssertThrow(bmarker_var->is_valid(), ExcIO()); - AssertThrow(bmarker_var->num_dims() == 1, ExcIO()); - AssertThrow(static_cast(bmarker_var->get_dim(0)->size()) == - n_bquads, - ExcIO()); - - std::vector bmarker(n_bquads); - bmarker_var->get(&*bmarker.begin(), n_bquads); - // we only handle boundary - // indicators that fit into an - // types::boundary_id. Also, we don't - // take numbers::internal_face_boundary_id - // as it denotes an internal face - for (const int id : bmarker) - { - Assert(0 <= id && static_cast(id) != - numbers::internal_face_boundary_id, - ExcIO()); - (void)id; - } - - // finally we setup the boundary - // information - SubCellData subcelldata; - subcelldata.boundary_quads.resize(n_bquads); - for (unsigned int i = 0; i < n_bquads; ++i) - { - for (unsigned int v = 0; v < GeometryInfo::vertices_per_face; ++v) - subcelldata.boundary_quads[i].vertices[v] = - bvertex_indices[i * GeometryInfo::vertices_per_face + v]; - subcelldata.boundary_quads[i].boundary_id = - static_cast(bmarker[i]); - } - - GridTools::delete_unused_vertices(vertices, cells, subcelldata); - GridReordering::invert_all_cells_of_negative_grid(vertices, - cells); - GridReordering::reorder_cells(cells); - tria->create_triangulation_compatibility(vertices, cells, subcelldata); -#endif -} - template void @@ -3378,10 +2909,7 @@ GridIn::read(const std::string &filename, Format format) format = parse_format(ext); } } - if (format == netcdf) - read_netcdf(filename); - else - read(in, format); + read(in, format); } @@ -3426,13 +2954,6 @@ GridIn::read(std::istream &in, Format format) read_xda(in); return; - case netcdf: - Assert(false, - ExcMessage("There is no read_netcdf(istream &) function. " - "Use the read_netcdf(string &filename) " - "functions, instead.")); - return; - case tecplot: read_tecplot(in); return; @@ -3475,8 +2996,6 @@ GridIn::default_suffix(const Format format) // UCD. case xda: return ".xda"; - case netcdf: - return ".nc"; case tecplot: return ".dat"; default: @@ -3516,12 +3035,6 @@ GridIn::parse_format(const std::string &format_name) if (format_name == "xda") return xda; - if (format_name == "netcdf") - return netcdf; - - if (format_name == "nc") - return netcdf; - if (format_name == "tecplot") return tecplot; @@ -3551,7 +3064,7 @@ template std::string GridIn::get_format_names() { - return "dbmesh|msh|unv|vtk|vtu|ucd|abaqus|xda|netcdf|tecplot|assimp"; + return "dbmesh|msh|unv|vtk|vtu|ucd|abaqus|xda|tecplot|assimp"; } diff --git a/tests/grid/grid_in.cc b/tests/grid/grid_in.cc index e371c9c7e5..bfa2cf9f05 100644 --- a/tests/grid/grid_in.cc +++ b/tests/grid/grid_in.cc @@ -147,8 +147,6 @@ main() test1<2>(); test2<2>(); - // test3 needs NetCDF - // test3<2> (); filename_resolution(); } diff --git a/tests/grid/grid_in_3d.cc b/tests/grid/grid_in_3d.cc index bbe081e9af..1bf2058dfe 100644 --- a/tests/grid/grid_in_3d.cc +++ b/tests/grid/grid_in_3d.cc @@ -95,7 +95,4 @@ main() test(SOURCE_DIR "/grid_in_3d/evil_2.in"); test(SOURCE_DIR "/grid_in_3d/evil_3.in"); test(SOURCE_DIR "/grid_in_3d/evil_4.in"); - - // test1 needs NetCDF - // test1 (); } diff --git a/tests/run_testsuite.cmake b/tests/run_testsuite.cmake index 45ca1211af..1969527473 100644 --- a/tests/run_testsuite.cmake +++ b/tests/run_testsuite.cmake @@ -273,7 +273,7 @@ FOREACH(_var ${_variables}) IF( _var MATCHES "^(TEST|DEAL_II|ALLOW|WITH|FORCE|COMPONENT)_" OR _var MATCHES "^(DOCUMENTATION|EXAMPLES)" OR _var MATCHES "^(ADOLC|ARPACK|BOOST|OPENCASCADE|MUPARSER|HDF5|METIS|MPI)_" OR - _var MATCHES "^(GINKGO|NETCDF|P4EST|PETSC|SCALAPACK|SLEPC|THREADS|TBB|TRILINOS)_" OR + _var MATCHES "^(GINKGO|P4EST|PETSC|SCALAPACK|SLEPC|THREADS|TBB|TRILINOS)_" OR _var MATCHES "^(UMFPACK|ZLIB|LAPACK|MUPARSER|CUDA)_" OR _var MATCHES "^(CMAKE|DEAL_II)_(C|CXX|Fortran|BUILD)_(COMPILER|FLAGS)" OR _var MATCHES "^CMAKE_BUILD_TYPE$" OR -- 2.39.5