diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/kineticTheoryModel/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C b/applications/solvers/multiphase/twoPhaseEulerFoam/kineticTheoryModel/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C index 5f6dcd8735..b3ddd44ff2 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/kineticTheoryModel/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/kineticTheoryModel/frictionalStressModel/Schaeffer/SchaefferFrictionalStress.C @@ -71,8 +71,8 @@ frictionalPressure const dimensionedScalar& eta, const dimensionedScalar& p ) const -{ - return +{ + return dimensionedScalar("1e24", dimensionSet(1, -1, -2, 0, 0), 1e24) *pow(Foam::max(alpha - alphaMinFriction, scalar(0)), 10.0); } @@ -89,7 +89,7 @@ frictionalPressurePrime const dimensionedScalar& p ) const { - return + return dimensionedScalar("1e25", dimensionSet(1, -1, -2, 0, 0), 1e25) *pow(Foam::max(alpha - alphaMinFriction, scalar(0)), 9.0); } @@ -129,8 +129,8 @@ Foam::tmp Foam::SchaefferFrictionalStress::muf { if (alpha[celli] > alphaMax.value()-5e-2) { - muf_[celli] = - 0.5*alpha[celli]*pf[celli]*sin(phi.value()) + muf_[celli] = + 0.5*pf[celli]*sin(phi.value()) /( sqrt(1.0/6.0*(sqr(D[celli].xx() - D[celli].yy()) + sqr(D[celli].yy() - D[celli].zz()) diff --git a/applications/utilities/postProcessing/field/components/Make/files b/applications/utilities/postProcessing/field/components/Make/files new file mode 100644 index 0000000000..1f61233dd1 --- /dev/null +++ b/applications/utilities/postProcessing/field/components/Make/files @@ -0,0 +1,3 @@ +components.C + +EXE = $(FOAM_APPBIN)/components diff --git a/applications/utilities/postProcessing/Field/magGrad/Make/options b/applications/utilities/postProcessing/field/components/Make/options similarity index 100% rename from applications/utilities/postProcessing/Field/magGrad/Make/options rename to applications/utilities/postProcessing/field/components/Make/options diff --git a/applications/utilities/postProcessing/velocityField/magU/magU.C b/applications/utilities/postProcessing/field/components/components.C similarity index 57% rename from applications/utilities/postProcessing/velocityField/magU/magU.C rename to applications/utilities/postProcessing/field/components/components.C index 8b1ea63e8c..5dae20f760 100644 --- a/applications/utilities/postProcessing/velocityField/magU/magU.C +++ b/applications/utilities/postProcessing/field/components/components.C @@ -23,11 +23,11 @@ License Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Application - magU + components Description - Calculates and writes the scalar magnitude of the gradient of the velocity - field U for each time + Writes scalar fields corresponding to each component of the supplied + field (name) for each time. \*---------------------------------------------------------------------------*/ @@ -35,12 +35,54 @@ Description // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +template +void writeComponents +( + const IOobject& header, + const fvMesh& mesh, + bool& processed +) +{ + typedef GeometricField fieldType; + + if (header.headerClassName() == fieldType::typeName) + { + Info<< " Reading " << header.name() << endl; + fieldType field(header, mesh); + + for (direction i=0; i(fieldHeader, mesh, processed); + writeComponents(fieldHeader, mesh, processed); + writeComponents(fieldHeader, mesh, processed); + writeComponents(fieldHeader, mesh, processed); + if (!processed) + { + FatalError + << "Unable to process " << fieldName << nl + << "No call to components for fields of type " + << fieldHeader.headerClassName() << nl << nl + << exit(FatalError); + } } else { - Info<< " No U" << endl; + Info<< " No " << fieldName << endl; } Info<< endl; } - Info<< "End\n" << endl; - return(0); } diff --git a/applications/utilities/postProcessing/field/mag/Make/files b/applications/utilities/postProcessing/field/mag/Make/files new file mode 100644 index 0000000000..a661e8243e --- /dev/null +++ b/applications/utilities/postProcessing/field/mag/Make/files @@ -0,0 +1,3 @@ +mag.C + +EXE = $(FOAM_APPBIN)/mag diff --git a/applications/utilities/postProcessing/velocityField/Ucomponents/Make/options b/applications/utilities/postProcessing/field/mag/Make/options similarity index 100% rename from applications/utilities/postProcessing/velocityField/Ucomponents/Make/options rename to applications/utilities/postProcessing/field/mag/Make/options diff --git a/applications/utilities/postProcessing/velocityField/Ucomponents/Ucomponents.C b/applications/utilities/postProcessing/field/mag/mag.C similarity index 55% rename from applications/utilities/postProcessing/velocityField/Ucomponents/Ucomponents.C rename to applications/utilities/postProcessing/field/mag/mag.C index a6897b4fde..6e5ef307ac 100644 --- a/applications/utilities/postProcessing/velocityField/Ucomponents/Ucomponents.C +++ b/applications/utilities/postProcessing/field/mag/mag.C @@ -23,11 +23,10 @@ License Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Application - Ucomponents + mag Description - Writes the three scalar fields, Ux, Uy and Uz, for each component of the - velocity field U for each time + Calculates and writes the magnitude of a field for each time \*---------------------------------------------------------------------------*/ @@ -35,12 +34,49 @@ Description // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +template +void writeMagField +( + const IOobject& header, + const fvMesh& mesh, + bool& processed +) +{ + typedef GeometricField fieldType; + + if (header.headerClassName() == fieldType::typeName) + { + Info<< " Reading " << header.name() << endl; + fieldType field(header, mesh); + + Info<< " Calculating mag" << header.name() << endl; + volScalarField magField + ( + IOobject + ( + "mag" + header.name(), + mesh.time().timeName(), + mesh, + IOobject::NO_READ + ), + mag(field) + ); + magField.write(); + + processed = true; + } +} + + int main(int argc, char *argv[]) { + argList::validArgs.append("fieldName"); # include "addTimeOptions.H" # include "setRootCase.H" + word fieldName(args.additionalArgs()[0]); + # include "createTime.H" // Get times list @@ -59,48 +95,44 @@ int main(int argc, char *argv[]) Info<< "Time = " << runTime.timeName() << endl; - IOobject Uheader + IOobject fieldHeader ( - "U", + fieldName, runTime.timeName(), mesh, IOobject::MUST_READ ); - // Check U exists - if (Uheader.headerOk()) + // Check field "fieldName" exists + if (fieldHeader.headerOk()) { mesh.readUpdate(); - Info<< " Reading U" << endl; - volVectorField U(Uheader, mesh); - - for (direction i=0; i(fieldHeader, mesh, processed); + writeMagField(fieldHeader, mesh, processed); + writeMagField(fieldHeader, mesh, processed); + writeMagField(fieldHeader, mesh, processed); + writeMagField(fieldHeader, mesh, processed); + if (!processed) { - Info<< " Calculating U" << vector::componentNames[i] << endl; - - volScalarField Ui - ( - IOobject - ( - "U" + word(vector::componentNames[i]), - runTime.timeName(), - mesh, - IOobject::NO_READ - ), - U.component(i) - ); - Ui.write(); + FatalError + << "Unable to process " << fieldName << nl + << "No call to mag for fields of type " + << fieldHeader.headerClassName() << nl << nl + << exit(FatalError); } } else { - Info<< " No U" << endl; + Info<< " No " << fieldName << endl; } Info<< endl; } + Info<< "End\n" << endl; + return(0); } diff --git a/applications/utilities/postProcessing/Field/magGrad/FoamX/magGradU.cfg b/applications/utilities/postProcessing/field/magGrad/FoamX/magGradU.cfg similarity index 100% rename from applications/utilities/postProcessing/Field/magGrad/FoamX/magGradU.cfg rename to applications/utilities/postProcessing/field/magGrad/FoamX/magGradU.cfg diff --git a/applications/utilities/postProcessing/Field/magGrad/Make/files b/applications/utilities/postProcessing/field/magGrad/Make/files similarity index 100% rename from applications/utilities/postProcessing/Field/magGrad/Make/files rename to applications/utilities/postProcessing/field/magGrad/Make/files diff --git a/applications/utilities/postProcessing/velocityField/magU/Make/options b/applications/utilities/postProcessing/field/magGrad/Make/options similarity index 100% rename from applications/utilities/postProcessing/velocityField/magU/Make/options rename to applications/utilities/postProcessing/field/magGrad/Make/options diff --git a/applications/utilities/postProcessing/Field/magGrad/magGrad.C b/applications/utilities/postProcessing/field/magGrad/magGrad.C similarity index 100% rename from applications/utilities/postProcessing/Field/magGrad/magGrad.C rename to applications/utilities/postProcessing/field/magGrad/magGrad.C diff --git a/applications/utilities/postProcessing/field/magSqr/Make/files b/applications/utilities/postProcessing/field/magSqr/Make/files new file mode 100644 index 0000000000..7f7b96ef99 --- /dev/null +++ b/applications/utilities/postProcessing/field/magSqr/Make/files @@ -0,0 +1,3 @@ +magSqr.C + +EXE = $(FOAM_APPBIN)/magSqr diff --git a/applications/utilities/postProcessing/stressField/sigmaComponents/Make/options b/applications/utilities/postProcessing/field/magSqr/Make/options similarity index 72% rename from applications/utilities/postProcessing/stressField/sigmaComponents/Make/options rename to applications/utilities/postProcessing/field/magSqr/Make/options index fa15f12452..be7f7d631d 100644 --- a/applications/utilities/postProcessing/stressField/sigmaComponents/Make/options +++ b/applications/utilities/postProcessing/field/magSqr/Make/options @@ -2,4 +2,5 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude EXE_LIBS = \ - -lfiniteVolume + -lfiniteVolume \ + diff --git a/applications/utilities/postProcessing/stressField/sigmaComponents/sigmaComponents.C b/applications/utilities/postProcessing/field/magSqr/magSqr.C similarity index 55% rename from applications/utilities/postProcessing/stressField/sigmaComponents/sigmaComponents.C rename to applications/utilities/postProcessing/field/magSqr/magSqr.C index f41f03104d..db08c32260 100644 --- a/applications/utilities/postProcessing/stressField/sigmaComponents/sigmaComponents.C +++ b/applications/utilities/postProcessing/field/magSqr/magSqr.C @@ -23,11 +23,10 @@ License Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Application - Rcomponents + mag Description - Calculates and writes the scalar fields of the six components of the - stress sigma for each time. + Calculates and writes the magnitude-squared of a field for each time \*---------------------------------------------------------------------------*/ @@ -35,12 +34,49 @@ Description // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +template +void writeMagSqrField +( + const IOobject& header, + const fvMesh& mesh, + bool& processed +) +{ + typedef GeometricField fieldType; + + if (header.headerClassName() == fieldType::typeName) + { + Info<< " Reading " << header.name() << endl; + fieldType field(header, mesh); + + Info<< " Calculating magSqr" << header.name() << endl; + volScalarField magSqrField + ( + IOobject + ( + "magSqr" + header.name(), + mesh.time().timeName(), + mesh, + IOobject::NO_READ + ), + magSqr(field) + ); + magSqrField.write(); + + processed = true; + } +} + + int main(int argc, char *argv[]) { + argList::validArgs.append("fieldName"); # include "addTimeOptions.H" # include "setRootCase.H" + word fieldName(args.additionalArgs()[0]); + # include "createTime.H" // Get times list @@ -59,48 +95,44 @@ int main(int argc, char *argv[]) Info<< "Time = " << runTime.timeName() << endl; - IOobject sigmaHeader + IOobject fieldHeader ( - "sigma", + fieldName, runTime.timeName(), mesh, IOobject::MUST_READ ); - // Check sigma exists - if (sigmaHeader.headerOk()) + // Check field "fieldName" exists + if (fieldHeader.headerOk()) { mesh.readUpdate(); - Info<< " Reading sigma" << endl; - volSymmTensorField sigma(sigmaHeader, mesh); - - for (direction i=0; i(fieldHeader, mesh, processed); + writeMagSqrField(fieldHeader, mesh, processed); + writeMagSqrField(fieldHeader, mesh, processed); + writeMagSqrField(fieldHeader, mesh, processed); + writeMagSqrField(fieldHeader, mesh, processed); + if (!processed) { - Info<< " Calculating sigma" << tensor::componentNames[i] << endl; - - volScalarField sigmai - ( - IOobject - ( - "sigma" + word(tensor::componentNames[i]), - runTime.timeName(), - mesh, - IOobject::NO_READ - ), - sigma.component(i) - ); - sigmai.write(); + FatalError + << "Unable to process " << fieldName << nl + << "No call to mag for fields of type " + << fieldHeader.headerClassName() << nl << nl + << exit(FatalError); } } else { - Info<< " No sigma" << endl; + Info<< " No " << fieldName << endl; } Info<< endl; } + Info<< "End\n" << endl; + return(0); } diff --git a/applications/utilities/postProcessing/stressField/sigmaComponents/FoamX/sigmaComponents.cfg b/applications/utilities/postProcessing/stressField/sigmaComponents/FoamX/sigmaComponents.cfg deleted file mode 100644 index fcd3fcb03c..0000000000 --- a/applications/utilities/postProcessing/stressField/sigmaComponents/FoamX/sigmaComponents.cfg +++ /dev/null @@ -1,27 +0,0 @@ -/*---------------------------------------------------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 1.0 | -| \\ / A nd | Web: http://www.openfoam.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -// stressComponents tool definition - -description "Decompose general stress tensor into individual components"; - -sigmaComponentsDict -{ - type dictionary; - description "sigmaComponents control dictionary"; - dictionaryPath "system"; - - entries - { - arguments - { - type rootCaseTimeArguments; - } - } -} - -// ************************************************************************* // diff --git a/applications/utilities/postProcessing/stressField/sigmaComponents/Make/files b/applications/utilities/postProcessing/stressField/sigmaComponents/Make/files deleted file mode 100644 index 528b49906d..0000000000 --- a/applications/utilities/postProcessing/stressField/sigmaComponents/Make/files +++ /dev/null @@ -1,3 +0,0 @@ -sigmaComponents.C - -EXE = $(FOAM_APPBIN)/sigmaComponents diff --git a/applications/utilities/postProcessing/velocityField/Ucomponents/FoamX/Ucomponents.cfg b/applications/utilities/postProcessing/velocityField/Ucomponents/FoamX/Ucomponents.cfg deleted file mode 100644 index 4191776f78..0000000000 --- a/applications/utilities/postProcessing/velocityField/Ucomponents/FoamX/Ucomponents.cfg +++ /dev/null @@ -1,27 +0,0 @@ -/*---------------------------------------------------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 1.0 | -| \\ / A nd | Web: http://www.openfoam.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -// Ucomponents tool definition - -description "U velocity components"; - -UcomponentsDict -{ - type dictionary; - description "Ucomponents control dictionary"; - dictionaryPath "system"; - - entries - { - arguments - { - type rootCaseTimeArguments; - } - } -} - -// ************************************************************************* // diff --git a/applications/utilities/postProcessing/velocityField/Ucomponents/Make/files b/applications/utilities/postProcessing/velocityField/Ucomponents/Make/files deleted file mode 100644 index 6463602215..0000000000 --- a/applications/utilities/postProcessing/velocityField/Ucomponents/Make/files +++ /dev/null @@ -1,3 +0,0 @@ -Ucomponents.C - -EXE = $(FOAM_APPBIN)/Ucomponents diff --git a/applications/utilities/postProcessing/velocityField/magU/FoamX/magU.cfg b/applications/utilities/postProcessing/velocityField/magU/FoamX/magU.cfg deleted file mode 100644 index 9d3550046f..0000000000 --- a/applications/utilities/postProcessing/velocityField/magU/FoamX/magU.cfg +++ /dev/null @@ -1,27 +0,0 @@ -/*---------------------------------------------------------------------------*\ -| ========= | | -| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | -| \\ / O peration | Version: 1.0 | -| \\ / A nd | Web: http://www.openfoam.org | -| \\/ M anipulation | | -\*---------------------------------------------------------------------------*/ -// magU tool definition - -description "Magnitude of U components"; - -magUDict -{ - type dictionary; - description "magU control dictionary"; - dictionaryPath "system"; - - entries - { - arguments - { - type rootCaseTimeArguments; - } - } -} - -// ************************************************************************* // diff --git a/applications/utilities/postProcessing/velocityField/magU/Make/files b/applications/utilities/postProcessing/velocityField/magU/Make/files deleted file mode 100644 index beedec1eac..0000000000 --- a/applications/utilities/postProcessing/velocityField/magU/Make/files +++ /dev/null @@ -1,3 +0,0 @@ -magU.C - -EXE = $(FOAM_APPBIN)/magU diff --git a/etc/bashrc b/etc/bashrc index 99f0d872a5..298849ed79 100644 --- a/etc/bashrc +++ b/etc/bashrc @@ -32,7 +32,7 @@ #------------------------------------------------------------------------------ export WM_PROJECT=OpenFOAM -export WM_PROJECT_VERSION=dev +#export WM_PROJECT_VERSION=dev #!!User: # either set $FOAM_INST_DIR before sourcing this file or set diff --git a/etc/cshrc b/etc/cshrc index a4bd6bc430..203466dd7d 100644 --- a/etc/cshrc +++ b/etc/cshrc @@ -32,7 +32,7 @@ #------------------------------------------------------------------------------ setenv WM_PROJECT OpenFOAM -setenv WM_PROJECT_VERSION dev +#setenv WM_PROJECT_VERSION dev #!!User: # either setenv FOAM_INST_DIR before sourcing this file or set diff --git a/src/OpenFOAM/db/dictionary/functionEntries/includeEntry/includeEntry.C b/src/OpenFOAM/db/dictionary/functionEntries/includeEntry/includeEntry.C index 49679209db..81a8c0b23f 100644 --- a/src/OpenFOAM/db/dictionary/functionEntries/includeEntry/includeEntry.C +++ b/src/OpenFOAM/db/dictionary/functionEntries/includeEntry/includeEntry.C @@ -31,12 +31,19 @@ License // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // +const Foam::word Foam::functionEntries::includeEntry::typeName +( + Foam::functionEntries::includeEntry::typeName_() +); + +// Don't lookup the debug switch here as the debug switch dictionary +// might include includeEntry +int Foam::functionEntries::includeEntry::debug(0); + namespace Foam { namespace functionEntries { - defineTypeNameAndDebug(includeEntry, 0); - addToMemberFunctionSelectionTable ( functionEntry, diff --git a/src/OpenFOAM/db/dictionary/functionEntries/inputModeEntry/inputModeEntry.C b/src/OpenFOAM/db/dictionary/functionEntries/inputModeEntry/inputModeEntry.C index b75ffa1d32..27b1e78f5e 100644 --- a/src/OpenFOAM/db/dictionary/functionEntries/inputModeEntry/inputModeEntry.C +++ b/src/OpenFOAM/db/dictionary/functionEntries/inputModeEntry/inputModeEntry.C @@ -30,12 +30,19 @@ License // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // +const Foam::word Foam::functionEntries::inputModeEntry::typeName +( + Foam::functionEntries::inputModeEntry::typeName_() +); + +// Don't lookup the debug switch here as the debug switch dictionary +// might include inputModeEntries +int Foam::functionEntries::inputModeEntry::debug(0); + namespace Foam { namespace functionEntries { - defineTypeNameAndDebug(inputModeEntry, 0); - addToMemberFunctionSelectionTable ( functionEntry, diff --git a/src/postProcessing/fieldAverage/fieldAverage/fieldAverage.C b/src/postProcessing/fieldAverage/fieldAverage/fieldAverage.C index 2cdd6bb70b..86da03c2c1 100644 --- a/src/postProcessing/fieldAverage/fieldAverage/fieldAverage.C +++ b/src/postProcessing/fieldAverage/fieldAverage/fieldAverage.C @@ -54,11 +54,14 @@ void Foam::fieldAverage::resetLists(const label nItems) meanVectorFields_.clear(); meanVectorFields_.setSize(nItems); + meanSphericalTensorFields_.clear(); + meanSphericalTensorFields_.setSize(nItems); + meanSymmTensorFields_.clear(); meanSymmTensorFields_.setSize(nItems); - meanSphericalTensorFields_.clear(); - meanSphericalTensorFields_.setSize(nItems); + meanTensorFields_.clear(); + meanTensorFields_.setSize(nItems); prime2MeanScalarFields_.clear(); prime2MeanScalarFields_.setSize(nItems); @@ -88,13 +91,17 @@ void Foam::fieldAverage::initialise() { addMeanFields(i, meanVectorFields_); } + else if (obr_.foundObject(fieldName)) + { + addMeanFields(i, meanSphericalTensorFields_); + } else if (obr_.foundObject(fieldName)) { addMeanFields(i, meanSymmTensorFields_); } - else if (obr_.foundObject(fieldName)) + else if (obr_.foundObject(fieldName)) { - addMeanFields(i, meanSphericalTensorFields_); + addMeanFields(i, meanTensorFields_); } else { @@ -166,8 +173,9 @@ Foam::fieldAverage::fieldAverage faItems_(dict.lookup("fields")), meanScalarFields_(faItems_.size()), meanVectorFields_(faItems_.size()), - meanSymmTensorFields_(faItems_.size()), meanSphericalTensorFields_(faItems_.size()), + meanSymmTensorFields_(faItems_.size()), + meanTensorFields_(faItems_.size()), prime2MeanScalarFields_(faItems_.size()), prime2MeanSymmTensorFields_(faItems_.size()), totalIter_(faItems_.size(), 1), @@ -248,8 +256,9 @@ void Foam::fieldAverage::calcAverages() calculateMeanFields(meanScalarFields_); calculateMeanFields(meanVectorFields_); - calculateMeanFields(meanSymmTensorFields_); calculateMeanFields(meanSphericalTensorFields_); + calculateMeanFields(meanSymmTensorFields_); + calculateMeanFields(meanTensorFields_); calculatePrime2MeanFields(prime2MeanScalarFields_); calculatePrime2MeanFields(prime2MeanSymmTensorFields_); @@ -260,8 +269,9 @@ void Foam::fieldAverage::writeAverages() const { writeFieldList(meanScalarFields_); writeFieldList(meanVectorFields_); - writeFieldList(meanSymmTensorFields_); writeFieldList(meanSphericalTensorFields_); + writeFieldList(meanSymmTensorFields_); + writeFieldList(meanTensorFields_); writeFieldList(prime2MeanScalarFields_); writeFieldList(prime2MeanSymmTensorFields_); diff --git a/src/postProcessing/fieldAverage/fieldAverage/fieldAverage.H b/src/postProcessing/fieldAverage/fieldAverage/fieldAverage.H index aabcd2cfa9..7ebe098446 100644 --- a/src/postProcessing/fieldAverage/fieldAverage/fieldAverage.H +++ b/src/postProcessing/fieldAverage/fieldAverage/fieldAverage.H @@ -132,8 +132,9 @@ protected: // Arithmetic mean fields PtrList meanScalarFields_; PtrList meanVectorFields_; - PtrList meanSymmTensorFields_; PtrList meanSphericalTensorFields_; + PtrList meanSymmTensorFields_; + PtrList meanTensorFields_; // Prime-squared fields - applicable to volVectorFields only PtrList prime2MeanScalarFields_;