version 3.11-dev
Loading...
Searching...
No Matches
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 using GridGeometry = typename GridVariables::GridGeometry;
34 static constexpr int dimWorld = GridGeometry::GridView::dimensionworld;
35 using ElementVolumeVariables = typename GridVariables::GridVolumeVariables::LocalView;
36 using ElementFluxVarsCache = typename GridVariables::GridFluxVariablesCache::LocalView;
37 using FVElementGeometry = typename GridGeometry::LocalView;
38 using Element = typename GridGeometry::GridView::template Codim<0>::Entity;
39
40public:
41 using VelocityVector = std::vector<Dune::FieldVector<Scalar, dimWorld>>;
42
46 enum class FieldType
47 {
48 element, vertex, automatic
49 };
50
54 VelocityOutput() = default;
55
57 virtual ~VelocityOutput() {};
58
60 virtual bool enableOutput() const { return false; }
61
63 virtual std::string phaseName(int phaseIdx) const { return "none"; }
64
66 virtual FieldType fieldType() const { return FieldType::automatic; }
67
69 virtual int numFluidPhases() const { return 0; }
70
73 virtual void calculateVelocity(VelocityVector& velocity,
74 const Element& element,
75 const FVElementGeometry& fvGeometry,
76 const ElementVolumeVariables& elemVolVars,
77 const ElementFluxVarsCache& elemFluxVarsCache,
78 int phaseIdx) const
79 {}
80};
81
82template<Concept::GridVariables GridVariables>
83class VelocityOutput<GridVariables>
84{
85 using Scalar = typename GridVariables::Scalar;
86 using GridDiscretization = typename GridVariables::GridDiscretization;
87 static constexpr int dimWorld = GridDiscretization::GridView::dimensionworld;
88 using GridVariablesCache = typename GridVariables::GridVariablesCache;
89 using ElementVariables = typename GridVariablesCache::LocalView;
90 using ElementDiscretization = typename GridDiscretization::LocalView;
91 using Element = typename GridDiscretization::GridView::template Codim<0>::Entity;
92
93public:
94 using VelocityVector = std::vector<Dune::FieldVector<Scalar, dimWorld>>;
95
96 enum class FieldType
97 {
98 element, vertex, automatic
99 };
100
101 VelocityOutput() = default;
102
103 virtual ~VelocityOutput() {};
104
105 virtual bool enableOutput() const { return false; }
106
107 virtual std::string phaseName(int phaseIdx) const { return "none"; }
108
109 virtual FieldType fieldType() const { return FieldType::automatic; }
110
111 virtual int numFluidPhases() const { return 0; }
112
113 virtual void calculateVelocity(VelocityVector& velocity,
114 const Element& element,
115 const ElementDiscretization& elemDisc,
116 const ElementVariables& elemVars,
117 int phaseIdx) const
118 {}
119};
120
121} // end namespace Dumux
122
123#endif
virtual FieldType fieldType() const
returns the field type
Definition io/velocityoutput.hh:66
FieldType
A container for possible velocity data types.
Definition io/velocityoutput.hh:47
@ automatic
Definition io/velocityoutput.hh:48
virtual std::string phaseName(int phaseIdx) const
returns the phase name of a given phase index
Definition io/velocityoutput.hh:63
VelocityOutput()=default
Default constructor.
virtual bool enableOutput() const
returns whether or not velocity output is enabled
Definition io/velocityoutput.hh:60
virtual int numFluidPhases() const
returns the number of phases
Definition io/velocityoutput.hh:69
virtual void calculateVelocity(VelocityVector &velocity, const Element &element, const FVElementGeometry &fvGeometry, const ElementVolumeVariables &elemVolVars, const ElementFluxVarsCache &elemFluxVarsCache, int phaseIdx) const
Definition io/velocityoutput.hh:73
virtual ~VelocityOutput()
virtual destructor
Definition io/velocityoutput.hh:57
virtual void calculateVelocity(VelocityVector &velocity, const Element &element, const ElementDiscretization &elemDisc, const ElementVariables &elemVars, int phaseIdx) const
Definition io/velocityoutput.hh:113
std::vector< Dune::FieldVector< Scalar, dimWorld > > VelocityVector
Definition io/velocityoutput.hh:41
Velocity output for implicit (porous media) models.
Definition io/velocityoutput.hh:27
@ automatic
Definition diffmethod.hh:26
Definition adapt.hh:17