Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #ifndef RASModel_H
00042 #define RASModel_H
00043
00044 #include <incompressibleTurbulenceModel/turbulenceModel.H>
00045 #include <finiteVolume/volFields.H>
00046 #include <finiteVolume/surfaceFields.H>
00047 #include <finiteVolume/nearWallDist.H>
00048 #include <finiteVolume/fvm.H>
00049 #include <finiteVolume/fvc.H>
00050 #include <finiteVolume/fvMatrices.H>
00051 #include <incompressibleTransportModels/transportModel.H>
00052 #include <OpenFOAM/IOdictionary.H>
00053 #include <OpenFOAM/Switch.H>
00054 #include <finiteVolume/bound.H>
00055 #include <OpenFOAM/autoPtr.H>
00056 #include <OpenFOAM/runTimeSelectionTables.H>
00057
00058
00059
00060 namespace Foam
00061 {
00062 namespace incompressible
00063 {
00064
00065
00066
00067
00068
00069 class RASModel
00070 :
00071 public turbulenceModel,
00072 public IOdictionary
00073 {
00074
00075 protected:
00076
00077
00078
00079
00080 Switch turbulence_;
00081
00082
00083 Switch printCoeffs_;
00084
00085
00086 dictionary coeffDict_;
00087
00088
00089 dimensionedScalar k0_;
00090
00091
00092 dimensionedScalar epsilon0_;
00093
00094
00095 dimensionedScalar epsilonSmall_;
00096
00097
00098 dimensionedScalar omega0_;
00099
00100
00101 dimensionedScalar omegaSmall_;
00102
00103
00104 nearWallDist y_;
00105
00106
00107
00108
00109
00110 virtual void printCoeffs();
00111
00112
00113 private:
00114
00115
00116
00117
00118 RASModel(const RASModel&);
00119
00120
00121 void operator=(const RASModel&);
00122
00123
00124 public:
00125
00126
00127 TypeName("RASModel");
00128
00129
00130
00131
00132 declareRunTimeSelectionTable
00133 (
00134 autoPtr,
00135 RASModel,
00136 dictionary,
00137 (
00138 const volVectorField& U,
00139 const surfaceScalarField& phi,
00140 transportModel& lamTransportModel
00141 ),
00142 (U, phi, lamTransportModel)
00143 );
00144
00145
00146
00147
00148
00149 RASModel
00150 (
00151 const word& type,
00152 const volVectorField& U,
00153 const surfaceScalarField& phi,
00154 transportModel& lamTransportModel
00155 );
00156
00157
00158
00159
00160
00161 static autoPtr<RASModel> New
00162 (
00163 const volVectorField& U,
00164 const surfaceScalarField& phi,
00165 transportModel& lamTransportModel
00166 );
00167
00168
00169
00170 virtual ~RASModel()
00171 {}
00172
00173
00174
00175
00176
00177
00178
00179 const dimensionedScalar& k0() const
00180 {
00181 return k0_;
00182 }
00183
00184
00185
00186 const dimensionedScalar& epsilon0() const
00187 {
00188 return epsilon0_;
00189 }
00190
00191
00192
00193 const dimensionedScalar& epsilonSmall() const
00194 {
00195 return epsilonSmall_;
00196 }
00197
00198
00199
00200 const dimensionedScalar& omega0() const
00201 {
00202 return omega0_;
00203 }
00204
00205
00206
00207 const dimensionedScalar& omegaSmall() const
00208 {
00209 return omegaSmall_;
00210 }
00211
00212
00213 dimensionedScalar& k0()
00214 {
00215 return k0_;
00216 }
00217
00218
00219 dimensionedScalar& epsilon0()
00220 {
00221 return epsilon0_;
00222 }
00223
00224
00225 dimensionedScalar& epsilonSmall()
00226 {
00227 return epsilonSmall_;
00228 }
00229
00230
00231 dimensionedScalar& omega0()
00232 {
00233 return omega0_;
00234 }
00235
00236
00237 dimensionedScalar& omegaSmall()
00238 {
00239 return omegaSmall_;
00240 }
00241
00242
00243 const nearWallDist& y() const
00244 {
00245 return y_;
00246 }
00247
00248
00249 scalar yPlusLam(const scalar kappa, const scalar E) const;
00250
00251
00252 const dictionary& coeffDict() const
00253 {
00254 return coeffDict_;
00255 }
00256
00257
00258
00259 virtual tmp<volScalarField> nut() const = 0;
00260
00261
00262 virtual tmp<volScalarField> nuEff() const
00263 {
00264 return tmp<volScalarField>
00265 (
00266 new volScalarField("nuEff", nut() + nu())
00267 );
00268 }
00269
00270
00271 virtual tmp<volScalarField> k() const = 0;
00272
00273
00274 virtual tmp<volScalarField> epsilon() const = 0;
00275
00276
00277 virtual tmp<volSymmTensorField> R() const = 0;
00278
00279
00280 virtual tmp<volSymmTensorField> devReff() const = 0;
00281
00282
00283 virtual tmp<fvVectorMatrix> divDevReff(volVectorField& U) const = 0;
00284
00285
00286 virtual tmp<scalarField> yPlus
00287 (
00288 const label patchI,
00289 const scalar Cmu
00290 ) const;
00291
00292
00293 virtual void correct() = 0;
00294
00295
00296 virtual bool read() = 0;
00297 };
00298
00299
00300
00301
00302 }
00303 }
00304
00305
00306
00307 #endif
00308
00309