diff --git a/dumux/io/vtkoutputmodule.hh b/dumux/io/vtkoutputmodule.hh index 916226f3ac35d970a215c1ae26e9e8cf90b73c88..94b74580ba50584e18ddcdb92d63857292c0d8ff 100644 --- a/dumux/io/vtkoutputmodule.hh +++ b/dumux/io/vtkoutputmodule.hh @@ -81,6 +81,7 @@ class VtkOutputModule using VolVarsVector = Dune::FieldVector<Scalar, dimWorld>; static constexpr bool isBox = FVGridGeometry::discMethod == DiscretizationMethod::box; + static constexpr int dofCodim = isBox ? dim : 0; struct VolVarScalarDataInfo { std::function<Scalar(const VV&)> get; std::string name; }; struct VolVarVectorDataInfo { std::function<VolVarsVector(const VV&)> get; std::string name; }; @@ -277,7 +278,7 @@ private: || addProcessRank) { const auto numCells = fvGridGeometry().gridView().size(0); - const auto numDofs = fvGridGeometry().numDofs(); + const auto numDofs = numDofs_(); // get fields for all volume variables if (!volVarScalarDataInfo_.empty()) @@ -456,7 +457,7 @@ private: || addProcessRank) { const auto numCells = fvGridGeometry().gridView().size(0); - const auto numDofs = fvGridGeometry().numDofs(); + const auto numDofs = numDofs_(); // get fields for all volume variables if (!volVarScalarDataInfo_.empty()) @@ -598,6 +599,9 @@ private: template<class Vector, typename std::enable_if_t<!IsIndexable<decltype(std::declval<Vector>()[0])>::value, int> = 0> std::size_t getNumberOfComponents_(const Vector& v) { return 1; } + //! return the number of dofs, we only support vertex and cell data + std::size_t numDofs_() const { return dofCodim == dim ? fvGridGeometry().vertexMapper().size() : fvGridGeometry().elementMapper().size(); } + const GridVariables& gridVariables_; const SolutionVector& sol_;