diff --git a/applications/utilities/postProcessing/velocityField/divPhi/Make/files b/applications/utilities/postProcessing/velocityField/divPhi/Make/files deleted file mode 100644 index 0eb1cf466c230ed6e97c253778da8836e414f2ad..0000000000000000000000000000000000000000 --- a/applications/utilities/postProcessing/velocityField/divPhi/Make/files +++ /dev/null @@ -1,3 +0,0 @@ -divPhiApp.C - -EXE = $(FOAM_APPBIN)/divPhi diff --git a/applications/utilities/postProcessing/velocityField/divPhi/Make/options b/applications/utilities/postProcessing/velocityField/divPhi/Make/options deleted file mode 100644 index 41164260772b6d1bd213d329e2dfbccf6cacfb99..0000000000000000000000000000000000000000 --- a/applications/utilities/postProcessing/velocityField/divPhi/Make/options +++ /dev/null @@ -1,7 +0,0 @@ -EXE_INC = \ - -I$(FOAM_SRC)/postProcessing/postCalc \ - -I$(LIB_SRC)/finiteVolume/lnInclude - -EXE_LIBS = \ - $(FOAM_LIBBIN)/postCalc.o \ - -lfiniteVolume diff --git a/applications/utilities/postProcessing/velocityField/divU/FoamX/divU.cfg b/applications/utilities/postProcessing/velocityField/divU/FoamX/divU.cfg deleted file mode 100644 index 69a24b8a8e248a6ddb07e273e1dbe9e828ffb509..0000000000000000000000000000000000000000 --- a/applications/utilities/postProcessing/velocityField/divU/FoamX/divU.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 | | -\*---------------------------------------------------------------------------*/ -// divU tool definition - -description "div(U) calculation"; - -divUDict -{ - type dictionary; - description "divU control dictionary"; - dictionaryPath "system"; - - entries - { - arguments - { - type rootCaseTimeArguments; - } - } -} - -// ************************************************************************* // diff --git a/applications/utilities/postProcessing/velocityField/divU/Make/files b/applications/utilities/postProcessing/velocityField/divU/Make/files deleted file mode 100644 index 27af90178366e385ee3d8710750398460312be77..0000000000000000000000000000000000000000 --- a/applications/utilities/postProcessing/velocityField/divU/Make/files +++ /dev/null @@ -1,3 +0,0 @@ -divUApp.C - -EXE = $(FOAM_APPBIN)/divU diff --git a/applications/utilities/postProcessing/velocityField/divU/Make/options b/applications/utilities/postProcessing/velocityField/divU/Make/options deleted file mode 100644 index 41164260772b6d1bd213d329e2dfbccf6cacfb99..0000000000000000000000000000000000000000 --- a/applications/utilities/postProcessing/velocityField/divU/Make/options +++ /dev/null @@ -1,7 +0,0 @@ -EXE_INC = \ - -I$(FOAM_SRC)/postProcessing/postCalc \ - -I$(LIB_SRC)/finiteVolume/lnInclude - -EXE_LIBS = \ - $(FOAM_LIBBIN)/postCalc.o \ - -lfiniteVolume diff --git a/applications/utilities/postProcessing/velocityField/divU/divUApp.C b/applications/utilities/postProcessing/velocityField/divU/divUApp.C deleted file mode 100644 index 225c20f38439fd3dbcb37c26175f872c136df83a..0000000000000000000000000000000000000000 --- a/applications/utilities/postProcessing/velocityField/divU/divUApp.C +++ /dev/null @@ -1,84 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2 of the License, or (at your - option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM; if not, write to the Free Software Foundation, - Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -Application - divU - -Description - Calculates and writes the divergence of the velocity field U. - The -noWrite option just outputs the max/min values without writing the - field. - -\*---------------------------------------------------------------------------*/ - -#include "calc.H" -#include "fvc.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh) -{ - bool writeResults = !args.options().found("noWrite"); - - IOobject Uheader - ( - "U", - runTime.timeName(), - mesh, - IOobject::MUST_READ - ); - - if (Uheader.headerOk()) - { - Info<< " Reading U" << endl; - volVectorField U(Uheader, mesh); - - Info<< " Calculating divU" << endl; - volScalarField divU - ( - IOobject - ( - "divU", - runTime.timeName(), - mesh - ), - fvc::div(U) - ); - - Info<< "div(U) max/min : " - << max(divU).value() << " " - << min(divU).value() << endl; - - if (writeResults) - { - divU.write(); - } - } - else - { - Info<< " No U" << endl; - } -} - -// ************************************************************************* // diff --git a/src/postProcessing/foamCalcFunctions/Make/files b/src/postProcessing/foamCalcFunctions/Make/files index 839e7681476983b657eb01a4236941da8b8cef06..016ae776044f90327a3f6da64849177506272eb7 100644 --- a/src/postProcessing/foamCalcFunctions/Make/files +++ b/src/postProcessing/foamCalcFunctions/Make/files @@ -5,5 +5,6 @@ field/components/components.C field/mag/mag.C field/magSqr/magSqr.C field/magGrad/magGrad.C +field/div/div.C LIB = $(FOAM_LIBBIN)/libfoamCalcFunctions diff --git a/src/postProcessing/foamCalcFunctions/field/div/div.C b/src/postProcessing/foamCalcFunctions/field/div/div.C new file mode 100644 index 0000000000000000000000000000000000000000..5afc5c9d9aac6e7ed72d284a4111565068045242 --- /dev/null +++ b/src/postProcessing/foamCalcFunctions/field/div/div.C @@ -0,0 +1,128 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +\*---------------------------------------------------------------------------*/ + +#include "div.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + namespace calcTypes + { + defineTypeNameAndDebug(div, 0); + addToRunTimeSelectionTable(calcType, div, dictionary); + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::calcTypes::div::div() +: + calcType() +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::calcTypes::div::~div() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::calcTypes::div::init() +{ + Foam::argList::validArgs.append("div"); + argList::validArgs.append("fieldName1 .. fieldNameN"); +} + + +void Foam::calcTypes::div::preCalc +( + const argList& args, + const Time& runTime, + const fvMesh& mesh +) +{ + if (args.additionalArgs().size() < 2) + { + Info<< nl << "must specify one or more fields" << nl; + args.printUsage(); + FatalError.exit(); + } +} + + +void Foam::calcTypes::div::calc +( + const argList& args, + const Time& runTime, + const fvMesh& mesh +) +{ + const stringList& params = args.additionalArgs(); + + for (label fieldi=1; fieldi<params.size(); fieldi++) + { + const word fieldName(params[fieldi]); + + IOobject fieldHeader + ( + fieldName, + runTime.timeName(), + mesh, + IOobject::MUST_READ + ); + + // Check field exists + if (fieldHeader.headerOk()) + { + bool processed = false; + + writeDivField<surfaceScalarField>(fieldHeader, mesh, processed); + writeDivField<volVectorField>(fieldHeader, mesh, processed); + + if (!processed) + { + FatalError + << "Unable to process " << fieldName << nl + << "No call to div for fields of type " + << fieldHeader.headerClassName() << nl << nl + << exit(FatalError); + } + } + else + { + Info<< " No " << fieldName << endl; + } + } +} + + +// ************************************************************************* // + diff --git a/src/postProcessing/foamCalcFunctions/field/div/div.H b/src/postProcessing/foamCalcFunctions/field/div/div.H new file mode 100644 index 0000000000000000000000000000000000000000..7b920d369d8c6d5368d9b5ad8ccca89b44695281 --- /dev/null +++ b/src/postProcessing/foamCalcFunctions/field/div/div.H @@ -0,0 +1,139 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 1991-2007 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Class + Foam::div + +Description + Writes scalar fields corresponding to the divergence of the supplied + field (name) for each time. + +SourceFiles + div.C + +\*---------------------------------------------------------------------------*/ + +#ifndef div_H +#define div_H + +#include "calcType.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +namespace calcTypes +{ + +/*---------------------------------------------------------------------------*\ + Class div Declaration +\*---------------------------------------------------------------------------*/ + +class div +: + public calcType +{ + // Private Member Functions + + //- Disallow default bitwise copy construct + div(const div&); + + //- Disallow default bitwise assignment + void operator=(const div&); + + +protected: + + // Member Functions + + // Calculation routines + + //- Initialise - typically setting static variables, + // e.g. command line arguments + virtual void init(); + + //- Pre-time loop calculations + virtual void preCalc + ( + const argList& args, + const Time& runTime, + const fvMesh& mesh + ); + + //- Time loop calculations + virtual void calc + ( + const argList& args, + const Time& runTime, + const fvMesh& mesh + ); + + + // I-O + + //- Write div fields + template<class Type> + void writeDivField + ( + const IOobject& header, + const fvMesh& mesh, + bool& processed + ); + + +public: + + //- Runtime type information + TypeName("div"); + + + // Constructors + + //- Construct null + div(); + + + // Destructor + + virtual ~div(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace calcTypes +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "writeDivField.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/utilities/postProcessing/velocityField/divPhi/divPhiApp.C b/src/postProcessing/foamCalcFunctions/field/div/writeDivField.C similarity index 56% rename from applications/utilities/postProcessing/velocityField/divPhi/divPhiApp.C rename to src/postProcessing/foamCalcFunctions/field/div/writeDivField.C index eb9d1ad26dea736d84a976b8f159f203435c0653..693c8673a4a5ba4e05c418984729feeb838ec25c 100644 --- a/applications/utilities/postProcessing/velocityField/divPhi/divPhiApp.C +++ b/src/postProcessing/foamCalcFunctions/field/div/writeDivField.C @@ -22,58 +22,38 @@ License along with OpenFOAM; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -Application - divPhi - -Description - Calculates and writes the divergence of the flux field phi. The - -noWrite option just outputs the max/min values without writing the - field. - \*---------------------------------------------------------------------------*/ -#include "calc.H" -#include "fvc.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -void Foam::calc(const argList& args, const Time& runTime, const fvMesh& mesh) +template<class Type> +void Foam::calcTypes::div::writeDivField +( + const IOobject& header, + const fvMesh& mesh, + bool& processed +) { - bool writeResults = !args.options().found("noWrite"); - - Info<< " Reading phi" << endl; - surfaceScalarField phi - ( - IOobject - ( - "phi", - runTime.timeName(), - mesh, - IOobject::MUST_READ - ), - mesh - ); + if (header.headerClassName() == Type::typeName) + { + Info<< " Reading " << header.name() << endl; + Type field(header, mesh); - Info<< " Calculating divPhi" << endl; - volScalarField divPhi - ( - IOobject + Info<< " Calculating div" << header.name() << endl; + volScalarField divField ( - "divPhi", - runTime.timeName(), - mesh - ), - fvc::div(phi) - ); - - Info<< "div(phi) max/min : " - << max(divPhi).value() << " " - << min(divPhi).value() << endl; - - if (writeResults) - { - divPhi.write(); + IOobject + ( + "div" + header.name(), + mesh.time().timeName(), + mesh, + IOobject::NO_READ + ), + fvc::div(field) + ); + divField.write(); + + processed = true; } } -// ************************************************************************* // + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //