diff --git a/src/functionObjects/field/CourantNo/CourantNo.C b/src/functionObjects/field/CourantNo/CourantNo.C index 82bc0da8c..9731bc6e8 100644 --- a/src/functionObjects/field/CourantNo/CourantNo.C +++ b/src/functionObjects/field/CourantNo/CourantNo.C @@ -73,48 +73,33 @@ bool Foam::functionObjects::CourantNo::calc() const surfaceScalarField& phi = lookupObject(fieldName_); - tmp Coi + tmp tCo ( + new volScalarField + ( + IOobject + ( + resultName_, + mesh_.time().timeName(), + mesh_ + ), + mesh_, + dimensionedScalar("0", dimless, 0.0), + zeroGradientFvPatchScalarField::typeName + ) + ); + + tCo->ref() = byRho ( (0.5*mesh_.time().deltaT()) *fvc::surfaceSum(mag(phi))()() /mesh_.V() - ) - ); - - if (foundObject(resultName_)) - { - volScalarField& Co = lookupObjectRef(resultName_); - - Co.ref() = Coi(); - Co.correctBoundaryConditions(); - } - else - { - tmp tCo - ( - new volScalarField - ( - IOobject - ( - resultName_, - mesh_.time().timeName(), - mesh_, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - mesh_, - dimensionedScalar("0", dimless, 0.0), - zeroGradientFvPatchScalarField::typeName - ) ); - tCo.ref().ref() = Coi(); - tCo.ref().correctBoundaryConditions(); - mesh_.objectRegistry::store(tCo.ptr()); - } - return true; + tCo->correctBoundaryConditions(); + + return store(resultName_, tCo); } else { diff --git a/src/functionObjects/field/processorField/processorField.C b/src/functionObjects/field/processorField/processorField.C index 2a5b152c0..ab7dff7d1 100644 --- a/src/functionObjects/field/processorField/processorField.C +++ b/src/functionObjects/field/processorField/processorField.C @@ -51,25 +51,6 @@ Foam::functionObjects::processorField::processorField fvMeshFunctionObject(name, runTime, dict) { read(dict); - - volScalarField* procFieldPtr - ( - new volScalarField - ( - IOobject - ( - "processorID", - mesh_.time().timeName(), - mesh_, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - mesh_, - dimensionedScalar("0", dimless, 0.0) - ) - ); - - mesh_.objectRegistry::store(procFieldPtr); } @@ -91,10 +72,24 @@ bool Foam::functionObjects::processorField::read(const dictionary& dict) bool Foam::functionObjects::processorField::execute() { - mesh_.lookupObjectRef("processorID") == - dimensionedScalar("proci", dimless, Pstream::myProcNo()); + word name("processorID"); - return true; + tmp tprocField + ( + new volScalarField + ( + IOobject + ( + name, + mesh_.time().timeName(), + mesh_ + ), + mesh_, + dimensionedScalar(name, dimless, Pstream::myProcNo()) + ) + ); + + return store(name, tprocField); } diff --git a/src/functionObjects/field/turbulenceIntensity/turbulenceIntensity.C b/src/functionObjects/field/turbulenceIntensity/turbulenceIntensity.C index a877886ea..1da23ffcd 100644 --- a/src/functionObjects/field/turbulenceIntensity/turbulenceIntensity.C +++ b/src/functionObjects/field/turbulenceIntensity/turbulenceIntensity.C @@ -71,25 +71,6 @@ Foam::functionObjects::turbulenceIntensity::turbulenceIntensity logFiles(obr_, name), writeLocalObjects(obr_, log) { - volScalarField* turbulenceIntensityPtr - ( - new volScalarField - ( - IOobject - ( - "I", - mesh_.time().timeName(), - mesh_, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - mesh_, - dimensionedScalar("0", dimless, 0.0) - ) - ); - - mesh_.objectRegistry::store(turbulenceIntensityPtr); - read(dict); resetName(typeName); resetLocalObjectName("I"); @@ -115,9 +96,6 @@ bool Foam::functionObjects::turbulenceIntensity::read(const dictionary& dict) bool Foam::functionObjects::turbulenceIntensity::execute() { - volScalarField& turbulenceIntensity = - mesh_.lookupObjectRef("I"); - if (mesh_.foundObject(turbulenceModel::propertiesName)) { const turbulenceModel& turbModel = mesh_.lookupObject @@ -126,12 +104,19 @@ bool Foam::functionObjects::turbulenceIntensity::execute() ); volScalarField uPrime(sqrt((2.0/3.0)*turbModel.k())); - turbulenceIntensity = - uPrime - /max + + word name("I"); + + return + store ( - max(uPrime, mag(turbModel.U())), - dimensionedScalar("small", dimVelocity, small) + name, + uPrime + /max + ( + max(uPrime, mag(turbModel.U())), + dimensionedScalar("small", dimVelocity, small) + ) ); } else @@ -139,9 +124,9 @@ bool Foam::functionObjects::turbulenceIntensity::execute() FatalErrorInFunction << "Unable to find turbulence model in the " << "database" << exit(FatalError); - } - return true; + return false; + } } diff --git a/src/functionObjects/field/wallHeatFlux/wallHeatFlux.C b/src/functionObjects/field/wallHeatFlux/wallHeatFlux.C index f65b67ed2..f820ea6b3 100644 --- a/src/functionObjects/field/wallHeatFlux/wallHeatFlux.C +++ b/src/functionObjects/field/wallHeatFlux/wallHeatFlux.C @@ -58,15 +58,30 @@ void Foam::functionObjects::wallHeatFlux::writeFileHeader(const label i) } -void Foam::functionObjects::wallHeatFlux::calcHeatFlux +Foam::tmp +Foam::functionObjects::wallHeatFlux::calcWallHeatFlux ( const volScalarField& alpha, - const volScalarField& he, - volScalarField& wallHeatFlux + const volScalarField& he ) { + tmp twallHeatFlux + ( + new volScalarField + ( + IOobject + ( + type(), + mesh_.time().timeName(), + mesh_ + ), + mesh_, + dimensionedScalar("0", dimMass/pow3(dimTime), 0) + ) + ); + volScalarField::Boundary& wallHeatFluxBf = - wallHeatFlux.boundaryFieldRef(); + twallHeatFlux.ref().boundaryFieldRef(); const volScalarField::Boundary& heBf = he.boundaryField(); @@ -97,6 +112,8 @@ void Foam::functionObjects::wallHeatFlux::calcHeatFlux } } } + + return twallHeatFlux; } @@ -114,25 +131,6 @@ Foam::functionObjects::wallHeatFlux::wallHeatFlux writeLocalObjects(obr_, log), patchSet_() { - volScalarField* wallHeatFluxPtr - ( - new volScalarField - ( - IOobject - ( - type(), - mesh_.time().timeName(), - mesh_, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - mesh_, - dimensionedScalar("0", dimMass/pow3(dimTime), 0) - ) - ); - - mesh_.objectRegistry::store(wallHeatFluxPtr); - read(dict); resetName(typeName); resetLocalObjectName(typeName); @@ -205,7 +203,7 @@ bool Foam::functionObjects::wallHeatFlux::read(const dictionary& dict) bool Foam::functionObjects::wallHeatFlux::execute() { - volScalarField& wallHeatFlux = lookupObjectRef(type()); + word name(type()); if ( @@ -220,20 +218,17 @@ bool Foam::functionObjects::wallHeatFlux::execute() ( turbulenceModel::propertiesName ); + const volScalarField& alpha = turbModel.alphaEff(); + const volScalarField& he = turbModel.transport().he(); - calcHeatFlux - ( - turbModel.alphaEff(), - turbModel.transport().he(), - wallHeatFlux - ); + return store(name, calcWallHeatFlux(alpha, he)); } else if (foundObject(solidThermo::dictName)) { const solidThermo& thermo = lookupObject(solidThermo::dictName); - calcHeatFlux(thermo.alpha(), thermo.he(), wallHeatFlux); + return store(name, calcWallHeatFlux(thermo.alpha(), thermo.he())); } else { diff --git a/src/functionObjects/field/wallHeatFlux/wallHeatFlux.H b/src/functionObjects/field/wallHeatFlux/wallHeatFlux.H index 0686d3446..360090bf9 100644 --- a/src/functionObjects/field/wallHeatFlux/wallHeatFlux.H +++ b/src/functionObjects/field/wallHeatFlux/wallHeatFlux.H @@ -108,11 +108,10 @@ protected: virtual void writeFileHeader(const label i); //- Calculate the heat-flux - void calcHeatFlux + tmp calcWallHeatFlux ( const volScalarField& alpha, - const volScalarField& he, - volScalarField& wallHeatFlux + const volScalarField& he ); diff --git a/src/functionObjects/field/wallHeatTransferCoeff/wallHeatTransferCoeff.C b/src/functionObjects/field/wallHeatTransferCoeff/wallHeatTransferCoeff.C index 55205f194..d68467303 100644 --- a/src/functionObjects/field/wallHeatTransferCoeff/wallHeatTransferCoeff.C +++ b/src/functionObjects/field/wallHeatTransferCoeff/wallHeatTransferCoeff.C @@ -63,15 +63,35 @@ void Foam::functionObjects::wallHeatTransferCoeff::writeFileHeader } -void Foam::functionObjects::wallHeatTransferCoeff::calcHeatTransferCoeff +Foam::tmp +Foam::functionObjects::wallHeatTransferCoeff::calcHeatTransferCoeff ( const volScalarField& nu, - const volScalarField& nut, - volScalarField& wallHeatTransferCoeff + const volScalarField& nut ) { + tmp twallHeatTransferCoeff + ( + new volScalarField + ( + IOobject + ( + type(), + mesh_.time().timeName(), + mesh_ + ), + mesh_, + dimensionedScalar + ( + "0", + dimMass/pow3(dimTime)/(dimTemperature/dimLength), + 0 + ) + ) + ); + volScalarField::Boundary& wallHeatTransferCoeffBf = - wallHeatTransferCoeff.boundaryFieldRef(); + twallHeatTransferCoeff.ref().boundaryFieldRef(); const volScalarField::Boundary& nuBf = nu.boundaryField(); const volScalarField::Boundary& nutBf = nut.boundaryField(); @@ -84,6 +104,8 @@ void Foam::functionObjects::wallHeatTransferCoeff::calcHeatTransferCoeff rho_*Cp_*(nuBf[patchi]/Prl_ + nutBf[patchi]/Prt_); } } + + return twallHeatTransferCoeff; } @@ -101,30 +123,6 @@ Foam::functionObjects::wallHeatTransferCoeff::wallHeatTransferCoeff writeLocalObjects(obr_, log), patchSet_() { - volScalarField* wallHeatTransferCoeffPtr - ( - new volScalarField - ( - IOobject - ( - type(), - mesh_.time().timeName(), - mesh_, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - mesh_, - dimensionedScalar - ( - "0", - dimMass/pow3(dimTime)/(dimTemperature/dimLength), - 0 - ) - ) - ); - - mesh_.objectRegistry::store(wallHeatTransferCoeffPtr); - read(dict); resetName(typeName); resetLocalObjectName(typeName); @@ -202,8 +200,7 @@ bool Foam::functionObjects::wallHeatTransferCoeff::read(const dictionary& dict) bool Foam::functionObjects::wallHeatTransferCoeff::execute() { - volScalarField& wallHeatTransferCoeff = - lookupObjectRef(type()); + word name(type()); if ( @@ -219,21 +216,19 @@ bool Foam::functionObjects::wallHeatTransferCoeff::execute() turbulenceModel::propertiesName ); - calcHeatTransferCoeff - ( - turbModel.nu(), - turbModel.nut(), - wallHeatTransferCoeff - ); + const volScalarField& nu = turbModel.nu(); + const volScalarField& nut = turbModel.nut(); + + return store(name, calcHeatTransferCoeff(nu, nut)); } else { FatalErrorInFunction << "Unable to find incompressible turbulence model in the " << "database" << exit(FatalError); - } - return true; + return false; + } } diff --git a/src/functionObjects/field/wallHeatTransferCoeff/wallHeatTransferCoeff.H b/src/functionObjects/field/wallHeatTransferCoeff/wallHeatTransferCoeff.H index d8103077a..00b20c44f 100644 --- a/src/functionObjects/field/wallHeatTransferCoeff/wallHeatTransferCoeff.H +++ b/src/functionObjects/field/wallHeatTransferCoeff/wallHeatTransferCoeff.H @@ -130,11 +130,10 @@ protected: virtual void writeFileHeader(const label i); //- Calculate the heat transfer coefficient - void calcHeatTransferCoeff + tmp calcHeatTransferCoeff ( const volScalarField& nu, - const volScalarField& nut, - volScalarField& wallHeatTransferCoeff + const volScalarField& nut ); diff --git a/src/functionObjects/field/wallShearStress/wallShearStress.C b/src/functionObjects/field/wallShearStress/wallShearStress.C index 69591296e..35bcf403e 100644 --- a/src/functionObjects/field/wallShearStress/wallShearStress.C +++ b/src/functionObjects/field/wallShearStress/wallShearStress.C @@ -57,25 +57,42 @@ void Foam::functionObjects::wallShearStress::writeFileHeader(const label i) } -void Foam::functionObjects::wallShearStress::calcShearStress +Foam::tmp +Foam::functionObjects::wallShearStress::calcShearStress ( - const volSymmTensorField& Reff, - volVectorField& shearStress + const volSymmTensorField& Reff ) { - shearStress.dimensions().reset(Reff.dimensions()); + tmp twallShearStress + ( + new volVectorField + ( + IOobject + ( + type(), + mesh_.time().timeName(), + mesh_ + ), + mesh_, + dimensionedVector("0", Reff.dimensions(), Zero) + ) + ); + + volVectorField::Boundary& wallShearStressBf = + twallShearStress.ref().boundaryFieldRef(); forAllConstIter(labelHashSet, patchSet_, iter) { label patchi = iter.key(); - vectorField& ssp = shearStress.boundaryFieldRef()[patchi]; const vectorField& Sfp = mesh_.Sf().boundaryField()[patchi]; const scalarField& magSfp = mesh_.magSf().boundaryField()[patchi]; const symmTensorField& Reffp = Reff.boundaryField()[patchi]; - ssp = (-Sfp/magSfp) & Reffp; + wallShearStressBf[patchi] = (-Sfp/magSfp) & Reffp; } + + return twallShearStress; } @@ -93,30 +110,6 @@ Foam::functionObjects::wallShearStress::wallShearStress writeLocalObjects(obr_, log), patchSet_() { - volVectorField* wallShearStressPtr - ( - new volVectorField - ( - IOobject - ( - type(), - mesh_.time().timeName(), - mesh_, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - mesh_, - dimensionedVector - ( - "0", - sqr(dimLength)/sqr(dimTime), - Zero - ) - ) - ); - - mesh_.objectRegistry::store(wallShearStressPtr); - read(dict); resetName(typeName); resetLocalObjectName(typeName); @@ -192,9 +185,6 @@ bool Foam::functionObjects::wallShearStress::execute() typedef compressible::turbulenceModel cmpModel; typedef incompressible::turbulenceModel icoModel; - volVectorField& wallShearStress = - mesh_.lookupObjectRef(type()); - tmp Reff; if (mesh_.foundObject(turbulenceModel::propertiesName)) { @@ -217,9 +207,9 @@ bool Foam::functionObjects::wallShearStress::execute() << "database" << exit(FatalError); } - calcShearStress(Reff(), wallShearStress); + word name(type()); - return true; + return store(name, calcShearStress(Reff)); } diff --git a/src/functionObjects/field/wallShearStress/wallShearStress.H b/src/functionObjects/field/wallShearStress/wallShearStress.H index 8c163b980..ae9a37ed8 100644 --- a/src/functionObjects/field/wallShearStress/wallShearStress.H +++ b/src/functionObjects/field/wallShearStress/wallShearStress.H @@ -117,10 +117,9 @@ protected: virtual void writeFileHeader(const label i); //- Calculate the shear-stress - void calcShearStress + tmp calcShearStress ( - const volSymmTensorField& Reff, - volVectorField& shearStress + const volSymmTensorField& Reff ); diff --git a/src/functionObjects/field/yPlus/yPlus.C b/src/functionObjects/field/yPlus/yPlus.C index 71014d150..e49de9ab2 100644 --- a/src/functionObjects/field/yPlus/yPlus.C +++ b/src/functionObjects/field/yPlus/yPlus.C @@ -62,12 +62,28 @@ void Foam::functionObjects::yPlus::writeFileHeader(const label i) } -void Foam::functionObjects::yPlus::calcYPlus +Foam::tmp Foam::functionObjects::yPlus::calcYPlus ( - const turbulenceModel& turbModel, - volScalarField& yPlus + const turbulenceModel& turbModel ) { + tmp tyPlus + ( + new volScalarField + ( + IOobject + ( + type(), + mesh_.time().timeName(), + mesh_ + ), + mesh_, + dimensionedScalar("0", dimless, 0.0) + ) + ); + + volScalarField::Boundary& yPlusBf = tyPlus.ref().boundaryFieldRef(); + volScalarField::Boundary d = nearWallDist(mesh_).y(); const volScalarField::Boundary nutBf = @@ -81,8 +97,6 @@ void Foam::functionObjects::yPlus::calcYPlus const fvPatchList& patches = mesh_.boundary(); - volScalarField::Boundary& yPlusBf = yPlus.boundaryFieldRef(); - forAll(patches, patchi) { const fvPatch& patch = patches[patchi]; @@ -108,6 +122,8 @@ void Foam::functionObjects::yPlus::calcYPlus )/nuBf[patchi]; } } + + return tyPlus; } @@ -124,25 +140,6 @@ Foam::functionObjects::yPlus::yPlus logFiles(obr_, name), writeLocalObjects(obr_, log) { - volScalarField* yPlusPtr - ( - new volScalarField - ( - IOobject - ( - type(), - mesh_.time().timeName(), - mesh_, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - mesh_, - dimensionedScalar("0", dimless, 0.0) - ) - ); - - mesh_.objectRegistry::store(yPlusPtr); - read(dict); resetName(typeName); resetLocalObjectName(typeName); @@ -168,9 +165,6 @@ bool Foam::functionObjects::yPlus::read(const dictionary& dict) bool Foam::functionObjects::yPlus::execute() { - volScalarField& yPlus = - mesh_.lookupObjectRef(type()); - if (mesh_.foundObject(turbulenceModel::propertiesName)) { const turbulenceModel& model = mesh_.lookupObject @@ -178,7 +172,9 @@ bool Foam::functionObjects::yPlus::execute() turbulenceModel::propertiesName ); - calcYPlus(model, yPlus); + word name(type()); + + return store(name, calcYPlus(model)); } else { diff --git a/src/functionObjects/field/yPlus/yPlus.H b/src/functionObjects/field/yPlus/yPlus.H index eae4ead76..b5b9daa8b 100644 --- a/src/functionObjects/field/yPlus/yPlus.H +++ b/src/functionObjects/field/yPlus/yPlus.H @@ -95,10 +95,9 @@ class yPlus virtual void writeFileHeader(const label i); //- Calculate y+ - void calcYPlus + tmp calcYPlus ( - const turbulenceModel& turbModel, - volScalarField& yPlus + const turbulenceModel& turbModel ); //- Disallow default bitwise copy construct