Skip to content
Snippets Groups Projects
Commit 7654880a authored by Sander, Oliver's avatar Sander, Oliver
Browse files

Remove homegrown VTKReader, use dune-vtk instead

Simon Praetorius' dune-vtk module has much better support for reading
and writing than my old hacks in dune-gfe.  Let's start adopting
dune-vtk for VTK I/O.

In this initial step, dune-vtk becomes a dependency of dune-gfe,
but only an optional one.  This may change.
parent e58c5599
No related branches found
No related tags found
1 merge request!58Remove homegrown VTKReader, use dune-vtk instead
Pipeline #4977 passed
......@@ -55,18 +55,20 @@ dune:git clang:
- *before
script: duneci-standard-test
dune:git parmg gcc:
dune:git parmg dune-vtk gcc:
image: registry.dune-project.org/docker/ci/dune:git-debian-10-gcc-8-17
before_script:
- *patch-dune-common
- *before
- duneci-install-module https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.mn.tu-dresden.de/paraphase/dune-parmg.git
- duneci-install-module https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.mn.tu-dresden.de/spraetor/dune-vtk.git
script: duneci-standard-test
dune:git parmg clang:
dune:git parmg dune-vtk clang:
image: registry.dune-project.org/docker/ci/dune:git-ubuntu-20.04-clang-10-20
before_script:
- *patch-dune-common
- *before
- duneci-install-module https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.mn.tu-dresden.de/paraphase/dune-parmg.git
- duneci-install-module https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.mn.tu-dresden.de/spraetor/dune-vtk.git
script: duneci-standard-test
......@@ -8,4 +8,4 @@ Version: svn
Maintainer: oliver.sander@tu-dresden.de
#depending on
Depends: dune-grid dune-uggrid dune-istl dune-localfunctions dune-functions dune-solvers dune-fufem dune-elasticity
Suggests: dune-foamgrid dune-parmg
Suggests: dune-foamgrid dune-parmg dune-vtk
// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
// vi: set et ts=4 sw=2 sts=2:
#ifndef DUNE_GFE_VTKREADER_HH
#define DUNE_GFE_VTKREADER_HH
#include <memory>
#include <dune/gfe/vtkfile.hh>
/** \brief Read a grid from a VTK file
*/
template <class GridType>
class VTKReader
{
public:
/** \brief Read a grid from a VTK file */
static std::unique_ptr<GridType> read(std::string filename)
{
constexpr auto dimworld = GridType::dimensionworld;
Dune::GFE::VTKFile vtkFile;
// Read test file from disk
vtkFile.read(filename);
Dune::GridFactory<GridType> factory;
for (const auto& v : vtkFile.points_)
{
// use the first dimworld components as vertex coordinate; discard the rest
Dune::FieldVector<typename GridType::ctype, dimworld> pos;
for (int i=0; i<dimworld; i++)
pos[i] = v[i];
factory.insertVertex(pos);
}
for (size_t i=0; i<vtkFile.cellConnectivity_.size(); i+=3)
{
factory.insertElement(Dune::GeometryTypes::triangle, {vtkFile.cellConnectivity_[i],
vtkFile.cellConnectivity_[i+1],
vtkFile.cellConnectivity_[i+2]});
}
return std::unique_ptr<GridType>(factory.createGrid());
}
};
#endif
......@@ -46,7 +46,6 @@
#include <dune/gfe/nonplanarcosseratshellenergy.hh>
#include <dune/gfe/cosseratvtkwriter.hh>
#include <dune/gfe/cosseratvtkreader.hh>
#include <dune/gfe/vtkreader.hh>
#include <dune/gfe/geodesicfeassembler.hh>
#include <dune/gfe/riemanniantrsolver.hh>
#include <dune/gfe/vertexnormals.hh>
......@@ -54,6 +53,10 @@
#include <dune/gfe/mixedgfeassembler.hh>
#include <dune/gfe/mixedriemanniantrsolver.hh>
#if HAVE_DUNE_VTK
#include <dune/vtk/vtkreader.hh>
#endif
// grid dimension
const int dim = 2;
const int dimworld = 2;
......@@ -203,7 +206,11 @@ int main (int argc, char *argv[]) try
if (suffix == ".msh")
grid = std::shared_ptr<GridType>(GmshReader<GridType>::read(path + "/" + gridFile));
else if (suffix == ".vtu" or suffix == ".vtp")
grid = VTKReader<GridType>::read(path + "/" + gridFile);
#if HAVE_DUNE_VTK
grid = VtkReader<GridType>::createGridFromFile(path + "/" + gridFile);
#else
DUNE_THROW(NotImplemented, "Please install dune-vtk for VTK reading support!");
#endif
}
grid->globalRefine(numLevels-1);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment