version 3.11-dev
io/velocityoutput.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// SPDX-FileCopyrightText: Copyright © DuMux Project contributors, see AUTHORS.md in root folder
5// SPDX-License-Identifier: GPL-3.0-or-later
6//
12#ifndef DUMUX_IO_VELOCITYOUTPUT_HH
13#define DUMUX_IO_VELOCITYOUTPUT_HH
14
15#include <vector>
16
17#include <dune/common/fvector.hh>
18#include <dumux/common/concepts/variables_.hh>
19
20namespace Dumux {
21
26template<class GridVariables>
28
29template<Concept::FVGridVariables GridVariables>
30class VelocityOutput<GridVariables>
31{
32 using Scalar = typename GridVariables::Scalar;
33 static constexpr int dimWorld = GridVariables::GridGeometry::GridView::dimensionworld;
34 using ElementVolumeVariables = typename GridVariables::GridVolumeVariables::LocalView;
35 using ElementFluxVarsCache = typename GridVariables::GridFluxVariablesCache::LocalView;
36 using FVElementGeometry = typename GridVariables::GridGeometry::LocalView;
37 using Element = typename GridVariables::GridGeometry::GridView::template Codim<0>::Entity;
38
39public:
40 using VelocityVector = std::vector<Dune::FieldVector<Scalar, dimWorld>>;
41
45 enum class FieldType
46 {
47 element, vertex, automatic
48 };
49
53 VelocityOutput() = default;
54
56 virtual ~VelocityOutput() {};
57
59 virtual bool enableOutput() const { return false; }
60
62 virtual std::string phaseName(int phaseIdx) const { return "none"; }
63
65 virtual FieldType fieldType() const { return FieldType::automatic; }
66
68 virtual int numFluidPhases() const { return 0; }
69
72 virtual void calculateVelocity(VelocityVector& velocity,
73 const Element& element,
74 const FVElementGeometry& fvGeometry,
75 const ElementVolumeVariables& elemVolVars,
76 const ElementFluxVarsCache& elemFluxVarsCache,
77 int phaseIdx) const
78 {}
79};
80
81template<Concept::GridVariables GridVariables>
82class VelocityOutput<GridVariables>
83{
84 using Scalar = typename GridVariables::Scalar;
85 static constexpr int dimWorld = GridVariables::GridGeometry::GridView::dimensionworld;
86 using GridVariablesCache = typename GridVariables::GridVariablesCache;
87 using ElementVariables = typename GridVariablesCache::LocalView;
88 using FVElementGeometry = typename GridVariables::GridGeometry::LocalView;
89 using Element = typename GridVariables::GridGeometry::GridView::template Codim<0>::Entity;
90
91public:
92 using VelocityVector = std::vector<Dune::FieldVector<Scalar, dimWorld>>;
93
94 enum class FieldType
95 {
96 element, vertex, automatic
97 };
98
99 VelocityOutput() = default;
100
101 virtual ~VelocityOutput() {};
102
103 virtual bool enableOutput() const { return false; }
104
105 virtual std::string phaseName(int phaseIdx) const { return "none"; }
106
107 virtual FieldType fieldType() const { return FieldType::automatic; }
108
109 virtual int numFluidPhases() const { return 0; }
110
111 virtual void calculateVelocity(VelocityVector& velocity,
112 const Element& element,
113 const FVElementGeometry& fvGeometry,
114 const ElementVariables& elemVars,
115 int phaseIdx) const
116 {}
117};
118
119} // end namespace Dumux
120
121#endif
virtual FieldType fieldType() const
returns the field type
Definition: io/velocityoutput.hh:65
std::vector< Dune::FieldVector< Scalar, dimWorld > > VelocityVector
Definition: io/velocityoutput.hh:40
FieldType
A container for possible velocity data types.
Definition: io/velocityoutput.hh:46
virtual std::string phaseName(int phaseIdx) const
returns the phase name of a given phase index
Definition: io/velocityoutput.hh:62
VelocityOutput()=default
Default constructor.
virtual bool enableOutput() const
returns whether or not velocity output is enabled
Definition: io/velocityoutput.hh:59
virtual int numFluidPhases() const
returns the number of phases
Definition: io/velocityoutput.hh:68
virtual void calculateVelocity(VelocityVector &velocity, const Element &element, const FVElementGeometry &fvGeometry, const ElementVariables &elemVars, int phaseIdx) const
Definition: io/velocityoutput.hh:111
virtual void calculateVelocity(VelocityVector &velocity, const Element &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars, const ElementFluxVarsCache &elemFluxVarsCache, int phaseIdx) const
Definition: io/velocityoutput.hh:72
virtual ~VelocityOutput()
virtual destructor
Definition: io/velocityoutput.hh:56
Velocity output for implicit (porous media) models.
Definition: io/velocityoutput.hh:27
Definition: adapt.hh:17