3.5-git
DUNE for Multi-{Phase, Component, Scale, Physics, ...} flow and transport in porous media
python/io/vtkoutputmodule.hh
Go to the documentation of this file.
1// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2// vi: set et ts=4 sw=4 sts=4:
3/****************************************************************************
4 * See the file COPYING for full copying permissions. *
5 * *
6 * This program is free software: you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License as published by *
8 * the Free Software Foundation, either version 3 of the License, or *
9 * (at your option) any later version. *
10 * *
11 * This program is distributed in the hope that it will be useful, *
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14 * GNU General Public License for more details. *
15 * *
16 * You should have received a copy of the GNU General Public License *
17 * along with this program. If not, see <http://www.gnu.org/licenses/>. *
18 *****************************************************************************/
24#ifndef DUMUX_PYTHON_IO_VTK_OUTPUTMODULE_HH
25#define DUMUX_PYTHON_IO_VTK_OUTPUTMODULE_HH
26
28
29#include <dune/python/pybind11/pybind11.h>
30#include <dune/python/pybind11/stl.h>
31
34
35namespace Dumux::Python {
36
37template <class GridVariables, class SolutionVector, class... options>
38void registerVtkOutputModule(pybind11::handle scope,
39 pybind11::class_<VtkOutputModule<GridVariables, SolutionVector>, options...> cls)
40{
41 using pybind11::operator""_a;
42
44 using VolumeVariables = typename VtkOutputModule::VolumeVariables;
45 Dumux::Python::Impl::registerVolumeVariables<VolumeVariables>(scope);
46
47
48 cls.def(pybind11::init([](const GridVariables& gridVariables,
49 const SolutionVector& sol,
50 const std::string& name){
51 return new VtkOutputModule(gridVariables, sol, name);
52 }));
53
54 using Scalar = double;
55
56 cls.def("addField", [](VtkOutputModule& self, const SolutionVector& sol, const std::string& name){
57 self.addField(sol, name);
58 });
59
60 cls.def("write", [](VtkOutputModule& self, Scalar time){
61 self.write(time);
62 });
63
64 cls.def("addVolumeVariable", [](VtkOutputModule& self,
65 std::function<Scalar(const VolumeVariables&)>&& f,
66 const std::string& name){
67 self.addVolumeVariable(std::move(f), name);
68 });
69
70 using VelocityOutputType = Dumux::VelocityOutput<GridVariables>;
71 cls.def("addVelocityOutput", [](VtkOutputModule& self, std::shared_ptr<VelocityOutputType> velocityOutput){
72 self.addVelocityOutput(velocityOutput);
73 });
74};
75
76
77template<class GridVariables, class SolutionVector>
78void registerVtkOutputModule(pybind11::handle scope, const char *clsName = "VtkOutputModule")
79{
81 pybind11::class_<VtkOutputModule> cls(scope, clsName);
82 registerVtkOutputModule(scope, cls);
83}
84
85} // namespace Dumux::Python
86
87#endif
Definition: python/assembly/fvassembler.hh:30
void registerVtkOutputModule(pybind11::handle scope, pybind11::class_< VtkOutputModule< GridVariables, SolutionVector >, options... > cls)
Definition: python/io/vtkoutputmodule.hh:38
Velocity output for implicit (porous media) models.
Definition: io/velocityoutput.hh:41
void write(double time, Dune::VTK::OutputType type=Dune::VTK::ascii)
Definition: io/vtkoutputmodule.hh:174
void addField(const Vector &v, const std::string &name, Vtk::FieldType fieldType=Vtk::FieldType::automatic)
Add a scalar or vector valued vtk field.
Definition: io/vtkoutputmodule.hh:110
A VTK output module to simplify writing dumux simulation data to VTK format.
Definition: io/vtkoutputmodule.hh:309
VV VolumeVariables
export type of the volume variables for the outputfields
Definition: io/vtkoutputmodule.hh:337
void addVolumeVariable(std::function< Scalar(const VolumeVariables &)> &&f, const std::string &name)
Definition: io/vtkoutputmodule.hh:371
void addVelocityOutput(std::shared_ptr< VelocityOutputType > velocityOutput)
Add a velocity output policy.
Definition: io/vtkoutputmodule.hh:365
Default velocity output policy for porous media models.
A VTK output module to simplify writing dumux simulation data to VTK format.