linearUpwindV.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration | Website: https://openfoam.org
5  \\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 Class
25  Foam::linearUpwindV
26 
27 Description
28  linearUpwindV interpolation scheme class derived from upwind and returns
29  upwind weighting factors but also applies an explicit correction.
30 
31 SourceFiles
32  linearUpwindV.C
33 
34 \*---------------------------------------------------------------------------*/
35 
36 #ifndef linearUpwindV_H
37 #define linearUpwindV_H
38 
39 #include "upwind.H"
40 #include "gaussGrad.H"
41 
42 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 
44 namespace Foam
45 {
46 
47 /*---------------------------------------------------------------------------*\
48  Class linearUpwindV Declaration
49 \*---------------------------------------------------------------------------*/
50 
51 template<class Type>
52 class linearUpwindV
53 :
54  public upwind<Type>
55 {
56  // Private Data
57 
58  word gradSchemeName_;
59  tmp<fv::gradScheme<Type>> gradScheme_;
60 
61 
62 public:
63 
64  //- Runtime type information
65  TypeName("linearUpwindV");
66 
67 
68  // Constructors
69 
70  //- Construct from faceFlux
72  (
73  const fvMesh& mesh,
74  const surfaceScalarField& faceFlux
75  );
76 
77  //- Construct from Istream.
78  // The name of the flux field is read from the Istream and looked-up
79  // from the mesh objectRegistry
81  (
82  const fvMesh& mesh,
83  Istream& schemeData
84  );
85 
86  //- Construct from faceFlux and Istream
88  (
89  const fvMesh& mesh,
90  const surfaceScalarField& faceFlux,
91  Istream& schemeData
92  );
93 
94  //- Disallow default bitwise copy construction
95  linearUpwindV(const linearUpwindV&) = delete;
96 
97 
98  // Member Functions
99 
100  //- Return true if this scheme uses an explicit correction
101  virtual bool corrected() const
102  {
103  return true;
104  }
105 
106  //- Return the explicit correction to the face-interpolate
107  virtual tmp<SurfaceField<Type>>
108  correction
109  (
110  const VolField<Type>&
111  ) const;
112 
113 
114  // Member Operators
115 
116  //- Disallow default bitwise assignment
117  void operator=(const linearUpwindV&) = delete;
118 };
119 
120 
121 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
122 
123 } // End namespace Foam
124 
125 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
126 
127 #ifdef NoRepository
128  #include "linearUpwindVTemplates.C"
129 #endif
130 
131 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
132 
133 #endif
134 
135 // ************************************************************************* //
Generic GeometricField class.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
Definition: Istream.H:60
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:99
linearUpwindV interpolation scheme class derived from upwind and returns upwind weighting factors but...
Definition: linearUpwindV.H:54
virtual bool corrected() const
Return true if this scheme uses an explicit correction.
void operator=(const linearUpwindV &)=delete
Disallow default bitwise assignment.
linearUpwindV(const fvMesh &mesh, const surfaceScalarField &faceFlux)
Construct from faceFlux.
TypeName("linearUpwindV")
Runtime type information.
virtual tmp< SurfaceField< Type > > correction(const VolField< Type > &) const
Return the explicit correction to the face-interpolate.
const fvMesh & mesh() const
Return mesh reference.
A class for managing temporary objects.
Definition: tmp.H:55
Upwind interpolation scheme class.
Definition: upwind.H:54
A class for handling words, derived from string.
Definition: word.H:62
Namespace for OpenFOAM.