tmp<GeometricField<Type, fvPatchField, volMesh> > steadyStateDdtScheme<Type>::fvcDdt ( const dimensionedScalar& rho, const GeometricField<Type, fvPatchField, volMesh>& vf ) { return tmp<GeometricField<Type, fvPatchField, volMesh> > ( new GeometricField<Type, fvPatchField, volMesh> ( IOobject ( "ddt("+rho.name()+','+vf.name()+')', mesh().time().timeName(), mesh() ), mesh(), dimensioned<Type> ( "0", rho.dimensions()*vf.dimensions()/dimTime, pTraits<Type>::zero ) ) ); }
Foam::dimensionSet Foam::pow ( const dimensionSet& ds, const dimensionedScalar& dS ) { if (dimensionSet::debug && !dS.dimensions().dimensionless()) { FatalErrorInFunction << "Exponent of pow is not dimensionless" << abort(FatalError); } dimensionSet dimPow ( ds[dimensionSet::MASS]*dS.value(), ds[dimensionSet::LENGTH]*dS.value(), ds[dimensionSet::TIME]*dS.value(), ds[dimensionSet::TEMPERATURE]*dS.value(), ds[dimensionSet::MOLES]*dS.value(), ds[dimensionSet::CURRENT]*dS.value(), ds[dimensionSet::LUMINOUS_INTENSITY]*dS.value() ); return dimPow; }
tmp<fvMatrix<Type>> EulerD2dt2Scheme<Type>::fvmD2dt2 ( const dimensionedScalar& rho, const GeometricField<Type, fvPatchField, volMesh>& vf ) { tmp<fvMatrix<Type>> tfvm ( new fvMatrix<Type> ( vf, rho.dimensions()*vf.dimensions()*dimVol /dimTime/dimTime ) ); fvMatrix<Type>& fvm = tfvm.ref(); scalar deltaT = mesh().time().deltaTValue(); scalar deltaT0 = mesh().time().deltaT0Value(); scalar coefft = (deltaT + deltaT0)/(2*deltaT); scalar coefft00 = (deltaT + deltaT0)/(2*deltaT0); scalar rDeltaT2 = 4.0/sqr(deltaT + deltaT0); if (mesh().moving()) { scalar halfRdeltaT2 = 0.5*rDeltaT2; const scalarField VV0(mesh().V() + mesh().V0()); const scalarField V0V00(mesh().V0() + mesh().V00()); fvm.diag() = rho.value()*(coefft*halfRdeltaT2)*VV0; fvm.source() = halfRdeltaT2*rho.value()* ( (coefft*VV0 + coefft00*V0V00) *vf.oldTime().primitiveField() - (coefft00*V0V00)*vf.oldTime().oldTime().primitiveField() ); } else { fvm.diag() = (coefft*rDeltaT2)*mesh().V()*rho.value(); fvm.source() = rDeltaT2*mesh().V()*rho.value()* ( (coefft + coefft00)*vf.oldTime().primitiveField() - coefft00*vf.oldTime().oldTime().primitiveField() ); } return tfvm; }
tmp<GeometricField<Type, fvPatchField, volMesh> > EulerLocalDdtScheme<Type>::fvcDdt ( const dimensionedScalar& rho, const GeometricField<Type, fvPatchField, volMesh>& vf ) { const objectRegistry& registry = this->mesh(); // get access to the scalar beta[i] const scalarField& beta = registry.lookupObject<scalarField>(deltaTName_); volScalarField rDeltaT = 1.0/(beta[0]*registry.lookupObject<volScalarField>(deltaTauName_)); IOobject ddtIOobject ( "ddt("+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()*rho.dimensions()*vf.dimensions(), rDeltaT.internalField()*rho.value()* ( vf.internalField() - vf.oldTime().internalField()*mesh().V0()/mesh().V() ), rDeltaT.boundaryField()*rho.value()* ( vf.boundaryField() - vf.oldTime().boundaryField() ) ) ); } else { return tmp<GeometricField<Type, fvPatchField, volMesh> > ( new GeometricField<Type, fvPatchField, volMesh> ( ddtIOobject, rDeltaT*rho*(vf - vf.oldTime()) ) ); } }
tmp<fvMatrix<Type> > steadyStateDdtScheme<Type>::fvmDdt ( const dimensionedScalar& rho, const GeometricField<Type, fvPatchField, volMesh>& vf ) { tmp<fvMatrix<Type> > tfvm ( new fvMatrix<Type> ( vf, rho.dimensions()*vf.dimensions()*dimVol/dimTime ) ); return tfvm; }
Foam::dimensionSet Foam::pow ( const dimensionedScalar& dS, const dimensionSet& ds ) { if ( dimensionSet::debug && !dS.dimensions().dimensionless() && !ds.dimensionless()) { FatalErrorIn("pow(const dimensionedScalar& dS, const dimensionSet& ds)") << "Argument or exponent of pow not dimensionless" << endl << abort(FatalError); } return ds; }
tmp<fvMatrix<Type> > EulerLocalDdtScheme<Type>::fvmDdt ( const dimensionedScalar& rho, GeometricField<Type, fvPatchField, volMesh>& vf ) { const objectRegistry& registry = this->mesh(); // get access to the scalar beta[i] const scalarField& beta = registry.lookupObject<scalarField>(deltaTName_); tmp<fvMatrix<Type> > tfvm ( new fvMatrix<Type> ( vf, rho.dimensions()*vf.dimensions()*dimVol/dimTime ) ); fvMatrix<Type>& fvm = tfvm(); scalarField rDeltaT = 1.0/(beta[0]*registry.lookupObject<volScalarField>(deltaTauName_).internalField()); fvm.diag() = rDeltaT*rho.value()*mesh().V(); if (mesh().moving()) { fvm.source() = rDeltaT *rho.value()*vf.oldTime().internalField()*mesh().V0(); } else { fvm.source() = rDeltaT *rho.value()*vf.oldTime().internalField()*mesh().V(); } return tfvm; }
Foam::tmp<Foam::fvMatrix<Type>> Foam::fvm::Sp ( const dimensionedScalar& sp, const GeometricField<Type, fvPatchField, volMesh>& vf ) { const fvMesh& mesh = vf.mesh(); tmp<fvMatrix<Type>> tfvm ( new fvMatrix<Type> ( vf, dimVol*sp.dimensions()*vf.dimensions() ) ); fvMatrix<Type>& fvm = tfvm.ref(); fvm.diag() += mesh.V()*sp.value(); return tfvm; }