diff --git a/bin/tools/buildParaViewFunctions b/bin/tools/buildParaViewFunctions index dd18e7342d..5d70681343 100644 --- a/bin/tools/buildParaViewFunctions +++ b/bin/tools/buildParaViewFunctions @@ -140,6 +140,7 @@ buildParaView () { # set general options addCMakeVariable "BUILD_SHARED_LIBS:BOOL=ON" + addCMakeVariable "CMAKE_BUILD_TYPE:STRING=Release" # set paraview environment unset PARAVIEW_SRC_DIR diff --git a/src/postProcessing/fieldAverage/fieldAverage/fieldAverage.C b/src/postProcessing/fieldAverage/fieldAverage/fieldAverage.C index f2b48b8318..dcb00c06d6 100644 --- a/src/postProcessing/fieldAverage/fieldAverage/fieldAverage.C +++ b/src/postProcessing/fieldAverage/fieldAverage/fieldAverage.C @@ -85,23 +85,23 @@ void Foam::fieldAverage::initialise() const word fieldName = faItems_[i].fieldName(); if (obr_.foundObject(fieldName)) { - addMeanFields(i, meanScalarFields_); + addMeanField(i, meanScalarFields_); } else if (obr_.foundObject(fieldName)) { - addMeanFields(i, meanVectorFields_); + addMeanField(i, meanVectorFields_); } else if (obr_.foundObject(fieldName)) { - addMeanFields(i, meanSphericalTensorFields_); + addMeanField(i, meanSphericalTensorFields_); } else if (obr_.foundObject(fieldName)) { - addMeanFields(i, meanSymmTensorFields_); + addMeanField(i, meanSymmTensorFields_); } else if (obr_.foundObject(fieldName)) { - addMeanFields(i, meanTensorFields_); + addMeanField(i, meanTensorFields_); } else { @@ -118,29 +118,29 @@ void Foam::fieldAverage::initialise() if (faItems_[i].prime2Mean()) { const word fieldName = faItems_[i].fieldName(); + if (!faItems_[i].mean()) + { + FatalErrorIn("Foam::fieldAverage::initialise()") + << "To calculate the prime-squared average, the " + << "mean average must also be selected for field " + << fieldName << nl << exit(FatalError); + } + if (obr_.foundObject(fieldName)) { - if (!faItems_[i].mean()) - { - FatalErrorIn("Foam::fieldAverage::initialise()") - << "To calculate the prime-squared average, the " - << "mean average must also be selected for field " - << fieldName << nl << exit(FatalError); - } - addPrime2MeanFields(i, prime2MeanScalarFields_); + addPrime2MeanField + ( + i, + meanScalarFields_, + prime2MeanScalarFields_ + ); } else if (obr_.foundObject(fieldName)) { - if (!faItems_[i].mean()) - { - FatalErrorIn("Foam::fieldAverage::initialise()") - << "To calculate the prime-squared average, the " - << "mean average must also be selected for field " - << fieldName << nl << exit(FatalError); - } - addPrime2MeanFields + addPrime2MeanField ( i, + meanVectorFields_, prime2MeanSymmTensorFields_ ); } @@ -251,8 +251,16 @@ void Foam::fieldAverage::calcAverages() totalTime_[i] += obr_.time().deltaT().value(); } - addMeanSqrToPrime2Mean(prime2MeanScalarFields_); - addMeanSqrToPrime2Mean(prime2MeanSymmTensorFields_); + addMeanSqrToPrime2Mean + ( + meanScalarFields_, + prime2MeanScalarFields_ + ); + addMeanSqrToPrime2Mean + ( + meanVectorFields_, + prime2MeanSymmTensorFields_ + ); calculateMeanFields(meanScalarFields_); calculateMeanFields(meanVectorFields_); @@ -260,8 +268,16 @@ void Foam::fieldAverage::calcAverages() calculateMeanFields(meanSymmTensorFields_); calculateMeanFields(meanTensorFields_); - calculatePrime2MeanFields(prime2MeanScalarFields_); - calculatePrime2MeanFields(prime2MeanSymmTensorFields_); + calculatePrime2MeanFields + ( + meanScalarFields_, + prime2MeanScalarFields_ + ); + calculatePrime2MeanFields + ( + meanVectorFields_, + prime2MeanSymmTensorFields_ + ); } diff --git a/src/postProcessing/fieldAverage/fieldAverage/fieldAverage.H b/src/postProcessing/fieldAverage/fieldAverage/fieldAverage.H index 01e48bb71e..5c080e1873 100644 --- a/src/postProcessing/fieldAverage/fieldAverage/fieldAverage.H +++ b/src/postProcessing/fieldAverage/fieldAverage/fieldAverage.H @@ -161,22 +161,21 @@ protected: // valid, and populate field lists void initialise(); - //- Add mean average fields to PtrLists + //- Add mean average field to PtrList template - void addMeanFields + void addMeanField ( - const label fieldi, + const label, PtrList >& - fieldList ); - //- Add prime-squared average fields to PtrLists + //- Add prime-squared average field to PtrList template - void addPrime2MeanFields + void addPrime2MeanField ( - const label fieldi, + const label, + PtrList >&, PtrList >& - fieldList ); @@ -190,23 +189,22 @@ protected: void calculateMeanFields ( PtrList >& - fieldList ); //- Add mean-squared field value to prime-squared mean field template void addMeanSqrToPrime2Mean ( + PtrList >&, PtrList >& - fieldList ); //- Calculate prime-squared average fields template void calculatePrime2MeanFields ( + PtrList >&, PtrList >& - fieldList ); diff --git a/src/postProcessing/fieldAverage/fieldAverage/fieldAverageTemplates.C b/src/postProcessing/fieldAverage/fieldAverage/fieldAverageTemplates.C index 13dfd02502..b1448a5e3a 100644 --- a/src/postProcessing/fieldAverage/fieldAverage/fieldAverageTemplates.C +++ b/src/postProcessing/fieldAverage/fieldAverage/fieldAverageTemplates.C @@ -31,23 +31,22 @@ License // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // template -void Foam::fieldAverage::addMeanFields +void Foam::fieldAverage::addMeanField ( const label fieldi, - PtrList >& fieldList + PtrList >& meanFieldList ) { if (faItems_[fieldi].mean()) { typedef GeometricField fieldType; - const fvMesh& mesh = refCast(obr_); const word& fieldName = faItems_[fieldi].fieldName(); - const fieldType& baseField = mesh.lookupObject(fieldName); - const word meanFieldName = fieldName + EXT_MEAN; + const fieldType& baseField = obr_.lookupObject(fieldName); + const word meanFieldName = fieldName + EXT_MEAN; Info<< "Reading/calculating field " << meanFieldName << nl << endl; - fieldList.set + meanFieldList.set ( fieldi, new fieldType @@ -55,8 +54,8 @@ void Foam::fieldAverage::addMeanFields IOobject ( meanFieldName, - mesh.time().timeName(), - mesh, + obr_.time().timeName(), + obr_, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE ), @@ -68,26 +67,25 @@ void Foam::fieldAverage::addMeanFields template -void Foam::fieldAverage::addPrime2MeanFields +void Foam::fieldAverage::addPrime2MeanField ( const label fieldi, - PtrList >& fieldList + PtrList >& meanFieldList, + PtrList >& prime2MeanFieldList ) { - if (faItems_[fieldi].mean()) + if (faItems_[fieldi].mean() && meanFieldList.set(fieldi)) { typedef GeometricField fieldType1; typedef GeometricField fieldType2; - const fvMesh& mesh = refCast(obr_); const word& fieldName = faItems_[fieldi].fieldName(); - const fieldType1& baseField = mesh.lookupObject(fieldName); - const fieldType1& meanField = - mesh.lookupObject(fieldName + EXT_MEAN); - const word meanFieldName = fieldName + EXT_PRIME2MEAN; + const fieldType1& baseField = obr_.lookupObject(fieldName); + const fieldType1& meanField = meanFieldList[fieldi]; + const word meanFieldName = fieldName + EXT_PRIME2MEAN; Info<< "Reading/calculating field " << meanFieldName << nl << endl; - fieldList.set + prime2MeanFieldList.set ( fieldi, new fieldType2 @@ -95,8 +93,8 @@ void Foam::fieldAverage::addPrime2MeanFields IOobject ( meanFieldName, - mesh.time().timeName(), - mesh, + obr_.time().timeName(), + obr_, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE ), @@ -110,7 +108,7 @@ void Foam::fieldAverage::addPrime2MeanFields template void Foam::fieldAverage::calculateMeanFields ( - PtrList >& fieldList + PtrList >& meanFieldList ) { typedef GeometricField fieldType; @@ -119,31 +117,27 @@ void Foam::fieldAverage::calculateMeanFields forAll(faItems_, i) { - if (fieldList.set(i)) + if (faItems_[i].mean() && meanFieldList.set(i)) { - if (faItems_[i].mean()) + const word& fieldName = faItems_[i].fieldName(); + const fieldType& baseField = + obr_.lookupObject(fieldName); + fieldType& meanField = meanFieldList[i]; + + scalar alpha = 0.0; + scalar beta = 0.0; + if (faItems_[i].timeBase()) { - const fvMesh& mesh = refCast(obr_); - const word& fieldName = faItems_[i].fieldName(); - const fieldType& baseField = - mesh.lookupObject(fieldName); - fieldType& meanField = fieldList[i]; - - scalar alpha = 0.0; - scalar beta = 0.0; - if (faItems_[i].timeBase()) - { - alpha = (totalTime_[i] - dt)/totalTime_[i]; - beta = dt/totalTime_[i]; - } - else - { - alpha = scalar(totalIter_[i] - 1)/scalar(totalIter_[i]); - beta = 1.0/scalar(totalIter_[i]); - } - - meanField = alpha*meanField + beta*baseField; + alpha = (totalTime_[i] - dt)/totalTime_[i]; + beta = dt/totalTime_[i]; } + else + { + alpha = scalar(totalIter_[i] - 1)/scalar(totalIter_[i]); + beta = 1.0/scalar(totalIter_[i]); + } + + meanField = alpha*meanField + beta*baseField; } } } @@ -152,7 +146,8 @@ void Foam::fieldAverage::calculateMeanFields template void Foam::fieldAverage::calculatePrime2MeanFields ( - PtrList >& fieldList + PtrList >& meanFieldList, + PtrList >& prime2MeanFieldList ) { typedef GeometricField fieldType1; @@ -162,36 +157,36 @@ void Foam::fieldAverage::calculatePrime2MeanFields forAll(faItems_, i) { - if (fieldList.set(i)) + if + ( + faItems_[i].prime2Mean() + && meanFieldList.set(i) + && prime2MeanFieldList.set(i) + ) { - if (faItems_[i].prime2Mean()) + const word& fieldName = faItems_[i].fieldName(); + const fieldType1& baseField = + obr_.lookupObject(fieldName); + const fieldType1& meanField = meanFieldList[i]; + fieldType2& prime2MeanField = prime2MeanFieldList[i]; + + scalar alpha = 0.0; + scalar beta = 0.0; + if (faItems_[i].timeBase()) { - const fvMesh& mesh = refCast(obr_); - const word& fieldName = faItems_[i].fieldName(); - const fieldType1& baseField = - mesh.lookupObject(fieldName); - const fieldType1& meanField = - mesh.lookupObject(fieldName + EXT_MEAN); - fieldType2& prime2MeanField = fieldList[i]; - - scalar alpha = 0.0; - scalar beta = 0.0; - if (faItems_[i].timeBase()) - { - alpha = (totalTime_[i] - dt)/totalTime_[i]; - beta = dt/totalTime_[i]; - } - else - { - alpha = scalar(totalIter_[i] - 1)/scalar(totalIter_[i]); - beta = 1.0/scalar(totalIter_[i]); - } - - prime2MeanField = - alpha*prime2MeanField - + beta*sqr(baseField) - - sqr(meanField); + alpha = (totalTime_[i] - dt)/totalTime_[i]; + beta = dt/totalTime_[i]; } + else + { + alpha = scalar(totalIter_[i] - 1)/scalar(totalIter_[i]); + beta = 1.0/scalar(totalIter_[i]); + } + + prime2MeanField = + alpha*prime2MeanField + + beta*sqr(baseField) + - sqr(meanField); } } } @@ -200,7 +195,8 @@ void Foam::fieldAverage::calculatePrime2MeanFields template void Foam::fieldAverage::addMeanSqrToPrime2Mean ( - PtrList >& fieldList + PtrList >& meanFieldList, + PtrList >& prime2MeanFieldList ) { typedef GeometricField fieldType1; @@ -208,18 +204,17 @@ void Foam::fieldAverage::addMeanSqrToPrime2Mean forAll(faItems_, i) { - if (fieldList.set(i)) + if + ( + faItems_[i].prime2Mean() + && meanFieldList.set(i) + && prime2MeanFieldList.set(i) + ) { - if (faItems_[i].prime2Mean()) - { - const fvMesh& mesh = refCast(obr_); - const word& fieldName = faItems_[i].fieldName(); - const fieldType1& meanField = - mesh.lookupObject(fieldName + EXT_MEAN); - fieldType2& prime2MeanField = fieldList[i]; + const fieldType1& meanField = meanFieldList[i]; + fieldType2& prime2MeanField = prime2MeanFieldList[i]; - prime2MeanField += sqr(meanField); - } + prime2MeanField += sqr(meanField); } } } diff --git a/tutorials/lesCavitatingFoam/throttle3D/0.orig/U b/tutorials/lesCavitatingFoam/throttle3D/0.orig/U new file mode 100644 index 0000000000..00bd1a6a19 --- /dev/null +++ b/tutorials/lesCavitatingFoam/throttle3D/0.orig/U @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.5 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + inlet + { + type zeroGradient; + value uniform (0 0 0); + } + + outlet + { + type zeroGradient; + value uniform (0 0 0); + } + + walls + { + type fixedValue; + value uniform (0 0 0); + } + + frontBack + { + type fixedValue; + value uniform (0 0 0); + } +} + +// ************************************************************************* // diff --git a/tutorials/lesCavitatingFoam/throttle3D/0.orig/gamma b/tutorials/lesCavitatingFoam/throttle3D/0.orig/gamma new file mode 100644 index 0000000000..8a9e660169 --- /dev/null +++ b/tutorials/lesCavitatingFoam/throttle3D/0.orig/gamma @@ -0,0 +1,48 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.5 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object gamma; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type calculated; + value uniform 0; + } + + outlet + { + type calculated; + value uniform 0; + } + + walls + { + type calculated; + value uniform 0; + } + + frontBack + { + type calculated; + value uniform 0; + } +} + +// ************************************************************************* // diff --git a/tutorials/lesCavitatingFoam/throttle3D/0.orig/k b/tutorials/lesCavitatingFoam/throttle3D/0.orig/k new file mode 100644 index 0000000000..1deb4efcb9 --- /dev/null +++ b/tutorials/lesCavitatingFoam/throttle3D/0.orig/k @@ -0,0 +1,45 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.5 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0]; + +internalField uniform 10.0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.5; + } + + outlet + { + type zeroGradient; + } + + walls + { + type zeroGradient; + } + + frontBack + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/lesCavitatingFoam/throttle3D/0.orig/nuSgs b/tutorials/lesCavitatingFoam/throttle3D/0.orig/nuSgs new file mode 100644 index 0000000000..908414b2ea --- /dev/null +++ b/tutorials/lesCavitatingFoam/throttle3D/0.orig/nuSgs @@ -0,0 +1,43 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.5 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format binary; + class volScalarField; + object nuSgs; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 1e-11; + +boundaryField +{ + inlet + { + type zeroGradient; + } + outlet + { + type zeroGradient; + } + walls + { + type fixedValue; + value uniform 0; + } + frontBack + { + type fixedValue; + value uniform 0; + } +} + +// ************************************************************************* // diff --git a/tutorials/lesCavitatingFoam/throttle3D/0.orig/p b/tutorials/lesCavitatingFoam/throttle3D/0.orig/p new file mode 100644 index 0000000000..245ce1f46b --- /dev/null +++ b/tutorials/lesCavitatingFoam/throttle3D/0.orig/p @@ -0,0 +1,51 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.5 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -1 -2 0 0]; + +internalField uniform 300e5; + +boundaryField +{ + inlet + { + type totalPressure; + U U; + phi phiv; + rho rho; + psi none; + gamma 1; + p0 uniform 300e5; + } + + outlet + { + type fixedValue; + value uniform 100e5; + } + + walls + { + type zeroGradient; + } + + frontBack + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/lesCavitatingFoam/throttle3D/0.orig/rho b/tutorials/lesCavitatingFoam/throttle3D/0.orig/rho new file mode 100644 index 0000000000..c3a355b28e --- /dev/null +++ b/tutorials/lesCavitatingFoam/throttle3D/0.orig/rho @@ -0,0 +1,46 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 1.5 | +| \\ / A nd | Web: http://www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object rho; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [1 -3 0 0 0]; + +internalField uniform 845; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 845; + } + + outlet + { + type fixedValue; + value uniform 835; + } + + walls + { + type zeroGradient; + } + + frontBack + { + type zeroGradient; + } +} + +// ************************************************************************* //