diff --git a/src/finiteVolume/finiteVolume/convectionSchemes/gaussConvectionScheme/gaussConvectionScheme.H b/src/finiteVolume/finiteVolume/convectionSchemes/gaussConvectionScheme/gaussConvectionScheme.H index 3776144128174ddd2a819d8938e7d470145ae72b..158ff21a13b974fdd3ea8d7e828607d51389f927 100644 --- a/src/finiteVolume/finiteVolume/convectionSchemes/gaussConvectionScheme/gaussConvectionScheme.H +++ b/src/finiteVolume/finiteVolume/convectionSchemes/gaussConvectionScheme/gaussConvectionScheme.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/CoEulerDdtScheme/CoEulerDdtScheme.C b/src/finiteVolume/finiteVolume/ddtSchemes/CoEulerDdtScheme/CoEulerDdtScheme.C index ec0bcdca259dd782435dac92b99f91c359188d30..8607d49fc1e8dd80f925f82a2a9e67349d0986c9 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/CoEulerDdtScheme/CoEulerDdtScheme.C +++ b/src/finiteVolume/finiteVolume/ddtSchemes/CoEulerDdtScheme/CoEulerDdtScheme.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -368,6 +368,75 @@ CoEulerDdtScheme<Type>::fvcDdt } +template<class Type> +tmp<GeometricField<Type, fvPatchField, volMesh> > +CoEulerDdtScheme<Type>::fvcDdt +( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& vf +) +{ + const volScalarField rDeltaT(CorDeltaT()); + + IOobject ddtIOobject + ( + "ddt("+alpha.name()+','+rho.name()+','+vf.name()+')', + mesh().time().timeName(), + mesh() + ); + + if (mesh().moving()) + { + return tmp<GeometricField<Type, fvPatchField, volMesh> > + ( + new GeometricField<Type, fvPatchField, volMesh> + ( + ddtIOobject, + mesh(), + rDeltaT.dimensions() + *alpha.dimensions()*rho.dimensions()*vf.dimensions(), + rDeltaT.internalField()* + ( + alpha.internalField() + *rho.internalField() + *vf.internalField() + + - alpha.oldTime().internalField() + *rho.oldTime().internalField() + *vf.oldTime().internalField()*mesh().Vsc0()/mesh().Vsc() + ), + rDeltaT.boundaryField()* + ( + alpha.boundaryField() + *rho.boundaryField() + *vf.boundaryField() + + - alpha.oldTime().boundaryField() + *rho.oldTime().boundaryField() + *vf.oldTime().boundaryField() + ) + ) + ); + } + else + { + return tmp<GeometricField<Type, fvPatchField, volMesh> > + ( + new GeometricField<Type, fvPatchField, volMesh> + ( + ddtIOobject, + rDeltaT + *( + alpha*rho*vf + - alpha.oldTime()*rho.oldTime()*vf.oldTime() + ) + ) + ); + } +} + + template<class Type> tmp<fvMatrix<Type> > CoEulerDdtScheme<Type>::fvmDdt @@ -479,6 +548,48 @@ CoEulerDdtScheme<Type>::fvmDdt } +template<class Type> +tmp<fvMatrix<Type> > +CoEulerDdtScheme<Type>::fvmDdt +( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& vf +) +{ + tmp<fvMatrix<Type> > tfvm + ( + new fvMatrix<Type> + ( + vf, + alpha.dimensions()*rho.dimensions()*vf.dimensions()*dimVol/dimTime + ) + ); + fvMatrix<Type>& fvm = tfvm(); + + scalarField rDeltaT(CorDeltaT()().internalField()); + + fvm.diag() = rDeltaT*alpha.internalField()*rho.internalField()*mesh().Vsc(); + + if (mesh().moving()) + { + fvm.source() = rDeltaT + *alpha.oldTime().internalField() + *rho.oldTime().internalField() + *vf.oldTime().internalField()*mesh().Vsc0(); + } + else + { + fvm.source() = rDeltaT + *alpha.oldTime().internalField() + *rho.oldTime().internalField() + *vf.oldTime().internalField()*mesh().Vsc(); + } + + return tfvm; +} + + template<class Type> tmp<typename CoEulerDdtScheme<Type>::fluxFieldType> CoEulerDdtScheme<Type>::fvcDdtUfCorr diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/CoEulerDdtScheme/CoEulerDdtScheme.H b/src/finiteVolume/finiteVolume/ddtSchemes/CoEulerDdtScheme/CoEulerDdtScheme.H index 204a79358714e9fc2246972e3030e156e2269264..e743a0cb4035e14dda39d10ce61697059301d778 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/CoEulerDdtScheme/CoEulerDdtScheme.H +++ b/src/finiteVolume/finiteVolume/ddtSchemes/CoEulerDdtScheme/CoEulerDdtScheme.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -139,6 +139,13 @@ public: const GeometricField<Type, fvPatchField, volMesh>& ); + tmp<GeometricField<Type, fvPatchField, volMesh> > fvcDdt + ( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& psi + ); + tmp<fvMatrix<Type> > fvmDdt ( const GeometricField<Type, fvPatchField, volMesh>& @@ -156,6 +163,13 @@ public: const GeometricField<Type, fvPatchField, volMesh>& ); + tmp<fvMatrix<Type> > fvmDdt + ( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& psi + ); + typedef typename ddtScheme<Type>::fluxFieldType fluxFieldType; tmp<fluxFieldType> fvcDdtUfCorr diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicolsonDdtScheme/CrankNicolsonDdtScheme.C b/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicolsonDdtScheme/CrankNicolsonDdtScheme.C index 739a5488555e1c2ddd290b0d8ae147972375e49e..c9b095fac0d891fe7644ac7e32c163099748f5e7 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicolsonDdtScheme/CrankNicolsonDdtScheme.C +++ b/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicolsonDdtScheme/CrankNicolsonDdtScheme.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -620,6 +620,136 @@ CrankNicolsonDdtScheme<Type>::fvcDdt } +template<class Type> +tmp<GeometricField<Type, fvPatchField, volMesh> > +CrankNicolsonDdtScheme<Type>::fvcDdt +( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& vf +) +{ + DDt0Field<GeometricField<Type, fvPatchField, volMesh> >& ddt0 = + ddt0_<GeometricField<Type, fvPatchField, volMesh> > + ( + "ddt0(" + alpha.name() + ',' + rho.name() + ',' + vf.name() + ')', + alpha.dimensions()*rho.dimensions()*vf.dimensions() + ); + + IOobject ddtIOobject + ( + "ddt(" + alpha.name() + ',' + rho.name() + ',' + vf.name() + ')', + mesh().time().timeName(), + mesh() + ); + + dimensionedScalar rDtCoef = rDtCoef_(ddt0); + + if (mesh().moving()) + { + if (evaluate(ddt0)) + { + scalar rDtCoef0 = rDtCoef0_(ddt0).value(); + + ddt0.internalField() = + ( + rDtCoef0* + ( + mesh().V0() + *alpha.oldTime().internalField() + *rho.oldTime().internalField() + *vf.oldTime().internalField() + + - mesh().V00() + *alpha.oldTime().oldTime().internalField() + *rho.oldTime().oldTime().internalField() + *vf.oldTime().oldTime().internalField() + ) - mesh().V00()*offCentre_(ddt0.internalField()) + )/mesh().V0(); + + ddt0.boundaryField() = + ( + rDtCoef0* + ( + alpha.oldTime().boundaryField() + *rho.oldTime().boundaryField() + *vf.oldTime().boundaryField() + + - alpha.oldTime().oldTime().boundaryField() + *rho.oldTime().oldTime().boundaryField() + *vf.oldTime().oldTime().boundaryField() + ) - offCentre_(ff(ddt0.boundaryField())) + ); + } + + return tmp<GeometricField<Type, fvPatchField, volMesh> > + ( + new GeometricField<Type, fvPatchField, volMesh> + ( + ddtIOobject, + mesh(), + rDtCoef.dimensions() + *alpha.dimensions()*rho.dimensions()*vf.dimensions(), + ( + rDtCoef.value()* + ( + mesh().V() + *alpha.internalField() + *rho.internalField() + *vf.internalField() + + - mesh().V0() + *alpha.oldTime().internalField() + *rho.oldTime().internalField() + *vf.oldTime().internalField() + ) - mesh().V00()*offCentre_(ddt0.internalField()) + )/mesh().V(), + rDtCoef.value()* + ( + alpha.boundaryField() + *rho.boundaryField() + *vf.boundaryField() + + - alpha.oldTime().boundaryField() + *rho.oldTime().boundaryField() + *vf.oldTime().boundaryField() + ) - offCentre_(ff(ddt0.boundaryField())) + ) + ); + } + else + { + if (evaluate(ddt0)) + { + ddt0 = rDtCoef0_(ddt0)* + ( + alpha.oldTime() + *rho.oldTime() + *vf.oldTime() + + - alpha.oldTime().oldTime() + *rho.oldTime().oldTime() + *vf.oldTime().oldTime() + ) - offCentre_(ddt0()); + } + + return tmp<GeometricField<Type, fvPatchField, volMesh> > + ( + new GeometricField<Type, fvPatchField, volMesh> + ( + ddtIOobject, + rDtCoef + *( + alpha*rho*vf + - alpha.oldTime()*rho.oldTime()*vf.oldTime() + ) + - offCentre_(ddt0()) + ) + ); + } +} + + template<class Type> tmp<fvMatrix<Type> > CrankNicolsonDdtScheme<Type>::fvmDdt @@ -874,6 +1004,117 @@ CrankNicolsonDdtScheme<Type>::fvmDdt } +template<class Type> +tmp<fvMatrix<Type> > +CrankNicolsonDdtScheme<Type>::fvmDdt +( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& vf +) +{ + DDt0Field<GeometricField<Type, fvPatchField, volMesh> >& ddt0 = + ddt0_<GeometricField<Type, fvPatchField, volMesh> > + ( + "ddt0(" + alpha.name() + ',' + rho.name() + ',' + vf.name() + ')', + alpha.dimensions()*rho.dimensions()*vf.dimensions() + ); + + tmp<fvMatrix<Type> > tfvm + ( + new fvMatrix<Type> + ( + vf, + alpha.dimensions()*rho.dimensions()*vf.dimensions()*dimVol/dimTime + ) + ); + fvMatrix<Type>& fvm = tfvm(); + + scalar rDtCoef = rDtCoef_(ddt0).value(); + fvm.diag() = rDtCoef*alpha.internalField()*rho.internalField()*mesh().V(); + + vf.oldTime().oldTime(); + alpha.oldTime().oldTime(); + rho.oldTime().oldTime(); + + if (mesh().moving()) + { + if (evaluate(ddt0)) + { + scalar rDtCoef0 = rDtCoef0_(ddt0).value(); + + ddt0.internalField() = + ( + rDtCoef0* + ( + mesh().V0() + *alpha.oldTime().internalField() + *rho.oldTime().internalField() + *vf.oldTime().internalField() + + - mesh().V00() + *alpha.oldTime().oldTime().internalField() + *rho.oldTime().oldTime().internalField() + *vf.oldTime().oldTime().internalField() + ) + - mesh().V00()*offCentre_(ddt0.internalField()) + )/mesh().V0(); + + ddt0.boundaryField() = + ( + rDtCoef0* + ( + alpha.oldTime().boundaryField() + *rho.oldTime().boundaryField() + *vf.oldTime().boundaryField() + + - alpha.oldTime().oldTime().boundaryField() + *rho.oldTime().oldTime().boundaryField() + *vf.oldTime().oldTime().boundaryField() + ) + - offCentre_(ff(ddt0.boundaryField())) + ); + } + + fvm.source() = + ( + rDtCoef + *alpha.internalField() + *rho.internalField() + *vf.oldTime().internalField() + + offCentre_(ddt0.internalField()) + )*mesh().V0(); + } + else + { + if (evaluate(ddt0)) + { + ddt0 = rDtCoef0_(ddt0)* + ( + alpha.oldTime() + *rho.oldTime() + *vf.oldTime() + + - alpha.oldTime().oldTime() + *rho.oldTime().oldTime() + *vf.oldTime().oldTime() + ) - offCentre_(ddt0()); + } + + fvm.source() = + ( + rDtCoef + *alpha.oldTime().internalField() + *rho.oldTime().internalField() + *vf.oldTime().internalField() + + offCentre_(ddt0.internalField()) + )*mesh().V(); + } + + return tfvm; +} + + template<class Type> tmp<typename CrankNicolsonDdtScheme<Type>::fluxFieldType> CrankNicolsonDdtScheme<Type>::fvcDdtUfCorr diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicolsonDdtScheme/CrankNicolsonDdtScheme.H b/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicolsonDdtScheme/CrankNicolsonDdtScheme.H index 94c34b8ea82bd658c54c733f2a819c5352e4774d..e94c8c2c0bf3682575b0aa570ecdf1069ed37e0f 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicolsonDdtScheme/CrankNicolsonDdtScheme.H +++ b/src/finiteVolume/finiteVolume/ddtSchemes/CrankNicolsonDdtScheme/CrankNicolsonDdtScheme.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -210,6 +210,13 @@ public: const GeometricField<Type, fvPatchField, volMesh>& ); + tmp<GeometricField<Type, fvPatchField, volMesh> > fvcDdt + ( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& psi + ); + tmp<fvMatrix<Type> > fvmDdt ( const GeometricField<Type, fvPatchField, volMesh>& @@ -227,6 +234,13 @@ public: const GeometricField<Type, fvPatchField, volMesh>& ); + tmp<fvMatrix<Type> > fvmDdt + ( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& psi + ); + typedef typename ddtScheme<Type>::fluxFieldType fluxFieldType; tmp<fluxFieldType> fvcDdtUfCorr diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/EulerDdtScheme/EulerDdtScheme.C b/src/finiteVolume/finiteVolume/ddtSchemes/EulerDdtScheme/EulerDdtScheme.C index 957524992b5b6b5ca9bda3d000a8de53b56a75d2..a9ba06b6e290c10876217fcd60b6674dcd638d4b 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/EulerDdtScheme/EulerDdtScheme.C +++ b/src/finiteVolume/finiteVolume/ddtSchemes/EulerDdtScheme/EulerDdtScheme.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -257,6 +257,75 @@ EulerDdtScheme<Type>::fvcDdt } +template<class Type> +tmp<GeometricField<Type, fvPatchField, volMesh> > +EulerDdtScheme<Type>::fvcDdt +( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& vf +) +{ + dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT(); + + IOobject ddtIOobject + ( + "ddt("+alpha.name()+','+rho.name()+','+vf.name()+')', + mesh().time().timeName(), + mesh() + ); + + if (mesh().moving()) + { + return tmp<GeometricField<Type, fvPatchField, volMesh> > + ( + new GeometricField<Type, fvPatchField, volMesh> + ( + ddtIOobject, + mesh(), + rDeltaT.dimensions() + *alpha.dimensions()*rho.dimensions()*vf.dimensions(), + rDeltaT.value()* + ( + alpha.internalField() + *rho.internalField() + *vf.internalField() + + - alpha.oldTime().internalField() + *rho.oldTime().internalField() + *vf.oldTime().internalField()*mesh().Vsc0()/mesh().Vsc() + ), + rDeltaT.value()* + ( + alpha.boundaryField() + *rho.boundaryField() + *vf.boundaryField() + + - alpha.oldTime().boundaryField() + *rho.oldTime().boundaryField() + *vf.oldTime().boundaryField() + ) + ) + ); + } + else + { + return tmp<GeometricField<Type, fvPatchField, volMesh> > + ( + new GeometricField<Type, fvPatchField, volMesh> + ( + ddtIOobject, + rDeltaT + *( + alpha*rho*vf + - alpha.oldTime()*rho.oldTime()*vf.oldTime() + ) + ) + ); + } +} + + template<class Type> tmp<fvMatrix<Type> > EulerDdtScheme<Type>::fvmDdt @@ -368,6 +437,48 @@ EulerDdtScheme<Type>::fvmDdt } +template<class Type> +tmp<fvMatrix<Type> > +EulerDdtScheme<Type>::fvmDdt +( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& vf +) +{ + tmp<fvMatrix<Type> > tfvm + ( + new fvMatrix<Type> + ( + vf, + alpha.dimensions()*rho.dimensions()*vf.dimensions()*dimVol/dimTime + ) + ); + fvMatrix<Type>& fvm = tfvm(); + + scalar rDeltaT = 1.0/mesh().time().deltaTValue(); + + fvm.diag() = rDeltaT*alpha.internalField()*rho.internalField()*mesh().Vsc(); + + if (mesh().moving()) + { + fvm.source() = rDeltaT + *alpha.oldTime().internalField() + *rho.oldTime().internalField() + *vf.oldTime().internalField()*mesh().Vsc0(); + } + else + { + fvm.source() = rDeltaT + *alpha.oldTime().internalField() + *rho.oldTime().internalField() + *vf.oldTime().internalField()*mesh().Vsc(); + } + + return tfvm; +} + + template<class Type> tmp<typename EulerDdtScheme<Type>::fluxFieldType> EulerDdtScheme<Type>::fvcDdtUfCorr diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/EulerDdtScheme/EulerDdtScheme.H b/src/finiteVolume/finiteVolume/ddtSchemes/EulerDdtScheme/EulerDdtScheme.H index 1e2b840a136f4bc3401d8cc47d280698c85a5e12..2818fa123f9074e5539e76a93fb410fc1f32e75d 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/EulerDdtScheme/EulerDdtScheme.H +++ b/src/finiteVolume/finiteVolume/ddtSchemes/EulerDdtScheme/EulerDdtScheme.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -117,6 +117,13 @@ public: const GeometricField<Type, fvPatchField, volMesh>& ); + tmp<GeometricField<Type, fvPatchField, volMesh> > fvcDdt + ( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& psi + ); + tmp<fvMatrix<Type> > fvmDdt ( const GeometricField<Type, fvPatchField, volMesh>& @@ -134,6 +141,13 @@ public: const GeometricField<Type, fvPatchField, volMesh>& ); + tmp<fvMatrix<Type> > fvmDdt + ( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& psi + ); + typedef typename ddtScheme<Type>::fluxFieldType fluxFieldType; tmp<fluxFieldType> fvcDdtUfCorr diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/SLTSDdtScheme/SLTSDdtScheme.C b/src/finiteVolume/finiteVolume/ddtSchemes/SLTSDdtScheme/SLTSDdtScheme.C index 95a786c5acc0549a856478f09630da3296048156..955bba080712ea24166695a40995b8878b81f67d 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/SLTSDdtScheme/SLTSDdtScheme.C +++ b/src/finiteVolume/finiteVolume/ddtSchemes/SLTSDdtScheme/SLTSDdtScheme.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -367,6 +367,75 @@ SLTSDdtScheme<Type>::fvcDdt } +template<class Type> +tmp<GeometricField<Type, fvPatchField, volMesh> > +SLTSDdtScheme<Type>::fvcDdt +( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& vf +) +{ + const volScalarField rDeltaT(SLrDeltaT()); + + IOobject ddtIOobject + ( + "ddt("+alpha.name()+','+rho.name()+','+vf.name()+')', + mesh().time().timeName(), + mesh() + ); + + if (mesh().moving()) + { + return tmp<GeometricField<Type, fvPatchField, volMesh> > + ( + new GeometricField<Type, fvPatchField, volMesh> + ( + ddtIOobject, + mesh(), + rDeltaT.dimensions() + *alpha.dimensions()*rho.dimensions()*vf.dimensions(), + rDeltaT.internalField()* + ( + alpha.internalField() + *rho.internalField() + *vf.internalField() + + - alpha.oldTime().internalField() + *rho.oldTime().internalField() + *vf.oldTime().internalField()*mesh().Vsc0()/mesh().Vsc() + ), + rDeltaT.boundaryField()* + ( + alpha.boundaryField() + *rho.boundaryField() + *vf.boundaryField() + + - alpha.oldTime().boundaryField() + *rho.oldTime().boundaryField() + *vf.oldTime().boundaryField() + ) + ) + ); + } + else + { + return tmp<GeometricField<Type, fvPatchField, volMesh> > + ( + new GeometricField<Type, fvPatchField, volMesh> + ( + ddtIOobject, + rDeltaT + *( + alpha*rho*vf + - alpha.oldTime()*rho.oldTime()*vf.oldTime() + ) + ) + ); + } +} + + template<class Type> tmp<fvMatrix<Type> > SLTSDdtScheme<Type>::fvmDdt @@ -481,6 +550,48 @@ SLTSDdtScheme<Type>::fvmDdt } +template<class Type> +tmp<fvMatrix<Type> > +SLTSDdtScheme<Type>::fvmDdt +( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& vf +) +{ + tmp<fvMatrix<Type> > tfvm + ( + new fvMatrix<Type> + ( + vf, + alpha.dimensions()*rho.dimensions()*vf.dimensions()*dimVol/dimTime + ) + ); + fvMatrix<Type>& fvm = tfvm(); + + scalarField rDeltaT(SLrDeltaT()().internalField()); + + fvm.diag() = rDeltaT*alpha.internalField()*rho.internalField()*mesh().Vsc(); + + if (mesh().moving()) + { + fvm.source() = rDeltaT + *alpha.oldTime().internalField() + *rho.oldTime().internalField() + *vf.oldTime().internalField()*mesh().Vsc0(); + } + else + { + fvm.source() = rDeltaT + *alpha.oldTime().internalField() + *rho.oldTime().internalField() + *vf.oldTime().internalField()*mesh().Vsc(); + } + + return tfvm; +} + + template<class Type> tmp<typename SLTSDdtScheme<Type>::fluxFieldType> SLTSDdtScheme<Type>::fvcDdtUfCorr diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/SLTSDdtScheme/SLTSDdtScheme.H b/src/finiteVolume/finiteVolume/ddtSchemes/SLTSDdtScheme/SLTSDdtScheme.H index b420f2b16147f2e590ef9b9c71677c91f37279f1..ea6fdd987e543567c692b75bfd5d360bfb560ef3 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/SLTSDdtScheme/SLTSDdtScheme.H +++ b/src/finiteVolume/finiteVolume/ddtSchemes/SLTSDdtScheme/SLTSDdtScheme.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -140,6 +140,13 @@ public: const GeometricField<Type, fvPatchField, volMesh>& ); + tmp<GeometricField<Type, fvPatchField, volMesh> > fvcDdt + ( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& psi + ); + tmp<fvMatrix<Type> > fvmDdt ( const GeometricField<Type, fvPatchField, volMesh>& @@ -157,6 +164,13 @@ public: const GeometricField<Type, fvPatchField, volMesh>& ); + tmp<fvMatrix<Type> > fvmDdt + ( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& psi + ); + typedef typename ddtScheme<Type>::fluxFieldType fluxFieldType; tmp<fluxFieldType> fvcDdtUfCorr diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/backwardDdtScheme/backwardDdtScheme.C b/src/finiteVolume/finiteVolume/ddtSchemes/backwardDdtScheme/backwardDdtScheme.C index 06116eb6eddbe13226995fdfa5fa9f14830a0972..1474b8c89d93452d66800a1ed3ffc5a505a80d57 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/backwardDdtScheme/backwardDdtScheme.C +++ b/src/finiteVolume/finiteVolume/ddtSchemes/backwardDdtScheme/backwardDdtScheme.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -281,6 +281,7 @@ backwardDdtScheme<Type>::fvcDdt } } + template<class Type> tmp<GeometricField<Type, fvPatchField, volMesh> > backwardDdtScheme<Type>::fvcDdt @@ -356,6 +357,100 @@ backwardDdtScheme<Type>::fvcDdt } +template<class Type> +tmp<GeometricField<Type, fvPatchField, volMesh> > +backwardDdtScheme<Type>::fvcDdt +( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& vf +) +{ + dimensionedScalar rDeltaT = 1.0/mesh().time().deltaT(); + + IOobject ddtIOobject + ( + "ddt("+alpha.name()+','+rho.name()+','+vf.name()+')', + mesh().time().timeName(), + mesh() + ); + + scalar deltaT = deltaT_(); + scalar deltaT0 = deltaT0_(vf); + + scalar coefft = 1 + deltaT/(deltaT + deltaT0); + scalar coefft00 = deltaT*deltaT/(deltaT0*(deltaT + deltaT0)); + scalar coefft0 = coefft + coefft00; + + if (mesh().moving()) + { + return tmp<GeometricField<Type, fvPatchField, volMesh> > + ( + new GeometricField<Type, fvPatchField, volMesh> + ( + ddtIOobject, + mesh(), + rDeltaT.dimensions() + *alpha.dimensions()*rho.dimensions()*vf.dimensions(), + rDeltaT.value()* + ( + coefft + *alpha.internalField() + *rho.internalField() + *vf.internalField() - + ( + coefft0 + *alpha.oldTime().internalField() + *rho.oldTime().internalField() + *vf.oldTime().internalField()*mesh().V0() + + - coefft00 + *alpha.oldTime().oldTime().internalField() + *rho.oldTime().oldTime().internalField() + *vf.oldTime().oldTime().internalField()*mesh().V00() + )/mesh().V() + ), + rDeltaT.value()* + ( + coefft + *alpha.boundaryField() + *rho.boundaryField() + *vf.boundaryField() - + ( + coefft0 + *alpha.oldTime().boundaryField() + *rho.oldTime().boundaryField() + *vf.oldTime().boundaryField() + + - coefft00 + *alpha.oldTime().oldTime().boundaryField() + *rho.oldTime().oldTime().boundaryField() + *vf.oldTime().oldTime().boundaryField() + ) + ) + ) + ); + } + else + { + return tmp<GeometricField<Type, fvPatchField, volMesh> > + ( + new GeometricField<Type, fvPatchField, volMesh> + ( + ddtIOobject, + rDeltaT* + ( + coefft*alpha*rho*vf + - coefft0*alpha.oldTime()*rho.oldTime()*vf.oldTime() + + coefft00*alpha.oldTime().oldTime() + *rho.oldTime().oldTime()*vf.oldTime().oldTime() + ) + ) + ); + } +} + + template<class Type> tmp<fvMatrix<Type> > backwardDdtScheme<Type>::fvmDdt @@ -512,6 +607,72 @@ backwardDdtScheme<Type>::fvmDdt } +template<class Type> +tmp<fvMatrix<Type> > +backwardDdtScheme<Type>::fvmDdt +( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& vf +) +{ + tmp<fvMatrix<Type> > tfvm + ( + new fvMatrix<Type> + ( + vf, + alpha.dimensions()*rho.dimensions()*vf.dimensions()*dimVol/dimTime + ) + ); + fvMatrix<Type>& fvm = tfvm(); + + scalar rDeltaT = 1.0/deltaT_(); + + scalar deltaT = deltaT_(); + scalar deltaT0 = deltaT0_(vf); + + scalar coefft = 1 + deltaT/(deltaT + deltaT0); + scalar coefft00 = deltaT*deltaT/(deltaT0*(deltaT + deltaT0)); + scalar coefft0 = coefft + coefft00; + + fvm.diag() = + (coefft*rDeltaT)*alpha.internalField()*rho.internalField()*mesh().V(); + + if (mesh().moving()) + { + fvm.source() = rDeltaT* + ( + coefft0 + *alpha.oldTime().internalField() + *rho.oldTime().internalField() + *vf.oldTime().internalField()*mesh().V0() + + - coefft00 + *alpha.oldTime().oldTime().internalField() + *rho.oldTime().oldTime().internalField() + *vf.oldTime().oldTime().internalField()*mesh().V00() + ); + } + else + { + fvm.source() = rDeltaT*mesh().V()* + ( + coefft0 + *alpha.oldTime().internalField() + *rho.oldTime().internalField() + *vf.oldTime().internalField() + + - coefft00 + *alpha.oldTime().oldTime().internalField() + *rho.oldTime().oldTime().internalField() + *vf.oldTime().oldTime().internalField() + ); + } + + return tfvm; +} + + template<class Type> tmp<typename backwardDdtScheme<Type>::fluxFieldType> backwardDdtScheme<Type>::fvcDdtUfCorr diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/backwardDdtScheme/backwardDdtScheme.H b/src/finiteVolume/finiteVolume/ddtSchemes/backwardDdtScheme/backwardDdtScheme.H index 425e78ece6504d666665e5230b1a58dde7df3c9e..9855ad55997ba62bd6182f13c9c4c72fcbe1e412 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/backwardDdtScheme/backwardDdtScheme.H +++ b/src/finiteVolume/finiteVolume/ddtSchemes/backwardDdtScheme/backwardDdtScheme.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -128,6 +128,13 @@ public: const GeometricField<Type, fvPatchField, volMesh>& ); + tmp<GeometricField<Type, fvPatchField, volMesh> > fvcDdt + ( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& psi + ); + tmp<fvMatrix<Type> > fvmDdt ( const GeometricField<Type, fvPatchField, volMesh>& @@ -145,6 +152,13 @@ public: const GeometricField<Type, fvPatchField, volMesh>& ); + tmp<fvMatrix<Type> > fvmDdt + ( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& psi + ); + typedef typename ddtScheme<Type>::fluxFieldType fluxFieldType; tmp<fluxFieldType> fvcDdtUfCorr diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/boundedDdtScheme/boundedDdtScheme.C b/src/finiteVolume/finiteVolume/ddtSchemes/boundedDdtScheme/boundedDdtScheme.C index 2edefd19b29d8a459c0d535c56940de443d6fa56..d5ea7dbcbb1480f02c141a6d74624df519f6f88a 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/boundedDdtScheme/boundedDdtScheme.C +++ b/src/finiteVolume/finiteVolume/ddtSchemes/boundedDdtScheme/boundedDdtScheme.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -87,6 +87,19 @@ boundedDdtScheme<Type>::fvcDdt } +template<class Type> +tmp<GeometricField<Type, fvPatchField, volMesh> > +boundedDdtScheme<Type>::fvcDdt +( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& vf +) +{ + return scheme_().fvcDdt(alpha, rho, vf) - fvc::ddt(alpha, rho)*vf; +} + + template<class Type> tmp<fvMatrix<Type> > boundedDdtScheme<Type>::fvmDdt @@ -122,6 +135,19 @@ boundedDdtScheme<Type>::fvmDdt } +template<class Type> +tmp<fvMatrix<Type> > +boundedDdtScheme<Type>::fvmDdt +( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& vf +) +{ + return scheme_().fvmDdt(alpha, rho, vf) - fvm::Sp(fvc::ddt(alpha, rho), vf); +} + + template<class Type> tmp<typename boundedDdtScheme<Type>::fluxFieldType> boundedDdtScheme<Type>::fvcDdtUfCorr diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/boundedDdtScheme/boundedDdtScheme.H b/src/finiteVolume/finiteVolume/ddtSchemes/boundedDdtScheme/boundedDdtScheme.H index db309c8c8150901e5b83376b68aaabe8d9be4e34..741e7c1e0fa4833bf5f0f5bd1ed721dd93cb64db 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/boundedDdtScheme/boundedDdtScheme.H +++ b/src/finiteVolume/finiteVolume/ddtSchemes/boundedDdtScheme/boundedDdtScheme.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -126,6 +126,13 @@ public: const GeometricField<Type, fvPatchField, volMesh>& ); + tmp<GeometricField<Type, fvPatchField, volMesh> > fvcDdt + ( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& psi + ); + tmp<fvMatrix<Type> > fvmDdt ( const GeometricField<Type, fvPatchField, volMesh>& @@ -143,6 +150,13 @@ public: const GeometricField<Type, fvPatchField, volMesh>& ); + tmp<fvMatrix<Type> > fvmDdt + ( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& psi + ); + typedef typename ddtScheme<Type>::fluxFieldType fluxFieldType; tmp<fluxFieldType> fvcDdtUfCorr diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/ddtScheme/ddtScheme.C b/src/finiteVolume/finiteVolume/ddtSchemes/ddtScheme/ddtScheme.C index ccfa56538e78e90e98f95bca4e03e5b2234e8237..c8e0ce6fa6f968e823f9f5962b9c0394dfa8797c 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/ddtScheme/ddtScheme.C +++ b/src/finiteVolume/finiteVolume/ddtSchemes/ddtScheme/ddtScheme.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -26,6 +26,7 @@ License #include "fv.H" #include "HashTable.H" #include "surfaceInterpolate.H" +#include "fvMatrix.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -95,6 +96,45 @@ ddtScheme<Type>::~ddtScheme() // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +template<class Type> +tmp<GeometricField<Type, fvPatchField, volMesh> > ddtScheme<Type>::fvcDdt +( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& vf +) +{ + notImplemented("fvmDdt(alpha, rho, psi"); + + return tmp<GeometricField<Type, fvPatchField, volMesh> > + ( + GeometricField<Type, fvPatchField, volMesh>::null() + ); +} + + +template<class Type> +tmp<fvMatrix<Type> > ddtScheme<Type>::fvmDdt +( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& vf +) +{ + notImplemented("fvmDdt(alpha, rho, psi"); + + return tmp<fvMatrix<Type> > + ( + new fvMatrix<Type> + ( + vf, + alpha.dimensions()*rho.dimensions() + *vf.dimensions()*dimVol/dimTime + ) + ); +} + + template<class Type> tmp<surfaceScalarField> ddtScheme<Type>::fvcDdtPhiCoeff ( diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/ddtScheme/ddtScheme.H b/src/finiteVolume/finiteVolume/ddtSchemes/ddtScheme/ddtScheme.H index ceb6b1d63ac63a833bfadf21d183db662fad40f8..dccf7f9619d9febffd6713fbe15e962c4d4c15b0 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/ddtScheme/ddtScheme.H +++ b/src/finiteVolume/finiteVolume/ddtSchemes/ddtScheme/ddtScheme.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -160,6 +160,13 @@ public: const GeometricField<Type, fvPatchField, volMesh>& ) = 0; + virtual tmp<GeometricField<Type, fvPatchField, volMesh> > fvcDdt + ( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& + ) = 0; + virtual tmp<fvMatrix<Type> > fvmDdt ( const GeometricField<Type, fvPatchField, volMesh>& @@ -177,6 +184,12 @@ public: const GeometricField<Type, fvPatchField, volMesh>& ) = 0; + virtual tmp<fvMatrix<Type> > fvmDdt + ( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& vf + ) = 0; typedef GeometricField < diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/localEulerDdtScheme/localEulerDdtScheme.C b/src/finiteVolume/finiteVolume/ddtSchemes/localEulerDdtScheme/localEulerDdtScheme.C index ed5c3f0f3495dbd4cd86cb9653814cae8383e9ef..e1c0ea5e482cdfc34df1b5359428c610637cf880 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/localEulerDdtScheme/localEulerDdtScheme.C +++ b/src/finiteVolume/finiteVolume/ddtSchemes/localEulerDdtScheme/localEulerDdtScheme.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -265,6 +265,75 @@ localEulerDdtScheme<Type>::fvcDdt } +template<class Type> +tmp<GeometricField<Type, fvPatchField, volMesh> > +localEulerDdtScheme<Type>::fvcDdt +( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& vf +) +{ + const volScalarField& rDeltaT = localRDeltaT(); + + IOobject ddtIOobject + ( + "ddt("+alpha.name()+','+rho.name()+','+vf.name()+')', + mesh().time().timeName(), + mesh() + ); + + if (mesh().moving()) + { + return tmp<GeometricField<Type, fvPatchField, volMesh> > + ( + new GeometricField<Type, fvPatchField, volMesh> + ( + ddtIOobject, + mesh(), + rDeltaT.dimensions() + *alpha.dimensions()*rho.dimensions()*vf.dimensions(), + rDeltaT.internalField()* + ( + alpha.internalField() + *rho.internalField() + *vf.internalField() + + - alpha.oldTime().internalField() + *rho.oldTime().internalField() + *vf.oldTime().internalField()*mesh().Vsc0()/mesh().Vsc() + ), + rDeltaT.boundaryField()* + ( + alpha.boundaryField() + *rho.boundaryField() + *vf.boundaryField() + + - alpha.oldTime().boundaryField() + *rho.oldTime().boundaryField() + *vf.oldTime().boundaryField() + ) + ) + ); + } + else + { + return tmp<GeometricField<Type, fvPatchField, volMesh> > + ( + new GeometricField<Type, fvPatchField, volMesh> + ( + ddtIOobject, + rDeltaT + *( + alpha*rho*vf + - alpha.oldTime()*rho.oldTime()*vf.oldTime() + ) + ) + ); + } +} + + template<class Type> tmp<fvMatrix<Type> > localEulerDdtScheme<Type>::fvmDdt @@ -376,6 +445,48 @@ localEulerDdtScheme<Type>::fvmDdt } +template<class Type> +tmp<fvMatrix<Type> > +localEulerDdtScheme<Type>::fvmDdt +( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& vf +) +{ + tmp<fvMatrix<Type> > tfvm + ( + new fvMatrix<Type> + ( + vf, + alpha.dimensions()*rho.dimensions()*vf.dimensions()*dimVol/dimTime + ) + ); + fvMatrix<Type>& fvm = tfvm(); + + const scalarField& rDeltaT = localRDeltaT().internalField(); + + fvm.diag() = rDeltaT*alpha.internalField()*rho.internalField()*mesh().Vsc(); + + if (mesh().moving()) + { + fvm.source() = rDeltaT + *alpha.oldTime().internalField() + *rho.oldTime().internalField() + *vf.oldTime().internalField()*mesh().Vsc0(); + } + else + { + fvm.source() = rDeltaT + *alpha.oldTime().internalField() + *rho.oldTime().internalField() + *vf.oldTime().internalField()*mesh().Vsc(); + } + + return tfvm; +} + + template<class Type> tmp<typename localEulerDdtScheme<Type>::fluxFieldType> localEulerDdtScheme<Type>::fvcDdtUfCorr diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/localEulerDdtScheme/localEulerDdtScheme.H b/src/finiteVolume/finiteVolume/ddtSchemes/localEulerDdtScheme/localEulerDdtScheme.H index 50aed99d523ddb8c10751d8c10f43422db1f4fd6..dc7bb0c79ba7e4beff268e04d817c57a80051ca0 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/localEulerDdtScheme/localEulerDdtScheme.H +++ b/src/finiteVolume/finiteVolume/ddtSchemes/localEulerDdtScheme/localEulerDdtScheme.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -136,6 +136,13 @@ public: const GeometricField<Type, fvPatchField, volMesh>& ); + tmp<GeometricField<Type, fvPatchField, volMesh> > fvcDdt + ( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& psi + ); + tmp<fvMatrix<Type> > fvmDdt ( const GeometricField<Type, fvPatchField, volMesh>& @@ -153,6 +160,13 @@ public: const GeometricField<Type, fvPatchField, volMesh>& ); + tmp<fvMatrix<Type> > fvmDdt + ( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& psi + ); + typedef typename ddtScheme<Type>::fluxFieldType fluxFieldType; tmp<fluxFieldType> fvcDdtUfCorr diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/steadyStateDdtScheme/steadyStateDdtScheme.C b/src/finiteVolume/finiteVolume/ddtSchemes/steadyStateDdtScheme/steadyStateDdtScheme.C index f21a6a0b6f5cb85365dcfc61f73099a851edc9a5..fb695f1b4d828b08754deeddbc460765cb82ba8d 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/steadyStateDdtScheme/steadyStateDdtScheme.C +++ b/src/finiteVolume/finiteVolume/ddtSchemes/steadyStateDdtScheme/steadyStateDdtScheme.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -157,6 +157,37 @@ steadyStateDdtScheme<Type>::fvcDdt } +template<class Type> +tmp<GeometricField<Type, fvPatchField, volMesh> > +steadyStateDdtScheme<Type>::fvcDdt +( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& vf +) +{ + return tmp<GeometricField<Type, fvPatchField, volMesh> > + ( + new GeometricField<Type, fvPatchField, volMesh> + ( + IOobject + ( + "ddt("+alpha.name()+','+rho.name()+','+vf.name()+')', + mesh().time().timeName(), + mesh() + ), + mesh(), + dimensioned<Type> + ( + "0", + rho.dimensions()*vf.dimensions()/dimTime, + pTraits<Type>::zero + ) + ) + ); +} + + template<class Type> tmp<fvMatrix<Type> > steadyStateDdtScheme<Type>::fvmDdt @@ -219,6 +250,28 @@ steadyStateDdtScheme<Type>::fvmDdt } +template<class Type> +tmp<fvMatrix<Type> > +steadyStateDdtScheme<Type>::fvmDdt +( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& vf +) +{ + tmp<fvMatrix<Type> > tfvm + ( + new fvMatrix<Type> + ( + vf, + alpha.dimensions()*rho.dimensions()*vf.dimensions()*dimVol/dimTime + ) + ); + + return tfvm; +} + + template<class Type> tmp<typename steadyStateDdtScheme<Type>::fluxFieldType> steadyStateDdtScheme<Type>::fvcDdtUfCorr diff --git a/src/finiteVolume/finiteVolume/ddtSchemes/steadyStateDdtScheme/steadyStateDdtScheme.H b/src/finiteVolume/finiteVolume/ddtSchemes/steadyStateDdtScheme/steadyStateDdtScheme.H index 4512d0531027df863af9e0ebdc347eca82c4b3c5..7d990746f2edfb7fe1f771181e5e8fd89b89aa74 100644 --- a/src/finiteVolume/finiteVolume/ddtSchemes/steadyStateDdtScheme/steadyStateDdtScheme.H +++ b/src/finiteVolume/finiteVolume/ddtSchemes/steadyStateDdtScheme/steadyStateDdtScheme.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -116,6 +116,13 @@ public: const GeometricField<Type, fvPatchField, volMesh>& ); + tmp<GeometricField<Type, fvPatchField, volMesh> > fvcDdt + ( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& psi + ); + tmp<fvMatrix<Type> > fvmDdt ( const GeometricField<Type, fvPatchField, volMesh>& @@ -133,6 +140,13 @@ public: const GeometricField<Type, fvPatchField, volMesh>& ); + tmp<fvMatrix<Type> > fvmDdt + ( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& psi + ); + typedef typename ddtScheme<Type>::fluxFieldType fluxFieldType; tmp<fluxFieldType> fvcDdtUfCorr diff --git a/src/finiteVolume/finiteVolume/fvc/fvcDdt.C b/src/finiteVolume/finiteVolume/fvc/fvcDdt.C index 4026ceeb9d0e82f23127d2b2df24961f0aa69acf..e300c072d4941c79ad52492121e91909c296c85c 100644 --- a/src/finiteVolume/finiteVolume/fvc/fvcDdt.C +++ b/src/finiteVolume/finiteVolume/fvc/fvcDdt.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -102,6 +102,29 @@ ddt } +template<class Type> +tmp<GeometricField<Type, fvPatchField, volMesh> > +ddt +( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& vf +) +{ + return fv::ddtScheme<Type>::New + ( + vf.mesh(), + vf.mesh().ddtScheme + ( + "ddt(" + + alpha.name() + ',' + + rho.name() + ',' + + vf.name() + ')' + ) + )().fvcDdt(alpha, rho, vf); +} + + template<class Type> tmp<GeometricField<Type, fvPatchField, volMesh> > ddt diff --git a/src/finiteVolume/finiteVolume/fvc/fvcDdt.H b/src/finiteVolume/finiteVolume/fvc/fvcDdt.H index 5aca4724690ab18e61b1f4d3905190ef787632e5..1f7047cdec7fee4f030b33c8d4014fde99d4a12d 100644 --- a/src/finiteVolume/finiteVolume/fvc/fvcDdt.H +++ b/src/finiteVolume/finiteVolume/fvc/fvcDdt.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -80,6 +80,14 @@ namespace fvc const GeometricField<Type, fvPatchField, volMesh>& ); + template<class Type> + tmp<GeometricField<Type, fvPatchField, volMesh> > ddt + ( + const volScalarField&, + const volScalarField&, + const GeometricField<Type, fvPatchField, volMesh>& + ); + template<class Type> tmp<GeometricField<Type, fvPatchField, volMesh> > ddt ( diff --git a/src/finiteVolume/finiteVolume/fvm/fvmDdt.C b/src/finiteVolume/finiteVolume/fvm/fvmDdt.C index 9a73ae369585e26b9f05a9e1096864942f035c13..a2f75da02429513638d0b4b130c354af39db37fa 100644 --- a/src/finiteVolume/finiteVolume/fvm/fvmDdt.C +++ b/src/finiteVolume/finiteVolume/fvm/fvmDdt.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -99,6 +99,29 @@ ddt } +template<class Type> +tmp<fvMatrix<Type> > +ddt +( + const volScalarField& alpha, + const volScalarField& rho, + const GeometricField<Type, fvPatchField, volMesh>& vf +) +{ + return fv::ddtScheme<Type>::New + ( + vf.mesh(), + vf.mesh().ddtScheme + ( + "ddt(" + + alpha.name() + ',' + + rho.name() + ',' + + vf.name() + ')' + ) + )().fvmDdt(alpha, rho, vf); +} + + template<class Type> tmp<fvMatrix<Type> > ddt diff --git a/src/finiteVolume/finiteVolume/fvm/fvmDdt.H b/src/finiteVolume/finiteVolume/fvm/fvmDdt.H index efc28a2cca2dda3822492dc5b841be3c672dd815..4091c5be6b1aa298698237716d882115e05bd954 100644 --- a/src/finiteVolume/finiteVolume/fvm/fvmDdt.H +++ b/src/finiteVolume/finiteVolume/fvm/fvmDdt.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -77,6 +77,14 @@ namespace fvm const GeometricField<Type, fvPatchField, volMesh>& ); + template<class Type> + tmp<fvMatrix<Type> > ddt + ( + const volScalarField&, + const volScalarField&, + const GeometricField<Type, fvPatchField, volMesh>& + ); + template<class Type> tmp<fvMatrix<Type> > ddt (