linearUpwindV.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | Copyright (C) 2011-2013 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  // Private Member Functions
63 
64  //- Disallow default bitwise copy construct
66 
67  //- Disallow default bitwise assignment
68  void operator=(const linearUpwindV&);
69 
70 
71 public:
72 
73  //- Runtime type information
74  TypeName("linearUpwindV");
75 
76 
77  // Constructors
78 
79  //- Construct from faceFlux
81  (
82  const fvMesh& mesh,
83  const surfaceScalarField& faceFlux
84  )
85  :
86  upwind<Type>(mesh, faceFlux),
87  gradSchemeName_("grad"),
88  gradScheme_
89  (
90  new fv::gaussGrad<Type>(mesh)
91  )
92  {}
93 
94  //- Construct from Istream.
95  // The name of the flux field is read from the Istream and looked-up
96  // from the mesh objectRegistry
98  (
99  const fvMesh& mesh,
100  Istream& schemeData
101  )
102  :
103  upwind<Type>(mesh, schemeData),
104  gradSchemeName_(schemeData),
105  gradScheme_
106  (
107  fv::gradScheme<Type>::New
108  (
109  mesh,
110  mesh.gradScheme(gradSchemeName_)
111  )
112  )
113  {}
114 
115  //- Construct from faceFlux and Istream
117  (
118  const fvMesh& mesh,
119  const surfaceScalarField& faceFlux,
120  Istream& schemeData
121  )
122  :
123  upwind<Type>(mesh, faceFlux, schemeData),
124  gradSchemeName_(schemeData),
125  gradScheme_
126  (
127  fv::gradScheme<Type>::New
128  (
129  mesh,
130  mesh.gradScheme(gradSchemeName_)
131  )
132  )
133  {}
134 
135 
136  // Member Functions
137 
138  //- Return true if this scheme uses an explicit correction
139  virtual bool corrected() const
140  {
141  return true;
142  }
143 
144  //- Return the explicit correction to the face-interpolate
146  correction
147  (
149  ) const;
150 
151 };
152 
153 
154 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
155 
156 } // End namespace Foam
157 
158 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
159 
160 #endif
161 
162 // ************************************************************************* //
Mesh data needed to do the Finite Volume discretisation.
Definition: fvMesh.H:78
virtual bool corrected() const
Return true if this scheme uses an explicit correction.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)...
Definition: Istream.H:57
A class for handling words, derived from string.
Definition: word.H:59
Namespace for OpenFOAM.
TypeName("linearUpwindV")
Runtime type information.
virtual tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > correction(const GeometricField< Type, fvPatchField, volMesh > &) const
Return the explicit correction to the face-interpolate.
Definition: linearUpwindV.C:36
labelList fv(nPoints)
linearUpwindV interpolation scheme class derived from upwind and returns upwind weighting factors but...
Definition: linearUpwindV.H:51
Upwind differencing scheme class.
Definition: upwind.H:51
static tmp< limitedSurfaceInterpolationScheme< Type > > New(const fvMesh &mesh, Istream &schemeData)
Return new tmp interpolation scheme.
A class for managing temporary objects.
Definition: PtrList.H:118