laminar.C
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-2020 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 \*---------------------------------------------------------------------------*/
25 
26 #include "laminar.H"
28 #include "fvMesh.H"
29 #include "fvMatrices.H"
30 #include "Time.H"
31 #include "volFields.H"
32 #include "fvmSup.H"
33 #include "kinematicSingleLayer.H"
35 
36 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
37 
38 namespace Foam
39 {
40 namespace regionModels
41 {
42 namespace surfaceFilmModels
43 {
44 
45 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
46 
47 defineTypeNameAndDebug(laminar, 0);
48 addToRunTimeSelectionTable(filmMomentumTransportModel, laminar, dictionary);
49 
50 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
51 
53 (
55  const dictionary& dict
56 )
57 :
58  filmMomentumTransportModel(type(), film, dict),
59  Cf_(coeffDict_.lookup<scalar>("Cf"))
60 {}
61 
62 
63 // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
64 
66 {}
67 
68 
69 // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
70 
72 {
73  // Evaluate surface velocity assuming parabolic profile
75  (
77  (
78  IOobject::modelName("Us", typeName),
79  1.5*filmModel_.U()
80  )
81  );
82 
83  return tUs;
84 }
85 
86 
88 {
89  return tmp<volScalarField>
90  (
92  (
93  IOobject::modelName("mut", typeName),
96  )
97  );
98 }
99 
100 
102 {}
103 
104 
106 {
107  // local reference to film model
108  const kinematicSingleLayer& film =
109  static_cast<const kinematicSingleLayer&>(filmModel_);
110 
111  // local references to film fields
112  const volScalarField::Internal& mu = film.mu();
113  const volScalarField::Internal& rho = film.rho();
114  const volVectorField::Internal& Uw = film.Uw();
115  const volScalarField::Internal& delta = film.delta();
116  const volVectorField::Internal& Up = film.UPrimary();
117  const volScalarField::Internal& rhop = film.rhoPrimary();
118  const volScalarField::Internal& VbyA = film.VbyA();
119 
120  // Employ simple coeff-based model
121  volScalarField::Internal Cs("Cs", Cf_*rhop*mag(Up - U)/VbyA);
123  (
124  "Cw",
125  mu/((1.0/3.0)*VbyA*delta + 1e-5*mu*film.time().deltaT()/rho)
126  );
127 
128  return
129  (
130  - fvm::Sp(Cs, U) + Cs*Up // surface contribution
131  - fvm::Sp(Cw, U) + Cw*Uw // wall contribution
132  );
133 }
134 
135 
136 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
137 
138 } // End namespace surfaceFilmModels
139 } // End namespace regionModels
140 } // End namespace Foam
141 
142 // ************************************************************************* //
scalar delta
dictionary dict
const volVectorField::Internal & Uw() const
Return the film wall velocity [m/s].
const volScalarField & VbyA() const
Return the cell layer volume/area [m].
virtual tmp< volVectorField::Internal > Us() const
Return the film surface velocity.
Definition: laminar.C:71
static tmp< DimensionedField< Type, GeoMesh > > New(const word &name, const Mesh &mesh, const dimensionSet &)
Return a temporary field constructed from name, mesh.
Kinematic form of single-cell layer surface film model.
A list of keyword definitions, which are a keyword followed by any number of values (e...
Definition: dictionary.H:158
static tmp< GeometricField< scalar, fvPatchField, volMesh > > New(const word &name, const Internal &, const PtrList< fvPatchField< scalar >> &)
Return a temporary field constructed from name,.
const Time & time() const
Return the reference to the time database.
Definition: regionModelI.H:37
const volScalarField & rhoPrimary() const
Density [kg/m^3].
tmp< fvMatrix< Type > > Sp(const volScalarField::Internal &, const GeometricField< Type, fvPatchField, volMesh > &)
laminar(surfaceFilmRegionModel &film, const dictionary &dict)
Construct from surface film model.
Definition: laminar.C:53
addToRunTimeSelectionTable(surfaceFilmRegionModel, kinematicSingleLayer, mesh)
Macros for easy insertion into run-time selection tables.
const volVectorField & UPrimary() const
Velocity [m/s].
const volScalarField & mu() const
Return const access to the dynamic viscosity [Pa.s].
const fvMesh & regionMesh() const
Return the region mesh database.
Definition: regionModelI.H:61
virtual tmp< fvVectorMatrix > Su(volVectorField &U) const
Return the source for the film momentum equation.
Definition: laminar.C:105
virtual const volVectorField & U() const =0
Return the film velocity [m/s].
const volScalarField & delta() const
Return const access to the film thickness [m].
U
Definition: pEqn.H:72
const dimensionedScalar & mu
Atomic mass unit.
const dimensionSet dimLength(0, 1, 0, 0, 0, 0, 0)
Definition: dimensionSets.H:50
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
virtual tmp< volScalarField > mut() const
Return the film turbulence viscosity.
Definition: laminar.C:87
fileType type(const fileName &, const bool checkVariants=true, const bool followLink=true)
Return the file type: directory or file.
Definition: POSIX.C:488
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
virtual void correct()
Correct/update the model.
Definition: laminar.C:101
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
Definition: dimensionSets.H:51
A special matrix type and solver, designed for finite volume solutions of scalar equations.
surfaceFilmRegionModel & filmModel_
Reference to the film surface film model.
dimensioned< scalar > mag(const dimensioned< Type > &)
const doubleScalar e
Elementary charge.
Definition: doubleScalar.H:105
const volScalarField & rho() const
Return the film density [kg/m^3].
static word modelName(Name name, const word &model)
Return the name of the object within the given model.
const dimensionSet dimMass(1, 0, 0, 0, 0, 0, 0)
Definition: dimensionSets.H:49
A class for managing temporary objects.
Definition: PtrList.H:53
defineTypeNameAndDebug(kinematicSingleLayer, 0)
dimensionedScalar deltaT() const
Return time step.
Definition: TimeStateI.H:53
Calculate the matrix for implicit and explicit sources.
Namespace for OpenFOAM.