Better bounding on topo change
[foam-extend-3.2.git] / src / immersedBoundary / immersedBoundaryTurbulence / wallFunctions / immersedBoundaryEpsilonWallFunctions / immersedBoundaryEpsilonWallFunctionFvPatchScalarField.H
blob5a4bed39b40277a10ac599191062177ef2da8d54
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by the
13     Free Software Foundation, either version 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     Foam::incompressible::RASModels::
26     immersedBoundaryEpsilonWallFunctionFvPatchScalarField
28 Description
29     Boundary condition for epsilon when using wall functions
30     - calculates y+, G, tangential velocity, nut and k
31     - each of calculated values is handled separately by the appropriate
32       boundary condition
33     - epsilon values added directly into the field to act as a constraint
35 SourceFiles
36     immersedBoundaryEpsilonWallFunctionFvPatchScalarField.C
38 \*---------------------------------------------------------------------------*/
40 #ifndef immersedBoundaryEpsilonWallFunctionFvPatchScalarField_H
41 #define immersedBoundaryEpsilonWallFunctionFvPatchScalarField_H
43 #include "immersedBoundaryWallFunctionFvPatchFields.H"
45 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
47 namespace Foam
49 namespace incompressible
51 namespace RASModels
54 /*---------------------------------------------------------------------------*\
55      Class immersedBoundaryEpsilonWallFunctionFvPatchScalarField Declaration
56 \*---------------------------------------------------------------------------*/
58 class immersedBoundaryEpsilonWallFunctionFvPatchScalarField
60     public immersedBoundaryWallFunctionFvPatchScalarField
62     // Private data
64         //- Name of velocity field
65         word UName_;
67         //- Name of turbulence kinetic energy field
68         word kName_;
70         //- Name of turbulence generation field
71         word GName_;
73         //- Name of laminar viscosity field
74         word nuName_;
76         //- Name of turbulent viscosity field
77         word nutName_;
79         //- Cmu coefficient
80         scalar Cmu_;
82         //- Von Karman constant
83         scalar kappa_;
85         //- E coefficient
86         scalar E_;
89 public:
91     //- Runtime type information
92     TypeName("immersedBoundaryEpsilonWallFunction");
95     // Constructors
97         //- Construct from patch and internal field
98         immersedBoundaryEpsilonWallFunctionFvPatchScalarField
99         (
100             const fvPatch&,
101             const DimensionedField<scalar, volMesh>&
102         );
104         //- Construct from patch, internal field and dictionary
105         immersedBoundaryEpsilonWallFunctionFvPatchScalarField
106         (
107             const fvPatch&,
108             const DimensionedField<scalar, volMesh>&,
109             const dictionary&
110         );
112         //- Construct by mapping given
113         //  immersedBoundaryEpsilonWallFunctionFvPatchScalarField
114         //  onto a new patch
115         immersedBoundaryEpsilonWallFunctionFvPatchScalarField
116         (
117             const immersedBoundaryEpsilonWallFunctionFvPatchScalarField&,
118             const fvPatch&,
119             const DimensionedField<scalar, volMesh>&,
120             const fvPatchFieldMapper&
121         );
123         //- Construct as copy
124         immersedBoundaryEpsilonWallFunctionFvPatchScalarField
125         (
126             const immersedBoundaryEpsilonWallFunctionFvPatchScalarField&
127         );
129         //- Construct and return a clone
130         virtual tmp<fvPatchScalarField> clone() const
131         {
132             return tmp<fvPatchScalarField>
133             (
134                 new immersedBoundaryEpsilonWallFunctionFvPatchScalarField
135                 (
136                     *this
137                 )
138             );
139         }
141         //- Construct as copy setting internal field reference
142         immersedBoundaryEpsilonWallFunctionFvPatchScalarField
143         (
144             const immersedBoundaryEpsilonWallFunctionFvPatchScalarField&,
145             const DimensionedField<scalar, volMesh>&
146         );
148         //- Construct and return a clone setting internal field reference
149         virtual tmp<fvPatchScalarField> clone
150         (
151             const DimensionedField<scalar, volMesh>& iF
152         ) const
153         {
154             return tmp<fvPatchScalarField>
155             (
156                 new immersedBoundaryEpsilonWallFunctionFvPatchScalarField
157                 (
158                     *this,
159                     iF
160                 )
161             );
162         }
165     //- Destructor
166     virtual ~immersedBoundaryEpsilonWallFunctionFvPatchScalarField()
167     {}
170     // Member functions
172         // Evaluation functions
174             //- Update the coefficients associated with the patch field
175             virtual void updateCoeffs();
177             //- Evaluate the patchField
178             virtual void evaluate
179             (
180                 const Pstream::commsTypes  = Pstream::blocking
181             );
184         // I-O
186             //- Write
187             void write(Ostream&) const;
191 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
193 } // End namespace RASModels
194 } // End namespace incompressible
195 } // End namespace Foam
197 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
199 #endif
201 // ************************************************************************* //