diff --git a/dumux/io/staggeredvtkoutputmodule.hh b/dumux/io/staggeredvtkoutputmodule.hh index cca5ddf6e79108acac09270c882a703a667d03f3..cb298c205776a934b875f42ffc647bed7a9da619 100644 --- a/dumux/io/staggeredvtkoutputmodule.hh +++ b/dumux/io/staggeredvtkoutputmodule.hh @@ -130,7 +130,7 @@ public: void addFaceField(const std::vector<DimVector>& v, const std::string& name) { if (v.size() == this->gridGeom_.gridView().size(1)) - faceFieldVectorDataInfo_.emplace_back(v, name); + faceFieldVectorDataInfo_.emplace_back(v, name); else DUNE_THROW(Dune::RangeError, "Size mismatch of added field!"); } diff --git a/dumux/io/vtkfunction.hh b/dumux/io/vtkfunction.hh index 885ffa7e0a663a134306d3f5b441c0190b936780..e5fc35902cee6cddee33c2f50c0ed522da48fd52 100644 --- a/dumux/io/vtkfunction.hh +++ b/dumux/io/vtkfunction.hh @@ -65,8 +65,9 @@ public: VectorP0VTKFunction(const GridView& gridView, const Mapper& mapper, const F& field, const std::string& name, int nComps) : field_(field), name_(name), nComps_(nComps), mapper_(mapper) { - if (field.size()!=(unsigned int)( gridView.size(/*codim*/0)) ) - DUNE_THROW(Dune::IOError, "VectorP0VTKFunction: size mismatch"); + if (field.size()!=(unsigned int)(mapper.size())) + DUNE_THROW(Dune::IOError, "VectorP0VTKFunction: size mismatch between field " + << name << " (" << field.size() << ") and mapper (" << mapper.size() << ")"); } private: @@ -131,7 +132,8 @@ public: : field_(field), name_(name), nComps_(nComps), mapper_(mapper) { if (field.size()!=(unsigned int)( mapper.size() )) - DUNE_THROW(Dune::IOError, "VectorP1VTKFunction: size mismatch"); + DUNE_THROW(Dune::IOError, "VectorP1VTKFunction: size mismatch between field " + << name << " (" << field.size() << ") and mapper (" << mapper.size() << ")"); } private: @@ -198,8 +200,9 @@ public: VectorP1NonConformingVTKFunction(const GridView& gridView, const Mapper& mapper, const F& field, const std::string& name, int nComps) : field_(field), name_(name), nComps_(nComps), mapper_(mapper) { - if (field.size()!=(unsigned int)( gridView.size(/*codim*/0)) ) - DUNE_THROW(Dune::IOError, "VectorP1NonConformingVTKFunction: size mismatch"); + if (field.size()!=(unsigned int)(mapper.size())) + DUNE_THROW(Dune::IOError, "VectorP1NonConformingVTKFunction: size mismatch between field " + << name << " (" << field.size() << ") and mapper (" << mapper.size() << ")"); } private: diff --git a/dumux/io/vtkoutputmodule.hh b/dumux/io/vtkoutputmodule.hh index e1614b276775d8193460d8d014627ae98a5b4a8e..813f880fb25664d0c5f44026ff6b205d2fbe093f 100644 --- a/dumux/io/vtkoutputmodule.hh +++ b/dumux/io/vtkoutputmodule.hh @@ -85,6 +85,7 @@ class VtkOutputModule using VelocityVector = 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; }; @@ -129,15 +130,6 @@ public: //! Do not call these methods after initialization i.e. _not_ within the time loop ////////////////////////////////////////////////////////////////////////////////////////////// - //! Output a scalar volume variable - //! \param name The name of the vtk field - //! \param f A function taking a VolumeVariables object and returning the desired scalar - DUNE_DEPRECATED_MSG("Will be removed after next release. Please use addVolumeVariable(function, name) instead!") - void addSecondaryVariable(const std::string& name, std::function<Scalar(const VolumeVariables&)>&& f) - { - volVarScalarDataInfo_.push_back(VolVarScalarDataInfo{f, name}); - } - //! Output a scalar volume variable //! \param name The name of the vtk field //! \param f A function taking a VolumeVariables object and returning the desired scalar @@ -279,7 +271,7 @@ private: || addProcessRank) { const auto numCells = gridGeom_.gridView().size(0); - const auto numDofs = gridGeom_.numDofs(); + const auto numDofs = numDofs_(); // get fields for all volume variables if (!volVarScalarDataInfo_.empty()) @@ -452,7 +444,7 @@ private: || addProcessRank) { const auto numCells = gridGeom_.gridView().size(0); - const auto numDofs = gridGeom_.numDofs(); + const auto numDofs = numDofs_(); // get fields for all volume variables if (!volVarScalarDataInfo_.empty()) @@ -594,6 +586,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 + std::size_t numDofs_() const { return gridGeom_.gridView().size(dofCodim); } + const Problem& problem_; const FVGridGeometry& gridGeom_; const GridVariables& gridVariables_; diff --git a/test/freeflow/navierstokes/CMakeLists.txt b/test/freeflow/navierstokes/CMakeLists.txt index 6056f26f402b57379fdd8219829da90708993108..6710a285d346d3294145c8fc1935508d5a669624 100644 --- a/test/freeflow/navierstokes/CMakeLists.txt +++ b/test/freeflow/navierstokes/CMakeLists.txt @@ -1,6 +1,6 @@ add_input_file_links() dune_symlink_to_source_files(FILES convergence.sh) -set(CMAKE_BUILD_TYPE Debug) +set(CMAKE_BUILD_TYPE Release) add_executable(test_closedsystem EXCLUDE_FROM_ALL test_closedsystem.cc) dune_add_test(NAME test_navierstokes_liddrivencavity_re1