From 3eb5b19447ba317fa9a67997ed0433493cfe2bb5 Mon Sep 17 00:00:00 2001 From: mattijs Date: Tue, 10 Feb 2009 23:32:56 +0000 Subject: [PATCH 1/9] mesh gets deleted before functionObject --- .../field/fieldAverage/fieldAverage/fieldAverage.C | 3 ++- .../field/fieldAverage/fieldAverage/fieldAverageTemplates.C | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C index b117112a53..9af80cfe85 100644 --- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C +++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C @@ -309,7 +309,8 @@ void Foam::fieldAverage::writeAveragingProperties() const "uniform", obr_, IOobject::NO_READ, - IOobject::NO_WRITE + IOobject::NO_WRITE, + false ) ); diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverageTemplates.C b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverageTemplates.C index f024ac0740..8bba661723 100644 --- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverageTemplates.C +++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverageTemplates.C @@ -57,7 +57,8 @@ void Foam::fieldAverage::addMeanField obr_.time().timeName(), obr_, IOobject::READ_IF_PRESENT, - IOobject::NO_WRITE + IOobject::NO_WRITE, + false ), baseField ) @@ -96,7 +97,8 @@ void Foam::fieldAverage::addPrime2MeanField obr_.time().timeName(), obr_, IOobject::READ_IF_PRESENT, - IOobject::NO_WRITE + IOobject::NO_WRITE, + false ), sqr(baseField) - sqr(meanField) ) From 54749c0e9b90cc93a45487a3ffe458d03a10a2fa Mon Sep 17 00:00:00 2001 From: mattijs Date: Tue, 10 Feb 2009 23:35:42 +0000 Subject: [PATCH 2/9] no blockMesh --- tutorials/simpleFoam/airFoil2D/Allrun | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100755 tutorials/simpleFoam/airFoil2D/Allrun diff --git a/tutorials/simpleFoam/airFoil2D/Allrun b/tutorials/simpleFoam/airFoil2D/Allrun new file mode 100755 index 0000000000..97fb4bc591 --- /dev/null +++ b/tutorials/simpleFoam/airFoil2D/Allrun @@ -0,0 +1,8 @@ +#!/bin/sh + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +application="simpleFoam" + +runApplication $application From 8741d3079faacd0d4dfb26a9e41f95f4c97e6666 Mon Sep 17 00:00:00 2001 From: andy Date: Thu, 12 Feb 2009 10:11:57 +0000 Subject: [PATCH 3/9] update --- .../buoyantBoussinesqFoam/pdEqn.H | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqFoam/pdEqn.H b/applications/solvers/heatTransfer/buoyantBoussinesqFoam/pdEqn.H index a74b4e8022..7a5d91cd8b 100644 --- a/applications/solvers/heatTransfer/buoyantBoussinesqFoam/pdEqn.H +++ b/applications/solvers/heatTransfer/buoyantBoussinesqFoam/pdEqn.H @@ -5,10 +5,13 @@ U = rUA*UEqn().H(); UEqn.clear(); - phi = + surfaceScalarField phiU + ( (fvc::interpolate(U) & mesh.Sf()) + fvc::ddtPhiCorr(rUA, U, phi) - + betaghf*fvc::snGrad(T)*rUAf*mesh.magSf(); + ); + + phi = phiU + betaghf*fvc::snGrad(T)*rUAf*mesh.magSf(); for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) { @@ -17,8 +20,7 @@ fvm::laplacian(rUAf, pd) == fvc::div(phi) ); - // retain the residual from the first iteration - if (nonOrth == 0) + if (corr == nCorr-1 && nonOrth == nNonOrthCorr) { pdEqn.solve(mesh.solver(pd.name() + "Final")); } @@ -29,17 +31,12 @@ if (nonOrth == nNonOrthCorr) { - // Calculate the conservative fluxes - phi -= pdEqn.flux(); - - // Correct the momentum source with the pressure gradient flux - // calculated from the relaxed pressure - U -= - rUA - *fvc::reconstruct((pdEqn.flux() - betaghf*fvc::snGrad(T))/rUAf); - U.correctBoundaryConditions(); + phi += pdEqn.flux(); } } + U += rUA*fvc::reconstruct((phi - phiU)/rUAf); + U.correctBoundaryConditions(); + #include "continuityErrs.H" } From 2d8ec16d6c82f2baeeb9027f1c92e37716e5fd12 Mon Sep 17 00:00:00 2001 From: andy Date: Thu, 12 Feb 2009 10:11:57 +0000 Subject: [PATCH 4/9] update --- .../buoyantBoussinesqFoam/pdEqn.H | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/applications/solvers/heatTransfer/buoyantBoussinesqFoam/pdEqn.H b/applications/solvers/heatTransfer/buoyantBoussinesqFoam/pdEqn.H index a74b4e8022..25e2a9817f 100644 --- a/applications/solvers/heatTransfer/buoyantBoussinesqFoam/pdEqn.H +++ b/applications/solvers/heatTransfer/buoyantBoussinesqFoam/pdEqn.H @@ -5,10 +5,13 @@ U = rUA*UEqn().H(); UEqn.clear(); - phi = + surfaceScalarField phiU + ( (fvc::interpolate(U) & mesh.Sf()) + fvc::ddtPhiCorr(rUA, U, phi) - + betaghf*fvc::snGrad(T)*rUAf*mesh.magSf(); + ); + + phi = phiU + betaghf*fvc::snGrad(T)*rUAf*mesh.magSf(); for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++) { @@ -17,8 +20,7 @@ fvm::laplacian(rUAf, pd) == fvc::div(phi) ); - // retain the residual from the first iteration - if (nonOrth == 0) + if (corr == nCorr-1 && nonOrth == nNonOrthCorr) { pdEqn.solve(mesh.solver(pd.name() + "Final")); } @@ -29,17 +31,12 @@ if (nonOrth == nNonOrthCorr) { - // Calculate the conservative fluxes - phi -= pdEqn.flux(); - - // Correct the momentum source with the pressure gradient flux - // calculated from the relaxed pressure - U -= - rUA - *fvc::reconstruct((pdEqn.flux() - betaghf*fvc::snGrad(T))/rUAf); - U.correctBoundaryConditions(); + phi += pdEqn.flux(); } } + U -= rUA*fvc::reconstruct((phi - phiU)/rUAf); + U.correctBoundaryConditions(); + #include "continuityErrs.H" } From d4dcd5bd55f591f9cb2a62495c38d9eb472a58b5 Mon Sep 17 00:00:00 2001 From: mattijs Date: Fri, 13 Feb 2009 08:59:22 +0000 Subject: [PATCH 5/9] delayed transformation calculation --- .../constraint/cyclic/cyclicPolyPatch.C | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C index 1e42d48ea3..19c08e5504 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C +++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C @@ -102,7 +102,9 @@ void Foam::cyclicPolyPatch::calcTransforms() ), points ); + pointField half0Ctrs(calcFaceCentres(half0, half0.points())); + scalarField half0Tols(calcFaceTol(half0, half0.points(), half0Ctrs)); primitivePatch half1 @@ -740,9 +742,7 @@ Foam::cyclicPolyPatch::cyclicPolyPatch rotationAxis_(vector::zero), rotationCentre_(point::zero), separationVector_(vector::zero) -{ - calcTransforms(); -} +{} Foam::cyclicPolyPatch::cyclicPolyPatch @@ -786,8 +786,6 @@ Foam::cyclicPolyPatch::cyclicPolyPatch } } } - - calcTransforms(); } @@ -805,9 +803,7 @@ Foam::cyclicPolyPatch::cyclicPolyPatch rotationAxis_(pp.rotationAxis_), rotationCentre_(pp.rotationCentre_), separationVector_(pp.separationVector_) -{ - calcTransforms(); -} +{} Foam::cyclicPolyPatch::cyclicPolyPatch @@ -827,9 +823,7 @@ Foam::cyclicPolyPatch::cyclicPolyPatch rotationAxis_(pp.rotationAxis_), rotationCentre_(pp.rotationCentre_), separationVector_(pp.separationVector_) -{ - calcTransforms(); -} +{} // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // @@ -852,6 +846,7 @@ void Foam::cyclicPolyPatch::initGeometry() void Foam::cyclicPolyPatch::calcGeometry() { polyPatch::calcGeometry(); + calcTransforms(); } void Foam::cyclicPolyPatch::initMovePoints(const pointField& p) From a13be520063e94dd9e0dd07d4928aba3f58e55fc Mon Sep 17 00:00:00 2001 From: mattijs Date: Fri, 13 Feb 2009 08:59:33 +0000 Subject: [PATCH 6/9] initialisation order --- src/lagrangian/dieselSpray/spray/spray.C | 8 ++++---- src/lagrangian/dieselSpray/spray/spray.H | 15 ++++++++------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/lagrangian/dieselSpray/spray/spray.C b/src/lagrangian/dieselSpray/spray/spray.C index fbd26cd210..1f4b1a242f 100644 --- a/src/lagrangian/dieselSpray/spray/spray.C +++ b/src/lagrangian/dieselSpray/spray/spray.C @@ -85,6 +85,9 @@ Foam::spray::spray ) ), + ambientPressure_(p_.average().value()), + ambientTemperature_(T_.average().value()), + injectors_ ( IOobject @@ -204,10 +207,7 @@ Foam::spray::spray srhos_(fuels_->components().size()), totalInjectedLiquidMass_(0.0), - injectedLiquidKE_(0.0), - - ambientPressure_(p_.average().value()), - ambientTemperature_(T_.average().value()) + injectedLiquidKE_(0.0) { // create the evaporation source fields diff --git a/src/lagrangian/dieselSpray/spray/spray.H b/src/lagrangian/dieselSpray/spray/spray.H index 126f4d3f43..be9c49e67a 100644 --- a/src/lagrangian/dieselSpray/spray/spray.H +++ b/src/lagrangian/dieselSpray/spray/spray.H @@ -92,8 +92,15 @@ class spray IOdictionary sprayProperties_; + //- Ambient Pressure + scalar ambientPressure_; + + //- Ambient Temperature + scalar ambientTemperature_; + + //- The injectors - IOPtrList injectors_; + IOPtrList injectors_; // References to the spray sub-models @@ -164,12 +171,6 @@ class spray //- The (total added) injected kinetic energy of the liquid scalar injectedLiquidKE_; - //- Ambient Pressure - scalar ambientPressure_; - - //- Ambient Temperature - scalar ambientTemperature_; - // Private Member Functions From 0685f59b4ae981b59ccba25a035523158e09d7b7 Mon Sep 17 00:00:00 2001 From: mattijs Date: Fri, 13 Feb 2009 08:59:47 +0000 Subject: [PATCH 7/9] changed comment --- .../field/fieldAverage/fieldAverage/fieldAverage.H | 1 - 1 file changed, 1 deletion(-) diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H index 7d9c4db00f..f7ee571e48 100644 --- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H +++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H @@ -75,7 +75,6 @@ Description SourceFiles fieldAverage.C fieldAverageTemplates.C - IOfieldAverage.H \*---------------------------------------------------------------------------*/ From c350f6958c3ff405973b401341fb1235b73dc4a6 Mon Sep 17 00:00:00 2001 From: mattijs Date: Fri, 13 Feb 2009 11:30:03 +0000 Subject: [PATCH 8/9] register averages --- .../fieldAverage/fieldAverage/fieldAverage.C | 45 ++++-- .../fieldAverage/fieldAverage/fieldAverage.H | 54 +++---- .../fieldAverage/fieldAverageTemplates.C | 147 ++++++++++++------ 3 files changed, 151 insertions(+), 95 deletions(-) diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C index 9af80cfe85..b9c4023401 100644 --- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C +++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C @@ -46,26 +46,45 @@ const Foam::word Foam::fieldAverage::EXT_PRIME2MEAN = "Prime2Mean"; // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // +void Foam::fieldAverage::checkoutFields(const wordList& fieldNames) const +{ + forAll(fieldNames, i) + { + if (fieldNames[i] != word::null) + { + obr_.checkOut(*obr_[fieldNames[i]]); + } + } +} + + void Foam::fieldAverage::resetLists(const label nItems) { + checkoutFields(meanScalarFields_); meanScalarFields_.clear(); meanScalarFields_.setSize(nItems); + checkoutFields(meanVectorFields_); meanVectorFields_.clear(); meanVectorFields_.setSize(nItems); + checkoutFields(meanSphericalTensorFields_); meanSphericalTensorFields_.clear(); meanSphericalTensorFields_.setSize(nItems); + checkoutFields(meanSymmTensorFields_); meanSymmTensorFields_.clear(); meanSymmTensorFields_.setSize(nItems); + checkoutFields(meanTensorFields_); meanTensorFields_.clear(); meanTensorFields_.setSize(nItems); + checkoutFields(prime2MeanScalarFields_); prime2MeanScalarFields_.clear(); prime2MeanScalarFields_.setSize(nItems); + checkoutFields(prime2MeanSymmTensorFields_); prime2MeanSymmTensorFields_.clear(); prime2MeanSymmTensorFields_.setSize(nItems); @@ -128,7 +147,7 @@ void Foam::fieldAverage::initialise() if (obr_.foundObject(fieldName)) { - addPrime2MeanField + addPrime2MeanField ( i, meanScalarFields_, @@ -137,7 +156,7 @@ void Foam::fieldAverage::initialise() } else if (obr_.foundObject(fieldName)) { - addPrime2MeanField + addPrime2MeanField ( i, meanVectorFields_, @@ -188,12 +207,12 @@ Foam::fieldAverage::fieldAverage active_ = false; WarningIn ( - "fieldAverage::fieldAverage" - "(" - "const word&," - "const objectRegistry&," - "const dictionary&," - "const bool" + "fieldAverage::fieldAverage\n" + "(\n" + "const word&,\n" + "const objectRegistry&,\n" + "const dictionary&,\n" + "const bool\n" ")" ) << "No fvMesh available, deactivating." << nl << endl; @@ -255,12 +274,12 @@ void Foam::fieldAverage::calcAverages() totalTime_[i] += obr_.time().deltaT().value(); } - addMeanSqrToPrime2Mean + addMeanSqrToPrime2Mean ( meanScalarFields_, prime2MeanScalarFields_ ); - addMeanSqrToPrime2Mean + addMeanSqrToPrime2Mean ( meanVectorFields_, prime2MeanSymmTensorFields_ @@ -272,12 +291,12 @@ void Foam::fieldAverage::calcAverages() calculateMeanFields(meanSymmTensorFields_); calculateMeanFields(meanTensorFields_); - calculatePrime2MeanFields + calculatePrime2MeanFields ( meanScalarFields_, prime2MeanScalarFields_ ); - calculatePrime2MeanFields + calculatePrime2MeanFields ( meanVectorFields_, prime2MeanSymmTensorFields_ @@ -316,7 +335,7 @@ void Foam::fieldAverage::writeAveragingProperties() const forAll(faItems_, i) { - const word fieldName = faItems_[i].fieldName(); + const word& fieldName = faItems_[i].fieldName(); propsDict.add(fieldName, dictionary()); propsDict.subDict(fieldName).add("totalIter", totalIter_[i]); propsDict.subDict(fieldName).add("totalTime", totalTime_[i]); diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H index f7ee571e48..2cb245b14d 100644 --- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H +++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H @@ -121,7 +121,7 @@ protected: //- Clean restart flag Switch cleanRestart_; - //- List of field average items, describing waht averages to be + //- List of field average items, describing what averages to be // calculated and output List faItems_; @@ -137,15 +137,15 @@ protected: // Lists of averages // Arithmetic mean fields - PtrList meanScalarFields_; - PtrList meanVectorFields_; - PtrList meanSphericalTensorFields_; - PtrList meanSymmTensorFields_; - PtrList meanTensorFields_; + wordList meanScalarFields_; + wordList meanVectorFields_; + wordList meanSphericalTensorFields_; + wordList meanSymmTensorFields_; + wordList meanTensorFields_; // Prime-squared fields - applicable to volVectorFields only - PtrList prime2MeanScalarFields_; - PtrList prime2MeanSymmTensorFields_; + wordList prime2MeanScalarFields_; + wordList prime2MeanSymmTensorFields_; // Counters @@ -161,6 +161,9 @@ protected: // Initialisation routines + //- Checkout fields (causes deletion) from the database + void checkoutFields(const wordList&) const; + //- Reset size of lists (clear existing values) void resetLists(const label nItems); @@ -170,20 +173,16 @@ protected: //- Add mean average field to PtrList template - void addMeanField - ( - const label, - PtrList >& - ); + void addMeanField(const label, wordList&) const; //- Add prime-squared average field to PtrList template void addPrime2MeanField ( const label, - PtrList >&, - PtrList >& - ); + const wordList&, + wordList& + ) const; // Calculation functions @@ -193,26 +192,23 @@ protected: //- Calculate mean average fields template - void calculateMeanFields - ( - PtrList >& - ); + void calculateMeanFields(const wordList&) const; //- Add mean-squared field value to prime-squared mean field template void addMeanSqrToPrime2Mean ( - PtrList >&, - PtrList >& - ); + const wordList&, + const wordList& + ) const; //- Calculate prime-squared average fields template void calculatePrime2MeanFields ( - PtrList >&, - PtrList >& - ); + const wordList&, + const wordList& + ) const; // I-O @@ -222,11 +218,7 @@ protected: //- Write fields template - void writeFieldList - ( - const PtrList >& - fieldList - ) const; + void writeFieldList(const wordList&) const; //- Write averaging properties - steps and time void writeAveragingProperties() const; diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverageTemplates.C b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverageTemplates.C index 8bba661723..c6e57835a7 100644 --- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverageTemplates.C +++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverageTemplates.C @@ -34,22 +34,36 @@ template void Foam::fieldAverage::addMeanField ( const label fieldi, - PtrList >& meanFieldList -) + wordList& meanFieldList +) const { if (faItems_[fieldi].mean()) { typedef GeometricField fieldType; const word& fieldName = faItems_[fieldi].fieldName(); - const fieldType& baseField = obr_.lookupObject(fieldName); const word meanFieldName = fieldName + EXT_MEAN; + Info<< "Reading/calculating field " << meanFieldName << nl << endl; - meanFieldList.set - ( - fieldi, - new fieldType + + if (obr_.foundObject(meanFieldName)) + { + meanFieldList[fieldi] = meanFieldName; + } + else if (obr_.found(meanFieldName)) + { + Info<< "Cannot allocate average field " << meanFieldName + << " since an object with that name already exists." + << " Disabling averaging." << nl << endl; + meanFieldList[fieldi] = word::null; + } + else + { + const fieldType& baseField = + obr_.lookupObject(fieldName); + + fieldType* fPtr = new fieldType ( IOobject ( @@ -57,12 +71,16 @@ void Foam::fieldAverage::addMeanField obr_.time().timeName(), obr_, IOobject::READ_IF_PRESENT, - IOobject::NO_WRITE, - false + IOobject::NO_WRITE ), baseField - ) - ); + ); + + // Store on registry + fPtr->store(); + + meanFieldList[fieldi] = meanFieldName; + } } } @@ -71,25 +89,39 @@ template void Foam::fieldAverage::addPrime2MeanField ( const label fieldi, - PtrList >& meanFieldList, - PtrList >& prime2MeanFieldList -) + const wordList& meanFieldList, + wordList& prime2MeanFieldList +) const { - if (faItems_[fieldi].mean() && meanFieldList.set(fieldi)) + if (faItems_[fieldi].mean() && meanFieldList[fieldi] != word::null) { typedef GeometricField fieldType1; typedef GeometricField fieldType2; const word& fieldName = faItems_[fieldi].fieldName(); - const fieldType1& baseField = obr_.lookupObject(fieldName); - const fieldType1& meanField = meanFieldList[fieldi]; const word meanFieldName = fieldName + EXT_PRIME2MEAN; Info<< "Reading/calculating field " << meanFieldName << nl << endl; - prime2MeanFieldList.set - ( - fieldi, - new fieldType2 + + if (obr_.foundObject(meanFieldName)) + { + prime2MeanFieldList[fieldi] = meanFieldName; + } + else if (obr_.found(meanFieldName)) + { + Info<< "Cannot allocate average field " << meanFieldName + << " since an object with that name already exists." + << " Disabling averaging." << nl << endl; + prime2MeanFieldList[fieldi] = word::null; + } + else + { + const fieldType1& baseField = + obr_.lookupObject(fieldName); + const fieldType1& meanField = + obr_.lookupObject(meanFieldList[fieldi]); + + fieldType2* fPtr = new fieldType2 ( IOobject ( @@ -97,21 +129,23 @@ void Foam::fieldAverage::addPrime2MeanField obr_.time().timeName(), obr_, IOobject::READ_IF_PRESENT, - IOobject::NO_WRITE, - false + IOobject::NO_WRITE ), sqr(baseField) - sqr(meanField) - ) - ); + ); + + // Store on registry + fPtr->store(); + + prime2MeanFieldList[fieldi] = meanFieldName; + } } } template -void Foam::fieldAverage::calculateMeanFields -( - PtrList >& meanFieldList -) +void Foam::fieldAverage::calculateMeanFields(const wordList& meanFieldList) +const { typedef GeometricField fieldType; @@ -119,12 +153,15 @@ void Foam::fieldAverage::calculateMeanFields forAll(faItems_, i) { - if (faItems_[i].mean() && meanFieldList.set(i)) + if (faItems_[i].mean() && meanFieldList[i] != word::null) { const word& fieldName = faItems_[i].fieldName(); const fieldType& baseField = obr_.lookupObject(fieldName); - fieldType& meanField = meanFieldList[i]; + fieldType& meanField = const_cast + ( + obr_.lookupObject(meanFieldList[i]) + ); scalar alpha = 0.0; scalar beta = 0.0; @@ -148,9 +185,9 @@ void Foam::fieldAverage::calculateMeanFields template void Foam::fieldAverage::calculatePrime2MeanFields ( - PtrList >& meanFieldList, - PtrList >& prime2MeanFieldList -) + const wordList& meanFieldList, + const wordList& prime2MeanFieldList +) const { typedef GeometricField fieldType1; typedef GeometricField fieldType2; @@ -162,15 +199,19 @@ void Foam::fieldAverage::calculatePrime2MeanFields if ( faItems_[i].prime2Mean() - && meanFieldList.set(i) - && prime2MeanFieldList.set(i) + && meanFieldList[i] != word::null + && prime2MeanFieldList[i] != word::null ) { const word& fieldName = faItems_[i].fieldName(); const fieldType1& baseField = obr_.lookupObject(fieldName); - const fieldType1& meanField = meanFieldList[i]; - fieldType2& prime2MeanField = prime2MeanFieldList[i]; + const fieldType1& meanField = + obr_.lookupObject(meanFieldList[i]); + fieldType2& prime2MeanField = const_cast + ( + obr_.lookupObject(prime2MeanFieldList[i]) + ); scalar alpha = 0.0; scalar beta = 0.0; @@ -197,9 +238,9 @@ void Foam::fieldAverage::calculatePrime2MeanFields template void Foam::fieldAverage::addMeanSqrToPrime2Mean ( - PtrList >& meanFieldList, - PtrList >& prime2MeanFieldList -) + const wordList& meanFieldList, + const wordList& prime2MeanFieldList +) const { typedef GeometricField fieldType1; typedef GeometricField fieldType2; @@ -209,12 +250,16 @@ void Foam::fieldAverage::addMeanSqrToPrime2Mean if ( faItems_[i].prime2Mean() - && meanFieldList.set(i) - && prime2MeanFieldList.set(i) + && meanFieldList[i] != word::null + && prime2MeanFieldList[i] != word::null ) { - const fieldType1& meanField = meanFieldList[i]; - fieldType2& prime2MeanField = prime2MeanFieldList[i]; + const fieldType1& meanField = + obr_.lookupObject(meanFieldList[i]); + fieldType2& prime2MeanField = const_cast + ( + obr_.lookupObject(prime2MeanFieldList[i]) + ); prime2MeanField += sqr(meanField); } @@ -223,16 +268,16 @@ void Foam::fieldAverage::addMeanSqrToPrime2Mean template -void Foam::fieldAverage::writeFieldList -( - const PtrList >& fieldList -) const +void Foam::fieldAverage::writeFieldList(const wordList& fieldList) const { + typedef GeometricField fieldType; + forAll(fieldList, i) { - if (fieldList.set(i)) + if (fieldList[i] != word::null) { - fieldList[i].write(); + const fieldType& f = obr_.lookupObject(fieldList[i]); + f.write(); } } } From 94bec509ced3503e6ac07967bf8a608049c508b1 Mon Sep 17 00:00:00 2001 From: mattijs Date: Fri, 13 Feb 2009 12:39:40 +0000 Subject: [PATCH 9/9] acos bounds --- src/meshTools/cellQuality/cellQuality.C | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/meshTools/cellQuality/cellQuality.C b/src/meshTools/cellQuality/cellQuality.C index cd4c7d4f47..57e450dfe8 100644 --- a/src/meshTools/cellQuality/cellQuality.C +++ b/src/meshTools/cellQuality/cellQuality.C @@ -68,7 +68,7 @@ Foam::tmp Foam::cellQuality::nonOrthogonality() const scalar magS = mag(s); scalar cosDDotS = - Foam::acos((d & s)/(mag(d)*magS + VSMALL)) + Foam::acos(min(1.0, (d & s)/(mag(d)*magS + VSMALL))) *180.0/mathematicalConstant::pi; result[own[faceI]] = max(cosDDotS, result[own[faceI]]); @@ -94,7 +94,7 @@ Foam::tmp Foam::cellQuality::nonOrthogonality() const scalar magS = mag(s); scalar cosDDotS = - Foam::acos((d & s)/(mag(d)*magS + VSMALL)) + Foam::acos(min(1.0, (d & s)/(mag(d)*magS + VSMALL))) *180.0/mathematicalConstant::pi; result[faceCells[faceI]] = max(cosDDotS, result[faceCells[faceI]]); @@ -209,7 +209,7 @@ Foam::tmp Foam::cellQuality::faceNonOrthogonality() const scalar magS = mag(s); scalar cosDDotS = - Foam::acos((d & s)/(mag(d)*magS + VSMALL)) + Foam::acos(min(1.0, (d & s)/(mag(d)*magS + VSMALL))) *180.0/mathematicalConstant::pi; result[faceI] = cosDDotS; @@ -235,7 +235,7 @@ Foam::tmp Foam::cellQuality::faceNonOrthogonality() const scalar magS = mag(s); scalar cosDDotS = - Foam::acos((d & s)/(mag(d)*magS + VSMALL)) + Foam::acos(min(1.0, (d & s)/(mag(d)*magS + VSMALL))) *180.0/mathematicalConstant::pi; result[globalFaceI++] = cosDDotS;