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 #include "steadyStateDdtScheme.H"
00027 #include <finiteVolume/fvcDiv.H>
00028 #include <finiteVolume/fvMatrices.H>
00029
00030
00031
00032 namespace Foam
00033 {
00034
00035
00036
00037 namespace fv
00038 {
00039
00040
00041
00042 template<class Type>
00043 tmp<GeometricField<Type, fvPatchField, volMesh> >
00044 steadyStateDdtScheme<Type>::fvcDdt
00045 (
00046 const dimensioned<Type>& dt
00047 )
00048 {
00049 return tmp<GeometricField<Type, fvPatchField, volMesh> >
00050 (
00051 new GeometricField<Type, fvPatchField, volMesh>
00052 (
00053 IOobject
00054 (
00055 "ddt("+dt.name()+')',
00056 mesh().time().timeName(),
00057 mesh()
00058 ),
00059 mesh(),
00060 dimensioned<Type>
00061 (
00062 "0",
00063 dt.dimensions()/dimTime,
00064 pTraits<Type>::zero
00065 )
00066 )
00067 );
00068 }
00069
00070
00071 template<class Type>
00072 tmp<GeometricField<Type, fvPatchField, volMesh> >
00073 steadyStateDdtScheme<Type>::fvcDdt
00074 (
00075 const GeometricField<Type, fvPatchField, volMesh>& vf
00076 )
00077 {
00078 return tmp<GeometricField<Type, fvPatchField, volMesh> >
00079 (
00080 new GeometricField<Type, fvPatchField, volMesh>
00081 (
00082 IOobject
00083 (
00084 "ddt("+vf.name()+')',
00085 mesh().time().timeName(),
00086 mesh()
00087 ),
00088 mesh(),
00089 dimensioned<Type>
00090 (
00091 "0",
00092 vf.dimensions()/dimTime,
00093 pTraits<Type>::zero
00094 )
00095 )
00096 );
00097 }
00098
00099
00100 template<class Type>
00101 tmp<GeometricField<Type, fvPatchField, volMesh> >
00102 steadyStateDdtScheme<Type>::fvcDdt
00103 (
00104 const dimensionedScalar& rho,
00105 const GeometricField<Type, fvPatchField, volMesh>& vf
00106 )
00107 {
00108 return tmp<GeometricField<Type, fvPatchField, volMesh> >
00109 (
00110 new GeometricField<Type, fvPatchField, volMesh>
00111 (
00112 IOobject
00113 (
00114 "ddt("+rho.name()+','+vf.name()+')',
00115 mesh().time().timeName(),
00116 mesh()
00117 ),
00118 mesh(),
00119 dimensioned<Type>
00120 (
00121 "0",
00122 rho.dimensions()*vf.dimensions()/dimTime,
00123 pTraits<Type>::zero
00124 )
00125 )
00126 );
00127 }
00128
00129
00130 template<class Type>
00131 tmp<GeometricField<Type, fvPatchField, volMesh> >
00132 steadyStateDdtScheme<Type>::fvcDdt
00133 (
00134 const volScalarField& rho,
00135 const GeometricField<Type, fvPatchField, volMesh>& vf
00136 )
00137 {
00138 return tmp<GeometricField<Type, fvPatchField, volMesh> >
00139 (
00140 new GeometricField<Type, fvPatchField, volMesh>
00141 (
00142 IOobject
00143 (
00144 "ddt("+rho.name()+','+vf.name()+')',
00145 mesh().time().timeName(),
00146 mesh()
00147 ),
00148 mesh(),
00149 dimensioned<Type>
00150 (
00151 "0",
00152 rho.dimensions()*vf.dimensions()/dimTime,
00153 pTraits<Type>::zero
00154 )
00155 )
00156 );
00157 }
00158
00159
00160 template<class Type>
00161 tmp<fvMatrix<Type> >
00162 steadyStateDdtScheme<Type>::fvmDdt
00163 (
00164 GeometricField<Type, fvPatchField, volMesh>& vf
00165 )
00166 {
00167 tmp<fvMatrix<Type> > tfvm
00168 (
00169 new fvMatrix<Type>
00170 (
00171 vf,
00172 vf.dimensions()*dimVol/dimTime
00173 )
00174 );
00175
00176 return tfvm;
00177 }
00178
00179
00180 template<class Type>
00181 tmp<fvMatrix<Type> >
00182 steadyStateDdtScheme<Type>::fvmDdt
00183 (
00184 const dimensionedScalar& rho,
00185 GeometricField<Type, fvPatchField, volMesh>& vf
00186 )
00187 {
00188 tmp<fvMatrix<Type> > tfvm
00189 (
00190 new fvMatrix<Type>
00191 (
00192 vf,
00193 rho.dimensions()*vf.dimensions()*dimVol/dimTime
00194 )
00195 );
00196
00197 return tfvm;
00198 }
00199
00200
00201 template<class Type>
00202 tmp<fvMatrix<Type> >
00203 steadyStateDdtScheme<Type>::fvmDdt
00204 (
00205 const volScalarField& rho,
00206 GeometricField<Type, fvPatchField, volMesh>& vf
00207 )
00208 {
00209 tmp<fvMatrix<Type> > tfvm
00210 (
00211 new fvMatrix<Type>
00212 (
00213 vf,
00214 rho.dimensions()*vf.dimensions()*dimVol/dimTime
00215 )
00216 );
00217
00218 return tfvm;
00219 }
00220
00221
00222 template<class Type>
00223 tmp<typename steadyStateDdtScheme<Type>::fluxFieldType>
00224 steadyStateDdtScheme<Type>::fvcDdtPhiCorr
00225 (
00226 const volScalarField& rA,
00227 const GeometricField<Type, fvPatchField, volMesh>& U,
00228 const fluxFieldType& phi
00229 )
00230 {
00231 return tmp<fluxFieldType>
00232 (
00233 new fluxFieldType
00234 (
00235 IOobject
00236 (
00237 "ddtPhiCorr("
00238 + rA.name() + ',' + U.name() + ',' + phi.name() + ')',
00239 mesh().time().timeName(),
00240 mesh()
00241 ),
00242 mesh(),
00243 dimensioned<typename flux<Type>::type>
00244 (
00245 "0",
00246 rA.dimensions()*phi.dimensions()/dimTime,
00247 pTraits<typename flux<Type>::type>::zero
00248 )
00249 )
00250 );
00251 }
00252
00253
00254 template<class Type>
00255 tmp<typename steadyStateDdtScheme<Type>::fluxFieldType>
00256 steadyStateDdtScheme<Type>::fvcDdtPhiCorr
00257 (
00258 const volScalarField& rA,
00259 const volScalarField& rho,
00260 const GeometricField<Type, fvPatchField, volMesh>& U,
00261 const fluxFieldType& phi
00262 )
00263 {
00264 return tmp<fluxFieldType>
00265 (
00266 new fluxFieldType
00267 (
00268 IOobject
00269 (
00270 "ddtPhiCorr("
00271 + rA.name() + ',' + rho.name()
00272 + ',' + U.name() + ',' + phi.name() + ')',
00273 mesh().time().timeName(),
00274 mesh()
00275 ),
00276 mesh(),
00277 dimensioned<typename flux<Type>::type>
00278 (
00279 "0",
00280 rA.dimensions()*rho.dimensions()*phi.dimensions()/dimTime,
00281 pTraits<typename flux<Type>::type>::zero
00282 )
00283 )
00284 );
00285 }
00286
00287
00288 template<class Type>
00289 tmp<surfaceScalarField> steadyStateDdtScheme<Type>::meshPhi
00290 (
00291 const GeometricField<Type, fvPatchField, volMesh>& vf
00292 )
00293 {
00294 return tmp<surfaceScalarField>
00295 (
00296 new surfaceScalarField
00297 (
00298 IOobject
00299 (
00300 "meshPhi",
00301 mesh().time().timeName(),
00302 mesh()
00303 ),
00304 mesh(),
00305 dimensionedScalar("0", dimVolume/dimTime, 0.0)
00306 )
00307 );
00308 }
00309
00310
00311
00312
00313 }
00314
00315
00316
00317 }
00318
00319