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
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078 #ifndef kOmegaSST_H
00079 #define kOmegaSST_H
00080
00081 #include <incompressibleRASModels/RASModel.H>
00082 #include <finiteVolume/wallDist.H>
00083
00084
00085
00086 namespace Foam
00087 {
00088 namespace incompressible
00089 {
00090 namespace RASModels
00091 {
00092
00093
00094
00095
00096
00097 class kOmegaSST
00098 :
00099 public RASModel
00100 {
00101
00102
00103
00104 dimensionedScalar alphaK1_;
00105 dimensionedScalar alphaK2_;
00106
00107 dimensionedScalar alphaOmega1_;
00108 dimensionedScalar alphaOmega2_;
00109
00110 dimensionedScalar gamma1_;
00111 dimensionedScalar gamma2_;
00112
00113 dimensionedScalar beta1_;
00114 dimensionedScalar beta2_;
00115
00116 dimensionedScalar betaStar_;
00117
00118 dimensionedScalar a1_;
00119 dimensionedScalar c1_;
00120
00121
00122
00123 wallDist y_;
00124
00125
00126
00127 volScalarField k_;
00128 volScalarField omega_;
00129 volScalarField nut_;
00130
00131
00132
00133
00134 tmp<volScalarField> F1(const volScalarField& CDkOmega) const;
00135 tmp<volScalarField> F2() const;
00136
00137 tmp<volScalarField> blend
00138 (
00139 const volScalarField& F1,
00140 const dimensionedScalar& psi1,
00141 const dimensionedScalar& psi2
00142 ) const
00143 {
00144 return F1*(psi1 - psi2) + psi2;
00145 }
00146
00147 tmp<volScalarField> alphaK
00148 (
00149 const volScalarField& F1
00150 ) const
00151 {
00152 return blend(F1, alphaK1_, alphaK2_);
00153 }
00154
00155 tmp<volScalarField> alphaOmega
00156 (
00157 const volScalarField& F1
00158 ) const
00159 {
00160 return blend(F1, alphaOmega1_, alphaOmega2_);
00161 }
00162
00163 tmp<volScalarField> beta
00164 (
00165 const volScalarField& F1
00166 ) const
00167 {
00168 return blend(F1, beta1_, beta2_);
00169 }
00170
00171 tmp<volScalarField> gamma
00172 (
00173 const volScalarField& F1
00174 ) const
00175 {
00176 return blend(F1, gamma1_, gamma2_);
00177 }
00178
00179
00180 public:
00181
00182
00183 TypeName("kOmegaSST");
00184
00185
00186
00187
00188
00189 kOmegaSST
00190 (
00191 const volVectorField& U,
00192 const surfaceScalarField& phi,
00193 transportModel& transport
00194 );
00195
00196
00197
00198 virtual ~kOmegaSST()
00199 {}
00200
00201
00202
00203
00204
00205 virtual tmp<volScalarField> nut() const
00206 {
00207 return nut_;
00208 }
00209
00210
00211 tmp<volScalarField> DkEff(const volScalarField& F1) const
00212 {
00213 return tmp<volScalarField>
00214 (
00215 new volScalarField("DkEff", alphaK(F1)*nut_ + nu())
00216 );
00217 }
00218
00219
00220 tmp<volScalarField> DomegaEff(const volScalarField& F1) const
00221 {
00222 return tmp<volScalarField>
00223 (
00224 new volScalarField("DomegaEff", alphaOmega(F1)*nut_ + nu())
00225 );
00226 }
00227
00228
00229 virtual tmp<volScalarField> k() const
00230 {
00231 return k_;
00232 }
00233
00234
00235 virtual tmp<volScalarField> omega() const
00236 {
00237 return omega_;
00238 }
00239
00240
00241 virtual tmp<volScalarField> epsilon() const
00242 {
00243 return tmp<volScalarField>
00244 (
00245 new volScalarField
00246 (
00247 IOobject
00248 (
00249 "epsilon",
00250 mesh_.time().timeName(),
00251 mesh_
00252 ),
00253 betaStar_*k_*omega_,
00254 omega_.boundaryField().types()
00255 )
00256 );
00257 }
00258
00259
00260 virtual tmp<volSymmTensorField> R() const;
00261
00262
00263 virtual tmp<volSymmTensorField> devReff() const;
00264
00265
00266 virtual tmp<fvVectorMatrix> divDevReff(volVectorField& U) const;
00267
00268
00269 virtual void correct();
00270
00271
00272 virtual bool read();
00273 };
00274
00275
00276
00277
00278 }
00279 }
00280 }
00281
00282
00283
00284 #endif
00285
00286