diff --git a/applications/utilities/miscellaneous/foamHelp/Allwmake b/applications/utilities/miscellaneous/foamHelp/Allwmake new file mode 100755 index 0000000000000000000000000000000000000000..4724935b92aafcaca83af530da8936424d25461c --- /dev/null +++ b/applications/utilities/miscellaneous/foamHelp/Allwmake @@ -0,0 +1,8 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # run from this directory + +wmake libso helpTypes +wmake + + +# ----------------------------------------------------------------- end-of-file diff --git a/applications/utilities/miscellaneous/foamHelp/Make/files b/applications/utilities/miscellaneous/foamHelp/Make/files new file mode 100644 index 0000000000000000000000000000000000000000..263901fe72896d9dd71a0c3d9eaa280349d03a61 --- /dev/null +++ b/applications/utilities/miscellaneous/foamHelp/Make/files @@ -0,0 +1,3 @@ +foamHelp.C + +EXE = $(FOAM_APPBIN)/foamHelp diff --git a/applications/utilities/miscellaneous/foamHelp/Make/options b/applications/utilities/miscellaneous/foamHelp/Make/options new file mode 100644 index 0000000000000000000000000000000000000000..41ca9e9b573647baf223ed5feaaa2cb587a0d42b --- /dev/null +++ b/applications/utilities/miscellaneous/foamHelp/Make/options @@ -0,0 +1,15 @@ +EXE_INC = \ + -IhelpTypes/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude + +EXE_LIBS = \ + -lhelpTypes \ + -lfiniteVolume \ + -lincompressibleTurbulenceModel \ + -lcompressibleTurbulenceModel \ + -lincompressibleRASModels \ + -lcompressibleRASModels \ + -lincompressibleLESModels \ + -lcompressibleLESModels \ + -lradiationModels \ + -lfluidThermophysicalModels diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermoNew.C b/applications/utilities/miscellaneous/foamHelp/foamHelp.C similarity index 56% rename from src/thermophysicalModels/basic/basicThermo/basicThermoNew.C rename to applications/utilities/miscellaneous/foamHelp/foamHelp.C index e7dda0d9d548d8543a47f6346c02de0895bdbacb..39e0cb9130d9fec38e8698a4adbd799c3c4ae843 100644 --- a/src/thermophysicalModels/basic/basicThermo/basicThermoNew.C +++ b/applications/utilities/miscellaneous/foamHelp/foamHelp.C @@ -21,50 +21,47 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. +Application + foamHelp + +Description + Top level wrapper utility around foam help utilities + \*---------------------------------------------------------------------------*/ -#include "basicThermo.H" +#include "fvCFD.H" +#include "helpType.H" + +using namespace Foam; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -Foam::autoPtr<Foam::basicThermo> Foam::basicThermo::New -( - const fvMesh& mesh -) +int main(int argc, char *argv[]) { - // get model name, but do not register the dictionary - // otherwise it is registered in the database twice - const word modelType + #include "addRegionOption.H" + if (argc < 2) + { + FatalError + << "No help utility has been supplied" << nl + << exit(FatalError); + } + + const word utilityName = argv[1]; + + Foam::autoPtr<Foam::helpType> utility ( - IOdictionary - ( - IOobject - ( - "thermophysicalProperties", - mesh.time().constant(), - mesh, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE, - false - ) - ).lookup("thermoType") + helpType::New(utilityName) ); - Info<< "Selecting thermodynamics package " << modelType << endl; + utility().init(); - fvMeshConstructorTable::iterator cstrIter = - fvMeshConstructorTablePtr_->find(modelType); + #include "setRootCase.H" + #include "createTime.H" + #include "createNamedMesh.H" - if (cstrIter == fvMeshConstructorTablePtr_->end()) - { - FatalErrorIn("basicThermo::New(const fvMesh&)") - << "Unknown basicThermo type " << modelType << nl << nl - << "Valid basicThermo types are:" << nl - << fvMeshConstructorTablePtr_->sortedToc() << nl - << exit(FatalError); - } + utility().execute(args, mesh); - return autoPtr<basicThermo>(cstrIter()(mesh)); + Info<< "End\n" << endl; } diff --git a/applications/utilities/miscellaneous/foamHelp/helpTypes/Make/files b/applications/utilities/miscellaneous/foamHelp/helpTypes/Make/files new file mode 100644 index 0000000000000000000000000000000000000000..1f7de8d62e7fb2169fe9b02a8ecc00b368901f42 --- /dev/null +++ b/applications/utilities/miscellaneous/foamHelp/helpTypes/Make/files @@ -0,0 +1,8 @@ +helpType/helpType.C +helpType/helpTypeNew.C +helpBoundary/helpBoundary.C +helpFunctionObject/helpFunctionObject.C + +doxygenXmlParser/doxygenXmlParser.C + +LIB = $(FOAM_LIBBIN)/libhelpTypes diff --git a/applications/utilities/miscellaneous/foamHelp/helpTypes/Make/options b/applications/utilities/miscellaneous/foamHelp/helpTypes/Make/options new file mode 100644 index 0000000000000000000000000000000000000000..1c130c5eb1c958841f729541993d6088312c0dae --- /dev/null +++ b/applications/utilities/miscellaneous/foamHelp/helpTypes/Make/options @@ -0,0 +1,13 @@ +EXE_INC = \ + -I$(LIB_SRC)/finiteVolume/lnInclude + +EXE_LIBS = \ + -lfiniteVolume \ + -lincompressibleTurbulenceModel \ + -lcompressibleTurbulenceModel \ + -lincompressibleRASModels \ + -lcompressibleRASModels \ + -lincompressibleLESModels \ + -lcompressibleLESModels \ + -lradiationModels \ + -lbasicThermophysicalModels diff --git a/applications/utilities/miscellaneous/foamHelp/helpTypes/doxygenXmlParser/doxygenXmlParser.C b/applications/utilities/miscellaneous/foamHelp/helpTypes/doxygenXmlParser/doxygenXmlParser.C new file mode 100644 index 0000000000000000000000000000000000000000..acf9a72d2406dcfa843de9092ba8885e21952ab7 --- /dev/null +++ b/applications/utilities/miscellaneous/foamHelp/helpTypes/doxygenXmlParser/doxygenXmlParser.C @@ -0,0 +1,246 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "doxygenXmlParser.H" +#include "wordRe.H" + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::doxygenXmlParser::doxygenXmlParser +( + const fileName& fName, + const string& startTag, + const string& searchStr, + const bool exactMatch +) +: + dictionary(dictionary::null) +{ + IFstream is(fName); + + char c; + + // skip forward to entry name + skipForward(is, startTag); + + while (is.get(c)) + { + if (c == '<') + { + // if in block, read block name + string blockName = ""; + string params = ""; + bool readingParam = false; + while (is.get(c) && c != '>') + { + if (c == ' ') + { + readingParam = true; + } + else + { + if (readingParam) + { + params = params + c; + } + else + { + blockName = blockName + c; + } + } + } + + if (blockName == '/' + startTag) + { + break; + } + + if ((blockName == "compound") && (params == "kind=\"file\"")) + { + // keep entry + word name = ""; + fileName path = ""; + word fName = ""; + bool foundName = false; + bool foundPath = false; + bool foundFName = false; + bool earlyExit = false; + while (!foundName || !foundPath || !foundFName) + { + word entryName; + getEntry<word>(is, entryName); + if (entryName == "name") + { + getValue<word>(is, name); + if (wordRe(".*.H", wordRe::DETECT).match(name)) + { + foundName = true; + } + else + { + // not interested in this compound + break; + } + } + else if (entryName == "path") + { + getValue<fileName>(is, path); + + // filter path on regExp + if (wordRe(searchStr, wordRe::DETECT).match(path)) + { + foundPath = true; + } + else + { + // not interested in this compound + break; + } + } + else if (entryName == "filename") + { + getValue<word>(is, fName); + foundFName = true; + } + else + { + skipBlock(is, entryName); + } + } + + if (foundPath && !earlyExit) + { + word tName(path.components().last()); + + // only insert if type is not already known + // NOTE: not ideal for cases where there are multiple types + // but contained within different namespaces + // preferentially take exact match if it exists + if (exactMatch && (tName + ".H") == name) + { + dictionary dict(dictionary::null); + dict.add("name", name); + dict.add("filename", fName + ".html"); + dict.add("path", path); + this->add(tName, dict); + } + else if + ( + !exactMatch + && !found(tName) + && wordRe(".*" + tName + ".*", wordRe::DETECT).match(name) + ) + { + dictionary dict(dictionary::null); + dict.add("name", name); + dict.add("filename", fName + ".html"); + dict.add("path", path); + this->add(tName, dict); + } + } + + // skip remanining entries + skipBlock(is, blockName); + } + else + { + skipBlock(is, blockName); + } + } + } +} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::doxygenXmlParser::skipBlock(IFstream& is, const word blockName) const +{ + // recurse to move forward in 'is' until come across </blockName> + + string closeName = ""; + + // fast-forward until we reach a '<' + char c; + while (is.get(c) && c != '<') + {} + + // check to see if this is a closing block + if (is.get(c) && c == '/') + { + while (is.get(c) && c != '>') + { + closeName += c; + } + + if (closeName == blockName) + { + // finished reading block + return; + } + else + { + skipBlock(is, blockName); + } + } + else + { + skipBlock(is, blockName); + } +} + + +void Foam::doxygenXmlParser::skipForward +( + IFstream& is, + const word blockName +) const +{ + // recurse to move forward in 'is' until come across <blockName> + + // fast-forward until we reach a '<' + char c; + while (is.get(c) && c != '<') + {} + + string entryName = ""; + while (is.get(c) && c != '>') + { + entryName = entryName + c; + } + + if (entryName == blockName) + { + return; + } + else + { + skipForward(is, blockName); + } +} + + +// ************************************************************************* // + diff --git a/applications/utilities/miscellaneous/foamHelp/helpTypes/doxygenXmlParser/doxygenXmlParser.H b/applications/utilities/miscellaneous/foamHelp/helpTypes/doxygenXmlParser/doxygenXmlParser.H new file mode 100644 index 0000000000000000000000000000000000000000..f2abdaee8d4f6c9f9e071b807f80e4e5b92663cf --- /dev/null +++ b/applications/utilities/miscellaneous/foamHelp/helpTypes/doxygenXmlParser/doxygenXmlParser.H @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +Class + Foam::doxygenXmlParser + +Description + +SourceFiles + +\*---------------------------------------------------------------------------*/ + +#ifndef doxygenXmlParser_H +#define doxygenXmlParser_H + +#include "dictionary.H" +#include "IFstream.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class doxygenXmlParser Declaration +\*---------------------------------------------------------------------------*/ + +class doxygenXmlParser +: + public dictionary +{ + +public: + + //- Construct from components + doxygenXmlParser + ( + const fileName& fName, + const string& startTag, + const string& searchStr, + const bool exactMatch + ); + + + // Member functions + + //- Skip past a block + void skipBlock(IFstream& is, const word blockName) const; + + //- Skip forward to block + void skipForward(IFstream& is, const word blockName) const; + + //- Return the entry + template<class Type> + void getEntry(IFstream& is, Type& entry) const; + + //- Return the entry value + template<class Type> + void getValue(IFstream& is, Type& entry) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository + #include "doxygenXmlParserTemplates.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/utilities/miscellaneous/foamHelp/helpTypes/doxygenXmlParser/doxygenXmlParserTemplates.C b/applications/utilities/miscellaneous/foamHelp/helpTypes/doxygenXmlParser/doxygenXmlParserTemplates.C new file mode 100644 index 0000000000000000000000000000000000000000..0ab6632da8738c714d39312e3c47dbf5da83c2bd --- /dev/null +++ b/applications/utilities/miscellaneous/foamHelp/helpTypes/doxygenXmlParser/doxygenXmlParserTemplates.C @@ -0,0 +1,67 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "doxygenXmlParser.H" + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class Type> +void Foam::doxygenXmlParser::getEntry(IFstream& is, Type& entry) const +{ + char c; + while (is.get(c) && c != '<') + {} + + entry = ""; + if (is.get(c) && c == '/') + { + return; + } + else + { + entry = entry + c; + } + + while (is.get(c) && c != '>') + { + entry = entry + c; + } +} + + +template<class Type> +void Foam::doxygenXmlParser::getValue(IFstream& is, Type& entry) const +{ + char c; + + entry = ""; + while (is.get(c) && c != '<') + { + entry = entry + c; + } +} + + +// ************************************************************************* // diff --git a/applications/utilities/miscellaneous/foamHelp/helpTypes/helpBoundary/helpBoundary.C b/applications/utilities/miscellaneous/foamHelp/helpTypes/helpBoundary/helpBoundary.C new file mode 100644 index 0000000000000000000000000000000000000000..9fd46f35c106256928749ed0615759faf6b40aef --- /dev/null +++ b/applications/utilities/miscellaneous/foamHelp/helpTypes/helpBoundary/helpBoundary.C @@ -0,0 +1,192 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "helpBoundary.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + namespace helpTypes + { + defineTypeNameAndDebug(helpBoundary, 0); + addNamedToRunTimeSelectionTable + ( + helpType, + helpBoundary, + dictionary, + boundary + ); + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::helpTypes::helpBoundary::helpBoundary() +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::helpTypes::helpBoundary::~helpBoundary() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::helpTypes::helpBoundary::init() +{ + helpType::init(); + + argList::validArgs.append("boundary"); + + argList::addOption + ( + "field", + "word", + "list available conditions for field" + ); + argList::addBoolOption + ( + "constraint", + "list constraint patches" + ); + argList::addBoolOption + ( + "fixedValue", + "list fixed value patches (use with -field option)" + ); +} + + +void Foam::helpTypes::helpBoundary::execute +( + const argList& args, + const fvMesh& mesh +) +{ + bool abortVar(env("FOAM_ABORT")); + if (abortVar) + { + FatalErrorIn + ( + "void Foam::helpTypes::helpBoundary::execute" + "(" + "const argList&, " + "const fvMesh&" + ")" + ) + << "Please unset FOAM_ABORT to use this utlity" + << exit(FatalError); + } + + word condition(word::null); + word fieldName(word::null); + + if (args.optionReadIfPresent("browse", condition)) + { + // TODO: strip scoping info if present? + // e.g. conditions with leading "compressible::" will not be found + // ".*[fF]vPatchField.*" + className + ".*" + displayDoc(condition, ".*[fF]vPatchField.*", false); + } + else if (args.optionFound("constraint")) + { + HashSet<word> constraintTypes(fvPatch::constraintTypes()); + Info<< "Constraint types:" << nl; + forAllConstIter(HashSet<word>, constraintTypes, iter) + { + Info<< " " << iter.key() << nl; + } + Info<< endl; + } + else if (args.optionReadIfPresent("field", fieldName)) + { + IOobject fieldHeader + ( + fieldName, + mesh.time().timeName(), + mesh, + IOobject::MUST_READ + ); + + if (fieldHeader.headerOk()) + { + if (args.optionFound("fixedValue")) + { + fixedValueFieldConditions<scalar>(fieldHeader); + fixedValueFieldConditions<vector>(fieldHeader); + fixedValueFieldConditions<sphericalTensor>(fieldHeader); + fixedValueFieldConditions<symmTensor>(fieldHeader); + fixedValueFieldConditions<tensor>(fieldHeader); + } + else + { + (void)fieldConditions<scalar>(fieldHeader, true); + (void)fieldConditions<vector>(fieldHeader, true); + (void)fieldConditions<sphericalTensor>(fieldHeader, true); + (void)fieldConditions<symmTensor>(fieldHeader, true); + (void)fieldConditions<tensor>(fieldHeader, true); + } + } + else + { + FatalErrorIn + ( + "void Foam::helpTypes::helpBoundary::execute" + "(" + "const argList&, " + "const fvMesh&" + ")" + ) + << "Unable to read field " << fieldName << exit(FatalError); + } + } + else if (args.optionReadIfPresent("fixedValue", fieldName)) + { + FatalErrorIn + ( + "void Foam::helpTypes::helpBoundary::execute" + "(" + "const argList&, " + "const fvMesh&" + ")" + ) + << "-field option must be specified when using the -fixedValue " + << "option" << exit(FatalError); + } + else + { + // TODO: strip scoping info if present? + // e.g. conditions with leading "compressible::" will not be found + // ".*[fF]vPatchField.*" + className + ".*" + displayDocOptions(".*[fF]vPatchField.*", false); + } +} + + +// ************************************************************************* // diff --git a/applications/utilities/miscellaneous/foamHelp/helpTypes/helpBoundary/helpBoundary.H b/applications/utilities/miscellaneous/foamHelp/helpTypes/helpBoundary/helpBoundary.H new file mode 100644 index 0000000000000000000000000000000000000000..6166e8e1f3b46df589951c0b9f63462102718210 --- /dev/null +++ b/applications/utilities/miscellaneous/foamHelp/helpTypes/helpBoundary/helpBoundary.H @@ -0,0 +1,126 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +Class + Foam::helpBoundary + +Description + This class provides help for boundary conditions (patch fields). When no + additional arguments are given, the utility outputs all known boundary + conditions. + + Usage: + \plaintable + \c -browse \<patch type\> | open documentation for patch in browser + \c -field \<name\> | boundary conditions for a given field + \c -constraint | list constraint boundary conditions + \c -fixedValue | list \c fixedValue type boundary conditions + \endplaintable + +Note + To use the \c -fixedValue option, the \c -field option should also be used + +SeeAlso + Foam::helpType + Foam::fvPatchField + +SourceFiles + helpBoundary.C + helpBoundaryTemplates.C + +\*---------------------------------------------------------------------------*/ + +#ifndef helpBoundary_H +#define helpBoundary_H + +#include "helpType.H" +#include "IOobject.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace helpTypes +{ + +/*---------------------------------------------------------------------------*\ + Class helpBoundary Declaration +\*---------------------------------------------------------------------------*/ + +class helpBoundary +: + public helpType +{ + +protected: + + // Protected Member Functions + + //- Return/output the available boundary conditions for fields of Type + template<class Type> + wordList fieldConditions(const IOobject& io, const bool write) const; + + //- Output the available fixed boundary conditions for fields of Type + template<class Type> + void fixedValueFieldConditions(const IOobject& io) const; + + +public: + + //- Runtime type information + TypeName("helpBoundary"); + + //- Constructor + helpBoundary(); + + //- Destructor + virtual ~helpBoundary(); + + + // Member Functions + + //- Initialise - typically setting static variables, + // e.g. command line arguments + virtual void init(); + + //- Execute the help + virtual void execute(const argList& args, const fvMesh& mesh); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace helpTypes +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository + #include "helpBoundaryTemplates.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/utilities/miscellaneous/foamHelp/helpTypes/helpBoundary/helpBoundaryTemplates.C b/applications/utilities/miscellaneous/foamHelp/helpTypes/helpBoundary/helpBoundaryTemplates.C new file mode 100644 index 0000000000000000000000000000000000000000..f2ce4a0f006a411142109fbf77454bcc20fd9ddf --- /dev/null +++ b/applications/utilities/miscellaneous/foamHelp/helpTypes/helpBoundary/helpBoundaryTemplates.C @@ -0,0 +1,161 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + + +\*---------------------------------------------------------------------------*/ + +#include "GeometricField.H" +#include "fvPatchField.H" +#include "volMesh.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +template<class Type> +Foam::wordList Foam::helpTypes::helpBoundary::fieldConditions +( + const IOobject& io, + const bool write +) const +{ + typedef GeometricField<Type, fvPatchField, volMesh> fieldType; + + if (io.headerClassName() == fieldType::typeName) + { + wordList types + ( + fvPatchField<Type>::dictionaryConstructorTablePtr_->sortedToc() + ); + + if (write) + { + Info<< "Available boundary conditions for " + << pTraits<Type>::typeName << " field: " << io.name() << nl; + + forAll(types, i) + { + Info<< " " << types[i] << nl; + } + + Info<< endl; + } + + return types; + } + + return wordList(); +} + + +template<class Type> +void Foam::helpTypes::helpBoundary::fixedValueFieldConditions +( + const IOobject& io +) const +{ + wordList types(fieldConditions<Type>(io, false)); + + if (!types.size()) + { + return; + } + + typedef GeometricField<Type, fvPatchField, volMesh> fieldType; + + const fvMesh& mesh = dynamic_cast<const fvMesh&>(io.db()); + + fieldType fld + ( + IOobject + ( + "dummy", + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh, + dimensioned<Type>("zero", dimless, pTraits<Type>::zero) + ); + + + Info<< "Fixed value boundary conditions for " + << pTraits<Type>::typeName << " field: " << io.name() << nl; + + // throw exceptions to avoid fatal errors when casting from generic patch + // type to incompatible patch type + FatalIOError.throwExceptions(); + FatalError.throwExceptions(); + + bool foundFixed = false; + forAll(types, i) + { + const word& patchType = types[i]; + + try + { + polyPatch pp + ( + "defaultFaces", + 0, + mesh.nInternalFaces(), + 0, + mesh.boundaryMesh(), + patchType + ); + + fvPatch fvp(pp, mesh.boundary()); + + tmp<fvPatchField<Type> > pf + ( + fvPatchField<Type>::New + ( + patchType, + fvp, + fld + ) + ); + + if (pf().fixesValue()) + { + Info<< " " << patchType << nl; + foundFixed = true; + } + } + catch (...) + { + // do nothing + } + } + + if (!foundFixed) + { + // no conditions??? + Info<< " none" << nl; + } + + Info<< endl; +} + + +// ************************************************************************* // diff --git a/applications/utilities/miscellaneous/foamHelp/helpTypes/helpFunctionObject/helpFunctionObject.C b/applications/utilities/miscellaneous/foamHelp/helpTypes/helpFunctionObject/helpFunctionObject.C new file mode 100644 index 0000000000000000000000000000000000000000..631a1210ffbf4c186401f3a2c063bd9035227e2e --- /dev/null +++ b/applications/utilities/miscellaneous/foamHelp/helpTypes/helpFunctionObject/helpFunctionObject.C @@ -0,0 +1,88 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "helpFunctionObject.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + namespace helpTypes + { + defineTypeNameAndDebug(helpFunctionObject, 0); + addNamedToRunTimeSelectionTable + ( + helpType, + helpFunctionObject, + dictionary, + functionObject + ); + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::helpTypes::helpFunctionObject::helpFunctionObject() +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::helpTypes::helpFunctionObject::~helpFunctionObject() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::helpTypes::helpFunctionObject::init() +{ + helpType::init(); + + argList::validArgs.append("functionObject"); +} + + +void Foam::helpTypes::helpFunctionObject::execute +( + const argList& args, + const fvMesh& mesh +) +{ + word function(word::null); + + if (args.optionReadIfPresent("browse", function)) + { + displayDoc(function, ".*[fF]unctionObject.*", true); + } + else + { + displayDocOptions(".*[fF]unctionObject.*", true); + } +} + + +// ************************************************************************* // diff --git a/applications/utilities/miscellaneous/foamHelp/helpTypes/helpFunctionObject/helpFunctionObject.H b/applications/utilities/miscellaneous/foamHelp/helpTypes/helpFunctionObject/helpFunctionObject.H new file mode 100644 index 0000000000000000000000000000000000000000..4e8276bcdb32cfa909b14211659733a6a774f12e --- /dev/null +++ b/applications/utilities/miscellaneous/foamHelp/helpTypes/helpFunctionObject/helpFunctionObject.H @@ -0,0 +1,98 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +Class + Foam::helpFunctionObject + +Description + This class provides help for functionObjects. When no additional arguments + are given, the utility outputs all known function objects. + + Usage: + \plaintable + \c -browse \<patch type\> | open documentation for object in browser + \endplaintable + +SeeAlso + Foam::helpType + Foam::functionObject + +SourceFiles + helpFunctionObject.C + +\*---------------------------------------------------------------------------*/ + +#ifndef helpFunctionObject_H +#define helpFunctionObject_H + +#include "helpType.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace helpTypes +{ + +/*---------------------------------------------------------------------------*\ + Class helpFunctionObject Declaration +\*---------------------------------------------------------------------------*/ + +class helpFunctionObject +: + public helpType +{ + +public: + + //- Runtime type information + TypeName("helpFunctionObject"); + + //- Constructor + helpFunctionObject(); + + //- Destructor + virtual ~helpFunctionObject(); + + + // Member Functions + + //- Initialise - typically setting static variables, + // e.g. command line arguments + virtual void init(); + + //- Execute the help + virtual void execute(const argList& args, const fvMesh& mesh); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace helpTypes +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/utilities/miscellaneous/foamHelp/helpTypes/helpType/helpType.C b/applications/utilities/miscellaneous/foamHelp/helpTypes/helpType/helpType.C new file mode 100644 index 0000000000000000000000000000000000000000..0b982e76a7e03a466df79b076609b570ba810060 --- /dev/null +++ b/applications/utilities/miscellaneous/foamHelp/helpTypes/helpType/helpType.C @@ -0,0 +1,185 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "helpType.H" +#include "doxygenXmlParser.H" +#include "SortableList.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(helpType, 0); + defineRunTimeSelectionTable(helpType, dictionary); +} + +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // + +Foam::fileName Foam::helpType::doxygenPath() const +{ + const dictionary& docDict = debug::controlDict().subDict("Documentation"); + List<fileName> docDirs(docDict.lookup("doxyDocDirs")); + + label dirI = -1; + forAll(docDirs, i) + { + if (isDir(docDirs[i].expand())) + { + dirI = i; + break; + } + } + + if (dirI == -1) + { + Info<< "No Doxygen sources found under search paths: " + << docDirs << endl; + return fileName(); + } + + return docDirs[dirI]; +} + + +void Foam::helpType::displayDocOptions +( + const string& searchStr, + const bool exactMatch +) const +{ + fileName doxyPath(doxygenPath()); + + if (doxyPath.empty()) + { + return; + } + + Info<< "Found doxygen help in " << doxyPath.c_str() << nl << endl; + + doxygenXmlParser parser + ( + doxyPath/"../DTAGS", + "tagfile", + searchStr, + exactMatch + ); + + Info<< "Valid types include:" << nl << SortableList<word>(parser.toc()); +} + + +void Foam::helpType::displayDoc +( + const word& className, + const string& searchStr, + const bool exactMatch +) const +{ + fileName doxyPath(doxygenPath()); + + if (doxyPath.empty()) + { + return; + } + + Info<< "Found doxygen help in " << doxyPath.c_str() << nl << endl; + + string docBrowser = getEnv("FOAM_DOC_BROWSER"); + if (docBrowser.empty()) + { + const dictionary& docDict = + debug::controlDict().subDict("Documentation"); + docDict.lookup("docBrowser") >> docBrowser; + } + + doxygenXmlParser parser + ( + doxyPath/"../DTAGS", + "tagfile", + searchStr, + exactMatch + ); + + if (debug) + { + Info<< parser; + } + + if (parser.found(className)) + { + fileName docFile(doxyPath/parser.subDict(className).lookup("filename")); + + // can use FOAM_DOC_BROWSER='application file://%f' if required + docBrowser.replaceAll("%f", docFile); + + fileName classFolder(parser.subDict(className).lookup("path")); + word classFile(parser.subDict(className).lookup("name")); + + Info<< "Showing documentation for type " << className << nl << endl; + + Info<< "Source file: " << classFolder.c_str() << classFile << nl + << endl; + + system(docBrowser); + } + else + { + FatalErrorIn + ( + "void Foam::helpType::displayDoc(const word, const string)" + ) + << "No help for type " << className << " found." + << " Valid options include:" << SortableList<word>(parser.toc()) + << exit(FatalError); + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::helpType::helpType() +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::helpType::~helpType() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::helpType::init() +{ + argList::addOption + ( + "browse", + "word", + "display documentation for boundary condition in browser" + ); +} + + +// ************************************************************************* // diff --git a/applications/utilities/miscellaneous/foamHelp/helpTypes/helpType/helpType.H b/applications/utilities/miscellaneous/foamHelp/helpTypes/helpType/helpType.H new file mode 100644 index 0000000000000000000000000000000000000000..f5e65709c6afdbc330488818f975ccd0bb7bcb81 --- /dev/null +++ b/applications/utilities/miscellaneous/foamHelp/helpTypes/helpType/helpType.H @@ -0,0 +1,125 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +Class + Foam::helpType + +Description + Base class for foam help classes + +SourceFiles + helpType.C + helpTypeNew.C + +\*---------------------------------------------------------------------------*/ + +#ifndef helpType_H +#define helpType_H + +#include "runTimeSelectionTables.H" +#include "autoPtr.H" +#include "argList.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// forward declaration of classes + +class fvMesh; + +/*---------------------------------------------------------------------------*\ + Class helpType Declaration +\*---------------------------------------------------------------------------*/ + +class helpType +{ + +protected: + + //- Return file path to the Doxygen sources (if available) + fileName doxygenPath() const; + + //- Display the list of documentation options + void displayDocOptions + ( + const string& searchStr, + const bool exactMatch + ) const; + + //- Display the help documentation in a browser + void displayDoc + ( + const word& className, + const string& searchStr, + const bool exactMatch + ) const; + + +public: + + //- Runtime type information + TypeName("helpType"); + + // Declare runtime constructor selection table + declareRunTimeSelectionTable + ( + autoPtr, + helpType, + dictionary, + (), + () + ); + + + //- Constructor + helpType(); + + //- Selector + static autoPtr<helpType> New(const word& helpTypeName); + + //- Destructor + virtual ~helpType(); + + + // Member Functions + + //- Initialise - typically setting static variables, + // e.g. command line arguments + virtual void init(); + + //- Execute the help + virtual void execute(const argList& args, const fvMesh& mesh) = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/rhoThermo/rhoThermo/rhoThermoNew.C b/applications/utilities/miscellaneous/foamHelp/helpTypes/helpType/helpTypeNew.C similarity index 51% rename from src/thermophysicalModels/basic/rhoThermo/rhoThermo/rhoThermoNew.C rename to applications/utilities/miscellaneous/foamHelp/helpTypes/helpType/helpTypeNew.C index cf46160a586294ff19f12dc22a30d80b32f76613..607ca9b435538cc48b9f2ba073a8555dcdbfb7d2 100644 --- a/src/thermophysicalModels/basic/rhoThermo/rhoThermo/rhoThermoNew.C +++ b/applications/utilities/miscellaneous/foamHelp/helpTypes/helpType/helpTypeNew.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -23,49 +23,42 @@ License \*---------------------------------------------------------------------------*/ -#include "rhoThermo.H" +#include "helpType.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -Foam::autoPtr<Foam::rhoThermo> Foam::rhoThermo::New +Foam::autoPtr<Foam::helpType> Foam::helpType::New ( - const fvMesh& mesh + const word& helpTypeName ) { - // get model name, but do not register the dictionary - // otherwise it is registered in the database twice - const word modelType - ( - IOdictionary - ( - IOobject - ( - "thermophysicalProperties", - mesh.time().constant(), - mesh, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE, - false - ) - ).lookup("thermoType") - ); + Info<< "Selecting helpType " << helpTypeName << endl; - Info<< "Selecting thermodynamics package " << modelType << endl; + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(helpTypeName); - fvMeshConstructorTable::iterator cstrIter = - fvMeshConstructorTablePtr_->find(modelType); - - if (cstrIter == fvMeshConstructorTablePtr_->end()) + if (cstrIter == dictionaryConstructorTablePtr_->end()) { - FatalErrorIn("rhoThermo::New(const fvMesh&)") - << "Unknown rhoThermo type " - << modelType << nl << nl - << "Valid rhoThermo types are:" << nl - << fvMeshConstructorTablePtr_->sortedToc() << nl - << exit(FatalError); + // special treatment for -help + // exit without stack trace + if (helpTypeName == "-help") + { + FatalErrorIn("helpType::New()") + << "Valid helpType selections are:" << nl + << dictionaryConstructorTablePtr_->sortedToc() << nl + << exit(FatalError); + } + else + { + FatalErrorIn("helpType::New()") + << "Unknown helpType type " << helpTypeName << nl + << "Valid helpType selections are:" << nl + << dictionaryConstructorTablePtr_->sortedToc() << nl + << abort(FatalError); + } } - return autoPtr<rhoThermo>(cstrIter()(mesh)); + return autoPtr<helpType>(cstrIter()()); } diff --git a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/pqPV3FoamReaderPanel.cxx b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/pqPV3FoamReaderPanel.cxx index babdd460c9224a78df31e6dbec77c08ec7fd1dd1..f795ed8eec77b749c1c94b1dd94eded37dc965dd 100644 --- a/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/pqPV3FoamReaderPanel.cxx +++ b/applications/utilities/postProcessing/graphics/PV3Readers/PV3FoamReader/PV3FoamReader/pqPV3FoamReaderPanel.cxx @@ -62,6 +62,9 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel QGridLayout* form = new QGridLayout(); this->PanelLayout->addLayout(form, 0, 0, 1, -1); + // ROW 0 + // ~~~~~ + vtkSMProperty* prop = 0; // refresh button for updating times/fields @@ -107,10 +110,16 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel ); } + // ROW 1 + // ~~~~~ + QFrame* hline1 = new QFrame(this); hline1->setFrameStyle(QFrame::HLine | QFrame::Sunken); form->addWidget(hline1, 1, 0, 1, 3); + // ROW 2 + // ~~~~~ + // checkbox for caching mesh if ((prop = this->proxy()->GetProperty("UiCacheMesh")) != 0) { @@ -137,35 +146,38 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel ); } + // cell 2,1 empty - // checkbox for patch names - if ((prop = this->proxy()->GetProperty("UiShowPatchNames")) != 0) + // ROW 3 + // ~~~~~ + + // checkbox for include sets + if ((prop = this->proxy()->GetProperty("UiIncludeSets")) != 0) { // immediate update on the Server Manager side prop->SetImmediateUpdate(true); - ShowPatchNames_ = new QCheckBox("Patch Names"); - ShowPatchNames_->setChecked + IncludeSets_ = new QCheckBox("Include Sets"); + IncludeSets_->setChecked ( vtkSMIntVectorProperty::SafeDownCast(prop)->GetElement(0) ); - ShowPatchNames_->setToolTip + IncludeSets_->setToolTip ( - "Show patch names in render window." + "Search the polyMesh/sets/ directory." ); - // row/col 0,1 - form->addWidget(ShowPatchNames_, 2, 1, Qt::AlignLeft); + // row/col 1,0 + form->addWidget(IncludeSets_, 3, 0, Qt::AlignLeft); connect ( - ShowPatchNames_, + IncludeSets_, SIGNAL(stateChanged(int)), this, - SLOT(ShowPatchNamesToggled()) + SLOT(IncludeSetsToggled()) ); } - // checkbox for Groups Only if ((prop = this->proxy()->GetProperty("UiShowGroupsOnly")) != 0) { @@ -183,7 +195,7 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel ); // row/col 2, 2 - form->addWidget(ShowGroupsOnly_, 2, 2, Qt::AlignLeft); + form->addWidget(ShowGroupsOnly_, 3, 1, Qt::AlignLeft); connect ( ShowGroupsOnly_, @@ -194,62 +206,74 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel } - // checkbox for include sets - if ((prop = this->proxy()->GetProperty("UiIncludeSets")) != 0) + // ROW 4 + // ~~~~~ + + // checkbox for include zones + if ((prop = this->proxy()->GetProperty("UiIncludeZones")) != 0) { // immediate update on the Server Manager side prop->SetImmediateUpdate(true); - IncludeSets_ = new QCheckBox("Include Sets"); - IncludeSets_->setChecked + IncludeZones_ = new QCheckBox("Include Zones"); + IncludeZones_->setChecked ( vtkSMIntVectorProperty::SafeDownCast(prop)->GetElement(0) ); - IncludeSets_->setToolTip + IncludeZones_->setToolTip ( - "Search the polyMesh/sets/ directory." + "ZoneMesh information is used to find {cell,face,point}Zones. " + "The polyMesh/ directory is only checked on startup." ); - // row/col 1,0 - form->addWidget(IncludeSets_, 3, 0, Qt::AlignLeft); + // row/col 1,1 + form->addWidget(IncludeZones_, 4, 0, Qt::AlignLeft); connect ( - IncludeSets_, + IncludeZones_, SIGNAL(stateChanged(int)), this, - SLOT(IncludeSetsToggled()) + SLOT(IncludeZonesToggled()) ); } - - // checkbox for include zones - if ((prop = this->proxy()->GetProperty("UiIncludeZones")) != 0) + // checkbox for patch names + if ((prop = this->proxy()->GetProperty("UiShowPatchNames")) != 0) { // immediate update on the Server Manager side prop->SetImmediateUpdate(true); - IncludeZones_ = new QCheckBox("Include Zones"); - IncludeZones_->setChecked + ShowPatchNames_ = new QCheckBox("Patch Names"); + ShowPatchNames_->setChecked ( vtkSMIntVectorProperty::SafeDownCast(prop)->GetElement(0) ); - IncludeZones_->setToolTip + ShowPatchNames_->setToolTip ( - "ZoneMesh information is used to find {cell,face,point}Zones. " - "The polyMesh/ directory is only checked on startup." + "Show patch names in render window." ); - // row/col 1,1 - form->addWidget(IncludeZones_, 3, 1, Qt::AlignLeft); + // row/col 0,1 + form->addWidget(ShowPatchNames_, 4, 1, Qt::AlignLeft); connect ( - IncludeZones_, + ShowPatchNames_, SIGNAL(stateChanged(int)), this, - SLOT(IncludeZonesToggled()) + SLOT(ShowPatchNamesToggled()) ); } + // ROW 5 + // ~~~~~ + + QFrame* hline2 = new QFrame(this); + hline2->setFrameStyle(QFrame::HLine | QFrame::Sunken); + form->addWidget(hline2, 5, 0, 1, 3); + + // ROW 6 + // ~~~~~ + // checkbox for vol field interpolation if ((prop = this->proxy()->GetProperty("UiInterpolateVolFields")) != 0) { @@ -267,7 +291,7 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel ); // row/col 1,1 - form->addWidget(InterpolateVolFields_, 4, 0, Qt::AlignLeft); + form->addWidget(InterpolateVolFields_, 6, 0, Qt::AlignLeft); connect ( InterpolateVolFields_, @@ -294,7 +318,7 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel ); // row/col 1,1 - form->addWidget(ExtrapolatePatches_, 4, 1, Qt::AlignLeft); + form->addWidget(ExtrapolatePatches_, 6, 1, Qt::AlignLeft); connect ( ExtrapolatePatches_, @@ -304,9 +328,12 @@ pqPV3FoamReaderPanel::pqPV3FoamReaderPanel ); } - QFrame* hline2 = new QFrame(this); - hline2->setFrameStyle(QFrame::HLine | QFrame::Sunken); - form->addWidget(hline2, 5, 0, 1, 3); + // ROW 7 + // ~~~~~ + + QFrame* hline3 = new QFrame(this); + hline3->setFrameStyle(QFrame::HLine | QFrame::Sunken); + form->addWidget(hline3, 7, 0, 1, 3); } diff --git a/bin/tools/doxyFilter b/bin/tools/doxyFilter index b5e59a2370e1d4005b4b2090249f8f080ec07352..2e370383e5dae0cf96fc9ce0211e199b2fa6c020 100755 --- a/bin/tools/doxyFilter +++ b/bin/tools/doxyFilter @@ -54,7 +54,8 @@ then # ;; esac - awk -f $awkScript $1 | \ + awk -f $WM_PROJECT_DIR/bin/tools/doxyFilter-table.awk $1 | \ + awk -f $awkScript | \ sed -f $WM_PROJECT_DIR/bin/tools/doxyFilter.sed \ -e s@%filePath%@$filePath@g \ -e s@%fileName%@$fileName@g \ diff --git a/bin/tools/doxyFilter-table.awk b/bin/tools/doxyFilter-table.awk new file mode 100644 index 0000000000000000000000000000000000000000..bfbd80785ba1951c882eb10cd40cab8c3cdbdb7b --- /dev/null +++ b/bin/tools/doxyFilter-table.awk @@ -0,0 +1,135 @@ +BEGIN { + FS = "|"; + data = ""; + flag = 0; + firstRow = 0; +} + + +/\\table/ { + flag = 1; + firstRow = 1; + next; +} + + +/\\endtable/ { + if (data != "") + { + printf "<table class=\"OFTable\">\n"; + printf data; + printf "</table>\n"; + } + + data = ""; + flag = 0; + next; +} + + +/\\vartable/ { + flag = 2; + firstRow = 1; + next; +} + + +/\\endvartable/ { + if (data != "") + { + printf "<table border="0">\n"; + printf data; + printf "</table>\n"; + } + + data = ""; + flag = 0; + next; +} + + +/\\plaintable/ { + flag = 3; + firstRow = 1; + next; +} + + +/\\endplaintable/ { + if (data != "") + { + printf "<table border="0">\n"; + printf data; + printf "</table>\n"; + } + + data = ""; + flag = 0; + next; +} + +{ + if (flag > 0) + { + data = (data "<tr>\n"); + if (flag == 1) + { + for (i = 0; i <= NF; i++) + { + if ((i != 0) && (firstRow == 1)) + { + data = (data " <th align=\"center\"><b>"$i"</b></th>\n"); + } + else + { + if (i == 1) + { + data = (data " <td>\\c "$i"</td>\n"); + } + else if (i > 1) + { + data = (data " <td>"$i"</td>\n"); + } + } + } + } + else if (flag == 2) + { + for (i = 0; i <= NF; i++) + { + if (i == 1) + { + data = (data " <td style=\"padding-left: 10px\">\\f$"$i"\\f$</td>\n"); + data = (data " <td style=\"padding-left: 10px; padding-right: 10px;\">=</td>\n"); + } + else if (i > 1) + { + data = (data " <td>"$i"</td>\n"); + } + } + } + else if (flag == 3) + { + for (i = 0; i <= NF; i++) + { + if (i == 1) + { + data = (data " <td style=\"padding-left: 10px\">"$i"</td>\n"); + data = (data " <td style=\"padding-left: 10px; padding-right: 10px;\">:</td>\n"); + } + else if (i > 1) + { + data = (data " <td>"$i"</td>\n"); + } + } + } + data = (data "</tr>\n"); + firstRow = 0; + } + else + { + print $0 + } +} + + diff --git a/bin/tools/doxyFilter.sed b/bin/tools/doxyFilter.sed index 681929a90472c6483150ee532e3542ed81c3af9b..a0e6e4ff403556181d752c2f5f2ca50a9ab38b19 100644 --- a/bin/tools/doxyFilter.sed +++ b/bin/tools/doxyFilter.sed @@ -64,6 +64,17 @@ s/^ /\\class / } +# Group +# groupName +# => +# \ingroup namespaceName +# +/^Group *$/,/^[^ ]/{ +s/^Group// +s/^ /\\ingroup / +} + + # Namespace # namespaceName # => @@ -150,6 +161,13 @@ s? *\([a-zA-Z0-9]*\.[a-zA-Z]*\)? <li><a href="%dirName%/\1">\1</a></li>? s/.*\*\//\*\// + +# convert /heading in source files to bold font and add some space +s#\\heading \(.*\)#<br><b>\1</b>#g + +# add a linebreak +s#\\linebreak#<br>#g + } # ----------------------------------------------------------------------------- diff --git a/doc/Doxygen/Doxyfile b/doc/Doxygen/Doxyfile index 7c72c4595e92c3d02b24dfe96b7d99b0686d0840..4e3829d65a160d2be0b193f68ad7e6be977967ac 100644 --- a/doc/Doxygen/Doxyfile +++ b/doc/Doxygen/Doxyfile @@ -608,7 +608,8 @@ INPUT_ENCODING = UTF-8 # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90 FILE_PATTERNS = *.H \ - *.C + *.C \ + *.dox # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. diff --git a/doc/Doxygen/css/doxyMod.css b/doc/Doxygen/css/doxyMod.css index 01a980b4636aa442bd0772e527883df386b1c6ca..e5909a50dbd2c910f9122586940b9af44185ecd9 100644 --- a/doc/Doxygen/css/doxyMod.css +++ b/doc/Doxygen/css/doxyMod.css @@ -61,3 +61,19 @@ tr.memlist margin-top: 0px; width: 200px; } + +.OFTable { + width: 100%; + border: 1px solid rgb(175,175,175); + margin-top: 10px; + margin-bottom: 10px; +/* background-color: #F0F0F0; */ + padding: 5px; +} + +.OFTable th { + padding: 5px; + border-bottom: 2px solid rgb(175,175,175); +} + + diff --git a/src/OpenFOAM/db/dictionary/functionEntries/codeStream/codeStream.H b/src/OpenFOAM/db/dictionary/functionEntries/codeStream/codeStream.H index c6c4b53bf52cd340fc39ce303b3fb36c40126906..b8baa0183c207ecee7bb97f09b0f47ede13b0df3 100644 --- a/src/OpenFOAM/db/dictionary/functionEntries/codeStream/codeStream.H +++ b/src/OpenFOAM/db/dictionary/functionEntries/codeStream/codeStream.H @@ -29,12 +29,12 @@ Description generate the entry itself. So - codeStream reads three entries: 'code', 'codeInclude' (optional), 'codeOptions' (optional) - and uses those to generate library sources inside \f codeStream/ + and uses those to generate library sources inside \c codeStream/ - these get compiled using 'wmake libso' - the resulting library is loaded in executed with as arguments \code (const dictionary& dict, Ostream& os) - \endcode + \endcode where the dictionary is the current dictionary. - the code has to write into Ostream which is then used to construct the actual dictionary entry. @@ -77,12 +77,12 @@ Description \c \$ and \c ~ sequences) Note - The code to be compiled is stored under the local \f codeStream directory + The code to be compiled is stored under the local \c codeStream directory with a subdirectory name corresponding to the SHA1 of the contents. The corresponding library code is located under the local - \f codeStream/platforms/$WM_OPTIONS/lib directory in a library - \f libcodeStream_SHA1.so + \c codeStream/platforms/$WM_OPTIONS/lib directory in a library + \c libcodeStream_SHA1.so SourceFiles codeStream.C diff --git a/src/OpenFOAM/db/functionObjects/functionObject/functionObjectsDoc.H b/src/OpenFOAM/db/functionObjects/functionObject/functionObjectsDoc.H new file mode 100644 index 0000000000000000000000000000000000000000..2e0930123294d0a3cde7550cc1bbe25dc23bda6e --- /dev/null +++ b/src/OpenFOAM/db/functionObjects/functionObject/functionObjectsDoc.H @@ -0,0 +1,31 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +\defgroup grpFunctionObjects Function objects +@{ + This group contains function objects +@} + +\*---------------------------------------------------------------------------*/ diff --git a/src/OpenFOAM/global/argList/argList.H b/src/OpenFOAM/global/argList/argList.H index 4ec3bd407503688ef63465b8c36b502fd989cbbc..4cc354d2cbe0ffd66d0beba7a4d5ac930cef072e 100644 --- a/src/OpenFOAM/global/argList/argList.H +++ b/src/OpenFOAM/global/argList/argList.H @@ -26,7 +26,7 @@ Class Description Extract command arguments and options from the supplied - \a argc and @a argv parameters. + \a argc and \a argv parameters. Sequences with "(" ... ")" are transformed into a stringList. For example, diff --git a/src/OpenFOAM/global/foamDoc.H b/src/OpenFOAM/global/foamDoc.H index 1a38387f5aef4fa9d2a0c27b840d4918f189471a..cd3f1998a5aecdbb2f4d2eaed8b2fe1a87716a6d 100644 --- a/src/OpenFOAM/global/foamDoc.H +++ b/src/OpenFOAM/global/foamDoc.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -21,6 +21,8 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + \mainpage OpenFOAM®: open source CFD \section about About OpenFOAM @@ -34,4 +36,29 @@ License turbulence and heat transfer, to solid dynamics and electromagnetics. <a href="http://www.openfoam.org/features">More ...</a> + +\section layout Code Layout + + The OpenFOAM source code comprises of four main components: + - src: + the core OpenFOAM source code + + - applications: + collections of library functionality wrapped up into applications, + such as solvers and utilities + + - tutorials: + a suite of test cases that highlight a broad cross-section of + OpenFOAM's capabilities + + - doc: + supporting documentation + + +\section usingTheCode Using the code + + - \subpage pagePostProcessing + - \subpage pageBoundaryConditions + + \*---------------------------------------------------------------------------*/ diff --git a/src/OpenFOAM/primitives/strings/word/wordIOList.C b/src/OpenFOAM/primitives/strings/word/wordIOList.C index dc85ced879f105cce714aa31b79fc0c39889a43a..ede987af5323b7779464e7d2c2f349fcd0f7eb47 100644 --- a/src/OpenFOAM/primitives/strings/word/wordIOList.C +++ b/src/OpenFOAM/primitives/strings/word/wordIOList.C @@ -37,4 +37,42 @@ namespace Foam defineTemplateTypeNameAndDebugWithName(wordListIOList, "wordListList", 0); } + +void Foam::printTable(const List<wordList>& wll, Ostream& os) +{ + if (!wll.size()) return; + + // Find the maximum word length for each column + List<string::size_type> columnWidth(wll[0].size(), string::size_type(0)); + forAll(columnWidth, j) + { + forAll(wll, i) + { + columnWidth[j] = max(columnWidth[j], wll[i][j].size()); + } + } + + // Print the rows adding spacing for the columns + forAll(wll, i) + { + forAll(wll[i], j) + { + os << wll[i][j]; + for + ( + string::size_type k=0; + k<columnWidth[j] - wll[i][j].size() + 2; + k++ + ) + { + os << ' '; + } + } + os << nl; + + if (i == 0) os << nl; + } +} + + // ************************************************************************* // diff --git a/src/OpenFOAM/primitives/strings/word/wordIOList.H b/src/OpenFOAM/primitives/strings/word/wordIOList.H index 08e2e2cff6e5f6b136cc7ca202092741af4fee8a..c560a33a9564c88d834a5d90831183c6253f9aa1 100644 --- a/src/OpenFOAM/primitives/strings/word/wordIOList.H +++ b/src/OpenFOAM/primitives/strings/word/wordIOList.H @@ -41,6 +41,9 @@ namespace Foam { typedef IOList<word> wordIOList; typedef IOList<wordList> wordListIOList; + + // Print word list list as a table + void printTable(const List<wordList>&, Ostream&); } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/combustionModels/singleStepCombustion/singleStepCombustion.C b/src/combustionModels/singleStepCombustion/singleStepCombustion.C index 8234e573c560002f57968323173e71b11541252d..7a354e0c6412f128e1e0191912e354b7850fbcb5 100644 --- a/src/combustionModels/singleStepCombustion/singleStepCombustion.C +++ b/src/combustionModels/singleStepCombustion/singleStepCombustion.C @@ -102,8 +102,7 @@ singleStepCombustion<CombThermoType, ThermoType>::~singleStepCombustion() // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // template<class CombThermoType, class ThermoType> -Foam::tmp<Foam::fvScalarMatrix> -singleStepCombustion<CombThermoType, ThermoType>::R +tmp<fvScalarMatrix> singleStepCombustion<CombThermoType, ThermoType>::R ( volScalarField& Y ) const @@ -131,8 +130,8 @@ singleStepCombustion<CombThermoType, ThermoType>::R template<class CombThermoType, class ThermoType> -Foam::tmp<Foam::volScalarField> -singleStepCombustion< CombThermoType, ThermoType>::Sh() const +tmp<volScalarField> +singleStepCombustion<CombThermoType, ThermoType>::Sh() const { const label fuelI = singleMixturePtr_->fuelIndex(); volScalarField& YFuel = @@ -143,8 +142,8 @@ singleStepCombustion< CombThermoType, ThermoType>::Sh() const template<class CombThermoType, class ThermoType> -Foam::tmp<Foam::volScalarField> -singleStepCombustion< CombThermoType, ThermoType>::dQ() const +tmp<volScalarField> +singleStepCombustion<CombThermoType, ThermoType>::dQ() const { tmp<volScalarField> tdQ ( @@ -175,7 +174,7 @@ singleStepCombustion< CombThermoType, ThermoType>::dQ() const template<class CombThermoType, class ThermoType> -bool singleStepCombustion< CombThermoType, ThermoType>::read() +bool singleStepCombustion<CombThermoType, ThermoType>::read() { if (CombThermoType::read()) { diff --git a/src/fieldSources/basicSource/explicitSetValue/ExplicitSetValue.H b/src/fieldSources/basicSource/explicitSetValue/ExplicitSetValue.H index ec0a9d2ce1a18047d1b2d2dc3b305360907fa076..1c3adcb279fab9deb8f133aa8e8d3b4a36cc516e 100644 --- a/src/fieldSources/basicSource/explicitSetValue/ExplicitSetValue.H +++ b/src/fieldSources/basicSource/explicitSetValue/ExplicitSetValue.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,19 +25,23 @@ Class Foam::explicitSetValue Description - Explicit set values on fields. + Set values field values explicity. Sources described by: - <Type>ExplicitSetValueCoeffs + \verbatim + <Type>ExplicitSetValueCoeffs + { + injectionRate { - injectionRate - { - k 30.7; - epsilon 1.5; - } + k 30.7; + epsilon 1.5; } + } + \endverbatim +SeeAlso + Foam::basicSource SourceFiles explicitSetValue.C diff --git a/src/fieldSources/basicSource/explicitSource/ExplicitSource.H b/src/fieldSources/basicSource/explicitSource/ExplicitSource.H index 95e752d17bbae9bcb8bddab7632b929b9da39e6e..30a18dd5d39b8ecdfefdcf291b587ec73261f85c 100644 --- a/src/fieldSources/basicSource/explicitSource/ExplicitSource.H +++ b/src/fieldSources/basicSource/explicitSource/ExplicitSource.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -29,20 +29,24 @@ Description Sources described by: - <Type>ExplicitSourceCoeffs + \verbatim + <Type>ExplicitSourceCoeffs + { + volumeMode absolute; // specific + injectionRate { - volumeMode absolute; // specific - injectionRate - { - k 30.7; - epsilon 1.5; - } + k 30.7; + epsilon 1.5; } + } + \verbatim - If volumeMode = - - absolute: values are given as <quantity> - - specific: values are given as <quantity>/m3 + Valid options for the \c volumeMode entry include: + - absolute: values are given as \<quantity\> + - specific: values are given as \<quantity\>/m3 +SeeAlso + Foam::basicSource SourceFiles ExplicitSource.C diff --git a/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFFreestreamVelocityFvPatchVectorField/SRFFreestreamVelocityFvPatchVectorField.H b/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFFreestreamVelocityFvPatchVectorField/SRFFreestreamVelocityFvPatchVectorField.H index 7b7b18b63ed9646373c064e5603ea7bc89e6ddb1..58c7ab9ce081d103576f51f41df1c165427eb262 100644 --- a/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFFreestreamVelocityFvPatchVectorField/SRFFreestreamVelocityFvPatchVectorField.H +++ b/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFFreestreamVelocityFvPatchVectorField/SRFFreestreamVelocityFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,8 +25,43 @@ Class Foam::SRFVelocityFvPatchVectorField Description - Freestream velocity patch to be used with SRF model - to apply the appropriate rotation transformation in time and space. + Freestream velocity condition to be used in conjunction with the single + rotating frame (SRF) model (see: SRFModel class) + + Given the free stream velocity in the absolute frame, the condition + applies the appropriate rotation transformation in time and space to + determine the local velocity using: + + \f[ + U_p = cos(\theta)*U_{Inf} + sin(theta) (n^UInf) - U_{p,srf} + \f] + + where + \vartable + U_p = patch velocity [m/s] + U_{Inf} = free stream velocity in the absolute frame [m/s] + theta = swept angle [rad] + n = axis direction of the SRF + U_{p,srf} = SRF velocity of the patch + \endvartable + + + \heading Patch usage + + \table + Property | Description | Required | Default value + UInf | free stream velocity | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type SRFFreestreamVelocity; + UInf (0 0 0); + value uniform (0 0 0); // optional value entry + } + \endverbatim SourceFiles SRFVelocityFvPatchVectorField.C @@ -44,7 +79,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class SRFFreestreamVelocityFvPatchVectorField Declaration + Class SRFFreestreamVelocityFvPatchVectorField Declaration \*---------------------------------------------------------------------------*/ class SRFFreestreamVelocityFvPatchVectorField @@ -53,7 +88,7 @@ class SRFFreestreamVelocityFvPatchVectorField { // Private data - //- Velocity of the free stream in the absolute frame + //- Velocity of the free stream in the absolute frame [m/s] vector UInf_; diff --git a/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFVelocityFvPatchVectorField/SRFVelocityFvPatchVectorField.H b/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFVelocityFvPatchVectorField/SRFVelocityFvPatchVectorField.H index 829f2444befd20fe58066cb9ce9635c16b0b2715..32aaa246a76693adea2654d6b0533e9ca06cfe14 100644 --- a/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFVelocityFvPatchVectorField/SRFVelocityFvPatchVectorField.H +++ b/src/finiteVolume/cfdTools/general/SRF/derivedFvPatchFields/SRFVelocityFvPatchVectorField/SRFVelocityFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,61 @@ License Class Foam::SRFVelocityFvPatchVectorField +Group + grpInletBoundaryConditions grpWallBoundaryConditions + Description - Velocity patch to be used with SRF model + Velocity condition to be used in conjunction with the single + rotating frame (SRF) model (see: SRFModel class) + + Given the free stream velocity in the absolute frame, the condition + applies the appropriate rotation transformation in time and space to + determine the local velocity. + + The optional \c relative flag switches the behaviour of the patch + such that: + + - relative = yes: inlet velocity applied 'as is': + + \f[ + U_p = U_{in} + \f] + + - relative = no : SRF velocity is subtracted from the inlet velocity: + + \f[ + U_p = U_{in} - U_{p,srf} + \f] + + where + \vartable + U_p = patch velocity [m/s] + U_{in} = user-specified inlet velocity + U_{p,srf} = SRF velocity + \endvartable + + + \heading Patch usage + + \table + Property | Description | Required | Default value + relative | relative motion to the SRF? | yes | + inletValue | inlet velocity | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type SRFVelocity; + relative yes; + inletValue uniform (0 0 0); + value uniform (0 0 0); // initial value + } + \endverbatim + +SeeAlso + Foam::fixedValueFvPatchField SourceFiles SRFVelocityFvPatchVectorField.C @@ -57,7 +110,7 @@ class SRFVelocityFvPatchVectorField //- Is the supplied inlet value relative to the SRF Switch relative_; - //- Inlet value + //- Inlet value [m/s] vectorField inletValue_; diff --git a/src/finiteVolume/cfdTools/general/solutionControl/solutionControl/solutionControl.C b/src/finiteVolume/cfdTools/general/solutionControl/solutionControl/solutionControl.C index 3de1587e7e9eb3a2e790c9dcb1875797fcc62901..8448153a6963e022d927da230d8a1e3c2891e604 100644 --- a/src/finiteVolume/cfdTools/general/solutionControl/solutionControl/solutionControl.C +++ b/src/finiteVolume/cfdTools/general/solutionControl/solutionControl/solutionControl.C @@ -165,6 +165,12 @@ void Foam::solutionControl::storePrevIterFields() const Foam::solutionControl::solutionControl(fvMesh& mesh, const word& algorithmName) : + IOobject + ( + "solutionControl", + mesh.time().timeName(), + mesh + ), mesh_(mesh), residualControl_(), algorithmName_(algorithmName), diff --git a/src/finiteVolume/cfdTools/general/solutionControl/solutionControl/solutionControl.H b/src/finiteVolume/cfdTools/general/solutionControl/solutionControl/solutionControl.H index 45970fc325baa23c97549951a7bb463908fb7064..e701813d47c90e31eb2a8e54d9c7be048b128ab4 100644 --- a/src/finiteVolume/cfdTools/general/solutionControl/solutionControl/solutionControl.H +++ b/src/finiteVolume/cfdTools/general/solutionControl/solutionControl/solutionControl.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -44,6 +44,8 @@ namespace Foam \*---------------------------------------------------------------------------*/ class solutionControl +: + public IOobject { public: diff --git a/src/finiteVolume/fields/fvPatchFields/basic/basicSymmetry/basicSymmetryFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/basicSymmetry/basicSymmetryFvPatchField.H index 70cffc74e09bf25055cc201a21dae377cd9077d0..2e19ff1d2c520832784d2760dab818b1c04d9c46 100644 --- a/src/finiteVolume/fields/fvPatchFields/basic/basicSymmetry/basicSymmetryFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/basic/basicSymmetry/basicSymmetryFvPatchField.H @@ -24,6 +24,9 @@ License Class Foam::basicSymmetryFvPatchField +Group + grpConstraintBoundaryConditions + Description A symmetry patch diff --git a/src/finiteVolume/fields/fvPatchFields/basic/calculated/calculatedFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/basic/calculated/calculatedFvPatchField.C index 79b8c3750e973c2a215fb0a7e485ca6664206287..9f25a143e2e7595e5c0e15aa410a7f49feec5533 100644 --- a/src/finiteVolume/fields/fvPatchFields/basic/calculated/calculatedFvPatchField.C +++ b/src/finiteVolume/fields/fvPatchFields/basic/calculated/calculatedFvPatchField.C @@ -28,19 +28,17 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -namespace Foam -{ - template<class Type> -const word& fvPatchField<Type>::calculatedType() +const Foam::word& Foam::fvPatchField<Type>::calculatedType() { return calculatedFvPatchField<Type>::typeName; } + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template<class Type> -calculatedFvPatchField<Type>::calculatedFvPatchField +Foam::calculatedFvPatchField<Type>::calculatedFvPatchField ( const fvPatch& p, const DimensionedField<Type, volMesh>& iF @@ -51,7 +49,7 @@ calculatedFvPatchField<Type>::calculatedFvPatchField template<class Type> -calculatedFvPatchField<Type>::calculatedFvPatchField +Foam::calculatedFvPatchField<Type>::calculatedFvPatchField ( const calculatedFvPatchField<Type>& ptf, const fvPatch& p, @@ -64,7 +62,7 @@ calculatedFvPatchField<Type>::calculatedFvPatchField template<class Type> -calculatedFvPatchField<Type>::calculatedFvPatchField +Foam::calculatedFvPatchField<Type>::calculatedFvPatchField ( const fvPatch& p, const DimensionedField<Type, volMesh>& iF, @@ -77,7 +75,7 @@ calculatedFvPatchField<Type>::calculatedFvPatchField template<class Type> -calculatedFvPatchField<Type>::calculatedFvPatchField +Foam::calculatedFvPatchField<Type>::calculatedFvPatchField ( const calculatedFvPatchField<Type>& ptf ) @@ -87,7 +85,7 @@ calculatedFvPatchField<Type>::calculatedFvPatchField template<class Type> -calculatedFvPatchField<Type>::calculatedFvPatchField +Foam::calculatedFvPatchField<Type>::calculatedFvPatchField ( const calculatedFvPatchField<Type>& ptf, const DimensionedField<Type, volMesh>& iF @@ -98,7 +96,8 @@ calculatedFvPatchField<Type>::calculatedFvPatchField template<class Type> -tmp<fvPatchField<Type> > fvPatchField<Type>::NewCalculatedType +Foam::tmp<Foam::fvPatchField<Type> > +Foam::fvPatchField<Type>::NewCalculatedType ( const fvPatch& p ) @@ -130,7 +129,7 @@ tmp<fvPatchField<Type> > fvPatchField<Type>::NewCalculatedType template<class Type> template<class Type2> -tmp<fvPatchField<Type> > fvPatchField<Type>::NewCalculatedType +Foam::tmp<Foam::fvPatchField<Type> > Foam::fvPatchField<Type>::NewCalculatedType ( const fvPatchField<Type2>& pf ) @@ -142,7 +141,8 @@ tmp<fvPatchField<Type> > fvPatchField<Type>::NewCalculatedType // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template<class Type> -tmp<Field<Type> > calculatedFvPatchField<Type>::valueInternalCoeffs +Foam::tmp<Foam::Field<Type> > +Foam::calculatedFvPatchField<Type>::valueInternalCoeffs ( const tmp<scalarField>& ) const @@ -165,7 +165,8 @@ tmp<Field<Type> > calculatedFvPatchField<Type>::valueInternalCoeffs template<class Type> -tmp<Field<Type> > calculatedFvPatchField<Type>::valueBoundaryCoeffs +Foam::tmp<Foam::Field<Type> > +Foam::calculatedFvPatchField<Type>::valueBoundaryCoeffs ( const tmp<scalarField>& ) const @@ -186,8 +187,10 @@ tmp<Field<Type> > calculatedFvPatchField<Type>::valueBoundaryCoeffs return *this; } + template<class Type> -tmp<Field<Type> > calculatedFvPatchField<Type>::gradientInternalCoeffs() const +Foam::tmp<Foam::Field<Type> > +Foam::calculatedFvPatchField<Type>::gradientInternalCoeffs() const { FatalErrorIn ( @@ -206,8 +209,10 @@ tmp<Field<Type> > calculatedFvPatchField<Type>::gradientInternalCoeffs() const return *this; } + template<class Type> -tmp<Field<Type> > calculatedFvPatchField<Type>::gradientBoundaryCoeffs() const +Foam::tmp<Foam::Field<Type> > +Foam::calculatedFvPatchField<Type>::gradientBoundaryCoeffs() const { FatalErrorIn ( @@ -227,17 +232,12 @@ tmp<Field<Type> > calculatedFvPatchField<Type>::gradientBoundaryCoeffs() const } -// Write template<class Type> -void calculatedFvPatchField<Type>::write(Ostream& os) const +void Foam::calculatedFvPatchField<Type>::write(Ostream& os) const { fvPatchField<Type>::write(os); this->writeEntry("value", os); } -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - // ************************************************************************* // diff --git a/src/finiteVolume/fields/fvPatchFields/basic/calculated/calculatedFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/calculated/calculatedFvPatchField.H index afb676b229775e76e7c6de55bc804fe12c3274f2..7caa505a8d2aa8380c4b58a1eb81016a420e9ab9 100644 --- a/src/finiteVolume/fields/fvPatchFields/basic/calculated/calculatedFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/basic/calculated/calculatedFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,24 @@ License Class Foam::calculatedFvPatchField +Group + grpGenericBoundaryConditions + Description - Foam::calculatedFvPatchField + This boundary condition is not designed to be evaluated; it is assmued + that the value is assigned via field assignment, and not via a call to + e.g. \c updateCoeffs or \c evaluate. + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type calculated; + value uniform (0 0 0); // optional value entry + } + \endverbatim SourceFiles calculatedFvPatchField.C @@ -43,7 +59,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class calculatedFvPatch Declaration + Class calculatedFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/basic/coupled/coupledFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/coupled/coupledFvPatchField.H index 8677c34ed3d1b3c9c869859ba9ff4e0c8172c3c0..1f2dcbfb61400aa80421f8e878ad5668887b27ac 100644 --- a/src/finiteVolume/fields/fvPatchFields/basic/coupled/coupledFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/basic/coupled/coupledFvPatchField.H @@ -24,8 +24,11 @@ License Class Foam::coupledFvPatchField +Group + grpCoupledBoundaryConditions + Description - Foam::coupledFvPatchField + Abstract base class for coupled patches. SourceFiles coupledFvPatchField.C @@ -45,7 +48,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class coupledFvPatch Declaration + Class coupledFvPatch Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/basic/directionMixed/directionMixedFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/directionMixed/directionMixedFvPatchField.H index 0199838eab41da2d2fb75d6c2653e4de3af8eb02..54686db761485553f2d703334e88056426e77e73 100644 --- a/src/finiteVolume/fields/fvPatchFields/basic/directionMixed/directionMixedFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/basic/directionMixed/directionMixedFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,11 @@ License Class Foam::directionMixedFvPatchField +Group + grpGenericBoundaryConditions + Description - Foam::directionMixedFvPatchField + Base class for direction-mixed boundary conditions. SourceFiles directionMixedFvPatchField.C @@ -43,7 +46,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class directionMixedFvPatch Declaration + Class directionMixedFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/basic/fixedGradient/fixedGradientFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/fixedGradient/fixedGradientFvPatchField.H index cdf83f486ab1274f00d86baafbe4ef82443db4df..3d00735453aaf37b42cc8906c69ce885de440a57 100644 --- a/src/finiteVolume/fields/fvPatchFields/basic/fixedGradient/fixedGradientFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/basic/fixedGradient/fixedGradientFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,40 @@ License Class Foam::fixedGradientFvPatchField +Group + grpGenericBoundaryConditions + Description - Foam::fixedGradientFvPatchField + This boundary condition supplies a fixed gradient condition, such that + the patch values are calculated using: + + \f[ + x_p = x_c + \frac{\nabla(x)}{\Delta} + \f] + + where + \vartable + x_p | patch values + x_c | internal field values + \nabla(x)| gradient (user-specified) + \Delta | inverse distance from patch face centre to cell centre + \endvartable + + \heading Patch usage + + \table + Property | Description | Required | Default value + gradient | gradient | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type fixedGradient; + gradient uniform 0; + } + \endverbatim SourceFiles fixedGradientFvPatchField.C @@ -43,7 +75,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class fixedGradientFvPatch Declaration + Class fixedGradientFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/basic/fixedValue/fixedValueFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/fixedValue/fixedValueFvPatchField.H index 65e7abea4ab6d0b7b36d0f2353bc6664ecdd59ce..3540c9254ca7198422e26d4af1d8d5a0627821cc 100644 --- a/src/finiteVolume/fields/fvPatchFields/basic/fixedValue/fixedValueFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/basic/fixedValue/fixedValueFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,28 @@ License Class Foam::fixedValueFvPatchField +Group + grpGenericBoundaryConditions + Description - Foam::fixedValueFvPatchField + This boundary condition supplies a fixed value constraint, and is the base + class for a number of other boundary conditions. + + \heading Patch usage + + \table + Property | Description | Required | Default value + value | values | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type fixedValue; + value uniform 0; // example for scalar field usage + } + \endverbatim SourceFiles fixedValueFvPatchField.C @@ -43,7 +63,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class fixedValueFvPatch Declaration + Class fixedValueFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/basic/mixed/mixedFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/mixed/mixedFvPatchField.H index 51481e0f91ac692440500736cd4c50ab741e157d..77dba4ada89c626699bbf8d1605e517d40adb75d 100644 --- a/src/finiteVolume/fields/fvPatchFields/basic/mixed/mixedFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/basic/mixed/mixedFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,45 @@ License Class Foam::mixedFvPatchField +Group + grpGenericBoundaryConditions + Description - Foam::mixedFvPatchField + This boundary condition provides a base class for 'mixed' type boundary + conditions, i.e. conditions that mix fixed value and patch-normal gradient + conditions. + + The respective contributions from each is determined by a weight field: + + \f[ + x_p = w x_p + (1-w) \left(x_c + \frac{\nabla_\perp x}{\Delta}\right) + \f] + + where + \vartable + x_p | patch values + x_c | patch internal cell values + w | weight field + \Delta| inverse distance from face centre to internal cell centre + w | weighting (0-1) + \endvartable + + + \heading Patch usage + + \table + Property | Description | Required | Default value + valueFraction | weight field | yes | + refValue | fixed value | yes | + refGrad | patch normal gradient | yes | + \endtable + +Note + This condition is not usually applied directly; instead, use a derived + mixed condition such as \c inletOutlet + +SeeAlso + Foam::inletOutletFvPatchField SourceFiles mixedFvPatchField.C @@ -43,7 +80,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class mixedFvPatch Declaration + Class mixedFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/basic/sliced/slicedFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/sliced/slicedFvPatchField.H index a40d212cd70e35470b2b9a7f594a0bb10adae8e6..06671ea1326fe3b52df4ae591720781e6b77362d 100644 --- a/src/finiteVolume/fields/fvPatchFields/basic/sliced/slicedFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/basic/sliced/slicedFvPatchField.H @@ -24,6 +24,9 @@ License Class Foam::slicedFvPatchField +Group + grpGenericBoundaryConditions + Description Specialization of fvPatchField which creates the underlying fvPatchField as a slice of the given complete field. @@ -33,6 +36,9 @@ Description Should only used as a template argument for SlicedGeometricField. +SeeAlso + Foam::fvPatchField + SourceFiles slicedFvPatchField.C diff --git a/src/finiteVolume/fields/fvPatchFields/basic/transform/transformFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/transform/transformFvPatchField.H index 2c9a2c15c615d03bd7c9c6012003519eb8612406..0eab206104500c5517cee3c591fc1e17dd23f2fc 100644 --- a/src/finiteVolume/fields/fvPatchFields/basic/transform/transformFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/basic/transform/transformFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,6 +24,9 @@ License Class Foam::transformFvPatchField +Group + grpGenericBoundaryConditions + Description Foam::transformFvPatchField diff --git a/src/finiteVolume/fields/fvPatchFields/basic/zeroGradient/zeroGradientFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/basic/zeroGradient/zeroGradientFvPatchField.H index 5726c739a98f6846f0c0fd592c8983f645153535..cb238253f1d5829ca9b281415cd0eee6c498dbda 100644 --- a/src/finiteVolume/fields/fvPatchFields/basic/zeroGradient/zeroGradientFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/basic/zeroGradient/zeroGradientFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,22 @@ License Class Foam::zeroGradientFvPatchField +Group + grpGenericBoundaryConditions + Description - Foam::zeroGradientFvPatchField + This boundary condition applies a zero-gradient condition from the patch + internal field onto the patch faces. + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type zeroGradient; + } + \endverbatim SourceFiles zeroGradientFvPatchField.C @@ -43,7 +57,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class zeroGradientFvPatch Declaration + Class zeroGradientFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/cyclic/cyclicFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/constraint/cyclic/cyclicFvPatchField.H index c3ba07477d954b3e40903d8b1c9e7b5588e11215..ded4696854e3520dd9938dd934c97444f4117b01 100644 --- a/src/finiteVolume/fields/fvPatchFields/constraint/cyclic/cyclicFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/constraint/cyclic/cyclicFvPatchField.H @@ -24,8 +24,27 @@ License Class Foam::cyclicFvPatchField +Group + grpCoupledBoundaryConditions + Description - Foam::cyclicFvPatchField + This boundary condition enforces a cyclic condition between a pair of + boundaries. + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type cyclic; + } + \endverbatim + +Note + The patches must be topologically similar, i.e. if the owner patch is + transformed to the neighbour patch, the patches should be identical (or + very similar). SourceFiles cyclicFvPatchField.C @@ -45,7 +64,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class cyclicFvPatch Declaration + Class cyclicFvPatch Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/cyclicAMI/cyclicAMIFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/constraint/cyclicAMI/cyclicAMIFvPatchField.H index 933a865f3007c485066e1806e9e18ba3b4a373c7..c9ad16c6c951b83c3013715a0dd494626b90ac1f 100644 --- a/src/finiteVolume/fields/fvPatchFields/constraint/cyclicAMI/cyclicAMIFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/constraint/cyclicAMI/cyclicAMIFvPatchField.H @@ -24,8 +24,31 @@ License Class Foam::cyclicAMIFvPatchField +Group + grpCoupledBoundaryConditions + Description - Foam::cyclicAMIFvPatchField + This boundary condition enforces a cyclic condition between a pair of + boundaries, whereby communication between the patches is performed using + an arbitrary mesh interface (AMI) interpolation. + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type cyclicAMI; + } + \endverbatim + +Note + The outer boundary of the patch pairs must be similar, i.e. if the owner + patch is transformed to the neighbour patch, the outer perimiter of each + patch should be identical (or very similar). + +SeeAlso + Foam::AMIInterpolation SourceFiles cyclicAMIFvPatchField.C diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/cyclicSlip/cyclicSlipFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/constraint/cyclicSlip/cyclicSlipFvPatchField.C index 2d995bdd6ebf7eab3f408d8c8cc4a1ae0c78e326..953a59b820057eb6d88ba7f326e5b73f8699d650 100644 --- a/src/finiteVolume/fields/fvPatchFields/constraint/cyclicSlip/cyclicSlipFvPatchField.C +++ b/src/finiteVolume/fields/fvPatchFields/constraint/cyclicSlip/cyclicSlipFvPatchField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,15 +25,10 @@ License #include "cyclicSlipFvPatchField.H" -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template<class Type> -cyclicSlipFvPatchField<Type>::cyclicSlipFvPatchField +Foam::cyclicSlipFvPatchField<Type>::cyclicSlipFvPatchField ( const fvPatch& p, const DimensionedField<Type, volMesh>& iF @@ -44,7 +39,7 @@ cyclicSlipFvPatchField<Type>::cyclicSlipFvPatchField template<class Type> -cyclicSlipFvPatchField<Type>::cyclicSlipFvPatchField +Foam::cyclicSlipFvPatchField<Type>::cyclicSlipFvPatchField ( const cyclicSlipFvPatchField<Type>& ptf, const fvPatch& p, @@ -57,7 +52,7 @@ cyclicSlipFvPatchField<Type>::cyclicSlipFvPatchField template<class Type> -cyclicSlipFvPatchField<Type>::cyclicSlipFvPatchField +Foam::cyclicSlipFvPatchField<Type>::cyclicSlipFvPatchField ( const fvPatch& p, const DimensionedField<Type, volMesh>& iF, @@ -69,7 +64,7 @@ cyclicSlipFvPatchField<Type>::cyclicSlipFvPatchField template<class Type> -cyclicSlipFvPatchField<Type>::cyclicSlipFvPatchField +Foam::cyclicSlipFvPatchField<Type>::cyclicSlipFvPatchField ( const cyclicSlipFvPatchField<Type>& ptf ) @@ -79,7 +74,7 @@ cyclicSlipFvPatchField<Type>::cyclicSlipFvPatchField template<class Type> -cyclicSlipFvPatchField<Type>::cyclicSlipFvPatchField +Foam::cyclicSlipFvPatchField<Type>::cyclicSlipFvPatchField ( const cyclicSlipFvPatchField<Type>& ptf, const DimensionedField<Type, volMesh>& iF @@ -89,8 +84,4 @@ cyclicSlipFvPatchField<Type>::cyclicSlipFvPatchField {} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - // ************************************************************************* // diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/cyclicSlip/cyclicSlipFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/constraint/cyclicSlip/cyclicSlipFvPatchField.H index 89306747b8b14ba0998039464828d97c2b4d6d7e..3c68fe2b36d9f075eb3596d1b6d0cc881fcdc355 100644 --- a/src/finiteVolume/fields/fvPatchFields/constraint/cyclicSlip/cyclicSlipFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/constraint/cyclicSlip/cyclicSlipFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,25 @@ License Class Foam::cyclicSlipFvPatchField +Group + grpCoupledBoundaryConditions + Description - Foam::cyclicSlipFvPatchField + This boundary condition is a light wrapper around the cyclicFvPatchField + condition, providing no new functionality. + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type cyclicSlip; + } + \endverbatim + +SeeAlso + Foam::cyclicFvPatchField SourceFiles cyclicSlipFvPatchField.C @@ -44,7 +61,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class cyclicSlipFvPatch Declaration + Class cyclicSlipFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> @@ -52,7 +69,6 @@ class cyclicSlipFvPatchField : public cyclicFvPatchField<Type> { - // Private data public: @@ -119,7 +135,6 @@ public: new cyclicSlipFvPatchField<Type>(*this, iF) ); } - }; diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/empty/emptyFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/constraint/empty/emptyFvPatchField.H index dd76378011058729d9d54d618292125493d375c1..7b8871461906cb8b54ae4c9a6e6258f7a5a28901 100644 --- a/src/finiteVolume/fields/fvPatchFields/constraint/empty/emptyFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/constraint/empty/emptyFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,24 @@ License Class Foam::emptyFvPatchField +Group + grpConstraintBoundaryConditions + Description - Foam::emptyFvPatchField + This boundary condition provides an 'empty' condition for reduced + dimensions cases, i.e. 1- and 2-D geometries. Apply this condition to + patches whose normal is aligned to geometric directions that do not + constitue solution directions. + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type empty; + } + \endverbatim SourceFiles emptyFvPatchField.C @@ -44,7 +60,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class emptyFvPatch Declaration + Class emptyFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclic/jumpCyclicFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclic/jumpCyclicFvPatchField.H index 4c4f94bce6ef3643cc74fb768972aff857d2fc35..a5fd2343bfbf2fdfe13cc55cfbe5e12f4686abe6 100644 --- a/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclic/jumpCyclicFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/constraint/jumpCyclic/jumpCyclicFvPatchField.H @@ -24,8 +24,15 @@ License Class Foam::jumpCyclicFvPatchField +Group + grpCoupledBoundaryConditions + Description - Foam::jumpCyclicFvPatchField + This boundary condition provides a base class for coupled-cyclic + conditions with a specified 'jump' (or offset) between the values + +SeeAlso + Foam::cyclicFvPatchField SourceFiles jumpCyclicFvPatchField.C @@ -43,7 +50,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class cyclicFvPatch Declaration + Class jumpCyclicFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/nonuniformTransformCyclic/nonuniformTransformCyclicFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/constraint/nonuniformTransformCyclic/nonuniformTransformCyclicFvPatchField.H index 5d4468045d392d3873ac2af60a74fc07e26ceff9..576d4d08335b1f60cb6cea71961e97f335d18fe1 100644 --- a/src/finiteVolume/fields/fvPatchFields/constraint/nonuniformTransformCyclic/nonuniformTransformCyclicFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/constraint/nonuniformTransformCyclic/nonuniformTransformCyclicFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,11 +24,18 @@ License Class Foam::nonuniformTransformCyclicFvPatchField +Group + grpCoupledBoundaryConditions + Description - Foam::nonuniformTransformCyclicFvPatchField + This boundary condition enforces a cyclic condition between a pair of + boundaries, incorporating a non-uniform transformation. SourceFiles nonuniformTransformCyclicFvPatchField.C + nonuniformTransformCyclicFvPatchFields.H + nonuniformTransformCyclicFvPatchFields.C + nonuniformTransformCyclicFvPatchFieldsFwd.H \*---------------------------------------------------------------------------*/ diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/processor/processorFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/constraint/processor/processorFvPatchField.H index 690a9dbe4fedee6794788121c74ff137891c969c..a913aaf60672c0bd7b604a2ed026bbe9ba7ac44f 100644 --- a/src/finiteVolume/fields/fvPatchFields/constraint/processor/processorFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/constraint/processor/processorFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,21 @@ License Class Foam::processorFvPatchField +Group + grpCoupledBoundaryConditions + Description - Foam::processorFvPatchField + This boundary condition enables processor communication across patches. + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type processor; + } + \endverbatim SourceFiles processorFvPatchField.C @@ -45,7 +58,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class processorFvPatch Declaration + Class processorFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/processorCyclic/processorCyclicFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/constraint/processorCyclic/processorCyclicFvPatchField.H index 8de27ade3232e5033052e84d60ec8454c893a3c5..c03236b0daf037de291c9bd80d881341ba3abca2 100644 --- a/src/finiteVolume/fields/fvPatchFields/constraint/processorCyclic/processorCyclicFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/constraint/processorCyclic/processorCyclicFvPatchField.H @@ -24,11 +24,31 @@ License Class Foam::processorCyclicFvPatchField +Group + grpCoupledBoundaryConditions + Description - Foam::processorCyclicFvPatchField + This boundary condition enables processor communication across cyclic + patches. + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type processor; + } + \endverbatim + +SeeAlso + Foam::processorFvPatchField SourceFiles processorCyclicFvPatchField.C + processorCyclicFvPatchFields.H + processorCyclicFvPatchFields.C + processorCyclicFvPatchFieldsFwd.H \*---------------------------------------------------------------------------*/ @@ -44,7 +64,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class processorCyclicFvPatch Declaration + Class processorCyclicFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/symmetry/symmetryFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/constraint/symmetry/symmetryFvPatchField.H index c95ffb95d64a2dbd04dc52eb4ba68d42d6823931..a5812c09b4b7204791d689a5cc9deb1e6d01de77 100644 --- a/src/finiteVolume/fields/fvPatchFields/constraint/symmetry/symmetryFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/constraint/symmetry/symmetryFvPatchField.H @@ -24,11 +24,27 @@ License Class Foam::symmetryFvPatchField +Group + grpConstraintBoundaryConditions + Description - Foam::symmetryFvPatchField + This boundary condition enforces a symmetry constraint + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type symmetryPlane; + } + \endverbatim SourceFiles symmetryFvPatchField.C + symmetryFvPatchFields.C + symmetryFvPatchFields.H + symmetryFvPatchFieldsFwd.H \*---------------------------------------------------------------------------*/ @@ -44,7 +60,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class symmetryFvPatch Declaration + Class symmetryFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/wedge/wedgeFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/constraint/wedge/wedgeFvPatchField.H index ec49aaf74f01a155ce43daacfb04417c6234d7f6..6ab1a7f0814617dcae423b1c3705368b38711ed6 100644 --- a/src/finiteVolume/fields/fvPatchFields/constraint/wedge/wedgeFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/constraint/wedge/wedgeFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,25 @@ License Class Foam::wedgeFvPatchField +Group + grpConstraintBoundaryConditions + Description - Foam::wedgeFvPatchField + This boundary condition is similar to the cyclic condition, except that + it is applied to 2-D geometries. + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type wedge; + } + \endverbatim + +SeeAlso + Foam::cyclicFvPatchField SourceFiles wedgeFvPatchField.C @@ -44,7 +61,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class wedgeFvPatch Declaration + Class wedgeFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/derived/activeBaffleVelocity/activeBaffleVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/activeBaffleVelocity/activeBaffleVelocityFvPatchVectorField.C index 86cd31df927545314a37905493e11fd35f34ab96..3b3667bbb5fc155909ba04ebb66d0c8ca2adfd2c 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/activeBaffleVelocity/activeBaffleVelocityFvPatchVectorField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/activeBaffleVelocity/activeBaffleVelocityFvPatchVectorField.C @@ -292,6 +292,7 @@ void Foam::activeBaffleVelocityFvPatchVectorField::updateCoeffs() void Foam::activeBaffleVelocityFvPatchVectorField::write(Ostream& os) const { fvPatchVectorField::write(os); + writeEntryIfDifferent<word>(os, "p", "p", pName_); os.writeKeyword("cyclicPatch") << cyclicPatchName_ << token::END_STATEMENT << nl; os.writeKeyword("orientation") diff --git a/src/finiteVolume/fields/fvPatchFields/derived/activeBaffleVelocity/activeBaffleVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/activeBaffleVelocity/activeBaffleVelocityFvPatchVectorField.H index 19281b5220265197e5582eb13952115cc9942425..1c3dfa4dd440849b5cfdc4258dde7dedafd74aad 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/activeBaffleVelocity/activeBaffleVelocityFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/activeBaffleVelocity/activeBaffleVelocityFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,65 @@ License Class Foam::activeBaffleVelocityFvPatchVectorField +Group + grpCoupledBoundaryConditions + Description - Boundary condition that modifies mesh areas based on velocity. + This velocity boundary condition simulates the opening of a baffle due + to local flow conditions, by merging the behaviours of wall and cyclic + conditions. The baffle joins two mesh regions, where the open fraction + determines the interpolation weights applied to each cyclic- and + neighbour-patch contribution. + + We determine whether the baffle is opening or closing from the sign of + the net force across the baffle, from which the baffle open fraction is + updated using: + + \f[ + x = x_{old} + sign(F_{net})\frac{dt}{DT} + \f] + + where + + \vartable + x | baffle open fraction [0-1] + x_{old} | baffle open fraction on previous evaluation + dt | simulation time step + DT | time taken to open the baffle + F_{net} | net force across the baffle + \endvartable + + The open fraction is then applied to scale the patch areas. + + \heading Patch usage + + \table + Property | Description | Required | Default value + p | pressure field name | no | p + cyclicPatch | cylclic patch name | yes | + orientation | 1 or -1 used to switch flow direction | yes| + openFraction | current opatch open fraction [0-1]| yes | + openingTime | time taken to open the baffle | yes | + maxOpenFractionDelta | max open fraction change per timestep | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type activeBaffleVelocity; + p p; + cyclicPatch cyclic1; + orientation 1; + openFraction 0.2; + openingTime 5.0; + maxOpenFractionDelta 0.1; + } + \endverbatim + +SeeAlso + Foam::fixedValueFvPatchField + Foam::cyclicFvPatchField SourceFiles activeBaffleVelocityFvPatchVectorField.C @@ -44,7 +101,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class activeBaffleVelocityFvPatch Declaration + Class activeBaffleVelocityFvPatchVectorField Declaration \*---------------------------------------------------------------------------*/ class activeBaffleVelocityFvPatchVectorField @@ -163,17 +220,10 @@ public: // Mapping functions //- Map (and resize as needed) from self given a mapping object - virtual void autoMap - ( - const fvPatchFieldMapper& - ); + virtual void autoMap(const fvPatchFieldMapper&); //- Reverse map the given fvPatchField onto this fvPatchField - virtual void rmap - ( - const fvPatchVectorField&, - const labelList& - ); + virtual void rmap(const fvPatchVectorField&, const labelList&); //- Update the coefficients associated with the patch field diff --git a/src/finiteVolume/fields/fvPatchFields/derived/activePressureForceBaffleVelocity/activePressureForceBaffleVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/activePressureForceBaffleVelocity/activePressureForceBaffleVelocityFvPatchVectorField.C index 2e65230aaecea4af1250929cb04b7094bb96c12a..18321c9013bf75cfaf72100e0a44a47ae813a2a7 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/activePressureForceBaffleVelocity/activePressureForceBaffleVelocityFvPatchVectorField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/activePressureForceBaffleVelocity/activePressureForceBaffleVelocityFvPatchVectorField.C @@ -92,7 +92,7 @@ activePressureForceBaffleVelocityFvPatchVectorField ) : fixedValueFvPatchVectorField(p, iF), - pName_("p"), + pName_(dict.lookupOrDefault<word>("p", "p")), cyclicPatchName_(dict.lookup("cyclicPatch")), cyclicPatchLabel_(p.patch().boundaryMesh().findPatchID(cyclicPatchName_)), orientation_(readLabel(dict.lookup("orientation"))), @@ -278,6 +278,8 @@ void Foam::activePressureForceBaffleVelocityFvPatchVectorField::updateCoeffs() { valueDiff -=p[nbrFaceCells[facei]]*mag(initCyclicSf_[facei]); } + + Info<< "Force difference = " << valueDiff << endl; } else //pressure based { @@ -290,6 +292,8 @@ void Foam::activePressureForceBaffleVelocityFvPatchVectorField::updateCoeffs() { valueDiff -= p[nbrFaceCells[facei]]; } + + Info<< "Pressure difference = " << valueDiff << endl; } if ((mag(valueDiff) > mag(minThresholdValue_) || baffleActivated_)) @@ -316,7 +320,6 @@ void Foam::activePressureForceBaffleVelocityFvPatchVectorField::updateCoeffs() } Info<< "Open fraction = " << openFraction_ << endl; - Info<< "Pressure difference = " << valueDiff << endl; vectorField::subField Sfw = patch().patch().faceAreas(); vectorField newSfw((1 - openFraction_)*initWallSf_); @@ -351,6 +354,7 @@ void Foam::activePressureForceBaffleVelocityFvPatchVectorField:: write(Ostream& os) const { fvPatchVectorField::write(os); + writeEntryIfDifferent<word>(os, "p", "p", pName_); os.writeKeyword("cyclicPatch") << cyclicPatchName_ << token::END_STATEMENT << nl; os.writeKeyword("orientation") @@ -361,8 +365,6 @@ write(Ostream& os) const << maxOpenFractionDelta_ << token::END_STATEMENT << nl; os.writeKeyword("openFraction") << openFraction_ << token::END_STATEMENT << nl; - os.writeKeyword("p") - << pName_ << token::END_STATEMENT << nl; os.writeKeyword("minThresholdValue") << minThresholdValue_ << token::END_STATEMENT << nl; os.writeKeyword("forceBased") diff --git a/src/finiteVolume/fields/fvPatchFields/derived/activePressureForceBaffleVelocity/activePressureForceBaffleVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/activePressureForceBaffleVelocity/activePressureForceBaffleVelocityFvPatchVectorField.H index 2e5b6982fe5a9ec602fd3f9da989785ae48b33a7..c313f296fe4fbe5fbae829ba3771e471889faf90 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/activePressureForceBaffleVelocity/activePressureForceBaffleVelocityFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/activePressureForceBaffleVelocity/activePressureForceBaffleVelocityFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,12 +24,64 @@ License Class Foam::activePressureForceBaffleVelocityFvPatchVectorField -Description - Bounday which emulates the operation of a release pressure panel. +Group + grpCoupledBoundaryConditions - The boundary condition modifies mesh areas based on difference - of pressure or force face beween both sides of the panel. Once opened the - panel continues to open at a fixed rate. +Description + This boundary condition is applied to the flow velocity, to simulate the + opening of a baffle due to local flow conditions, by merging the behaviours + of wall and cyclic conditions. + + The baffle joins two mesh regions, where the open fraction determines + the interpolation weights applied to each cyclic- and neighbour-patch + contribution. + + Once opened the baffle continues to open at a fixed rate using + + \f[ + x = x_{old} + \frac{dt}{DT} + \f] + + where + + \vartable + x | baffle open fraction [0-1] + x_{old} | baffle open fraction on previous evaluation + dt | simulation time step + DT | time taken to open the baffle + \endvartable + + The open fraction is then applied to scale the patch areas. + + \heading Patch usage + + \table + Property | Description | Required | Default value + p | pressure field name | no | p + cyclicPatch | cylclic patch name | yes | + orientation | 1 or -1 used to switch flow direction | yes| + openFraction | current opatch open fraction [0-1]| yes | + openingTime | time taken to open the baffle | yes | + maxOpenFractionDelta | max open fraction change per timestep | yes | + minThresholdValue | minimum open fraction for activation | yes | + forceBased | force (true) or pressure-based (false) activation | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type activePressureForceBaffleVelocity; + p p; + cyclicPatch cyclic1; + orientation 1; + openFraction 0.2; + openingTime 5.0; + maxOpenFractionDelta 0.1; + minThresholdValue 0.01; + forceBased false; + } + \endverbatim SourceFiles activePressureForceBaffleVelocityFvPatchVectorField.C @@ -48,7 +100,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class activePressureForceBaffleVelocityFvPatch Declaration + Class activePressureForceBaffleVelocityFvPatchVectorField Declaration \*---------------------------------------------------------------------------*/ class activePressureForceBaffleVelocityFvPatchVectorField @@ -102,6 +154,7 @@ class activePressureForceBaffleVelocityFvPatchVectorField //- Baffle is activated bool baffleActivated_; + public: //- Runtime type information diff --git a/src/finiteVolume/fields/fvPatchFields/derived/advective/advectiveFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/advective/advectiveFvPatchField.H index 0734a9568290ffbf6016ea9d1b4b095a726bb740..5c62df1049fee116021c0d744b2751ab70533425 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/advective/advectiveFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/advective/advectiveFvPatchField.H @@ -24,37 +24,53 @@ License Class Foam::advectiveFvPatchField +Group + grpOutletBoundaryConditions + Description - Advective outflow boundary condition based on solving DDt(psi, U) = 0 - at the boundary. + This boundary condition provides an advective outflow condition, based on + solving DDt(psi, U) = 0 at the boundary. The standard (Euler, backward, CrankNicholson) time schemes are supported. Additionally an optional mechanism to relax the value at the boundary to a specified far-field value is provided which is - switched on by specifying the relaxation length-scale lInf and the - far-field value fieldInf. + switched on by specifying the relaxation length-scale \c lInf and the + far-field value \c fieldInf. The flow/wave speed at the outlet is provided by the virtual function advectionSpeed() the default implementation of which requires the name of - the flux field (phi) and optionally the density (rho) if the mass-flux - rather than the volumetric-flux is given. - \verbatim - outlet - { - type advective; - phi phi; - // rho rho; // Not needed, phi volumetric - // fieldInf 1e5; // Optional - // lInf 0.1; // Optional - } - \endverbatim + the flux field \c (phi) and optionally the density \c (rho) if the + mass-flux rather than the volumetric-flux is given. The flow/wave speed at the outlet can be changed by deriving a specialised - BC from this class and overriding advectionSpeed() e.g. in + BC from this class and over-riding advectionSpeed() e.g. in waveTransmissiveFvPatchField the advectionSpeed() calculates and returns the flow-speed plus the acoustic wave speed creating an acoustic wave transmissive boundary condition. + \heading Patch usage + + \table + Property | Description | Required | Default value + phi | flux field name | no | phi + rho | density field name | no | rho + fieldInf | value of field beyond patch | no | + lInf | distance beyond patch for \c fieldInf | no | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type advective; + phi phi; + } + \endverbatim + +Note + If \c lInf is specified, \c fieldInf will be required; \c rho is only + required in the case of a mass-based flux. + SourceFiles advectiveFvPatchField.C @@ -71,7 +87,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class advectiveFvPatch Declaration + Class advectiveFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/derived/buoyantPressure/buoyantPressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/buoyantPressure/buoyantPressureFvPatchScalarField.H index 79d9eaa5434fda288f478075339571fa56ba35c4..19b7930b860af16d7d8206a1c6849c641250402f 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/buoyantPressure/buoyantPressureFvPatchScalarField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/buoyantPressure/buoyantPressureFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,11 +24,58 @@ License Class Foam::buoyantPressureFvPatchScalarField -Description - Set the pressure gradient boundary condition appropriately for buoyant flow. +Group + grpGenericBoundaryConditions grpWallBoundaryConditions - If the variable name is "pd" assume it is p - rho*g.h and set the gradient - appropriately. Otherwise assume the variable is the static pressure. +Description + This boundary condition sets the pressure gradient appropriately for + buoyant flow. + + If the variable name is one of: + - \c pd + - \c p_rgh + - \c ph_rgh + we assume that the pressure variable is \f$p - \rho(g \cdot h)\f$ and the + gradient set using: + \f[ + \nabla(p) = -\nabla_\perp(\rho)(g \cdot h) + \f] + + where + + \vartable + \rho | density [kg/m3] + g | acceleration due to gravity [m/s2] + h | patch face centres [m] + \endvartable + + Otherwise we assume that it is the static pressure, and the gradient + calculated using: + \f[ + \nabla(p) = \rho(g \cdot n) + \f] + + where + \vartable + n | patch face normal vectors + \endvartable + + \heading Patch usage + + \table + Property | Description | Required | Default value + rho | density field name | no | rho + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type buoyantPressure; + rho rho; + value uniform 0; + } + \endverbatim SourceFiles buoyantPressureFvPatchScalarField.C @@ -47,7 +94,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class buoyantPressureFvPatch Declaration + Class buoyantPressureFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class buoyantPressureFvPatchScalarField diff --git a/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.H index c7fdc5c644b854ec2bea35cf6b220485bc55ed4e..9723a2116af3549b3526d569ce13ac1fb0ae69d3 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/codedFixedValue/codedFixedValueFvPatchField.H @@ -24,41 +24,46 @@ License Class Foam::codedFixedValueFvPatchField +Group + grpGenericBoundaryConditions + Description Constructs on-the-fly a new boundary condition (derived from fixedValueFvPatchField) which is then used to evaluate. + \heading Patch usage + Example: \verbatim - movingWall - { - type codedFixedValue; - value uniform 0; - redirectType rampedFixedValue; // name of generated bc - - code - #{ - operator==(min(10, 0.1*this->db().time().value())); - #}; - - //codeInclude - //#{ - // #include "fvCFD.H" - //#}; - - //codeOptions - //#{ - // -I$(LIB_SRC)/finiteVolume/lnInclude - //#}; - } + myPatch + { + type codedFixedValue; + value uniform 0; + redirectType rampedFixedValue; // name of generated BC + + code + #{ + operator==(min(10, 0.1*this->db().time().value())); + #}; + + //codeInclude + //#{ + // #include "fvCFD.H" + //#}; + + //codeOptions + //#{ + // -I$(LIB_SRC)/finiteVolume/lnInclude + //#}; + } \endverbatim A special form is if the 'code' section is not supplied. In this case - the code gets read from a (runTimeModifiable!) dictionary system/codeDict - which would have a corresponding entry + the code is read from a (runTimeModifiable!) dictionary system/codeDict + which would have a corresponding entry: \verbatim - rampedFixedValue + myPatch { code #{ @@ -68,7 +73,8 @@ Description \endverbatim SeeAlso - Foam::dynamicCode and Foam::functionEntries::codeStream + Foam::dynamicCode + Foam::functionEntries::codeStream SourceFiles codedFixedValueFvPatchField.C @@ -92,7 +98,7 @@ class dynamicCodeContext; class IOdictionary; /*---------------------------------------------------------------------------*\ - Class codedFixedValueFvPatch Declaration + Class codedFixedValueFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> @@ -110,6 +116,7 @@ class codedFixedValueFvPatchField mutable autoPtr<fvPatchField<Type> > redirectPatchFieldPtr_; + // Private Member Functions const IOdictionary& dict() const; @@ -132,6 +139,7 @@ class codedFixedValueFvPatchField // Get the dictionary to initialize the codeContext virtual const dictionary& codeDict() const; + public: // Static data members @@ -209,8 +217,6 @@ public: } - - // Member functions //- Get reference to the underlying patch diff --git a/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchField.H index cc08ba319d0fe4621e5b509ce316a0cb327d0e15..3ab69cc81c092b6fdd6f959069660291fae3a864 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/codedMixed/codedMixedFvPatchField.H @@ -24,41 +24,42 @@ License Class Foam::codedMixedFvPatchField +Group + grpGenericBoundaryConditions + Description Constructs on-the-fly a new boundary condition (derived from mixedFvPatchField) which is then used to evaluate. + \heading Patch usage + Example: \verbatim - movingWall - { - type codedMixed; - - refValue uniform (0 0 0); - refGradient uniform (0 0 0); - valueFraction uniform 1; - - redirectType rampedMixed; // name of generated bc - - code - #{ - this->refValue() = - vector(1, 0, 0) - *min(10, 0.1*this->db().time().value()); - this->refGrad() = vector::zero; - this->valueFraction() = 1.0; - #}; - - //codeInclude - //#{ - // #include "fvCFD.H" - //#}; - - //codeOptions - //#{ - // -I$(LIB_SRC)/finiteVolume/lnInclude - //#}; - } + myPatch + { + type codedMixed; + value uniform 0; + redirectType rampedMixed; // name of generated BC + + code + #{ + this->refValue() = + vector(1, 0, 0) + *min(10, 0.1*this->db().time().value()); + this->refGrad() = vector::zero; + this->valueFraction() = 1.0; + #}; + + //codeInclude + //#{ + // #include "fvCFD.H" + //#}; + + //codeOptions + //#{ + // -I$(LIB_SRC)/finiteVolume/lnInclude + //#}; + } \endverbatim A special form is if the 'code' section is not supplied. In this case @@ -66,19 +67,20 @@ Description which would have a corresponding entry \verbatim - rampedMixed - { - code - #{ - this->refValue() = min(10, 0.1*this->db().time().value()); - this->refGrad() = vector::zero; - this->valueFraction() = 1.0; - #}; - } + myPatch + { + code + #{ + this->refValue() = min(10, 0.1*this->db().time().value()); + this->refGrad() = vector::zero; + this->valueFraction() = 1.0; + #}; + } \endverbatim SeeAlso - Foam::dynamicCode and Foam::functionEntries::codeStream + Foam::dynamicCode + Foam::functionEntries::codeStream SourceFiles codedMixedFvPatchField.C @@ -102,7 +104,7 @@ class dynamicCodeContext; class IOdictionary; /*---------------------------------------------------------------------------*\ - Class codedMixedFvPatch Declaration + Class codedMixedFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> @@ -120,6 +122,7 @@ class codedMixedFvPatchField mutable autoPtr<mixedFvPatchField<Type> > redirectPatchFieldPtr_; + // Private Member Functions const IOdictionary& dict() const; @@ -142,6 +145,7 @@ class codedMixedFvPatchField // Get the dictionary to initialize the codeContext virtual const dictionary& codeDict() const; + public: // Static data members @@ -219,8 +223,6 @@ public: } - - // Member functions //- Get reference to the underlying patchField diff --git a/src/finiteVolume/fields/fvPatchFields/derived/cylindricalInletVelocity/cylindricalInletVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/cylindricalInletVelocity/cylindricalInletVelocityFvPatchVectorField.H index de15affbc73585e018e8374df37b8a98ac74409d..4e3db2fdfffd9905329be552615d50986c8a7e90 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/cylindricalInletVelocity/cylindricalInletVelocityFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/cylindricalInletVelocity/cylindricalInletVelocityFvPatchVectorField.H @@ -2,16 +2,16 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ 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 3 of the License, or (at your - option) any later version. + 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 3 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 @@ -19,19 +19,33 @@ 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 + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class Foam::cylindricalInletVelocityFvPatchVectorField +Group + grpInletBoundaryConditions + Description - Describes an inlet vector boundary condition in cylindrical coordinates - given a central axis, central point, rpm, axial and radial velocity. + This boundary condition describes an inlet vector boundary condition in + cylindrical co-ordinates given a central axis, central point, rpm, axial + and radial velocity. + + \heading Patch usage + + \table + Property | Description | Required | Default value + axis | axis of rotation | yes | + centre | centre of rotation | yes | + axialVelocity | axial velocity profile [m/s] | yes | + radialVelocity | radial velocity profile [m/s] | yes | + rpm | rotational speed (revolutions per minute) | yes| + \endtable Example of the boundary condition specification: \verbatim - inlet + myPatch { type cylindricalInletVelocity; axis (0 0 1); @@ -42,9 +56,14 @@ Description } \endverbatim - The axialVelocity, radialVelocity and rpm entries are DataEntry types, able - to describe time varying functions. The example above gives the usage for - supplying constant values. +Note + The \c axialVelocity, \c radialVelocity and \c rpm entries are DataEntry + types, able to describe time varying functions. The example above gives + the usage for supplying constant values. + +SeeAlso + Foam::fixedValueFvPatchField + Foam::DataEntry SourceFiles cylindricalInletVelocityFvPatchVectorField.C diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchField.H index b3799c2bd9bc2486294d2c107ad77e72309bfde6..3eea1382f39400ec5f98a6b1ed4e3109459d87df 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/fan/fanFvPatchField.H @@ -24,47 +24,59 @@ License Class Foam::fanFvPatchField +Group + grpCoupledBoundaryConditions + Description - Jump boundary condition. Operates on cyclic. Jump specified as a DataEntry. - (table, fileTable, csv etc.) + This boundary condition provides a jump condition, using the \c cyclic + condition as a base. + + The jump is specified as a \c DataEntry type, to enable the use of, e.g. + contant, polynomial, table values. + + \heading Patch usage + + \table + Property | Description | Required | Default value + patchType | underlying patch type should be \c cyclic| yes | + jump | current jump value | yes | + jumpTable | jump data, e.g. \c csvFile | yes | + \endtable Example of the boundary condition specification: \verbatim - fan_half0 + myPatch + { + type fan; + patchType cyclic; + jump uniform 0; + jumpTable csvFile; + csvFileCoeffs { - type fan; - patchType cyclic; - jump uniform 0; - jumpTable csvFile; - csvFileCoeffs - { - hasHeaderLine 1; - refColumn 0; - componentColumns 1(1); - separator ","; - fileName "$FOAM_CASE/constant/pressureVsU"; - } - value uniform 0; + hasHeaderLine 1; + refColumn 0; + componentColumns 1(1); + separator ","; + fileName "$FOAM_CASE/constant/pressureVsU"; } + value uniform 0; + } \endverbatim + The above example shows the use of a comma separated (CSV) file to specify + the jump condition. - Backwards compatibility: if the 'f' keyword is detected it assumes - it is a power of the flowrate. +Note + The underlying \c patchType should be set to \c cyclic - \verbatim - fan_half0 - { - type fan; - patchType cyclic; - jump uniform 0; - f 2(100 -0.1); - value uniform 0; - } - \endverbatim +SeeAlso + Foam::DataEntry SourceFiles fanFvPatchField.C + fanFvPatchFields.H + fanFvPatchFields.C + fanFvPatchFieldsFwd.H \*---------------------------------------------------------------------------*/ diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fanPressure/fanPressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/fanPressure/fanPressureFvPatchScalarField.H index 9720684193fbc02b801c5dc879938aede599442b..022fb48ccb74e2ef3480e486414991afd69c04b8 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/fanPressure/fanPressureFvPatchScalarField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/fanPressure/fanPressureFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,43 +24,53 @@ License Class Foam::fanPressureFvPatchScalarField +Group + grpInletBoundaryConditions grpOutletBoundaryConditions + Description - Assigns pressure inlet or outlet total pressure condition for a fan. + This boundary condition can be applied to assign either a pressure inlet + or outlet total pressure condition for a fan. + + \heading Patch usage - User specifies: - - pressure drop vs volumetric flow rate table (fan curve) file name; - - direction of normal flow through the fan, in or out; - - total pressure of the environment. + \table + Property | Description | Required | Default value + fileName | fan curve file name | yes | + outOfBounds | out of bounds handling | yes | + direction | direction of flow through fan [in/out] | yes | + p0 | environmental total pressure | yes | + \endtable Example of the boundary condition specification: \verbatim - inlet - { - type fanPressure; - fileName "fanCurve"; // Fan curve file name - outOfBounds clamp; // (error|warn|clamp|repeat) - direction in; // Direction of flow through fan - p0 uniform 0; // Environmental total pressure - value uniform 0; // Initial pressure - } - - outlet - { - type fanPressure; - fileName "fanCurve"; // Fan curve file name - outOfBounds clamp; // (error|warn|clamp|repeat) - direction out; // Direction of flow through fan - p0 uniform 0; // Environmental total pressure - value uniform 0; // Initial pressure - } + inlet + { + type fanPressure; + fileName "fanCurve"; + outOfBounds clamp; + direction in; + p0 uniform 0; + value uniform 0; + } + + outlet + { + type fanPressure; + fileName "fanCurve"; + outOfBounds clamp; + direction out; + p0 uniform 0; + value uniform 0; + } \endverbatim See Also - Foam::totalPressureFvPatchScalarField and + Foam::fanFvPatchField + Foam::totalPressureFvPatchScalarField Foam::interpolationTable SourceFiles - fanPressureFvPatchScalarField.C + fanPressureFvPatchScalarField.C \*---------------------------------------------------------------------------*/ @@ -93,8 +103,10 @@ public: ffdOut }; + //- Fan flow directions names static const NamedEnum<fanFlowDirection, 2> fanFlowDirectionNames_; + private: // Private data diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.H index de8f837abdfc99fe4321722133f669ff424ec22e..8476e63dffc0f34ecae8c23cf016655a83b9e2fb 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedFluxPressure/fixedFluxPressureFvPatchScalarField.H @@ -24,15 +24,53 @@ License Class Foam::fixedFluxPressureFvPatchScalarField +Group + grpOutletBoundaryConditions + Description - Adjusts the pressure gradient such that the flux on the boundary is that - specified by the velocity boundary condition. + This boundary condition adjusts the pressure gradient such that the flux + on the boundary is that specified by the velocity boundary condition. The predicted flux to be compensated by the pressure gradient is evaluated - as (phi - phiHbyA), both of which are looked-up from the database as is - the pressure diffusivity Dp used to calculate the gradient. - - The names of the phi, phiHbyA and Dp fields may be optionally specified. + as \f$(\phi - \phi_{H/A})\f$, both of which are looked-up from the database, + as is the pressure diffusivity used to calculate the gradient using: + + \f[ + \nabla(p) = \frac{\phi_{H/A} - \phi}{|Sf| D_p} + \f] + + where + + \vartable + phi | flux + D_p | pressure diffusivity + Sf | patch face areas [m2] + \endvartable + + \heading Patch usage + + \table + Property | Description | Required | Default value + phiHbyA | name of predicted flux field | no | phiHbyA + phi | name of flux field | no | phi + rho | name of density field | no | rho + Dp | name of pressure diffusivity field | no | Dp + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type fixedFluxPressure; + phiHbyA phiHbyA; + phi phi; + rho rho; + Dp Dp; + } + \endverbatim + +SeeAlso + Foam::fixedGradientFvPatchField SourceFiles fixedFluxPressureFvPatchScalarField.C @@ -52,7 +90,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class fixedFluxPressureFvPatch Declaration + Class fixedFluxPressureFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class fixedFluxPressureFvPatchScalarField diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedInternalValueFvPatchField/fixedInternalValueFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/fixedInternalValueFvPatchField/fixedInternalValueFvPatchField.H index cd27459a94b4177600611f82242eb8d90acaa7c2..75a9742240f757ddefce2e4f1b64e4ecf6b1e1f7 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/fixedInternalValueFvPatchField/fixedInternalValueFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedInternalValueFvPatchField/fixedInternalValueFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,11 +24,33 @@ License Class Foam::fixedInternalValueFvPatchField +Group + grpGenericBoundaryConditions + Description - Boundary condition providing mechanism to set boundary (cell) values - directly into a matrix, i.e. to set a constraint condition. Default + This boundary condition provides a mechanism to set boundary (cell) values + directly into a matrix, i.e. to set a constraint condition. Default behaviour is to act as a zero gradient condition. + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type fixedInternalValue; + value uniform 0; // place holder + } + \endverbatim + +Note + This is used as a base for conditions such as the turbulence \c epsilon + wall function, which applies a near-wall constraint for high Reynolds + number flows. + +SeeAlso + Foam::epsilonWallFunctionFvPatchScalarField + SourceFiles fixedInternalValueFvPatchField.C diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedJump/fixedJumpFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/fixedJump/fixedJumpFvPatchField.H index c746b975cf1e1c78323ad99d595ad7042c19aa70..30ec57fc54eb35c11df20a7f18fcfdde72f659be 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/fixedJump/fixedJumpFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedJump/fixedJumpFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,9 +24,19 @@ License Class Foam::fixedJumpFvPatchField +Group + grpCoupledBoundaryConditions + Description Base class for "jump" of a field<type> +Note + not used directly + +SeeAlso + Foam::fanFvPatchScalarField + Foam::fanPressureFvPatchScalarField + SourceFiles fixedJumpFvPatchField.C @@ -62,7 +72,6 @@ protected: public: - // Constructors //- Construct from patch and internal field diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedMean/fixedMeanFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/fixedMean/fixedMeanFvPatchField.H index b59969a967210d0a31a76751e57fbf2996cb6301..ed31cfb998a5ae90358a41d33bbff443768c15f3 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/fixedMean/fixedMeanFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedMean/fixedMeanFvPatchField.H @@ -24,9 +24,31 @@ License Class Foam::fixedMeanFvPatchField +Group + grpGenericBoundaryConditions + Description - Extrapolates field to the patch using the near-cell values and adjusts - the distribution to match the specified meanValue. + This boundary condition extrapolates field to the patch using the near-cell + values and adjusts the distribution to match the specified mean value. + + \heading Patch usage + + \table + Property | Description | Required | Default value + meanValue | mean value | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type fixedMean; + meanValue 1.0; + } + \endverbatim + +SeeAlso + Foam::fixedValueFvPatchField SourceFiles fixedMeanFvPatchField.C @@ -44,7 +66,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class fixedMeanFvPatch Declaration + Class fixedMeanFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchField.H index 3a59c98f4e53db237166203dfac5043239138e85..bbaf0a257bca2df4ec0e75617c53ae89efd8922d 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedNormalSlip/fixedNormalSlipFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,30 @@ License Class Foam::fixedNormalSlipFvPatchField +Group + grpGenericBoundaryConditions grpWallBoundaryConditions + Description - Foam::fixedNormalSlipFvPatchField + This boundary condition sets the patch-normal component to a fixed value. + + \heading Patch usage + + \table + Property | Description | Required | Default value + fixedValue | fixed value | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type fixedNormalSlip; + fixedValue uniform 0; // example entry for a scalar field + } + \endverbatim + +SeeAlso + Foam::transformFvPatchField SourceFiles fixedNormalSlipFvPatchField.C @@ -43,7 +65,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class fixedNormalSlipFvPatch Declaration + Class fixedNormalSlipFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fixedPressureCompressibleDensity/fixedPressureCompressibleDensityFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/fixedPressureCompressibleDensity/fixedPressureCompressibleDensityFvPatchScalarField.H index a27409e94b9f29ee4c2df79f8ce880862a3946a1..47aab74d5c24dce9462d829119bdf4a9acc6efbb 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/fixedPressureCompressibleDensity/fixedPressureCompressibleDensityFvPatchScalarField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/fixedPressureCompressibleDensity/fixedPressureCompressibleDensityFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,20 +24,50 @@ License Class Foam::fixedPressureCompressibleDensityFvPatchScalarField +Group + grpInletBoundaryConditions + Description - Calculate compressible density as a function of pressure and fluid - properties. + This boundary condition calculates a (liquid) compressible density as a + function of pressure and fluid properties: + + \f[ + \rho = \rho_{l,sat} + \psi_l*(p - p_{sat}) + \f] + + where + + \vartable + \rho | density [kg/m3] + \rho_{l,sat} | saturation liquid density [kg/m3] + \psi_l | liquid compressibility + p | pressure [Pa] + p_{sat} | saturation pressure [Pa] + \endvartable + + The variables \c rholSat, \c pSat and \c psil are retrieved from the + \c thermodynamicProperties dictionary. + + \heading Patch usage + + \table + Property | Description | Required | Default value + p | pressure field name | no | p + \endtable Example of the boundary condition specification: \verbatim - inlet - { - type fixedPressureCompressibleDensity; - p p; // Name of static pressure field - value uniform 1; // Initial value - } + myPatch + { + type fixedPressureCompressibleDensity; + p p; + value uniform 1; + } \endverbatim +SeeAlso + Foam::fixedValueFvPatchField + SourceFiles fixedPressureCompressibleDensityFvPatchScalarField.C diff --git a/src/finiteVolume/fields/fvPatchFields/derived/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.H index 1a5d2f493d160bff3497b3898422c002127d84c7..8051261154f6d8c351234138838714c49f335bd0 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.H @@ -24,37 +24,67 @@ License Class Foam::flowRateInletVelocityFvPatchVectorField -Description - Describes a volumetric/mass flow normal vector boundary condition by its - magnitude as an integral over its area. - - Either specify 'volumetricFlowRate' or 'massFlowRate' (requires additional - 'rho' or 'rhoInlet' entry). +Group + grpInletBoundaryConditions - Example of the boundary condition specification: +Description + This boundary condition provides a velocity boundary condition, derived + from the flux (volumetric or mass-based), whose direction is assumed + to be normal to the patch. + + For a mass-based flux: + - the flow rate should be provided in kg/s + - if \c rhoName is "none" the flow rate is in m3/s + - otherwise \c rhoName should correspond to the name of the density field + - if the density field cannot be found in the database, the user must + specify the inlet density using the \c rhoInlet entry + + For a volumetric-based flux: + - the flow rate is in m3/s + + \heading Patch usage + + \table + Property | Description | Required | Default value + massFlowRate | mass flow rate [kg/s] | no | + volumetricFlowRate | volumetric flow rate [m3/s]| no | + rhoInlet | inlet density | no | + \endtable + + Example of the boundary condition specification for a volumetric flow rate: \verbatim - inlet + myPatch { - type flowRateInletVelocity; - volumetricFlowRate 0.2; // Volumetric [m3/s] + type flowRateInletVelocity; + volumetricFlowRate 0.2; + value uniform (0 0 0); // placeholder } \endverbatim + Example of the boundary condition specification for a mass flow rate: \verbatim - inlet + myPatch { type flowRateInletVelocity; - massFlowRate 0.2; // mass flow rate [kg/s] - rho rho; // rho [m3/s or kg/s] - rhoInlet 1.0 // uniform rho if no rho field registered - // (e.g. at startup) + massFlowRate 0.2; + rho rho; + rhoInlet 1.0; } \endverbatim + + The \c flowRate entry is a \c DataEntry type, meaning that it can be + specified as constant, a polynomial fuction of time, and ... Note - - The value is positive inwards - - May not work correctly for transonic inlets - - Strange behaviour with potentialFoam since the U equation is not solved + - \c rhoInlet is required for the case of a mass flow rate, where the + density field is not available at start-up + - the value is positive into the domain (as an inlet) + - may not work correctly for transonic inlets + - strange behaviour with potentialFoam since the U equation is not solved + +SeeAlso + Foam::DataEntry + Foam::fixedValueFvPatchField SourceFiles flowRateInletVelocityFvPatchVectorField.C @@ -72,7 +102,7 @@ SourceFiles namespace Foam { /*---------------------------------------------------------------------------*\ - Class flowRateInletVelocityFvPatch Declaration + Class flowRateInletVelocityFvPatchVectorField Declaration \*---------------------------------------------------------------------------*/ class flowRateInletVelocityFvPatchVectorField diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fluxCorrectedVelocity/fluxCorrectedVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/fluxCorrectedVelocity/fluxCorrectedVelocityFvPatchVectorField.C index fbd74afe20816cb10dfc50d2a23350bf6064f672..a3f73873903ead3a6717928682b3e9a017685c2b 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/fluxCorrectedVelocity/fluxCorrectedVelocityFvPatchVectorField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/fluxCorrectedVelocity/fluxCorrectedVelocityFvPatchVectorField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -29,8 +29,6 @@ License #include "volFields.H" #include "surfaceFields.H" -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // Foam::fluxCorrectedVelocityFvPatchVectorField:: diff --git a/src/finiteVolume/fields/fvPatchFields/derived/fluxCorrectedVelocity/fluxCorrectedVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/fluxCorrectedVelocity/fluxCorrectedVelocityFvPatchVectorField.H index 6631d205b47be2f4ca988107ae04d362c259e6b1..4519a5ed9d2f1063ff3466a52b83a28375536620 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/fluxCorrectedVelocity/fluxCorrectedVelocityFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/fluxCorrectedVelocity/fluxCorrectedVelocityFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,11 +24,53 @@ License Class Foam::fluxCorrectedVelocityFvPatchVectorField +Group + grpOutletBoundaryConditions + Description - Velocity outlet boundary condition for patches where the pressure is - specified. The outflow velocity is obtained by "zeroGradient" and then - corrected from the flux. If reverse flow is possible or expected use - the "pressureInletOutletVelocityFvPatchVectorField" BC instead. + This boundary condition provides a velocity outlet boundary condition for + patches where the pressure is specified. The outflow velocity is obtained + by "zeroGradient" and then corrected from the flux: + + \f[ + U_p = U_c - n*(n.U_c) + \frac{n*\phi_p}{|Sf|} + \f] + + where + + \vartable + U_p | velocity at the patch [m/s] + U_c | velocity in cells adjacent to the patch [m/s] + n | patch normal vectors + \phi_p | flux at the patch [m3/s or kg/s] + Sf | patch face area vectors [m2] + \endvartable + + where + + \table + Property | Description | Required | Default value + phi | name of flux field | no | phi + rho | name of density field | no | rho + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type fluxCorrectedVelocity; + phi phi; + rho rho; + } + \endverbatim + +Note + If reverse flow is possible or expected use the + pressureInletOutletVelocity condition instead. + +SeeAlso + Foam::zeroGradientFvPatchField + Foam::pressureInletOutletVelocityFvPatchVectorField SourceFiles fluxCorrectedVelocityFvPatchVectorField.C @@ -47,7 +89,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class fluxCorrectedVelocityFvPatch Declaration + Class fluxCorrectedVelocityFvPatchVectorField Declaration \*---------------------------------------------------------------------------*/ class fluxCorrectedVelocityFvPatchVectorField @@ -56,7 +98,10 @@ class fluxCorrectedVelocityFvPatchVectorField { // Private data + //- Name of flux field word phiName_; + + //- Name of density field word rhoName_; diff --git a/src/finiteVolume/fields/fvPatchFields/derived/freestream/freestreamFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/freestream/freestreamFvPatchField.H index 50f3d136f0eb4ce95bfcb1f87c4c7e048eb75e2b..adcb570f937b8b1cc569cbbf74ed054ce0429fb6 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/freestream/freestreamFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/freestream/freestreamFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,34 @@ License Class Foam::freestreamFvPatchField +Group + grpInletBoundaryConditions grpOutletBoundaryConditions + Description - Foam::freestreamFvPatchField + This boundary condition provides a free-stream condition. It is a 'mixed' + condition derived from the \c inletOutlet condition, whereby the mode of + operation switches between fixed (free stream) value and zero gradient + based on the sign of the flux. + + \heading Patch usage + + \table + Property | Description | Required | Default value + phi | flux field name | no | phi + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type freestream; + phi phi; + } + \endverbatim + +SeeAlso + Foam::mixedFvPatchField + Foam::inletOutletFvPatchField SourceFiles freestreamFvPatchField.C @@ -43,7 +69,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class freestreamFvPatch Declaration + Class freestreamFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/derived/freestreamPressure/freestreamPressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/freestreamPressure/freestreamPressureFvPatchScalarField.H index 6323b678d7d165b48177720e22b9bdfd060bf6f4..fa5233308c8ac7c3e4f24c3f85c29a5e680a9c0e 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/freestreamPressure/freestreamPressureFvPatchScalarField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/freestreamPressure/freestreamPressureFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,30 @@ License Class Foam::freestreamPressureFvPatchScalarField +Group + grpInletBoundaryConditions grpOutletBoundaryConditions + Description - Foam::freestreamPressureFvPatchScalarField + This boundary condition provides a free-stream condition for pressure. + It is a zero-gradient condition that constrains the flux across the patch + based on the free-stream velocity. + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type freestreamPressure; + } + \endverbatim + +Note + This condition is designed to operate with a freestream velocity condition + +SeeAlso + Foam::zeroGradientFvPatchField + Foam::freestreamFvPatchField SourceFiles freestreamPressureFvPatchScalarField.C @@ -44,7 +66,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class freestreamPressureFvPatch Declaration + Class freestreamPressureFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class freestreamPressureFvPatchScalarField diff --git a/src/finiteVolume/fields/fvPatchFields/derived/inletOutlet/inletOutletFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/inletOutlet/inletOutletFvPatchField.H index 4c7817967b38c98a50217ad0dbc4d6aad6db5594..21aea3aa9137b8da785676805c0239fa03d92478 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/inletOutlet/inletOutletFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/inletOutlet/inletOutletFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,43 @@ License Class Foam::inletOutletFvPatchField +Group + grpOutletBoundaryConditions + Description - Foam::inletOutletFvPatchField + This boundary condition provides a generic outflow condition, with + specified inflow for the case of return flow. + + \heading Patch usage + + \table + Property | Description | Required | Default value + phi | flux field name | no | phi + inletValue | inlet value for reverse flow | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type inletOutlet; + phi phi; + inletValue uniform 0; + value uniform 0; + } + \endverbatim + + The mode of operation is determined by the sign of the flux across the + patch faces. + +Note + Sign conventions: + - positive flux (out of domain): apply zero-gradient condition + - negative flux (into of domain): apply the user-specified fixed value + +SeeAlso + Foam::mixedFvPatchField + Foam::zeroGradientFvPatchField SourceFiles inletOutletFvPatchField.C @@ -43,7 +78,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class inletOutletFvPatch Declaration + Class inletOutletFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/derived/inletOutletTotalTemperature/inletOutletTotalTemperatureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/inletOutletTotalTemperature/inletOutletTotalTemperatureFvPatchScalarField.H index 7483a39bd44c694e3a6a5b51b29e3dbab9e8dd5f..430ee1e51f35aebb8023e41aebea4e7594cfa87e 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/inletOutletTotalTemperature/inletOutletTotalTemperatureFvPatchScalarField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/inletOutletTotalTemperature/inletOutletTotalTemperatureFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,43 @@ License Class Foam::inletOutletTotalTemperatureFvPatchScalarField +Group + grpOutletBoundaryConditions + Description - Foam::inletOutletTotalTemperatureFvPatchScalarField + This boundary condition provides an outflow condition for total + temperature for use with supersonic cases, where a user-specified + value is applied in the case of reverse flow. + + \heading Patch usage + + \table + Property | Description | Required | Default value + U | velocity field name | no | U + phi | flux field name | no | phi + psi | compressibility field name | no | psi + gamma | heat capacity ration (Cp/Cv) | yes | + inletValue | reverse flow (inlet) value | yes | + T0 | static temperature [K] | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type inletOutletTotalTemperature; + U U; + phi phi; + psi psi; + gamma gamma; + inletValue uniform 0; + T0 uniform 0; + value uniform 0; + } + \endverbatim + +SeeAlso + Foam::inletOutletFvPatchField SourceFiles inletOutletTotalTemperatureFvPatchScalarField.C @@ -43,7 +78,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class inletOutletTotalTemperatureFvPatch Declaration + Class inletOutletTotalTemperatureFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class inletOutletTotalTemperatureFvPatchScalarField diff --git a/src/finiteVolume/fields/fvPatchFields/derived/mappedField/mappedFieldFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/mappedField/mappedFieldFvPatchField.H index 11c0425bed6c8de05f12df7da42278fe84093480..6dd9f3efb5c8579b8c9c966394d4aa34a5e8685a 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/mappedField/mappedFieldFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/mappedField/mappedFieldFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,11 +24,47 @@ License Class Foam::mappedFieldFvPatchField +Group + grpGenericBoundaryConditions grpCoupledBoundaryConditions + Description - Self-contained version of mapped. Does not use information on - patch, instead holds it locally (and possibly duplicate) so use - normal mapped in preference and only use this if you cannot - change the underlying patch type to mapped. + This boundary condition provides a self-contained version of the \c mapped + condition. It does not use information on the patch; instead it holds + thr data locally. + + \heading Patch usage + + \table + Property | Description | Required | Default value + fieldName | name of field to be mapped | no | this field name + setAverage | flag to activate setting of average value | yes | + average | average value to apply if \c setAverage = yes | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type mappedField; + fieldName T; // optional field name + setAverage no; // apply an average value + average 0; // average to apply if setAverage + value uniform 0; // place holder + } + \endverbatim + +Note + Since this condition can be applied on a per-field and per-patch basis, + it is possible to duplicate the mapping information. If possible, employ + the \c mapped condition in preference to avoid this situation, and only + employ this condition if it is not possible to change the underlying + geometric (poly) patch type to \c mapped. + +SeeAlso + Foam::mappedPatchBase + Foam::mappedPolyPatch + Foam::mappedFvPatch + Foam::fixedValueFvPatchField SourceFiles mappedFieldFvPatchField.C @@ -48,7 +84,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class mappedFieldFvPatchField Declaration + Class mappedFieldFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/derived/mappedFixedInternalValue/mappedFixedInternalValueFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/mappedFixedInternalValue/mappedFixedInternalValueFvPatchField.H index 56ab90452943656aeb8c731fddd5412c19670206..a4b48fce8faa69d99c7087d5a11b2562aac6d9a7 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/mappedFixedInternalValue/mappedFixedInternalValueFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/mappedFixedInternalValue/mappedFixedInternalValueFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,9 +24,42 @@ License Class Foam::mappedFixedInternalValueFvPatchField +Group + grpGenericBoundaryConditions grpCoupledBoundaryConditions + Description - Recycles the boundary and internal values of a neighbour patch field to - the boundary and internal values of *this. + This boundary condition maps the boundary and internal values of a + neighbour patch field to the boundary and internal values of *this. + + \heading Patch usage + + \table + Property | Description | Required | Default value + fieldName | name of field to be mapped | no | this field name + setAverage | flag to activate setting of average value | yes | + average | average value to apply if \c setAverage = yes | yes | + \endtable + + \verbatim + myPatch + { + type mappedFixedInternalValue; + fieldName T; + setAverage no; + average 0; + value uniform 0; + } + \endverbatim + +Note + This boundary condition can only be applied to patches that are of + the \c mappedPolyPatch type. + +SeeAlso + Foam::mappedPatchBase + Foam::mappedPolyPatch + Foam::mappedFvPatch + Foam::mappedFixedValueFvPatchField SourceFiles mappedFixedInternalValueFvPatchField.C @@ -44,7 +77,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class mappedFixedInternalValueFvPatchField Declaration + Class mappedFixedInternalValueFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/derived/mappedFixedPushedInternalValue/mappedFixedPushedInternalValueFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/mappedFixedPushedInternalValue/mappedFixedPushedInternalValueFvPatchField.H index a3dc0b67ac276b55331ab0055b2fd571db330c45..2f9ecedd66db14332ef11e55141232c91a9d9bfd 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/mappedFixedPushedInternalValue/mappedFixedPushedInternalValueFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/mappedFixedPushedInternalValue/mappedFixedPushedInternalValueFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,9 +24,43 @@ License Class Foam::mappedFixedPushedInternalValueFvPatchField +Group + grpGenericBoundaryConditions grpCoupledBoundaryConditions + Description - Recycles the boundary values of a neighbour patch field to the boundary - and internal values of *this. + This boundary condition maps the boundary values of a neighbour patch + field to the boundary and internal cell values of *this. + + \heading Patch usage + + \table + Property | Description | Required | Default value + fieldName | name of field to be mapped | no | this field name + setAverage | flag to activate setting of average value | yes | + average | average value to apply if \c setAverage = yes | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type mappedFixedPushedInternalValue; + fieldName T; + setAverage no; + average 0; + value uniform 0; + } + \endverbatim + +Note + This boundary condition can only be applied to patches that are of + the \c mappedPolyPatch type. + +SeeAlso + Foam::mappedPatchBase + Foam::mappedPolyPatch + Foam::mappedFvPatch + Foam::mappedFixedValueFvPatchField SourceFiles mappedFixedPushedInternalValueFvPatchField.C @@ -44,7 +78,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class mappedFixedPushedInternalValueFvPatchField Declaration + Class mappedFixedPushedInternalValueFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/derived/mappedFixedValue/mappedFixedValueFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/mappedFixedValue/mappedFixedValueFvPatchField.H index d60ae3bc3ca88960b8dba13f230c8a55479fdde4..dd52f2a2b635b725368edc81cf7654ccdeab7485 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/mappedFixedValue/mappedFixedValueFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/mappedFixedValue/mappedFixedValueFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,27 +24,55 @@ License Class Foam::mappedFixedValueFvPatchField -Description - Recycles the value at a set of cells or patch faces back to *this. Can not - sample internal faces (since volField not defined on faces). - - mode = NEARESTCELL : sample nearest cell - mode = NEARESTPATCHFACE : sample nearest face on selected patch - mode = NEARESTFACE : sample nearest face on any patch. Note: does not - warn if nearest actually is on internal face! - mode = NEARESTPATCHFACEAMI : sample nearest face on selected patch - patches can be non-conformal - method uses AMI interpolation - - For NEARESTCELL you have to provide an 'interpolationScheme' entry - which can be any one of the interpolation schemes (cell, cellPoint, etc.) - In case of interpolation (so scheme != cell) the limitation is that - there is only one value per cell. So e.g. if you have a cell with two - boundary faces and both faces sample into the cell both faces will get - the same value. +Group + grpGenericBoundaryConditions grpCoupledBoundaryConditions - See mappedPatchBase for options on sampling. - - Optional 'fieldName' entry to supply a different filename +Description + This boundary condition maps the value at a set of cells or patch faces + back to *this. + + The sample mode is set by the underlying mapping engine, provided by the + mappedPatchBase class. + + \heading Patch usage + + \table + Property | Description | Required | Default value + fieldName | name of field to be mapped | no | this field name + setAverage | flag to activate setting of average value | yes | + average | average value to apply if \c setAverage = yes | yes | + interpolationScheme | type of interpolation scheme | no | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type mapped; + fieldName T; + setAverage no; + average 0; + interpolationScheme cell; + value uniform 0; + } + \endverbatim + + When employing the \c nearestCell sample mode, the user must also specify + the interpolation scheme using the \c interpolationScheme entry. + + In case of interpolation (where scheme != cell) the limitation is that + there is only one value per cell. For example, if you have a cell with two + boundary faces and both faces sample into the cell, both faces will get the + same value. + +Note + It is not possible to sample internal faces since volume fields are not + defined on faces. + +SeeAlso + Foam::mappedPatchBase + Foam::interpolation + Foam::fixedValueFvPatchField SourceFiles mappedFixedValueFvPatchField.C @@ -63,7 +91,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class mappedFixedValueFvPatch Declaration + Class mappedFixedValueFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/derived/mappedFlowRate/mappedFlowRateFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/mappedFlowRate/mappedFlowRateFvPatchVectorField.H index 45c42233b6080169cef21034dc28adb092ef3e9e..cb06375c1045e8f838d20741d7a47459b668b881 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/mappedFlowRate/mappedFlowRateFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/mappedFlowRate/mappedFlowRateFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,31 +24,39 @@ License Class Foam::mappedFlowRateFvPatchVectorField +Group + grpInletBoundaryConditions grpCoupledBoundaryConditions + Description Describes a volumetric/mass flow normal vector boundary condition by its magnitude as an integral over its area. - The inlet mass flux is taken from the neighbor region. - - phi is used to determine if the flow is compressible or incompressible. + The inlet mass flux is taken from the neighbour region. The basis of the patch (volumetric or mass) is determined by the - dimensions of the flux, phi. - The current density is used to correct the velocity when applying the - mass basis. + dimensions of the flux, phi. The current density is used to correct the + velocity when applying the mass basis. + + \heading Patch usage + + \table + Property | Description | Required | Default value + phi | flux field name | no | phi + rho | density field name | no | rho + neigPhi | name of flux field on neighbour mesh | yes | + \endtable Example of the boundary condition specification: - @verbatim - inlet + \verbatim + myPatch { type mappedFlowRate; phi phi; rho rho; - neigPhi neigPhiName_; // Volumetric/mass flow rate - // [m3/s or kg/s] + neigPhi phi; value uniform (0 0 0); // placeholder } - @endverbatim + \endverbatim SourceFiles mappedFlowRateFvPatchVectorField.C diff --git a/src/finiteVolume/fields/fvPatchFields/derived/mappedVelocityFluxFixedValue/mappedVelocityFluxFixedValueFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/mappedVelocityFluxFixedValue/mappedVelocityFluxFixedValueFvPatchField.H index c1d40666ddb3cefa5eaa2d82e5a4e1adb91d51c4..409154eaffd5d0b68a1858c27cc63f7dbcd9a04d 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/mappedVelocityFluxFixedValue/mappedVelocityFluxFixedValueFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/mappedVelocityFluxFixedValue/mappedVelocityFluxFixedValueFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,12 +24,42 @@ License Class Foam::mappedVelocityFluxFixedValueFvPatchField -Description - Recycles the velocity and flux at a patch to this patch +Group + grpInletBoundaryConditions grpCoupledBoundaryConditions - mode = NEARESTPATCHFACE : sample nearest face on selected patch - mode = NEARESTFACE : sample nearest face on any patch. Note: does not - warn if nearest actually is on internal face! +Description + This boundary condition maps the velocity and flux from a neighbour patch + to this patch + + \heading Patch usage + + \table + Property | Description | Required | Default value + phi | flux field name | no | phi + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type mappedVelocityFlux; + phi phi; + value uniform 0; // place holder + } + \endverbatim + + The underlying sample mode should be set to \c nearestPatchFace or + \c nearestFace + +Note + This boundary condition can only be applied to patches that are of + the \c mappedPolyPatch type. + +SeeAlso + Foam::mappedPatchBase + Foam::mappedPolyPatch + Foam::mappedFvPatch + Foam::fixedValueFvPatchVectorField SourceFiles mappedVelocityFluxFixedValueFvPatchField.C diff --git a/src/finiteVolume/fields/fvPatchFields/derived/movingWallVelocity/movingWallVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/movingWallVelocity/movingWallVelocityFvPatchVectorField.H index 6da73d51f19f9090317e2f728a5f4e3b37fd7883..be5b50e6f82a1198cb5e7b83a2862ec17cfba632 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/movingWallVelocity/movingWallVelocityFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/movingWallVelocity/movingWallVelocityFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,35 @@ License Class Foam::movingWallVelocityFvPatchVectorField +Group + grpWallBoundaryConditions + Description - Foam::movingWallVelocityFvPatchVectorField + This boundary condition provides a velocity condition for cases with + moving walls. In addition, it should also be applied to 'moving' walls + for moving reference frame (MRF) calculations. + + + \heading Patch usage + + \table + Property | Description | Required | Default value + U | velociy field name | no | U + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type movingWallVelocity; + U U; + value uniform 0; // initial value + } + \endverbatim + +SeeAlso + Foam::fixedValueFvPatchVectorField + Foam::MRFZone SourceFiles movingWallVelocityFvPatchVectorField.C @@ -44,7 +71,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class movingWallVelocityFvPatch Declaration + Class movingWallVelocityFvPatchVectorField Declaration \*---------------------------------------------------------------------------*/ class movingWallVelocityFvPatchVectorField @@ -125,7 +152,6 @@ public: } - // Member functions //- Update the coefficients associated with the patch field diff --git a/src/finiteVolume/fields/fvPatchFields/derived/multiphaseFixedFluxPressure/multiphaseFixedFluxPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/multiphaseFixedFluxPressure/multiphaseFixedFluxPressureFvPatchScalarField.C index 644c8b161c06516a867f586e58ede435c1b28c46..89cf73e8ad7d4ea8de62c4958bc78d43b88ba647 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/multiphaseFixedFluxPressure/multiphaseFixedFluxPressureFvPatchScalarField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/multiphaseFixedFluxPressure/multiphaseFixedFluxPressureFvPatchScalarField.C @@ -41,7 +41,8 @@ multiphaseFixedFluxPressureFvPatchScalarField fixedGradientFvPatchScalarField(p, iF), phiHbyAName_("phiHbyA"), phiName_("phi"), - rhoName_("rho") + rhoName_("rho"), + DpName_("Dp") {} @@ -57,7 +58,8 @@ multiphaseFixedFluxPressureFvPatchScalarField fixedGradientFvPatchScalarField(ptf, p, iF, mapper), phiHbyAName_(ptf.phiHbyAName_), phiName_(ptf.phiName_), - rhoName_(ptf.rhoName_) + rhoName_(ptf.rhoName_), + DpName_(ptf.DpName_) {} @@ -72,7 +74,8 @@ multiphaseFixedFluxPressureFvPatchScalarField fixedGradientFvPatchScalarField(p, iF), phiHbyAName_(dict.lookupOrDefault<word>("phiHbyA", "phiHbyA")), phiName_(dict.lookupOrDefault<word>("phi", "phi")), - rhoName_(dict.lookupOrDefault<word>("rho", "rho")) + rhoName_(dict.lookupOrDefault<word>("rho", "rho")), + DpName_(dict.lookupOrDefault<word>("Dp", "Dp")) { if (dict.found("gradient")) { @@ -91,27 +94,29 @@ multiphaseFixedFluxPressureFvPatchScalarField Foam::multiphaseFixedFluxPressureFvPatchScalarField:: multiphaseFixedFluxPressureFvPatchScalarField ( - const multiphaseFixedFluxPressureFvPatchScalarField& wbppsf + const multiphaseFixedFluxPressureFvPatchScalarField& mfppsf ) : - fixedGradientFvPatchScalarField(wbppsf), - phiHbyAName_(wbppsf.phiHbyAName_), - phiName_(wbppsf.phiName_), - rhoName_(wbppsf.rhoName_) + fixedGradientFvPatchScalarField(mfppsf), + phiHbyAName_(mfppsf.phiHbyAName_), + phiName_(mfppsf.phiName_), + rhoName_(mfppsf.rhoName_), + DpName_(mfppsf.DpName_) {} Foam::multiphaseFixedFluxPressureFvPatchScalarField:: multiphaseFixedFluxPressureFvPatchScalarField ( - const multiphaseFixedFluxPressureFvPatchScalarField& wbppsf, + const multiphaseFixedFluxPressureFvPatchScalarField& mfppsf, const DimensionedField<scalar, volMesh>& iF ) : - fixedGradientFvPatchScalarField(wbppsf, iF), - phiHbyAName_(wbppsf.phiHbyAName_), - phiName_(wbppsf.phiName_), - rhoName_(wbppsf.rhoName_) + fixedGradientFvPatchScalarField(mfppsf, iF), + phiHbyAName_(mfppsf.phiHbyAName_), + phiName_(mfppsf.phiName_), + rhoName_(mfppsf.rhoName_), + DpName_(mfppsf.DpName_) {} @@ -155,7 +160,7 @@ void Foam::multiphaseFixedFluxPressureFvPatchScalarField::updateCoeffs() */ const fvsPatchField<scalar>& Dpp = - patch().lookupPatchField<surfaceScalarField, scalar>("Dp"); + patch().lookupPatchField<surfaceScalarField, scalar>(DpName_); gradient() = (phiHbyAp - phip)/patch().magSf()/Dpp; @@ -172,6 +177,7 @@ void Foam::multiphaseFixedFluxPressureFvPatchScalarField::write writeEntryIfDifferent<word>(os, "phiHbyA", "phiHbyA", phiHbyAName_); writeEntryIfDifferent<word>(os, "phi", "phi", phiName_); writeEntryIfDifferent<word>(os, "rho", "rho", rhoName_); + writeEntryIfDifferent<word>(os, "Dp", "Dp", DpName_); gradient().writeEntry("gradient", os); writeEntry("value", os); } diff --git a/src/finiteVolume/fields/fvPatchFields/derived/multiphaseFixedFluxPressure/multiphaseFixedFluxPressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/multiphaseFixedFluxPressure/multiphaseFixedFluxPressureFvPatchScalarField.H index 57f01d78e6fea9c60abeb0aa163e77383ceb4735..18b9698c0e1e70092fe0c0aedd116dad44e1b046 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/multiphaseFixedFluxPressure/multiphaseFixedFluxPressureFvPatchScalarField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/multiphaseFixedFluxPressure/multiphaseFixedFluxPressureFvPatchScalarField.H @@ -24,15 +24,50 @@ License Class Foam::multiphaseFixedFluxPressureFvPatchScalarField +Group + grpWallBoundaryConditions grpGenericBoundaryConditions + Description - Adjusts the pressure gradient such that the flux on the boundary is that - specified by the velocity boundary condition. + This boundary condition adjusts the pressure gradient such that the flux + on the boundary is that specified by the velocity boundary condition. The predicted flux to be compensated by the pressure gradient is evaluated - as (phi - phiHbyA), both of which are looked-up from the database as is - the pressure diffusivity Dp used to calculate the gradient. - - The names of the phi, phiHbyA and Dp fields may be optionally specified. + as \f$(\phi - \phi_{H/A})\f$, both of which are looked-up from the database, + as is the pressure diffusivity Dp used to calculate the gradient using: + + \f[ + \nabla(p) = \frac{\phi_{H/A} - \phi}{|Sf| Dp} + \f] + + where + + \vartable + \phi | flux + Dp | pressure diffusivity + Sf | patch face areas [m2] + \endvartable + + \heading Patch usage + + \table + Property | Description | Required | Default value + phiHbyA | name of predicted flux field | no | phiHbyA + phi | name of flux field | no | phi + rho | name of density field | no | rho + Dp | name of pressure diffusivity field | no | Dp + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type multiphaseFixedFluxPressure; + phiHbyA phiHbyA; + phi phi; + rho rho; + Dp Dp; + } + \endverbatim SourceFiles multiphaseFixedFluxPressureFvPatchScalarField.C @@ -71,6 +106,9 @@ class multiphaseFixedFluxPressureFvPatchScalarField // if neccessary word rhoName_; + //- Name of the pressure diffusivity field + word DpName_; + public: diff --git a/src/finiteVolume/fields/fvPatchFields/derived/oscillatingFixedValue/oscillatingFixedValueFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/oscillatingFixedValue/oscillatingFixedValueFvPatchField.H index ba84bc1c262d7cfaac0885d448cb08e8650663ee..da45cdcb853e281b90a8a6d3ea5f978a51b7cd61 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/oscillatingFixedValue/oscillatingFixedValueFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/oscillatingFixedValue/oscillatingFixedValueFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,26 +24,58 @@ License Class Foam::oscillatingFixedValueFvPatchField +Group + grpGenericBoundaryConditions + Description - Describes an oscillating boundary condition in terms of amplitude and - frequency. + This boundary condition provides an oscillating condition in terms of + amplitude and frequency. + + /f[ + x_p = (1 + a sin(\pi f t))x_{ref} + x_o + /f] + + where + + \vartable + x_p | patch values + x_{ref} | patch reference values + x_o | patch offset values + a | amplitude + f | frequency [1/s] + t | time [s] + \endvartable + + \heading Patch usage + + \table + Property | Description | Required | Default value + refValue | reference value | yes | + offset | offset value | no | 0.0 + amplitude | oscillation amplitude | yes | + frequency | oscillation frequency | yes | + \endtable Example of the boundary condition specification: \verbatim - inlet + myPatch { type oscillatingFixedValue; refValue uniform 5.0; - offset 0.0; // optional + offset 0.0; amplitude constant 0.5; frequency constant 10; } \endverbatim +Note The amplitude and frequency entries are DataEntry types, able to describe time varying functions. The example above gives the usage for supplying constant values. +SeeAlso + Foam::DataEntry + SourceFiles oscillatingFixedValueFvPatchField.C @@ -62,7 +94,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class oscillatingFixedValueFvPatch Declaration + Class oscillatingFixedValueFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/derived/outletInlet/outletInletFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/outletInlet/outletInletFvPatchField.H index 1002143fd18dfd492d5943397383e77f7227256b..d843815a5f44e2530b4694272f782ca515c4d2c4 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/outletInlet/outletInletFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/outletInlet/outletInletFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,39 @@ License Class Foam::outletInletFvPatchField +Group + grpInletBoundaryConditions + Description - Foam::outletInletFvPatchField + This boundary condition provides a generic inflow condition, with + specified outflow for the case of return flow. + + \heading Patch usage + + \table + Property | Description | Required | Default value + phi | flux field name | no | phi + inletValue | inlet value | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type outletInlet; + phi phi; // name of flux field (default = phi) + outletValue uniform 0; // reverse flow (inlet) value + value uniform 0; // initial value + } + \endverbatim + + The mode of operation is determined by the sign of the flux across the + patch faces. + +Note + Sign conventions: + - positive flux (out of domain): apply the user-specified fixed value + - negative flux (into of domain): apply zero-gradient condition SourceFiles outletInletFvPatchField.C diff --git a/src/finiteVolume/fields/fvPatchFields/derived/outletMappedUniformInlet/outletMappedUniformInletFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/outletMappedUniformInlet/outletMappedUniformInletFvPatchField.H index c04b7e2f1794f34b173eb45dde30241e9eed26fb..059faeab0910d0ca327bce12e9c0d8f2e7a45f09 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/outletMappedUniformInlet/outletMappedUniformInletFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/outletMappedUniformInlet/outletMappedUniformInletFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,10 +24,35 @@ License Class Foam::outletMappedUniformInletFvPatchField +Group + grpInletBoundaryConditions + Description - Averages the field over the "outlet" patch specified by name - "outletPatchName" and applies this as the uniform value of the field - over this patch. + This boundary conditon averages the field over the "outlet" patch specified + by name "outletPatchName" and applies this as the uniform value of the + field over this patch. + + \heading Patch usage + + \table + Property | Description | Required | Default value + outletPatchName | name of outlet patch | yes | + phi | flux field name | no | phi + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type outletMappedUniformInlet; + outletPatchName aPatch; + phi phi; + value uniform 0; + } + \endverbatim + +SeeAlso + Foam::fixedValueFvPatchField SourceFiles outletMappedUniformInletFvPatchField.C @@ -45,7 +70,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class outletMappedUniformInletFvPatch Declaration + Class outletMappedUniformInletFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/derived/partialSlip/partialSlipFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/partialSlip/partialSlipFvPatchField.H index c3691434399d06c5189332e37339c22dfe7a67e4..b4fd5e7ce7f37e231110b8a192a5c5bf1a5c079b 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/partialSlip/partialSlipFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/partialSlip/partialSlipFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,32 @@ License Class Foam::partialSlipFvPatchField +Group + grpWallBoundaryConditions grpGenericBoundaryConditions + Description - Foam::partialSlipFvPatchField + This boundary condition provides a partial slip condition. The amount of + slip is controlled by a user-supplied field. + + \heading Patch usage + + \table + Property | Description | Required | Default value + valueFraction | fraction od value used for boundary [0-1] | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type partialSlip; + valueFraction uniform 0.1; + value uniform 0; + } + \endverbatim + +SeeAlso + Foam::transformFvPatchField SourceFiles partialSlipFvPatchField.C @@ -43,7 +67,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class partialSlipFvPatch Declaration + Class partialSlipFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/derived/phaseHydrostaticPressure/phaseHydrostaticPressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/phaseHydrostaticPressure/phaseHydrostaticPressureFvPatchScalarField.H index 4c14094f496ad1afaefe9c4d63273272eebf23ca..cb0c472da410539e7f7ed09348810a23de8c50dc 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/phaseHydrostaticPressure/phaseHydrostaticPressureFvPatchScalarField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/phaseHydrostaticPressure/phaseHydrostaticPressureFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,16 +24,55 @@ License Class Foam::phaseHydrostaticPressureFvPatchScalarField -Description - Phase hydrostatic pressure boundary condition calculated as - - pRefValue + rho*g.(x - pRefPoint) +Group + grpGenericBoundaryConditions - where rho is provided and assumed uniform - - applied according to the phase-fraction field provided: - 1 -> fix value to that provided - 0 -> zero-gradient +Description + This boundary condition provides a phase-based hydrostatic pressure + condition, calculated as: + + \f[ + p_{hyd} = p_{ref} + \rho g (x - x_{ref}) + \f] + + where + \vartable + p_{hyd} | hyrostatic pressure [Pa] + p_{ref} | reference pressure [Pa] + x_{ref} | reference point in Cartesian co-ordinates + \rho | density (assumed uniform) + g | acceleration due to gravity [m/s2] + \endtable + + The values are assigned according to the phase-fraction field: + - 1: apply \$fp_{hyd}\$f + - 0: apply a zero-gradient condition + + \heading Patch usage + + \table + Property | Description | Required | Default value + phaseName | phase field name | no | alpha + rho | density field name | no | rho + pRefValue | reference pressure [Pa] | yes | + pRefPoint | reference pressure location | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type phaseHydrostaticPressure; + phaseName alpha1; + rho rho; + pRefValue 1e5; + pRefPoint (0 0 0); + value uniform 0; // optional initial value + } + \endverbatim + +SeeAlso + Foam::mixedFvPatchScalarField SourceFiles phaseHydrostaticPressureFvPatchScalarField.C @@ -51,7 +90,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class phaseHydrostaticPressureFvPatch Declaration + Class phaseHydrostaticPressureFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class phaseHydrostaticPressureFvPatchScalarField diff --git a/src/finiteVolume/fields/fvPatchFields/derived/pressureDirectedInletOutletVelocity/pressureDirectedInletOutletVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/pressureDirectedInletOutletVelocity/pressureDirectedInletOutletVelocityFvPatchVectorField.H index d9f1a3e2a851e4389801353bbbf8f8763002f5b9..b6e24c73c7ba1bf0c607a493878a0c443ea370b4 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/pressureDirectedInletOutletVelocity/pressureDirectedInletOutletVelocityFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/pressureDirectedInletOutletVelocity/pressureDirectedInletOutletVelocityFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,11 +24,44 @@ License Class Foam::pressureDirectedInletOutletVelocityFvPatchVectorField +Group + grpInletBoundaryConditions grpOutletBoundaryConditions + Description - Velocity inlet/outlet boundary condition for pressure boundary where the - pressure is specified. zero-gradient is applied for outflow (as defined - by the flux) and for inflow the velocity is obtained from the flux with - the specified `inletDirection'. + This velocity inlet/outlet boundary condition is applied to pressure + boundaries where the pressure is specified. A zero-gradient condtion is + applied for outflow (as defined by the flux); for inflow, the velocity + is obtained from the flux with the specified inlet direction. + + \heading Patch usage + + \table + Property | Description | Required | Default value + phi | flux field name | no | phi + rho | density field name | no | rho + inletDirection | inlet direction per patch face | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type pressureDirectedInletOutletVelocity; + phi phi; + rho rho; + inletDirection uniform (1 0 0); + value uniform 0; + } + \endverbatim + +Note + Sign conventions: + - positive flux (out of domain): apply zero-gradient condition + - negative flux (into of domain): derive from the flux with specified + direction + +SeeAlso + Foam::mixedFvPatchVectorField SourceFiles pressureDirectedInletOutletVelocityFvPatchVectorField.C @@ -47,7 +80,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class pressureDirectedInletOutletVelocityFvPatch Declaration + Class pressureDirectedInletOutletVelocityFvPatchVectorField Declaration \*---------------------------------------------------------------------------*/ class pressureDirectedInletOutletVelocityFvPatchVectorField @@ -56,8 +89,13 @@ class pressureDirectedInletOutletVelocityFvPatchVectorField { // Private data + //- Flux field name word phiName_; + + //- Density field name word rhoName_; + + //- Inlet direction vectorField inletDir_; diff --git a/src/finiteVolume/fields/fvPatchFields/derived/pressureDirectedInletVelocity/pressureDirectedInletVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/pressureDirectedInletVelocity/pressureDirectedInletVelocityFvPatchVectorField.H index b12dda34fba04e497970f02f06703499adcc6e19..c98ad304dad165baa2474d07606af357849222b9 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/pressureDirectedInletVelocity/pressureDirectedInletVelocityFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/pressureDirectedInletVelocity/pressureDirectedInletVelocityFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,12 +24,43 @@ License Class Foam::pressureDirectedInletVelocityFvPatchVectorField +Group + grpInletBoundaryConditions + Description - Velocity inlet boundary condition for patches where the pressure is - specified. The inflow velocity is obtained from the flux with the - specified "inletDirection" direction. If reverse flow is possible or - expected use the "pressureDirectedInletOutletVelocityFvPatchVectorField" - BC instead. + This velocity inlet boundary condition is applied to patches where the + pressure is specified. The inflow velocity is obtained from the flux with + the specified inlet direction" direction. + + \heading Patch usage + + \table + Property | Description | Required | Default value + phi | flux field name | no | phi + rho | density field name | no | rho + inletDirection | inlet direction per patch face | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type pressureDirectedInletVelocity; + phi phi; + rho rho; + inletDirection uniform (1 0 0); + value uniform 0; + } + \endverbatim + +Note + If reverse flow is possible or expected use the + pressureDirectedInletOutletVelocityFvPatchVectorField condition instead. + + +SeeAlso + Foam::fixedValueFvPatchField + Foam::pressureDirectedInletOutletVelocityFvPatchVectorField SourceFiles pressureDirectedInletVelocityFvPatchVectorField.C @@ -48,7 +79,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class pressureDirectedInletVelocityFvPatch Declaration + Class pressureDirectedInletVelocityFvPatchVectorField Declaration \*---------------------------------------------------------------------------*/ class pressureDirectedInletVelocityFvPatchVectorField @@ -57,8 +88,13 @@ class pressureDirectedInletVelocityFvPatchVectorField { // Private data + //- Flux field name word phiName_; + + //- Density field name word rhoName_; + + //- Inlet direction vectorField inletDir_; diff --git a/src/finiteVolume/fields/fvPatchFields/derived/pressureInletOutletParSlipVelocity/pressureInletOutletParSlipVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/pressureInletOutletParSlipVelocity/pressureInletOutletParSlipVelocityFvPatchVectorField.H index afab477fbc70b4d217f57089a0579f17a2f57cf4..f1f2f3a9d3325ad0bf989a056ec46999a0660756 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/pressureInletOutletParSlipVelocity/pressureInletOutletParSlipVelocityFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/pressureInletOutletParSlipVelocity/pressureInletOutletParSlipVelocityFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,13 +24,45 @@ License Class Foam::pressureInletOutletParSlipVelocityFvPatchVectorField -Description - Velocity inlet/outlet boundary condition for pressure boundary where the - pressure is specified. zero-gradient is applied for outflow (as defined - by the flux) and for inflow the velocity is obtained from the flux with - the specified `inletDirection'. +Group + grpInletBoundaryConditions grpOutletBoundaryConditions - Slip condition applied tangential to the patch. +Description + This velocity inlet/outlet boundary condition for pressure boundary where + the pressure is specified. A zero-gradient is applied for outflow (as + defined by the flux); for inflow, the velocity is obtained from the flux + with the specified inlet direction. + + A slip condition is applied tangential to the patch. + + \heading Patch usage + + \table + Property | Description | Required | Default value + phi | flux field name | no | phi + rho | density field name | no | rho + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type pressureInletOutletParSlipVelocity; + phi phi; + rho rho; + value uniform 0; + } + \endverbatim + +Note + Sign conventions: + - positive flux (out of domain): apply zero-gradient condition + - negative flux (into of domain): derive from the flux with specified + direction + +SeeAlso + Foam::mixedFvPatchVectorField + Foam::pressureDirectedInletOutletVelocityFvPatchVectorField SourceFiles pressureInletOutletParSlipVelocityFvPatchVectorField.C @@ -58,7 +90,10 @@ class pressureInletOutletParSlipVelocityFvPatchVectorField { // Private data + //- Flux field name word phiName_; + + //- Density field name word rhoName_; diff --git a/src/finiteVolume/fields/fvPatchFields/derived/pressureInletOutletVelocity/pressureInletOutletVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/pressureInletOutletVelocity/pressureInletOutletVelocityFvPatchVectorField.H index 174142e5ec22b8327197ca0d97716eaed65fc68f..1ed301b191ea185db943a58de71215682d509370 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/pressureInletOutletVelocity/pressureInletOutletVelocityFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/pressureInletOutletVelocity/pressureInletOutletVelocityFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,11 +24,41 @@ License Class Foam::pressureInletOutletVelocityFvPatchVectorField +Group + grpInletletBoundaryConditions grpOutletBoundaryConditions + Description - Velocity inlet/outlet boundary condition patches for where the pressure is - specified. zero-gradient is applied for outflow (as defined by the flux) - and for inflow the velocity is obtained from the patch-face normal - component of the internal-cell value. + This velocity inlet/outlet boundary condition is applied to pressure + boundaries where the pressure is specified. A zero-gradient condtion is + applied for outflow (as defined by the flux); for inflow, the velocity is + obtained from the patch-face normal component of the internal-cell value. + + The tangential patch velocity can be optionally specified. + + \heading Patch usage + + \table + Property | Description | Required | Default value + phi | flux field name | no | phi + tangentialVelocity | tangential velocity field | no | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type pressureInletOutletVelocity; + phi phi; + tangentialVelocity uniform (0 0 0); + value uniform 0; + } + \endverbatim + +Note + Sign conventions: + - positive flux (out of domain): apply zero-gradient condition + - negative flux (into of domain): derive from the flux in the patch-normal + direction SourceFiles pressureInletOutletVelocityFvPatchVectorField.C @@ -47,7 +77,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class pressureInletOutletVelocityFvPatch Declaration + Class pressureInletOutletVelocityFvPatchVectorField Declaration \*---------------------------------------------------------------------------*/ class pressureInletOutletVelocityFvPatchVectorField @@ -56,6 +86,7 @@ class pressureInletOutletVelocityFvPatchVectorField { // Private data + //- Flux field name word phiName_; //- Optional tangential velocity component diff --git a/src/finiteVolume/fields/fvPatchFields/derived/pressureInletUniformVelocity/pressureInletUniformVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/pressureInletUniformVelocity/pressureInletUniformVelocityFvPatchVectorField.H index 69c1d54c563ea9d84f84aa04489999252810e283..d22757c6725536bee2b23699cda87c3418f7fbfa 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/pressureInletUniformVelocity/pressureInletUniformVelocityFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/pressureInletUniformVelocity/pressureInletUniformVelocityFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,10 +24,25 @@ License Class Foam::pressureInletUniformVelocityFvPatchVectorField +Group + grpInletBoundaryConditions + Description - Velocity inlet boundary condition for patches where the pressure is - specified. The uniform inflow velocity is obtained by averaging the flux - over the patch and apply it in the direction normal to the patch faces. + This velocity inlet boundary condition is applied to patches where the + pressure is specified. The uniform inflow velocity is obtained by + averaging the flux over the patch, and then applying it in the direction + normal to the patch faces. + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type pressureInletUniformVelocity; + value uniform 0; + } + \endverbatim SourceFiles pressureInletUniformVelocityFvPatchVectorField.C @@ -45,7 +60,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class pressureInletUniformVelocityFvPatch Declaration + Class pressureInletUniformVelocityFvPatchVectorField Declaration \*---------------------------------------------------------------------------*/ class pressureInletUniformVelocityFvPatchVectorField diff --git a/src/finiteVolume/fields/fvPatchFields/derived/pressureInletVelocity/pressureInletVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/pressureInletVelocity/pressureInletVelocityFvPatchVectorField.H index c50d53d590e5333e8df8aaf90292b584a268ca6f..12b7d8bec538d6baac09b14317e9d7c9f508bc80 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/pressureInletVelocity/pressureInletVelocityFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/pressureInletVelocity/pressureInletVelocityFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,11 +24,34 @@ License Class Foam::pressureInletVelocityFvPatchVectorField +Group + grpInletBoundaryConditions + Description - Velocity inlet boundary condition for patches where the pressure is - specified. The inflow velocity is obtained from the flux with a direction - normal to the patch faces. If reverse flow is possible or expected use - the "pressureInletOutletVelocityFvPatchVectorField" BC instead. + This velocity inlet boundary condition is applied to patches where the + pressure is specified. The inflow velocity is obtained from the flux with + a direction normal to the patch faces. + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type pressureInletVelocity; + phi phi; + rho rho; + value uniform 0; + } + \endverbatim + +Note + If reverse flow is possible or expected use + the pressureInletOutletVelocityFvPatchVectorField condition instead. + +SeeAlso + Foam::fixedValueFvPatchField + Foam::pressureInletOutletVelocityFvPatchVectorField SourceFiles pressureInletVelocityFvPatchVectorField.C @@ -47,7 +70,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class pressureInletVelocityFvPatch Declaration + Class pressureInletVelocityFvPatchVectorField Declaration \*---------------------------------------------------------------------------*/ class pressureInletVelocityFvPatchVectorField @@ -56,7 +79,10 @@ class pressureInletVelocityFvPatchVectorField { // Private data + //- Flux field name word phiName_; + + //- Density field name word rhoName_; diff --git a/src/finiteVolume/fields/fvPatchFields/derived/pressureNormalInletOutletVelocity/pressureNormalInletOutletVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/pressureNormalInletOutletVelocity/pressureNormalInletOutletVelocityFvPatchVectorField.H index 04351a477a332ccf25edd4c9d94e9288951d977f..c138b18f6959352e53be8b471aef6294a09317a2 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/pressureNormalInletOutletVelocity/pressureNormalInletOutletVelocityFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/pressureNormalInletOutletVelocity/pressureNormalInletOutletVelocityFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,11 +24,42 @@ License Class Foam::pressureNormalInletOutletVelocityFvPatchVectorField +Group + grpInletBoundaryConditions grpOutletBoundaryConditions + Description - Velocity inlet/outlet boundary condition for patches where the pressure is - specified. zero-gradient is applied for outflow (as defined by the flux) - and for inflow the velocity is obtained from the flux with a direction - normal to the patch faces. + This velocity inlet/outlet boundary condition is applied to patches where + the pressure is specified. A zero-gradient condition is applied for + outflow (as defined by the flux); for inflow, the velocity is obtained from + the flux with a direction normal to the patch faces. + + \heading Patch usage + + \table + Property | Description | Required | Default value + phi | flux field name | no | phi + rho | density field name | no | rho + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type pressureNormalInletOutletVelocity; + phi phi; + rho rho; + value uniform 0; + } + \endverbatim + +Note + Sign conventions: + - positive flux (out of domain): apply zero-gradient condition + - negative flux (into of domain): derive from the flux and patch-normal + direction + +SeeAlso + Foam::mixedFvPatchVectorField SourceFiles pressureNormalInletOutletVelocityFvPatchVectorField.C @@ -47,7 +78,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class pressureNormalInletOutletVelocityFvPatch Declaration + Class pressureNormalInletOutletVelocityFvPatchVectorField Declaration \*---------------------------------------------------------------------------*/ class pressureNormalInletOutletVelocityFvPatchVectorField @@ -56,7 +87,10 @@ class pressureNormalInletOutletVelocityFvPatchVectorField { // Private data + //- Flux field name word phiName_; + + //- Density field name word rhoName_; diff --git a/src/finiteVolume/fields/fvPatchFields/derived/rotatingPressureInletOutletVelocity/rotatingPressureInletOutletVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/rotatingPressureInletOutletVelocity/rotatingPressureInletOutletVelocityFvPatchVectorField.H index 063585751876bca22fc4c63563017cbb6cf4bfd3..cc114d7c6b8110adc0eed599ae2abc17bc646b65 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/rotatingPressureInletOutletVelocity/rotatingPressureInletOutletVelocityFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/rotatingPressureInletOutletVelocity/rotatingPressureInletOutletVelocityFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,12 +24,47 @@ License Class Foam::rotatingPressureInletOutletVelocityFvPatchVectorField +Group + grpInletBoundaryConditions grpOutletBoundaryConditions + Description - Velocity inlet/outlet boundary condition in a rotating frame - for patches where the pressure is specified. zero-gradient is applied for - outflow (as defined by the flux) and for inflow the velocity is obtained + This velocity inlet/outlet boundary condition is applied to patches in a + rotating frame where the pressure is specified. A zero-gradient is applied + for outflow (as defined by the flux); for inflow, the velocity is obtained from the flux with a direction normal to the patch faces. + \heading Patch usage + + \table + Property | Description | Required | Default value + phi | flux field name | no | phi + tangentialVelocity | tangential velocity field | no | + omega | angular velocty of the frame [rad/s] | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type rotatingPressureInletOutletVelocity; + phi phi; + tangentialVelocity uniform (0 0 0); + omega 100; + } + \endverbatim + + The \c omega entry is a DataEntry type, able to describe time varying + functions. + +Note + Sign conventions: + - positive flux (out of domain): apply zero-gradient condition + - negative flux (into of domain): derive from the flux in the patch-normal + direction + +SeeAlso + Foam::pressureInletOutletVelocityFvPatchVectorField + SourceFiles rotatingPressureInletOutletVelocityFvPatchVectorField.C @@ -48,7 +83,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class rotatingPressureInletOutletVelocityFvPatch Declaration + Class rotatingPressureInletOutletVelocityFvPatchVectorField Declaration \*---------------------------------------------------------------------------*/ class rotatingPressureInletOutletVelocityFvPatchVectorField diff --git a/src/finiteVolume/fields/fvPatchFields/derived/rotatingTotalPressure/rotatingTotalPressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/rotatingTotalPressure/rotatingTotalPressureFvPatchScalarField.H index 68e1d19c8fd029ade7445e1c28c0b5532e625517..22d806c3772d0db9eb0c2c97d7d36411e5cb8c85 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/rotatingTotalPressure/rotatingTotalPressureFvPatchScalarField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/rotatingTotalPressure/rotatingTotalPressureFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,46 @@ License Class Foam::rotatingTotalPressureFvPatchScalarField +Group + grpInletBoundaryConditions grpOutletBoundaryConditions + Description - Foam::rotatingTotalPressureFvPatchScalarField + This boundary condition provides a total pressure condition for patches + in a rotating frame. + + \heading Patch usage + + \table + Property | Description | Required | Default value + U | velocity field name | no | U + phi | flux field name | no | phi + rho | density field name | no | none + psi | compressibility field name | no | none + gamma | ratio of specific heats (Cp/Cv) | yes | + p0 | static pressure reference | yes | + omega | angular velocty of the frame [rad/s] | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type rotatingTotalPressure; + U U; + phi phi; + rho rho; + psi psi; + gamma 1.4; + p0 uniform 1e5; + omega 100; + } + \endverbatim + + The \c omega entry is a DataEntry type, able to describe time varying + functions. + +SeeAlso + Foam::totalPressureFvPatchScalarField SourceFiles rotatingTotalPressureFvPatchScalarField.C @@ -44,7 +82,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class rotatingTotalPressureFvPatch Declaration + Class rotatingTotalPressureFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class rotatingTotalPressureFvPatchScalarField diff --git a/src/finiteVolume/fields/fvPatchFields/derived/rotatingWallVelocity/rotatingWallVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/rotatingWallVelocity/rotatingWallVelocityFvPatchVectorField.H index 41f821c6d88a41f72126a5b54ade7408e82db07e..a3d5d5686e794324d4191bd3895a26fc61a78ef1 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/rotatingWallVelocity/rotatingWallVelocityFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/rotatingWallVelocity/rotatingWallVelocityFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,38 @@ License Class Foam::rotatingWallVelocityFvPatchVectorField +Group + grpWallBoundaryConditions grpGenericBoundaryConditions + Description - Foam::rotatingWallVelocityFvPatchVectorField + This boundary condition provides a rotational velocity condition. + + \heading Patch usage + + \table + Property | Description | Required | Default value + origin | origin of rotation in Cartesian co-ordinates | yes| + axis | axis of rotation | yes | + omega | angular velocty of the frame [rad/s] | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type rotatingWallVelocity; + origin (0 0 0); + axis (0 0 1); + omega 100; + } + \endverbatim + + The \c omega entry is a DataEntry type, able to describe time varying + functions. + +SeeAlso + Foam::DataEntry + Foam::fixedValueFvPatchField SourceFiles rotatingWallVelocityFvPatchVectorField.C @@ -44,7 +74,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class rotatingWallVelocityFvPatch Declaration + Class rotatingWallVelocityFvPatchVectorField Declaration \*---------------------------------------------------------------------------*/ class rotatingWallVelocityFvPatchVectorField diff --git a/src/finiteVolume/fields/fvPatchFields/derived/slip/slipFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/slip/slipFvPatchField.H index 19e740ad8d9ce9c033ef09ed7a0add11760c704c..ee50d198818461f4b774a8d3b53ab5d3003d4b12 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/slip/slipFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/slip/slipFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,21 @@ License Class Foam::slipFvPatchField +Group + grpWallBoundaryConditions grpGenericBoundaryConditions + Description - Foam::slipFvPatchField + This boundary condition provides a slip constraint. + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type slip; + } + \endverbatim SourceFiles slipFvPatchField.C @@ -43,7 +56,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class slipFvPatch Declaration + Class slipFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/derived/supersonicFreestream/supersonicFreestreamFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/supersonicFreestream/supersonicFreestreamFvPatchVectorField.H index 2115ac392d1d10d6e1b5902997bd3d48b95e3e09..402fc365f34fd746309db74c192931938c140603 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/supersonicFreestream/supersonicFreestreamFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/supersonicFreestream/supersonicFreestreamFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,18 +24,43 @@ License Class Foam::supersonicFreestreamFvPatchVectorField -Description - Supersonic free stream condition. - - Supersonic outflow is vented according to ??? - - Supersonic inflow is assumed to occur according to the Prandtl-Meyer - expansion process. +Group + grpInletBoundaryConditions grpOutletBoundaryConditions - Subsonic outflow is zero-gradiented from inside the domain. - - N.B. This boundary condition is ill-posed if the free-stream flow is - normal to the boundary. +Description + This boundary condition provides a supersonic free-stream condition. + + - supersonic outflow is vented according to ??? + - supersonic inflow is assumed to occur according to the Prandtl-Meyer + expansion process. + - subsonic outflow is applied via a zero-gradient condition from inside + the domain. + + \heading Patch usage + + \table + Property | Description | Required | Default value + UInf | free-stream velocity | yes | + pInf | free-stream pressure | yes | + TInf | free-stream temperature | yes | + gamma | heat capacity ratio (cp/Cv) | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type supersonicFreestream; + UInf 500; + pInf 1e4; + TInf 265; + gamma 1.4; + } + \endverbatim + +Note + This boundary condition is ill-posed if the free-stream flow is normal + to the boundary. SourceFiles supersonicFreestreamFvPatchVectorField.C @@ -54,7 +79,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class supersonicFreestreamFvPatch Declaration + Class supersonicFreestreamFvPatchVectorField Declaration \*---------------------------------------------------------------------------*/ class supersonicFreestreamFvPatchVectorField diff --git a/src/finiteVolume/fields/fvPatchFields/derived/surfaceNormalFixedValue/surfaceNormalFixedValueFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/surfaceNormalFixedValue/surfaceNormalFixedValueFvPatchVectorField.H index 465d875c68e2cb7f4ddcd9133a5af1f61435fc7c..e0068654fd04922c54584f6127e7b2730bd9ea59 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/surfaceNormalFixedValue/surfaceNormalFixedValueFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/surfaceNormalFixedValue/surfaceNormalFixedValueFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,9 +24,35 @@ License Class Foam::surfaceNormalFixedValueFvPatchVectorField +Group + grpGenericBoundaryConditions grpInletBoundaryConditions + Description - Describes a surface normal vector boundary condition by its magnitude. - Note: The value is positive for outward-pointing vectors + This boundary condition provides a surface-normal vector boundary condition + by its magnitude. + + \heading Patch usage + + \table + Property | Description | Required | Default value + refValue | reference value | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type surfaceNormalFixedValue; + refValue -10; // 10 INTO the domain + } + \endverbatim + +Note + Sign conventions: + - the value is positive for outward-pointing vectors + +SeeAlso + Foam::fixedValueFvPatchField SourceFiles surfaceNormalFixedValueFvPatchVectorField.C @@ -45,7 +71,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class surfaceNormalFixedValueFvPatch Declaration + Class surfaceNormalFixedValueFvPatchVectorField Declaration \*---------------------------------------------------------------------------*/ class surfaceNormalFixedValueFvPatchVectorField diff --git a/src/finiteVolume/fields/fvPatchFields/derived/swirlFlowRateInletVelocity/swirlFlowRateInletVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/swirlFlowRateInletVelocity/swirlFlowRateInletVelocityFvPatchVectorField.H index ef2ea8b9c97006fda3c7f63235033c01790091a2..a53dd0ca12b4213ef72f37f7798e9766279b7b44 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/swirlFlowRateInletVelocity/swirlFlowRateInletVelocityFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/swirlFlowRateInletVelocity/swirlFlowRateInletVelocityFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,32 +24,47 @@ License Class Foam::swirlFlowRateInletVelocityFvPatchVectorField +Group + grpInletBoundaryConditions + Description - Describes a volumetric/mass flow normal vector boundary condition by its - magnitude as an integral over its area with a swirl component determined - by the RPM + This boundary condition provides a volumetric- OR mass-flow normal vector + boundary condition by its magnitude as an integral over its area with a + swirl component determined by the angular speed, given in revolutions per + minute (RPM) The basis of the patch (volumetric or mass) is determined by the - dimensions of the flux, phi. - The current density is used to correct the velocity when applying the - mass basis. + dimensions of the flux, phi. The current density is used to correct the + velocity when applying the mass basis. + + \heading Patch usage + + \table + Property | Description | Required | Default value + phi | flux field name | no | phi + rho | density field name | no | rho + flowRate | flow rate profile | yes | + rpm | rotational speed profile | yes | + \endtable Example of the boundary condition specification: \verbatim - inlet + myPatch { type swirlFlowRateInletVelocity; - flowRate constant 0.2; // Vol/mass flow rate [m3/s or kg/s] + flowRate constant 0.2; rpm constant 100; } \endverbatim - The flowRate and rpm entries are DataEntry types, able to describe time - varying functions. The example above gives the usage for supplying - constant values. - Note - - The value is positive inwards + - the \c flowRate and \c rpm entries are DataEntry types, able to describe + time varying functions. The example above gives the usage for supplying + constant values. + - the value is positive into the domain + +SeeAlso + Foam::fixedValueFvPatchField SourceFiles swirlFlowRateInletVelocityFvPatchVectorField.C @@ -67,7 +82,7 @@ SourceFiles namespace Foam { /*---------------------------------------------------------------------------*\ - Class swirlFlowRateInletVelocityFvPatchVectorField Declaration + Class swirlFlowRateInletVelocityFvPatchVectorField Declaration \*---------------------------------------------------------------------------*/ class swirlFlowRateInletVelocityFvPatchVectorField @@ -85,7 +100,7 @@ class swirlFlowRateInletVelocityFvPatchVectorField //- Inlet integral flow rate autoPtr<DataEntry<scalar> > flowRate_; - //- RPM + //- Angular speed in revolutions per minute (RPM) autoPtr<DataEntry<scalar> > rpm_; diff --git a/src/finiteVolume/fields/fvPatchFields/derived/syringePressure/syringePressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/syringePressure/syringePressureFvPatchScalarField.H index aa2bec48af386146988ec6e6d1cae110e410649b..c4dc0a1e4ff55483fccb384f6d9ed309862faccb 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/syringePressure/syringePressureFvPatchScalarField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/syringePressure/syringePressureFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,9 +24,12 @@ License Class Foam::syringePressureFvPatchScalarField +Group + grpInletBoundaryConditions + Description - Pressure boundary condition obtained from a 0-D model of the cylinder - of a syringe. + This boundary condition provides a pressure condition, obtained from a + zero-D model of the cylinder of a syringe. The syringe cylinder is defined by its initial volume, piston area and velocity profile specified by regions of constant acceleration, speed @@ -34,25 +37,44 @@ Description pressure and compressibility which is assumed constant, i.e. isothermal expansion/compression. + \heading Patch usage + + \table + Property | Description | Required | Default value + Ap | syringe piston area [m2] | yes | + Sp | syringe piston speed [m/s] | yes | + VsI | initial syringe volume [m3] | yes | + tas | start of piston acceleration [s] | yes | + tae | end of piston acceleration [s] | yes | + tds | start of piston deceleration [s] | yes | + tde | end of piston deceleration [s] | yes | + psI | initial syringe pressure [Pa] | yes | + psi | gas compressibility [m2/s2] | yes | + ams | added (or removed) gas mass [kg] | yes | + \endtable + Example of the BC specification: \verbatim - outlet - { - type syringePressure; - Ap 1.388e-6; // syringe piston area - Sp 0.01; // syringe piston speed - VsI 1.388e-8; // Initial syringe volume - tas 0.001; // Start of piston acceleration - tae 0.002; // End of piston acceleration - tds 0.005; // Start of piston deceleration - tde 0.006; // end of piston deceleration - psI 1e5; // Initial syringe pressure - psi 1e-5; // Gas compressibility - ams 0; // Added (or removed) gas mass - // Initially 0 but used for restarting. - } + myPatch + { + type syringePressure; + Ap 1.388e-6; + Sp 0.01; + VsI 1.388e-8; + tas 0.001; + tae 0.002; + tds 0.005; + tde 0.006; + psI 1e5; + psi 1e-5; + ams 0; + value uniform 0; + } \endverbatim +SeeAlso + Foam::fixedValueFvPatchField + SourceFiles syringePressureFvPatchScalarField.C @@ -69,7 +91,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class syringePressureFvPatch Declaration + Class syringePressureFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class syringePressureFvPatchScalarField @@ -115,7 +137,9 @@ class syringePressureFvPatchScalarField label curTimeIndex_; - //- return the volume of the syringe at time t + // Private Functions + + //- Return the volume of the syringe at time t scalar Vs(const scalar t) const; diff --git a/src/finiteVolume/fields/fvPatchFields/derived/temperatureJump/temperatureJumpFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/temperatureJump/temperatureJumpFvPatchScalarField.H index 55364eac5d23dd54cdd62af3c6b8494fda4a5635..0663a1cb86745144c31881f95d2629d0f130c169 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/temperatureJump/temperatureJumpFvPatchScalarField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/temperatureJump/temperatureJumpFvPatchScalarField.H @@ -24,15 +24,43 @@ License Class Foam::temperatureJumpFvPatchScalarField +Group + grpCoupledBoundaryConditions + Description - Introduce a jump in temperature on a cycle patch - front + This boundary condition provides a temperature jump condition across a + coupled pair of cyclic patches. + + The jump is specified as a \c DataEntry type, to enable the use of, e.g. + contant, polynomial, table values. + + \heading Patch usage + + \table + Property | Description | Required | Default value + patchType | underlying patch type should be \c cyclic| yes | + jump | current jump value | yes | + jumpTable | jump data, e.g. \c csvFile | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch { type temperatureJump; patchType cyclic; jumpTable constant 100; value uniform 300; } + \endverbatim + + The above example shows the use of a constant jump condition. + +Note + The underlying \c patchType should be set to \c cyclic + +SeeAlso + Foam::fixedJumpFvPatchField SourceFiles temperatureJumpFvPatchScalarField.C diff --git a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.H index 82525ec49a090a37755530d52daa31b15a1fe673..61228fe07c4b06db225843de425bcda10710335a 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.H @@ -24,39 +24,50 @@ License Class Foam::timeVaryingMappedFixedValueFvPatchField -Description - Foam::timeVaryingMappedFixedValueFvPatchField - - Interpolates from a set of supplied points in space and time. Supplied - data in constant/boundaryData/<patchname>: - - points : pointField with locations - - ddd : supplied values at time ddd - Points need to be more or less on a plane since get triangulated in 2D. - - At startup this bc does the triangulation and determines linear - interpolation (triangle it is in and weights to the 3 vertices) - for every face centre. Interpolates linearly inbetween times. - - @verbatim - inlet - { - type timeVaryingMappedFixedValue; - - // Maintain average to that of the supplied values - setAverage false; - - // Optional: change perturbation (default 1e-5) to avoid any ties - // in triangulating regular geometries. - //perturb 0.0; - - // Optional: use name instead of patchname for location of data - //fieldTableName samples; - } - @endverbatim +Group + grpInletBoundaryConditions grpCoupledBoundaryConditions +Description + This boundary conditions interpolates the values from a set of supplied + points in space and time. Supplied data should be specified in + constant/boundaryData/\<patchname\> where: + - points : pointField with locations + - ddd : supplied values at time ddd + The points should be more or less on a plane since they get triangulated + in 2-D. + + At startup, this condition generates the triangulation and performs a + linear interpolation (triangle it is in and weights to the 3 vertices) + for every face centre. + + Values are interpolated linearly between times. + + \heading Patch usage + + \table + Property | Description | Required | Default value + setAverage | flag to activate setting of average value | yes | + perturb | perturb points for regular geometries | no | 1e-5 + fieldTableName | alternative field name to sample | no| this field name + \endtable + + /verbatim + myPatch + { + type timeVaryingMappedFixedValue; + setAverage false; + //perturb 0.0; + //fieldTableName samples; + } + /endverbatim + +Note Switch on debug flag to have it dump the triangulation (in transformed space) and transform face centres. +SeeAlso + Foam::fixedValueFvPatchField + SourceFiles timeVaryingMappedFixedValueFvPatchField.C @@ -76,7 +87,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class timeVaryingMappedFixedValueFvPatch Declaration + Class timeVaryingMappedFixedValueFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> @@ -119,6 +130,7 @@ class timeVaryingMappedFixedValueFvPatchField //- If setAverage: end average value Type endAverage_; + public: //- Runtime type information diff --git a/src/finiteVolume/fields/fvPatchFields/derived/totalPressure/totalPressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/totalPressure/totalPressureFvPatchScalarField.H index c95f15771c2598b5d57e3c5523ea9a26f813fefe..05bd6b180045533d77f4109d60599fa18a56021d 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/totalPressure/totalPressureFvPatchScalarField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/totalPressure/totalPressureFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,102 @@ License Class Foam::totalPressureFvPatchScalarField +Group + grpInletBoundaryConditions grpOutletBoundaryConditions + Description - Foam::totalPressureFvPatchScalarField + This boundary condition provides a total pressure condition. Four + variants are possible: + + 1. incompressible subsonic: + \f[ + p_T = p_0 + 0.5 |U|^2 + \f] + where + \vartable + p_T | incompressible total pressure [m2/s2] + p_0 | incompressible reference pressure [m2/s2] + U | velocity + \endvartable + + 2. compressible subsonic: + \f[ + p_T = p_0 + 0.5 \rho |U|^2 + \f] + where + \vartable + p_T | total pressure [Pa] + p_0 | reference pressure [Pa] + \rho | density [kg/m3] + U | velocity + \endvartable + + 3. compressible transonic (\gamma <= 1): + \f[ + p_T = \frac{p_0}{1 + 0.5 \psi |U|^2} + \f] + where + \vartable + p_T | total pressure [Pa] + p_0 | reference pressure [Pa] + G | coefficient given by \f$\frac{\gamma}{1-\gamma}\f$ + \endvartable + + 4. compressible supersonic (\gamma > 1): + \f[ + p_T = \frac{p_0}{(1 + 0.5 \psi G)^{\frac{1}{G}}} + \f] + where + \vartable + \gamma | ratio of specific heats (Cp/Cv) + p_T | total pressure [Pa] + p_0 | reference pressure [Pa] + \psi | compressibility [m2/s2] + G | coefficient given by \f$\frac{\gamma}{1-\gamma}\f$ + \endvartable + + The modes of operation are set via the combination of \c phi, \c rho, and + \c psi entries: + \table + Mode | phi | rho | psi + incompressible subsonic | phi | none | none + compressible subsonic | phi | rho | none + compressible transonic | phi | none | psi + compressible supersonic | phi | none | psi + \endtable + + + \heading Patch usage + + \table + Property | Description | Required | Default value + U | velocity field name | no | U + phi | flux field name | no | phi + rho | density field name | no | none + psi | compressibility field name | no | none + gamma | ratio of specific heats (Cp/Cv) | yes | + p0 | static pressure reference | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type totalPressure; + U U; + phi phi; + rho none; + psi none; + gamma 1.4; + p0 uniform 1e5; + } + \endverbatim + +Note + The default boundary behaviour is for subsonic, incompressible flow. + +SeeAlso + Foam::fixedValueFvPatchField SourceFiles totalPressureFvPatchScalarField.C @@ -43,7 +137,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class totalPressureFvPatch Declaration + Class totalPressureFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class totalPressureFvPatchScalarField diff --git a/src/finiteVolume/fields/fvPatchFields/derived/totalTemperature/totalTemperatureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/totalTemperature/totalTemperatureFvPatchScalarField.H index 7f6137709b98b2ca044a666b260ef4439bcd3020..d793696ade806c95a64d5c51c68eb10b85da952b 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/totalTemperature/totalTemperatureFvPatchScalarField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/totalTemperature/totalTemperatureFvPatchScalarField.H @@ -24,12 +24,38 @@ License Class Foam::totalTemperatureFvPatchScalarField +Group + grpInletBoundaryConditions grpOutletBoundaryConditions + Description - Foam::totalTemperatureFvPatchScalarField + This boundary condition provides a total temperature condition. + + \heading Patch usage + + \table + Property | Description | Required | Default value + U | Velocity field name | no | U + phi | Flux field name | no | phi + psi | Compressibility field name | no | psi + gamma | ratio of specific heats (Cp/Cv) | yes | + T0 | reference temperature | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type totalTemperature; + T0 uniform 300; + } + \endverbatim SourceFiles totalTemperatureFvPatchScalarField.C +SeeAlso + Foam::fixedValueFvPatchField + \*---------------------------------------------------------------------------*/ #ifndef totalTemperatureFvPatchScalarField_H @@ -43,7 +69,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class totalTemperatureFvPatch Declaration + Class totalTemperatureFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class totalTemperatureFvPatchScalarField diff --git a/src/finiteVolume/fields/fvPatchFields/derived/translatingWallVelocity/translatingWallVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/translatingWallVelocity/translatingWallVelocityFvPatchVectorField.H index e19d1265e77491e803990d8fee31203d674c61ab..c6e9c70b88b0bd2a79706387096264e55b8d1fd5 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/translatingWallVelocity/translatingWallVelocityFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/translatingWallVelocity/translatingWallVelocityFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,32 @@ License Class Foam::translatingWallVelocityFvPatchVectorField +Group + grpWallBoundaryConditions grpGenericBoundaryConditions + Description - Foam::translatingWallVelocityFvPatchVectorField + This boundary condition provides a velocity condition for translational + motion on walls. + + \heading Patch usage + + \table + Property | Description | Required | Default value + U | translational velocity | yes| + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type translatingWallVelocity; + U (100 0 0); + } + \endverbatim + + +SeeAlso + Foam::fixedValueFvPatchField SourceFiles translatingWallVelocityFvPatchVectorField.C @@ -43,7 +67,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class translatingWallVelocityFvPatchField Declaration + Class translatingWallVelocityFvPatchField Declaration \*---------------------------------------------------------------------------*/ class translatingWallVelocityFvPatchVectorField @@ -52,7 +76,7 @@ class translatingWallVelocityFvPatchVectorField { // Private data - //- Origin of the rotation + //- Translational velocity vector U_; @@ -124,7 +148,6 @@ public: } - // Member functions // Access functions diff --git a/src/finiteVolume/fields/fvPatchFields/derived/turbulentInlet/turbulentInletFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/turbulentInlet/turbulentInletFvPatchField.H index a7b3272c1367b4480e2fe54dcf2cd9eb40dd71f1..3917d167bd42369234baf356e4082f9187ff2632 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/turbulentInlet/turbulentInletFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/turbulentInlet/turbulentInletFvPatchField.H @@ -24,18 +24,50 @@ License Class Foam::turbulentInletFvPatchField +Group + grpInletBoundaryConditions + Description - Generate a fluctuating inlet condition by adding a random component - to a reference (mean) field. - Input: - referenceField - Mean field. - fluctuationScale - RMS fluctuation, provided as the fraction of the mean field. - alpha - temporal correlation factor; - the fraction of the new random component added to the previous - time-step (defaults to 0.1). + This boundary condition generates a fluctuating inlet condition by adding + a random component to a reference (mean) field. + + \f[ + x_p = (1 - \alpha) x_p^{n-1} + \alpha (x_{ref} + s C_{RMS} x_{ref}) + \f] + + where + + \vartable + x_p | patch values + x_{ref} | refernce patch values + n | time level + \alpha | fraction of new random component added to previous time value + C_{RMS} | RMS coefficient + s | fluctuation scale + \endvartable + + \heading Patch usage + + \table + Property | Description | Required | Default value + fluctuationScale | RMS fluctuation scale (fraction of mean) | yes | + referenceField | reference (mean) field | yes | + alpha | fraction of new random component added to previous| no| 0.1 + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type turbulentInlet; + fluctuationScale 0.1; + referenceField uniform 10; + alpha 0.1; + } + \endverbatim + +SeeAlso + Foam::fixedValueFvPatchField SourceFiles turbulentInletFvPatchField.C @@ -54,7 +86,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class turbulentInletFvPatch Declaration + Class turbulentInletFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> @@ -64,10 +96,19 @@ class turbulentInletFvPatchField { // Private data + //- Random number generator Random ranGen_; + + //- Fluctuation scake Type fluctuationScale_; + + //- Reference field Field<Type> referenceField_; + + //- Fraction of RMS component to apply to last time step values scalar alpha_; + + //- Current time index (used for updating) label curTimeIndex_; diff --git a/src/finiteVolume/fields/fvPatchFields/derived/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchScalarField.C index 7d650f6eb7feea6f535e0efc03fd8315fc066f43..7689d3d76343a1fca34c824939d84fe0c90efcfc 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchScalarField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -40,8 +40,8 @@ turbulentIntensityKineticEnergyInletFvPatchScalarField : inletOutletFvPatchScalarField(p, iF), intensity_(0.0), - UName_("undefined-U"), - phiName_("undefined-phi") + UName_("U"), + phiName_("phi") { this->refValue() = 0.0; this->refGrad() = 0.0; @@ -82,12 +82,15 @@ turbulentIntensityKineticEnergyInletFvPatchScalarField ( "turbulentIntensityKineticEnergyInletFvPatchScalarField::" "turbulentIntensityKineticEnergyInletFvPatchScalarField" - "(const fvPatch& p, const DimensionedField<scalar, volMesh>& iF, " - "const dictionary& dict)" + "(" + "const fvPatch&, " + "const DimensionedField<scalar, volMesh>&, " + "const dictionary&" + ")" ) << "Turbulence intensity should be specified as a fraction 0-1 " "of the mean velocity\n" - " value given is " << intensity_ - << "\n on patch " << this->patch().name() + " value given is " << intensity_ << nl + << " on patch " << this->patch().name() << " of field " << this->dimensionedInternalField().name() << " in file " << this->dimensionedInternalField().objectPath() << exit(FatalError); @@ -157,8 +160,8 @@ void Foam::turbulentIntensityKineticEnergyInletFvPatchScalarField::write { fvPatchScalarField::write(os); os.writeKeyword("intensity") << intensity_ << token::END_STATEMENT << nl; - os.writeKeyword("U") << UName_ << token::END_STATEMENT << nl; - os.writeKeyword("phi") << phiName_ << token::END_STATEMENT << nl; + writeEntryIfDifferent<word>(os, "U", "U", UName_); + writeEntryIfDifferent<word>(os, "phi", "phi", phiName_); writeEntry("value", os); } diff --git a/src/finiteVolume/fields/fvPatchFields/derived/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchScalarField.H index 1663364d104127db33d10ff8ac4cf08b9491699d..b2d1f2123e6bb1b73e5ce873572193fe5fbfccae 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchScalarField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/turbulentIntensityKineticEnergyInlet/turbulentIntensityKineticEnergyInletFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,20 +24,50 @@ License Class Foam::turbulentIntensityKineticEnergyInletFvPatchScalarField +Group + grpInletBoundaryConditions + Description - Calculate turbulent kinetic energy from the intensity provided as a - fraction of the mean velocity + This boundary condition provides a turbulent kinetic energy condition, + based on user-supplied turbulence intensity, defined as a fraction of the + mean velocity: + + \f[ + k_p = 1.5 I |U|^2 + \f] + + where + + \vartable + k_p | kinetic energy at the patch + I | turbulence intensity + U | velocity field + \endvartable + + In the event of reverse flow, a zero-gradient condition is applied. + + \heading Patch usage + + \table + Property | Description | Required | Default value + intensity | fraction of mean field [0-1] | yes | + U | velocity field name | no | U + phi | flux field name | no | phi + \endtable Example of the boundary condition specification: \verbatim - inlet - { - type turbulentIntensityKineticEnergyInlet; - intensity 0.05; // 5% turbulence - value uniform 1; // placeholder - } + myPatch + { + type turbulentIntensityKineticEnergyInlet; + intensity 0.05; // 5% turbulence + value uniform 1; // placeholder + } \endverbatim +SeeAlso + Foam::inletOutletFvPatchField + SourceFiles turbulentIntensityKineticEnergyInletFvPatchScalarField.C @@ -54,7 +84,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class turbulentIntensityKineticEnergyInletFvPatch Declaration + Class turbulentIntensityKineticEnergyInletFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class turbulentIntensityKineticEnergyInletFvPatchScalarField diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformDensityHydrostaticPressure/uniformDensityHydrostaticPressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/uniformDensityHydrostaticPressure/uniformDensityHydrostaticPressureFvPatchScalarField.H index b199d3e8ebf7c5f909491f6efd9833b8a0faff4e..ff3c925863c05f6b27af436a3d2f88de518e41e3 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/uniformDensityHydrostaticPressure/uniformDensityHydrostaticPressureFvPatchScalarField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformDensityHydrostaticPressure/uniformDensityHydrostaticPressureFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,12 +24,46 @@ License Class Foam::uniformDensityHydrostaticPressureFvPatchScalarField -Description - Hydrostatic pressure boundary condition calculated as - - pRefValue + rho*g.(x - pRefPoint) +Group + grpGenericBoundaryConditions - where rho is provided and assumed uniform. +Description + This boundary condition provides a hydrostatic pressure condition, + calculated as: + + \f[ + p_{hyd} = p_{ref} + \rho g (x - x_{ref}) + \f] + + where + \vartable + p_{hyd} | hyrostatic pressure [Pa] + p_{ref} | reference pressure [Pa] + x_{ref} | reference point in Cartesian co-ordinates + \rho | density (assumed uniform) + g | acceleration due to gravity [m/s2] + \endtable + + \heading Patch usage + + \table + Property | Description | Required | Default value + rho | uniform density [kg/m3] | yes | + pRefValue | reference pressure [Pa] | yes | + pRefPoint | reference pressure location | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type uniformDensityHydrostaticPressure; + rho rho; + pRefValue 1e5; + pRefPoint (0 0 0); + value uniform 0; // optional initial value + } + \endverbatim SourceFiles uniformDensityHydrostaticPressureFvPatchScalarField.C @@ -47,7 +81,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class uniformDensityHydrostaticPressureFvPatch Declaration + Class uniformDensityHydrostaticPressureFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class uniformDensityHydrostaticPressureFvPatchScalarField diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchField.H index cd6445babffae68fa7140b64ccfd551bbb629cdf..072d02f1b6d94024a54ad85618a1c241cb059e6b 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformFixedValue/uniformFixedValueFvPatchField.H @@ -24,22 +24,36 @@ License Class Foam::uniformFixedValueFvPatchField +Group + grpGenericBoundaryConditions + Description - Enables the specification of a uniform fixed value boundary condition. + This boundary condition provides a uniform fixed value condition. + + \heading Patch usage + + \table + Property | Description | Required | Default value + uniformValue | uniform value | yes | + \endtable Example of the boundary condition specification: \verbatim - inlet + myPatch { type uniformFixedValue; uniformValue constant 0.2; } \endverbatim +Note The uniformValue entry is a DataEntry type, able to describe time varying functions. The example above gives the usage for supplying a constant value. +SeeAlso + Foam::DataEntry + Foam::fixedValueFvPatchField SourceFiles uniformFixedValueFvPatchField.C @@ -58,7 +72,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class uniformFixedValueFvPatch Declaration + Class uniformFixedValueFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/derived/uniformTotalPressure/uniformTotalPressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/uniformTotalPressure/uniformTotalPressureFvPatchScalarField.H index 325ed6e47191b8b74c9407c23ac6e663c47249fa..b5888fdf861ad46a56a987c3e6eaa0e065993e3e 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/uniformTotalPressure/uniformTotalPressureFvPatchScalarField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/uniformTotalPressure/uniformTotalPressureFvPatchScalarField.H @@ -24,13 +24,50 @@ License Class Foam::uniformTotalPressureFvPatchScalarField -Description - A time-varying form of a uniform total pressure boundary condition. The - variation is specified as an DataEntry (see Foam::DataEntry). +Group + grpInletBoundaryConditions grpOutletBoundaryConditions -See Also - Foam::uniformFixedValueFvPatchField.H - and Foam::totalPressureFvPatchScalarField.H +Description + This boundary condition provides a time-varying form of the uniform total + pressure boundary condition. + + \heading Patch usage + + \table + Property | Description | Required | Default value + U | velocity field name | no | U + phi | flux field name | no | phi + rho | density field name | no | none + psi | compressibility field name | no | none + gamma | ratio of specific heats (Cp/Cv) | yes | + pressure | total pressure as a function of time | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type uniformTotalPressure; + U U; + phi phi; + rho rho; + psi psi; + gamma 1.4; + pressure uniform 1e5; + } + \endverbatim + + The \c pressure entry is specified as a DataEntry type, able to describe + time varying functions. + +Note + The default boundary behaviour is for subsonic, incompressible flow. + + +SeeAlso + Foam::DataEntry + Foam::uniformFixedValueFvPatchField + Foam::totalPressureFvPatchField SourceFiles uniformTotalPressureFvPatchScalarField.C diff --git a/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRate/variableHeightFlowRateFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRate/variableHeightFlowRateFvPatchField.H index 51e8c878990995df0b653b7ef27e012fc4983bc3..858dd6c1cef46d044bc852d318cc56135f79b72f 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRate/variableHeightFlowRateFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRate/variableHeightFlowRateFvPatchField.H @@ -24,25 +24,42 @@ License Class Foam::variableHeightFlowRateFvPatchScalarField +Group + grpInletBoundaryConditions + Description - This boundary condition uses zeroGradient within a specified range of - values for phase fraction alpha. The range is defined within the - boundary condition by the lowerBound and upperBound. + This boundary condition provides a phase fraction condition based on the + local flow conditions, whereby the values are constrained to lay between + user-specified upper and lower bounds. The behaviour is described by: - alpha > upperBound: fixedValue with uniform value of upperBound - lowerBound <= alpha <= upperBound: zeroGradient - alpha < lowerBound: fixedValue with uniform value of lowerBound + if alpha > upperBound: + - apply a fixed value condition, with a uniform level of the upper bound - Example: - \verbatim - inlet - { - type clippedZeroGradient; - lowerBound 0.0; - upperBound 0.9; - value uniform 0; - } + if lower bound <= alpha <= upper bound: + - apply a zero-gradient condition + + if alpha < lowerBound: + - apply a fixed value condition, with a uniform level of the lower bound + + \heading Patch usage + + \table + Property | Description | Required | Default value + phi | flux field name | no | phi + lowerBound | lower bound for clipping | yes | + upperBound | upper bound for clipping | yes | + \endtable + + Example of the boundary condition specification: \verbatim + myPatch + { + type variableHeightFlowRate; + lowerBound 0.0; + upperBound 0.9; + value uniform 0; + } + \endverbatim SourceFiles variableHeightFlowRateFvPatchScalarField.C @@ -60,7 +77,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class variableHeightFlowRateFvPatchScalar Declaration + Class variableHeightFlowRateFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class variableHeightFlowRateFvPatchScalarField @@ -81,6 +98,7 @@ protected: //- Upper bound for alpha1 scalar upperBound_; + public: //- Runtime scalar information @@ -156,10 +174,6 @@ public: //- Write virtual void write(Ostream&) const; - - - // Member operators - }; diff --git a/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRateInletVelocity/variableHeightFlowRateInletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRateInletVelocity/variableHeightFlowRateInletVelocityFvPatchVectorField.C index b33bbc65f13dfa1c40d05edf88e85bee586c7a6c..9b0a6694e7ad9aba9048e02b9618e3acc43ca74a 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRateInletVelocity/variableHeightFlowRateInletVelocityFvPatchVectorField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRateInletVelocity/variableHeightFlowRateInletVelocityFvPatchVectorField.C @@ -121,8 +121,10 @@ void Foam::variableHeightFlowRateInletVelocityFvPatchVectorField } -void Foam::variableHeightFlowRateInletVelocityFvPatchVectorField -::write(Ostream& os) const +void Foam::variableHeightFlowRateInletVelocityFvPatchVectorField::write +( + Ostream& os +) const { fvPatchField<vector>::write(os); diff --git a/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRateInletVelocity/variableHeightFlowRateInletVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRateInletVelocity/variableHeightFlowRateInletVelocityFvPatchVectorField.H index d1bc1ac62f74b43f7fd245d6d5cc38b7483ef651..10e6a2c88993741da7567025b845de155dcc2247 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRateInletVelocity/variableHeightFlowRateInletVelocityFvPatchVectorField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/variableHeightFlowRateInletVelocity/variableHeightFlowRateInletVelocityFvPatchVectorField.H @@ -2,16 +2,16 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ 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 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 3 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 @@ -19,38 +19,46 @@ 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 + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class Foam::variableHeightFlowRateInletVelocityFvPatchVectorField +Group + grpInletBoundaryConditions + Description - Describes a volumetric/mass flow normal vector boundary condition by its - magnitude as an integral over its area. + This boundary condition provides a velocity boundary condition for + multphase flow based on a user-specified volumetric flow rate. + + The flow rate is made proportional to the phase fraction alpha at each + face of the patch and alpha is ensured to be bound between 0 and 1. - The basis of the patch (volumetric or mass) is determined by the - dimensions of the flux, phi. - The current density is used to correct the velocity when applying the - mass basis. + \heading Patch usage - The flow rate is made proportional to the phase fraction alpha at each face - of the patch and alpha is ensured to be bound between 0 and 1. + \table + Property | Description | Required | Default value + flowRate | volumetric flow rate [m3/s] | yes | + \endtable Example of the boundary condition specification: \verbatim - inlet + myPatch { type variableHeightFlowRateInletVelocity; - flowRate 0.2; // Volumetric/mass flow rate [m3/s or kg/s] + flowRate 0.2; value uniform (0 0 0); // placeholder } \endverbatim Note - - The value is positive inwards - - May not work correctly for transonic inlets - - Strange behaviour with potentialFoam since the U equation is not solved + - the value is positive into the domain + - may not work correctly for transonic inlets + - strange behaviour with potentialFoam since the momentum equation is + not solved + +SeeAlso + Foam::fixedValueFvPatchField SourceFiles variableHeightFlowRateInletVelocityFvPatchVectorField.C @@ -67,7 +75,7 @@ SourceFiles namespace Foam { /*---------------------------------------------------------------------------*\ - Class variableHeightFlowRateInletVelocityFvPatch Declaration + Class variableHeightFlowRateInletVelocityFvPatchVectorField Declaration \*---------------------------------------------------------------------------*/ class variableHeightFlowRateInletVelocityFvPatchVectorField @@ -79,6 +87,7 @@ class variableHeightFlowRateInletVelocityFvPatchVectorField //- Inlet integral flow rate scalar flowRate_; + public: //- Runtime type information @@ -174,7 +183,6 @@ public: //- Write virtual void write(Ostream&) const; - }; diff --git a/src/finiteVolume/fields/fvPatchFields/derived/waveSurfacePressure/waveSurfacePressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/waveSurfacePressure/waveSurfacePressureFvPatchScalarField.C index 56a81e0f619419fec7500d1f1c00d7c42462b659..fe4ddd33577d9228f492ff384a4bbf4bbb9ee969 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/waveSurfacePressure/waveSurfacePressureFvPatchScalarField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/waveSurfacePressure/waveSurfacePressureFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -29,6 +29,34 @@ License #include "volFields.H" #include "surfaceFields.H" #include "uniformDimensionedFields.H" +#include "EulerDdtScheme.H" +#include "CrankNicholsonDdtScheme.H" +#include "backwardDdtScheme.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + template<> + const char* Foam::NamedEnum + < + Foam::waveSurfacePressureFvPatchScalarField::timeSchemeType, + 3 + >::names[] = + { + fv::EulerDdtScheme<scalar>::typeName.c_str(), + fv::CrankNicholsonDdtScheme<scalar>::typeName.c_str(), + fv::backwardDdtScheme<scalar>::typeName.c_str() + }; +} + + +const Foam::NamedEnum +< + Foam::waveSurfacePressureFvPatchScalarField::timeSchemeType, + 3 +> Foam::waveSurfacePressureFvPatchScalarField::timeSchemeTypeNames_; + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // @@ -41,10 +69,8 @@ waveSurfacePressureFvPatchScalarField : fixedValueFvPatchScalarField(p, iF), phiName_("phi"), - rhoName_("rho"), zetaName_("zeta"), - zeta0_(p.size(), vector::zero), - curTimeIndex_(-1) + rhoName_("rho") {} @@ -58,10 +84,8 @@ waveSurfacePressureFvPatchScalarField : fixedValueFvPatchScalarField(p, iF), phiName_(dict.lookupOrDefault<word>("phi", "phi")), - rhoName_(dict.lookupOrDefault<word>("rho", "rho")), zetaName_(dict.lookupOrDefault<word>("zeta", "zeta")), - zeta0_(p.size(), vector::zero), - curTimeIndex_(-1) + rhoName_(dict.lookupOrDefault<word>("rho", "rho")) { fvPatchField<scalar>::operator= ( @@ -81,10 +105,8 @@ waveSurfacePressureFvPatchScalarField : fixedValueFvPatchScalarField(ptf, p, iF, mapper), phiName_(ptf.phiName_), - rhoName_(ptf.rhoName_), zetaName_(ptf.zetaName_), - zeta0_(ptf.zeta0_), - curTimeIndex_(-1) + rhoName_(ptf.rhoName_) {} @@ -96,10 +118,8 @@ waveSurfacePressureFvPatchScalarField : fixedValueFvPatchScalarField(wspsf), phiName_(wspsf.phiName_), - rhoName_(wspsf.rhoName_), zetaName_(wspsf.zetaName_), - zeta0_(wspsf.zeta0_), - curTimeIndex_(wspsf.curTimeIndex_) + rhoName_(wspsf.rhoName_) {} @@ -112,40 +132,13 @@ waveSurfacePressureFvPatchScalarField : fixedValueFvPatchScalarField(wspsf, iF), phiName_(wspsf.phiName_), - rhoName_(wspsf.rhoName_), zetaName_(wspsf.zetaName_), - zeta0_(wspsf.zeta0_), - curTimeIndex_(wspsf.curTimeIndex_) + rhoName_(wspsf.rhoName_) {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::waveSurfacePressureFvPatchScalarField::autoMap -( - const fvPatchFieldMapper& m -) -{ - fixedValueFvPatchScalarField::autoMap(m); - zeta0_.autoMap(m); -} - - -void Foam::waveSurfacePressureFvPatchScalarField::rmap -( - const fvPatchScalarField& ptf, - const labelList& addr -) -{ - fixedValueFvPatchScalarField::rmap(ptf, addr); - - const waveSurfacePressureFvPatchScalarField& wspsf = - refCast<const waveSurfacePressureFvPatchScalarField>(ptf); - - zeta0_.rmap(wspsf.zeta0_, addr); -} - - void Foam::waveSurfacePressureFvPatchScalarField::updateCoeffs() { if (updated()) @@ -153,65 +146,90 @@ void Foam::waveSurfacePressureFvPatchScalarField::updateCoeffs() return; } + const label patchI = patch().index(); + const scalar dt = db().time().deltaTValue(); - const scalar timeI = db().time().timeIndex(); - const scalar patchI = patch().index(); + // retrieve non-const access to zeta field from the database volVectorField& zeta = const_cast<volVectorField&> ( db().lookupObject<volVectorField>(zetaName_) ); - vectorField& zetap = zeta.boundaryField()[patchI]; - if (curTimeIndex_ != timeI) - { - zeta0_ = zetap; - curTimeIndex_ = timeI; - } + // lookup d/dt scheme from database for zeta + const word ddtSchemeName(zeta.mesh().ddtScheme(zeta.name())); + timeSchemeType timeScheme(timeSchemeTypeNames_[ddtSchemeName]); + // retrieve the flux field from the database const surfaceScalarField& phi = db().lookupObject<surfaceScalarField>(phiName_); - const scalarField& phip = phi.boundaryField()[patchI]; - - const uniformDimensionedVectorField& g = - db().lookupObject<uniformDimensionedVectorField>("g"); - + // cache the patch face-normal vectors tmp<vectorField> nf(patch().nf()); - if (phi.dimensions() == dimVelocity*dimArea) - { - zetap = zeta0_ + nf()*dt*phip/patch().magSf(); + // change in zeta due to flux + vectorField dZetap(dt*nf()*phi.boundaryField()[patchI]/patch().magSf()); - operator==(-g.value() & zetap); - } - else if (phi.dimensions() == dimDensity*dimVelocity*dimArea) + if (phi.dimensions() == dimDensity*dimVelocity*dimArea) { const scalarField& rhop = patch().lookupPatchField<volScalarField, scalar>(rhoName_); - zetap = zeta0_ + nf()*dt*phip/rhop/patch().magSf(); - - operator==(-rhop*(g.value() & zetap)); + dZetap /= rhop; } - else + + switch (timeScheme) { - FatalErrorIn - ( - "waveSurfacePressureFvPatchScalarField::updateCoeffs()" - ) - << "dimensions of phi are incorrect" << nl - << " on patch " << this->patch().name() - << " of field " << this->dimensionedInternalField().name() - << " in file " << this->dimensionedInternalField().objectPath() - << exit(FatalError); + case tsEuler: + case tsCrankNicholson: + { + zetap = zeta.oldTime().boundaryField()[patchI] + dZetap; + + break; + } + case tsBackward: + { + scalar dt0 = db().time().deltaT0Value(); + + scalar c = 1.0 + dt/(dt + dt0); + scalar c00 = dt*dt/(dt0*(dt + dt0)); + scalar c0 = c + c00; + + zetap = + ( + c0*zeta.oldTime().boundaryField()[patchI] + - c00*zeta.oldTime().oldTime().boundaryField()[patchI] + + dZetap + )/c; + + break; + } + default: + { + FatalErrorIn + ( + "waveSurfacePressureFvPatchScalarField<Type>::updateCoeffs()" + ) << " Unsupported temporal differencing scheme : " + << ddtSchemeName << nl + << " on patch " << this->patch().name() + << " of field " << this->dimensionedInternalField().name() + << " in file " << this->dimensionedInternalField().objectPath() + << abort(FatalError); + } } - Info<< "min/max(zetap) = " << gMin(zetap & nf()) << ", " + + Info<< "min/max zetap = " << gMin(zetap & nf()) << ", " << gMax(zetap & nf()) << endl; + // update the surface pressure + const uniformDimensionedVectorField& g = + db().lookupObject<uniformDimensionedVectorField>("g"); + + operator==(-g.value() & zetap); + fixedValueFvPatchScalarField::updateCoeffs(); } @@ -220,8 +238,8 @@ void Foam::waveSurfacePressureFvPatchScalarField::write(Ostream& os) const { fvPatchScalarField::write(os); writeEntryIfDifferent<word>(os, "phi", "phi", phiName_); - writeEntryIfDifferent<word>(os, "rho", "rho", rhoName_); writeEntryIfDifferent<word>(os, "zeta", "zeta", zetaName_); + writeEntryIfDifferent<word>(os, "rho", "rho", zetaName_); writeEntry("value", os); } diff --git a/src/finiteVolume/fields/fvPatchFields/derived/waveSurfacePressure/waveSurfacePressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/waveSurfacePressure/waveSurfacePressureFvPatchScalarField.H index f80e25dae2e0221b0aab75cdb9f7aaff96d877a7..3babe28eff8bf90ea5801cd5c5d9669aa1d9765f 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/waveSurfacePressure/waveSurfacePressureFvPatchScalarField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/waveSurfacePressure/waveSurfacePressureFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,23 +24,52 @@ License Class Foam::waveSurfacePressureFvPatchScalarField -Description - Applies the surface wave pressure, based on the wave height - - p = -rho.g.zeta - - Where - - p = pressure - kinematic of dynamic depending on the flux units - zeta = wave height vector [m] - g = acceleration due to gravity [m/s2] - - - Note: - - This boundary also updates the wave height boundary field, which - is accessed via lookup from the database +Group + grpInletBoundaryConditions +Description + This is a pressure boundary condition, whose value is calculated as + the hydrostatic pressure based on a given displacement: + + \f[ + p = -\rho*g*\zeta + \f] + + \vartable + \rho | density [kg/m3] + g | acceleration due to gravity [m/s2] + \zeta | wave amplitude [m] + \endvartable + + The wave amplitude is updated as part of the calculation, derived from the + local volumetric flux. + + \heading Patch usage + + \table + Property | Description | Required | Default value + phi | flux field name | no | phi + rho | density field name | no | rho + zeta | wave amplitude field name | no | zeta + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type waveSurfacePressure; + phi phi; + rho rho; + zeta zeta; + value uniform 0; // place holder + } + \endverbatim + + The density field is only required if the flux is mass-based as opposed to + volumetric-based. + +SeeAlso + Foam::fixedValueFvPatchField SourceFiles waveSurfacePressureFvPatchScalarField.C @@ -51,6 +80,7 @@ SourceFiles #define waveSurfacePressureFvPatchScalarField_H #include "fixedValueFvPatchFields.H" +#include "NamedEnum.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -65,22 +95,34 @@ class waveSurfacePressureFvPatchScalarField : public fixedValueFvPatchScalarField { +public: + + // Public data + + //- Enumeration defining the available time schemes + enum timeSchemeType + { + tsEuler, + tsCrankNicholson, + tsBackward + }; + + +private: + // Private data //- Flux field name word phiName_; - //- Density field name (if compressible) - word rhoName_; - //- Wave height field name word zetaName_; - //- Old-time zeta patch value - vectorField zeta0_; + //- Density field for mass-based flux evaluations + word rhoName_; - //- Current time index used to store ms0_ - label curTimeIndex_; + //- Time scheme type names + static const NamedEnum<timeSchemeType, 3> timeSchemeTypeNames_; public: @@ -153,22 +195,6 @@ public: // Member functions - // Mapping functions - - //- Map (and resize as needed) from self given a mapping object - virtual void autoMap - ( - const fvPatchFieldMapper& - ); - - //- Reverse map the given fvPatchField onto this fvPatchField - virtual void rmap - ( - const fvPatchScalarField&, - const labelList& - ); - - // Evaluation functions //- Update the coefficients associated with the patch field diff --git a/src/finiteVolume/fields/fvPatchFields/derived/waveTransmissive/waveTransmissiveFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/waveTransmissive/waveTransmissiveFvPatchField.H index 6cd00aac559214fde66408d27c77c60641d6d9fb..9ff79884d6b45ddd4c96323dda3592f617175b3d 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/waveTransmissive/waveTransmissiveFvPatchField.H +++ b/src/finiteVolume/fields/fvPatchFields/derived/waveTransmissive/waveTransmissiveFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,52 @@ License Class Foam::waveTransmissiveFvPatchField +Group + grpOutletBoundaryConditions + Description - Foam::waveTransmissiveFvPatchField + This boundary condition provides a wave transmissive outflow condition, + based onsolving DDt(psi, U) = 0 at the boundary. + + The wave speed is calculated using: + + \f[ + x_p = \frac{\phi_p}{|Sf|} + \sqrt{\frac{\gamma}{\psi_p}} + \f] + + where + + \vartable + x_p | patch values + \phi_p | patch face flux + \psi_p | patch compressibility + Sf | patch face area vector + \gamma | ratio of specific heats + \endvartable + + \heading Patch usage + + \table + Property | Description | Required | Default value + phi | flux field name | no | phi + rho | density field name | no | rho + psi | compressibility field name | no | psi + gamma | ratio of specific heats (Cp/Cv) | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type waveTransmissive; + phi phi; + psi psi; + gamma 1.4; + } + \endverbatim + +SeeAlso + Foam::advectiveFvPatchField SourceFiles waveTransmissiveFvPatchField.C @@ -43,7 +87,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class waveTransmissiveFvPatch Declaration + Class waveTransmissiveFvPatchField Declaration \*---------------------------------------------------------------------------*/ template<class Type> diff --git a/src/finiteVolume/fields/fvPatchFields/doc/boundaryConditions.dox b/src/finiteVolume/fields/fvPatchFields/doc/boundaryConditions.dox new file mode 100644 index 0000000000000000000000000000000000000000..7bb0894d7090e5c53c482cdf94f1f6e0288cc921 --- /dev/null +++ b/src/finiteVolume/fields/fvPatchFields/doc/boundaryConditions.dox @@ -0,0 +1,97 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +\page pageBoundaryConditions Boundary Conditions +\ref grpBoundaryConditions are required to 'close' the simulation problem. +Careful attention should be applied to their selection so as to create a +well-posed system of equations, which can be solved numerically. + +\section secBoundaryConditionsOverview Overview +The set of available \ref grpBoundaryConditions comprise of basic, turbulent and +thermophysical types. + +\subsection secBC1 Basic boundary conditions + - \ref grpConstraintBoundaryConditions + - \ref grpInletBoundaryConditions + - \ref grpOutletBoundaryConditions + - \ref grpGenericBoundaryConditions + - \ref grpCoupledBoundaryConditions + - \ref grpWallBoundaryConditions + +\subsection secBC2 Turbulent flow boundary conditions + - \ref grpIcoRASBoundaryConditions + - \ref grpCmpRASBoundaryConditions + +\subsection secBC3 Thermophysical boundary conditions + - \ref grpThermoBoundaryConditions + + +\section secWallFunctions Wall functions +Wall functions in OpenFOAM are modelled as boundary conditions, applied to +the viscosity for momentum, and thermal diffusivity for energy. Two groups of +wall functions are available, which vary in terms of the underlying +compressibility assumption. + +Wall functions for incompressible flow + - \ref grpIcoWallFunctions + +Wall functions for compressible flow + - \ref grpCmpWallFunctions + + +\section secBoundaryConditions Typical usage for pressure-velocity systems +The choice as to the most appropriate set of boundary conditions is dictated by +the type of flow problem. In many cases, multiple possible selections exist; +the following tables offer suggestions for subsonic flow. + +subsonic inlet (flow specified): +\table + Variable | Symbol | Type + pressure | p | \link Foam::zeroGradientFvPatchField zeroGradient\endlink + velocity | U | \link Foam::fixedValueFvPatchField fixedValue\endlink + transported property | - | \link Foam::fixedValueFvPatchField fixedValue\endlink + derived property | - | \link Foam::calculatedFvPatchField calculated\endlink or \link Foam::zeroGradientFvPatchField zeroGradient\endlink +\endtable + +subsonic outlet: +\table + Variable | Symbol | Type + pressure | p | \link Foam::fixedValueFvPatchField fixedValue\endlink + velocity | U | \link Foam::inletOutletFvPatchField inletOutlet\endlink or \link Foam::pressureInletOutletVelocityFvPatchVectorField pressureInletOutletVelocity\endlink + transported property | - | \link Foam::inletOutletFvPatchField inletOutlet\endlink + derived property | - | \link Foam::calculatedFvPatchField calculated\endlink or \link Foam::zeroGradientFvPatchField zeroGradient\endlink +\endtable + +wall (impermeable, non-slip): +\table + Variable | Symbol | Type + pressure | p | \link Foam::zeroGradientFvPatchField zeroGradient\endlink + velocity | U | \link Foam::fixedValueFvPatchField fixedValue\endlink + transported property | - | \link Foam::fixedValueFvPatchField fixedValue\endlink + derived property | - | \link Foam::calculatedFvPatchField calculated\endlink or \link Foam::zeroGradientFvPatchField zeroGradient\endlink +\endtable + + +\*---------------------------------------------------------------------------*/ diff --git a/src/finiteVolume/fields/fvPatchFields/doc/fvPatchFieldDoc.H b/src/finiteVolume/fields/fvPatchFields/doc/fvPatchFieldDoc.H new file mode 100644 index 0000000000000000000000000000000000000000..8b6889ea030a70f6603f2b44747a2e41343feb17 --- /dev/null +++ b/src/finiteVolume/fields/fvPatchFields/doc/fvPatchFieldDoc.H @@ -0,0 +1,78 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +\defgroup grpBoundaryConditions Boundary Conditions +@{ + This group contains OpenFOAM boundary condition types. All conditions + are derived from the base Foam::fvPatchField class. Patch values are + typically updated using the virtual functions + - Foam::fvPatchField::updateCoeffs() + - Foam::fvPatchField::evaluate() + + The difference between the methods is based on when the patch values are + updated. When the condition is applied to a solution variable, the + call to updateCoeffs() occurs as a preliminary step of the + \<matrix\>.solve(). The evaluate() method is invoked after, or independent + of the matrix solve, via a call to \<field\>.correctBoundaryConditions(). +@} + +\defgroup grpConstraintBoundaryConditions Constraint boundary Conditions +@{ + \ingroup grpBoundaryConditions + This group contains constraint boundary condition types. These conditions + are mainly employed to reduced dimensioned cases. +@} + +\defgroup grpInletBoundaryConditions Inlet boundary Conditions +@{ + \ingroup grpBoundaryConditions + This group contains inlet boundary condition types +@} + +\defgroup grpOutletBoundaryConditions Outlet boundary Conditions +@{ + \ingroup grpBoundaryConditions + This group contains outlet boundary condition types +@} + +\defgroup grpGenericBoundaryConditions Generic boundary Conditions +@{ + \ingroup grpBoundaryConditions + This group contains generic boundary condition types +@} + +\defgroup grpCoupledBoundaryConditions Coupled boundary Conditions +@{ + \ingroup grpBoundaryConditions + This group contains coupled boundary condition types +@} + +\defgroup grpWallBoundaryConditions Wall boundary Conditions +@{ + \ingroup grpBoundaryConditions + This group contains wall boundary condition types +@} + +\*---------------------------------------------------------------------------*/ diff --git a/src/genericPatchFields/genericFvPatchField/genericFvPatchField.H b/src/genericPatchFields/genericFvPatchField/genericFvPatchField.H index 3236c3f2b9fce7535e412b60074365651f8deb26..c032a32fc271966e1fd8dbff68ee6ee40e5c3285 100644 --- a/src/genericPatchFields/genericFvPatchField/genericFvPatchField.H +++ b/src/genericPatchFields/genericFvPatchField/genericFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,8 +25,12 @@ Class Foam::genericFvPatchField Description - A generic version of calculatedFvPatchField, useful as a fallback for - handling unknown patch types. + This boundary condition provides a generic version of the \c calculated + condition, useful as a fallback for handling unknown patch types. Not + generally applicable as a user-specified condition. + +SeeAlso + Foam::calculatedFvPatchField SourceFiles genericFvPatchField.C diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H index 4d7af077d4e1b665721bf65afa7f7cff3a0837f8..ee860ad478dc325305b57ba1d41997a831391526 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H @@ -572,6 +572,14 @@ public: const scalar sigma // particle surface tension ) const; + //- Eotvos number + inline scalar Eo + ( + const vector& a, // acceleration + const scalar d, // particle diameter + const scalar sigma // particle surface tension + ) const; + // Main calculation loop diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H index 4e4e0bf7be5c5087e0fbffe0127fb7eb9a7fa75b..f1b58c79ca24ae660a46e4ee54446eb8c435f57b 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H @@ -567,4 +567,17 @@ inline Foam::scalar Foam::KinematicParcel<ParcelType>::We } +template<class ParcelType> +inline Foam::scalar Foam::KinematicParcel<ParcelType>::Eo +( + const vector& a, + const scalar d, + const scalar sigma +) const +{ + vector dir = U_/(mag(U_) + ROOTVSMALL); + return mag(a & dir)*(rho_ - rhoc_)*sqr(d)/(sigma + ROOTVSMALL); +} + + // ************************************************************************* // diff --git a/src/lagrangian/intermediate/parcels/include/makeParcelForces.H b/src/lagrangian/intermediate/parcels/include/makeParcelForces.H index 7658900598dc940940017ac8da968d5c014908e8..9516b16a00e329472cfa399cb49a48db8934431b 100644 --- a/src/lagrangian/intermediate/parcels/include/makeParcelForces.H +++ b/src/lagrangian/intermediate/parcels/include/makeParcelForces.H @@ -31,6 +31,9 @@ License #include "SphereDragForce.H" #include "NonSphereDragForce.H" +#include "SaffmanMeiLiftForce.H" +#include "TomiyamaLiftForce.H" + #include "GravityForce.H" #include "NonInertialFrameForce.H" #include "ParamagneticForce.H" @@ -45,6 +48,8 @@ License makeParticleForceModel(CloudType); \ makeParticleForceModelType(SphereDragForce, CloudType); \ makeParticleForceModelType(NonSphereDragForce, CloudType); \ + makeParticleForceModelType(SaffmanMeiLiftForce, CloudType); \ + makeParticleForceModelType(TomiyamaLiftForce, CloudType); \ makeParticleForceModelType(GravityForce, CloudType); \ makeParticleForceModelType(NonInertialFrameForce, CloudType); \ makeParticleForceModelType(ParamagneticForce, CloudType); \ diff --git a/src/lagrangian/intermediate/parcels/include/makeThermoParcelForces.H b/src/lagrangian/intermediate/parcels/include/makeThermoParcelForces.H index dff1f464a1c3e7f16e502be6f8842640740fce93..29b3d6acfe0d7c2cae0b36fb9d8644d2a772366e 100644 --- a/src/lagrangian/intermediate/parcels/include/makeThermoParcelForces.H +++ b/src/lagrangian/intermediate/parcels/include/makeThermoParcelForces.H @@ -31,6 +31,9 @@ License #include "SphereDragForce.H" #include "NonSphereDragForce.H" +#include "SaffmanMeiLiftForce.H" +#include "TomiyamaLiftForce.H" + #include "BrownianMotionForce.H" #include "GravityForce.H" #include "NonInertialFrameForce.H" @@ -46,6 +49,8 @@ License makeParticleForceModel(CloudType); \ makeParticleForceModelType(SphereDragForce, CloudType); \ makeParticleForceModelType(NonSphereDragForce, CloudType); \ + makeParticleForceModelType(SaffmanMeiLiftForce, CloudType); \ + makeParticleForceModelType(TomiyamaLiftForce, CloudType); \ makeParticleForceModelType(BrownianMotionForce, CloudType); \ makeParticleForceModelType(GravityForce, CloudType); \ makeParticleForceModelType(NonInertialFrameForce, CloudType); \ diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Lift/LiftForce/LiftForce.C b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Lift/LiftForce/LiftForce.C new file mode 100644 index 0000000000000000000000000000000000000000..290d2f3c3d6b2be325c5c7e649712f176e2f14bd --- /dev/null +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Lift/LiftForce/LiftForce.C @@ -0,0 +1,150 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "LiftForce.H" +#include "fvcCurl.H" + +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // + +template<class CloudType> +Foam::scalar Foam::LiftForce<CloudType>::LiftForce::Cl +( + const typename CloudType::parcelType& p, + const vector& curlUc, + const scalar Re, + const scalar muc +) const +{ + // dummy + return 0.0; +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class CloudType> +Foam::LiftForce<CloudType>::LiftForce +( + CloudType& owner, + const fvMesh& mesh, + const dictionary& dict, + const word& forceType +) +: + ParticleForce<CloudType>(owner, mesh, dict, forceType, true), + UName_(this->coeffs().template lookupOrDefault<word>("U", "U")), + curlUcInterpPtr_(NULL) +{} + + +template<class CloudType> +Foam::LiftForce<CloudType>::LiftForce(const LiftForce& lf) +: + ParticleForce<CloudType>(lf), + UName_(lf.UName_), + curlUcInterpPtr_(NULL) +{} + + +// * * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * // + +template<class CloudType> +Foam::LiftForce<CloudType>::~LiftForce() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +template<class CloudType> +void Foam::LiftForce<CloudType>::cacheFields(const bool store) +{ + static word fName("curlUcDt"); + + bool fieldExists = this->mesh().template foundObject<volVectorField>(fName); + + if (store) + { + if (!fieldExists) + { + const volVectorField& Uc = this->mesh().template + lookupObject<volVectorField>(UName_); + + volVectorField* curlUcPtr = + new volVectorField(fName, fvc::curl(Uc)); + + curlUcPtr->store(); + } + + const volVectorField& curlUc = this->mesh().template + lookupObject<volVectorField>(fName); + + curlUcInterpPtr_.reset + ( + interpolation<vector>::New + ( + this->owner().solution().interpolationSchemes(), + curlUc + ).ptr() + ); + } + else + { + curlUcInterpPtr_.clear(); + + if (fieldExists) + { + const volVectorField& curlUc = this->mesh().template + lookupObject<volVectorField>(fName); + + const_cast<volVectorField&>(curlUc).checkOut(); + } + } +} + + +template<class CloudType> +Foam::forceSuSp Foam::LiftForce<CloudType>::calcCoupled +( + const typename CloudType::parcelType& p, + const scalar dt, + const scalar mass, + const scalar Re, + const scalar muc +) const +{ + forceSuSp value(vector::zero, 0.0); + + vector curlUc = + curlUcInterp().interpolate(p.position(), p.currentTetIndices()); + + scalar Cl = this->Cl(p, curlUc, Re, muc); + + value.Su() = mass/p.rho()*p.d()/2.0*p.rhoc()*Cl*((p.Uc() - p.U())^curlUc); + + return value; +} + + +// ************************************************************************* // diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Lift/LiftForce/LiftForce.H b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Lift/LiftForce/LiftForce.H new file mode 100644 index 0000000000000000000000000000000000000000..13cab0ac544f73021962186710cdf2642c9fc8c0 --- /dev/null +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Lift/LiftForce/LiftForce.H @@ -0,0 +1,151 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +Class + Foam::LiftForce + +Description + Base class for particle lift force models + +SourceFiles + LiftForceI.H + LiftForce.C + +\*---------------------------------------------------------------------------*/ + +#ifndef LiftForce_H +#define LiftForce_H + +#include "ParticleForce.H" +#include "volFields.H" +#include "interpolation.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class LiftForce Declaration +\*---------------------------------------------------------------------------*/ + +template<class CloudType> +class LiftForce +: + public ParticleForce<CloudType> +{ +protected: + + // Protected data + + //- Name of velocity field + const word UName_; + + //- Curk of carrier phase velocity interpolator + autoPtr<interpolation<vector> > curlUcInterpPtr_; + + + // Potected Member Functions + + //- Calculate the lift coefficient + virtual scalar Cl + ( + const typename CloudType::parcelType& p, + const vector& curlUc, + const scalar Re, + const scalar muc + ) const; + + +public: + + // Constructors + + //- Construct from mesh + LiftForce + ( + CloudType& owner, + const fvMesh& mesh, + const dictionary& dict, + const word& forceType + ); + + //- Construct copy + LiftForce(const LiftForce& lf); + + //- Construct and return a clone + virtual autoPtr<ParticleForce<CloudType> > clone() const + { + return autoPtr<ParticleForce<CloudType> > + ( + new LiftForce<CloudType>(*this) + ); + } + + + //- Destructor + virtual ~LiftForce(); + + + // Member Functions + + // Access + + //- Return the curl of the carrier phase velocity interpolator + inline const interpolation<vector>& curlUcInterp() const; + + + // Evaluation + + //- Cache fields + virtual void cacheFields(const bool store); + + //- Calculate the non-coupled force + virtual forceSuSp calcCoupled + ( + const typename CloudType::parcelType& p, + const scalar dt, + const scalar mass, + const scalar Re, + const scalar muc + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#include "LiftForceI.H" + +#ifdef NoRepository + #include "LiftForce.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/fluidThermo/fluidThermoNew.C b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Lift/LiftForce/LiftForceI.H similarity index 54% rename from src/thermophysicalModels/basic/fluidThermo/fluidThermoNew.C rename to src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Lift/LiftForce/LiftForceI.H index d6977a542a063e3401c51555ee1497e725ef2da8..00c3c7813a52f8444909f99f9caaf579e25ab0d1 100644 --- a/src/thermophysicalModels/basic/fluidThermo/fluidThermoNew.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Lift/LiftForce/LiftForceI.H @@ -23,48 +23,23 @@ License \*---------------------------------------------------------------------------*/ -#include "fluidThermo.H" - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -Foam::autoPtr<Foam::fluidThermo> Foam::fluidThermo::New -( - const fvMesh& mesh -) +template<class CloudType> +inline const Foam::interpolation<Foam::vector>& +Foam::LiftForce<CloudType>::curlUcInterp() const { - // get model name, but do not register the dictionary - // otherwise it is registered in the database twice - const word modelType - ( - IOdictionary - ( - IOobject - ( - "thermophysicalProperties", - mesh.time().constant(), - mesh, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE, - false - ) - ).lookup("thermoType") - ); - - Info<< "Selecting thermodynamics package " << modelType << endl; - - fvMeshConstructorTable::iterator cstrIter = - fvMeshConstructorTablePtr_->find(modelType); - - if (cstrIter == fvMeshConstructorTablePtr_->end()) + if (!curlUcInterpPtr_.valid()) { - FatalErrorIn("fluidThermo::New(const fvMesh&)") - << "Unknown fluidThermo type " << modelType << nl << nl - << "Valid fluidThermo types are:" << nl - << fvMeshConstructorTablePtr_->sortedToc() << nl - << exit(FatalError); + FatalErrorIn + ( + "inline const Foam::interpolation<Foam::vector>&" + "Foam::LiftForce<CloudType>::curlUcInterp() const" + ) << "Carrier phase curlUc interpolation object not set" + << abort(FatalError); } - return autoPtr<fluidThermo>(cstrIter()(mesh)); + return curlUcInterpPtr_(); } diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Lift/SaffmanMeiLift/SaffmanMeiLiftForce.C b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Lift/SaffmanMeiLift/SaffmanMeiLiftForce.C new file mode 100644 index 0000000000000000000000000000000000000000..d6d8dda976a8e8514b3123714bab7ce22a1647e6 --- /dev/null +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Lift/SaffmanMeiLift/SaffmanMeiLiftForce.C @@ -0,0 +1,93 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "SaffmanMeiLiftForce.H" +#include "mathematicalConstants.H" + +using namespace Foam::constant; + +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // + +template<class CloudType> +Foam::scalar Foam::SaffmanMeiLiftForce<CloudType>::SaffmanMeiLiftForce::Cl +( + const typename CloudType::parcelType& p, + const vector& curlUc, + const scalar Re, + const scalar muc +) const +{ + scalar Rew = p.rhoc()*mag(curlUc)*sqr(p.d())/(muc + ROOTVSMALL); + scalar beta = 0.5*(Rew/(Re + ROOTVSMALL)); + scalar alpha = 0.3314*sqrt(beta); + scalar f = (1.0 - alpha)*exp(-0.1*Re) + alpha; + + scalar Cld = 0.0; + if (Re < 40) + { + Cld = 6.46*f; + } + else + { + Cld = 6.46*0.0524*sqrt(beta*Re); + } + + return 3.0/(mathematical::twoPi*sqrt(Rew))*Cld; +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class CloudType> +Foam::SaffmanMeiLiftForce<CloudType>::SaffmanMeiLiftForce +( + CloudType& owner, + const fvMesh& mesh, + const dictionary& dict, + const word& forceType +) +: + LiftForce<CloudType>(owner, mesh, dict, forceType) +{} + + +template<class CloudType> +Foam::SaffmanMeiLiftForce<CloudType>::SaffmanMeiLiftForce +( + const SaffmanMeiLiftForce& lf +) +: + LiftForce<CloudType>(lf) +{} + + +// * * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * // + +template<class CloudType> +Foam::SaffmanMeiLiftForce<CloudType>::~SaffmanMeiLiftForce() +{} + + +// ************************************************************************* // diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Lift/SaffmanMeiLift/SaffmanMeiLiftForce.H b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Lift/SaffmanMeiLift/SaffmanMeiLiftForce.H new file mode 100644 index 0000000000000000000000000000000000000000..66d29416b922fd7b4224ce8731a6bcfadf840c5c --- /dev/null +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Lift/SaffmanMeiLift/SaffmanMeiLiftForce.H @@ -0,0 +1,117 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +Class + Foam::SaffmanMeiLiftForce + +Description + Saffman-Mei particle lift force model applicable to spherical particles. + +SourceFiles + SaffmanMeiLiftForce.C + +\*---------------------------------------------------------------------------*/ + +#ifndef SaffmanMeiLiftForce_H +#define SaffmanMeiLiftForce_H + +#include "LiftForce.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class SaffmanMeiLiftForce Declaration +\*---------------------------------------------------------------------------*/ + +template<class CloudType> +class SaffmanMeiLiftForce +: + public LiftForce<CloudType> +{ +protected: + + // Protected Member Functions + + //- Calculate the lift coefficient + virtual scalar Cl + ( + const typename CloudType::parcelType& p, + const vector& curlUc, + const scalar Re, + const scalar muc + ) const; + + +public: + + //- Runtime type information + TypeName("SaffmanMeiLiftForce"); + + + // Constructors + + //- Construct from mesh + SaffmanMeiLiftForce + ( + CloudType& owner, + const fvMesh& mesh, + const dictionary& dict, + const word& forceType = typeName + ); + + //- Construct copy + SaffmanMeiLiftForce(const SaffmanMeiLiftForce& lf); + + //- Construct and return a clone + virtual autoPtr<ParticleForce<CloudType> > clone() const + { + return autoPtr<ParticleForce<CloudType> > + ( + new SaffmanMeiLiftForce<CloudType>(*this) + ); + } + + + //- Destructor + virtual ~SaffmanMeiLiftForce(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository + #include "SaffmanMeiLiftForce.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Lift/TomiyamaLift/TomiyamaLiftForce.C b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Lift/TomiyamaLift/TomiyamaLiftForce.C new file mode 100644 index 0000000000000000000000000000000000000000..87c482bec53936b5c47ce7e46283c236833dcc4a --- /dev/null +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Lift/TomiyamaLift/TomiyamaLiftForce.C @@ -0,0 +1,95 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "TomiyamaLiftForce.H" + +// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // + +template<class CloudType> +Foam::scalar Foam::TomiyamaLiftForce<CloudType>::TomiyamaLiftForce::Cl +( + const typename CloudType::parcelType& p, + const vector& curlUc, + const scalar Re, + const scalar muc +) const +{ + const vector& g = this->owner().g().value(); + + scalar Eo = p.Eo(g, p.d(), sigma_); + scalar dH = p.d()*cbrt(1.0 + 0.163*pow(Eo, 0.757)); + scalar Eod = p.Eo(g, dH, sigma_); + scalar f = 0.00105*pow3(Eod) - 0.0159*sqr(Eod) - 0.0204*Eod + 0.474; + + if (Eod <= 4) + { + return min(0.288*tanh(0.121*Re), f); + } + else if ((Eod > 4) && (Eod <= 10)) + { + return f; + } + else + { + return -0.27; + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +template<class CloudType> +Foam::TomiyamaLiftForce<CloudType>::TomiyamaLiftForce +( + CloudType& owner, + const fvMesh& mesh, + const dictionary& dict, + const word& forceType +) +: + LiftForce<CloudType>(owner, mesh, dict, forceType), + sigma_(readScalar(this->coeffs().lookup("sigma"))) +{} + + +template<class CloudType> +Foam::TomiyamaLiftForce<CloudType>::TomiyamaLiftForce +( + const TomiyamaLiftForce& lf +) +: + LiftForce<CloudType>(lf), + sigma_(lf.sigma_) +{} + + +// * * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * // + +template<class CloudType> +Foam::TomiyamaLiftForce<CloudType>::~TomiyamaLiftForce() +{} + + +// ************************************************************************* // diff --git a/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Lift/TomiyamaLift/TomiyamaLiftForce.H b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Lift/TomiyamaLift/TomiyamaLiftForce.H new file mode 100644 index 0000000000000000000000000000000000000000..3edf43b0a3fac9cf92ecf37b83c5d40df5358e48 --- /dev/null +++ b/src/lagrangian/intermediate/submodels/Kinematic/ParticleForces/Lift/TomiyamaLift/TomiyamaLiftForce.H @@ -0,0 +1,123 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +Class + Foam::TomiyamaLiftForce + +Description + Tomiyama particle lift force model applicable to deformable bubbles. + +SourceFiles + TomiyamaLiftForce.C + +\*---------------------------------------------------------------------------*/ + +#ifndef TomiyamaLiftForce_H +#define TomiyamaLiftForce_H + +#include "LiftForce.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class TomiyamaLiftForce Declaration +\*---------------------------------------------------------------------------*/ + +template<class CloudType> +class TomiyamaLiftForce +: + public LiftForce<CloudType> +{ +protected: + + // Protected data + + //- Surface tension + scalar sigma_; + + + // Protected Member Functions + + //- Calculate the lift coefficient + virtual scalar Cl + ( + const typename CloudType::parcelType& p, + const vector& curlUc, + const scalar Re, + const scalar muc + ) const; + + +public: + + //- Runtime type information + TypeName("TomiyamaLift"); + + + // Constructors + + //- Construct from mesh + TomiyamaLiftForce + ( + CloudType& owner, + const fvMesh& mesh, + const dictionary& dict, + const word& forceType = typeName + ); + + //- Construct copy + TomiyamaLiftForce(const TomiyamaLiftForce& lf); + + //- Construct and return a clone + virtual autoPtr<ParticleForce<CloudType> > clone() const + { + return autoPtr<ParticleForce<CloudType> > + ( + new TomiyamaLiftForce<CloudType>(*this) + ); + } + + + //- Destructor + virtual ~TomiyamaLiftForce(); +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository + #include "TomiyamaLiftForce.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/lagrangian/intermediate/submodels/SubModelBase.C b/src/lagrangian/intermediate/submodels/SubModelBase.C index 952abaf5bb3b525ab266f8378613f564acd32920..2df1f5207c08f0327bcca6a83cb50c6a59168927 100644 --- a/src/lagrangian/intermediate/submodels/SubModelBase.C +++ b/src/lagrangian/intermediate/submodels/SubModelBase.C @@ -199,10 +199,11 @@ template<class CloudType> template<class Type> Type Foam::SubModelBase<CloudType>::getBaseProperty ( - const word& entryName + const word& entryName, + const Type& defaultValue ) const { - Type result = pTraits<Type>::zero; + Type result = defaultValue; const dictionary& properties = this->owner().outputProperties(); @@ -216,6 +217,24 @@ Type Foam::SubModelBase<CloudType>::getBaseProperty } +template<class CloudType> +template<class Type> +void Foam::SubModelBase<CloudType>::getBaseProperty +( + const word& entryName, + Type& value +) const +{ + const dictionary& properties = this->owner().outputProperties(); + + if (properties.found(baseName_)) + { + const dictionary& baseDict = properties.subDict(baseName_); + baseDict.readIfPresent(entryName, value); + } +} + + template<class CloudType> template<class Type> void Foam::SubModelBase<CloudType>::setBaseProperty @@ -243,10 +262,11 @@ template<class CloudType> template<class Type> Type Foam::SubModelBase<CloudType>::getModelProperty ( - const word& entryName + const word& entryName, + const Type& defaultValue ) const { - Type result = pTraits<Type>::zero; + Type result = defaultValue; const dictionary& properties = this->owner().outputProperties(); diff --git a/src/lagrangian/intermediate/submodels/SubModelBase.H b/src/lagrangian/intermediate/submodels/SubModelBase.H index bc073213c7e56a69d4c84ad32ba209922430083e..0427c162f7e305d317fd21fdd8e4f04ee80617d6 100644 --- a/src/lagrangian/intermediate/submodels/SubModelBase.H +++ b/src/lagrangian/intermediate/submodels/SubModelBase.H @@ -163,25 +163,42 @@ public: //- Return non-const access to the owner cloud for manipulation CloudType& owner(); - //- Retrieve generic property from sub-model - template<class Type> - Type getModelProperty(const word& entryName) const; - - //- Retrieve generic property from sub-model - template<class Type> - void getModelProperty(const word& entryName, Type& value) const; - - //- Add generic property from sub-model - template<class Type> - void setModelProperty(const word& entryName, const Type& value); - - //- Retrieve generic property from base model - template<class Type> - Type getBaseProperty(const word& entryName) const; - - //- Add generic property from base model - template<class Type> - void setBaseProperty(const word& entryName, const Type& value); + // Base properties + + //- Retrieve generic property from the base model + template<class Type> + Type getBaseProperty + ( + const word& entryName, + const Type& defaultValue = pTraits<Type>::zero + ) const; + + //- Retrieve generic property from the base model + template<class Type> + void getBaseProperty(const word& entryName, Type& value) const; + + //- Add generic property to the base model + template<class Type> + void setBaseProperty(const word& entryName, const Type& value); + + + // Model properties + + //- Retrieve generic property from the sub-model + template<class Type> + Type getModelProperty + ( + const word& entryName, + const Type& defaultValue = pTraits<Type>::zero + ) const; + + //- Retrieve generic property from the sub-model + template<class Type> + void getModelProperty(const word& entryName, Type& value) const; + + //- Add generic property to the sub-model + template<class Type> + void setModelProperty(const word& entryName, const Type& value); // I-O diff --git a/src/postProcessing/functionObjects/IO/IOFunctionObjectsDoc.H b/src/postProcessing/functionObjects/IO/IOFunctionObjectsDoc.H new file mode 100644 index 0000000000000000000000000000000000000000..8466362578dc757f3c5d207f5c3c1bfdd79e6e6a --- /dev/null +++ b/src/postProcessing/functionObjects/IO/IOFunctionObjectsDoc.H @@ -0,0 +1,30 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +\defgroup grpIOFunctionObjects Input/outuput function objects +@{ + \ingroup grpFunctionObjects + This group contains input/output-based function objects +@} + +\*---------------------------------------------------------------------------*/ diff --git a/src/postProcessing/functionObjects/IO/partialWrite/partialWrite.H b/src/postProcessing/functionObjects/IO/partialWrite/partialWrite.H index 40538f20ee5b5031d9a053e3f382b5ba3f4d5a26..a5165aaf51eba138191684bacc3ff8aec690cfac 100644 --- a/src/postProcessing/functionObjects/IO/partialWrite/partialWrite.H +++ b/src/postProcessing/functionObjects/IO/partialWrite/partialWrite.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,11 +24,37 @@ License Class Foam::partialWrite -Description - Allows some fields/registered objects to be written more often than others. +Group + grpIOFunctionObjects - Works in the opposite way: deletes at intermediate times all - but selected fields. +Description + This function object allows user-selected fields/registered objects to be + written at a custom write interval. It operates by deleting all entries + except those selected after writing. + + Example of function object specification: + \verbatim + partialWrite1 + { + type partialWrite; + functionObjectLibs ("libIOFunctionObjects.so"); + ... + objectNames (p U T); + writeInterval 100; + } + \endverbatim + + \heading Function object usage + \table + Property | Description | Required | Default value + type | type name: partialWrite | yes | + objectNames | objects to write | yes | + writeInterval | write interval | yes | + \endtable + +SeeAlso + Foam::functionObject + Foam::OutputFilterFunctionObject SourceFiles partialWrite.C @@ -55,7 +81,7 @@ class dictionary; class mapPolyMesh; /*---------------------------------------------------------------------------*\ - Class partialWrite Declaration + Class partialWrite Declaration \*---------------------------------------------------------------------------*/ class partialWrite diff --git a/src/postProcessing/functionObjects/IO/removeRegisteredObject/removeRegisteredObject.H b/src/postProcessing/functionObjects/IO/removeRegisteredObject/removeRegisteredObject.H index 79bed8aa1cb984efd60d254dfca26b17dbbebb19..b25925c3c1c116372420fc297251c6ea45f2a2a4 100644 --- a/src/postProcessing/functionObjects/IO/removeRegisteredObject/removeRegisteredObject.H +++ b/src/postProcessing/functionObjects/IO/removeRegisteredObject/removeRegisteredObject.H @@ -24,8 +24,33 @@ License Class Foam::removeRegisteredObject +Group + grpIOFunctionObjects + Description - Removes registered IO objects if present in the database + This function object removes registered objects if present in the database + + Example of function object specification: + \verbatim + removeRegisteredObject1 + { + type removeRegisteredObject; + functionObjectLibs ("libIOFunctionObjects.so"); + ... + objectNames (obj1 obj2); + } + \endverbatim + + \heading Function object usage + \table + Property | Description | Required | Default value + type | type name: removeRegisteredObject | yes | + objectNames | objects to remove | yes | + \endtable + +SeeAlso + Foam::functionObject + Foam::OutputFilterFunctionObject SourceFiles removeRegisteredObject.C diff --git a/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.C b/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.C index f10a84eece70d01301a635d07d21d1b7a4fbd651..c98ae3696b75148edc4fcffc026033a718acdde8 100644 --- a/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.C +++ b/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.C @@ -26,6 +26,7 @@ License #include "writeDictionary.H" #include "dictionary.H" #include "Time.H" +#include "HashSet.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -108,7 +109,9 @@ Foam::writeDictionary::~writeDictionary() void Foam::writeDictionary::read(const dictionary& dict) { - dict.lookup("dictNames") >> dictNames_; + wordList dictNames(dict.lookup("dictNames")); + HashSet<word> uniqueNames(dictNames); + dictNames_ = uniqueNames.toc(); digests_.setSize(dictNames_.size(), SHA1Digest()); diff --git a/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.H b/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.H index fb7a2952fd1276522d76543a2eceac64652ac476..8c21f32489ddd9367751a90f6e61302c2d691406 100644 --- a/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.H +++ b/src/postProcessing/functionObjects/IO/writeDictionary/writeDictionary.H @@ -24,6 +24,9 @@ License Class Foam::writeDictionary +Group + grpUtilitiesFunctionObjects + Description This function object writes dictionaries on start-up, and on change diff --git a/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.H b/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.H index a33441ae333dfd1bc01dcd06d4d0a0ebd41dd3c4..7dbdb4bd258edc73c072f5a74ecc5eb9fd83f085 100644 --- a/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.H +++ b/src/postProcessing/functionObjects/IO/writeRegisteredObject/writeRegisteredObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,34 @@ License Class Foam::writeRegisteredObject +Group + grpIOFunctionObjects + Description - Takes over the writing of registered IO objects + This function object takes-over the writing of objects registered to the + database. + + Example of function object specification: + \verbatim + writeRegisteredObject1 + { + type writeRegisteredObject; + functionObjectLibs ("libIOFunctionObjects.so"); + ... + objectNames (obj1 obj2); + } + \endverbatim + + \heading Function object usage + \table + Property | Description | Required | Default value + type | type name: writeRegisteredObject | yes | + objectNames | objects to write | yes | + \endtable + +SeeAlso + Foam::functionObject + Foam::OutputFilterFunctionObject SourceFiles writeRegisteredObject.C diff --git a/src/postProcessing/functionObjects/cloud/cloudFunctionObjectsDoc.H b/src/postProcessing/functionObjects/cloud/cloudFunctionObjectsDoc.H new file mode 100644 index 0000000000000000000000000000000000000000..2ac4b66db489ed419625a7eae35a2d792b4a86b0 --- /dev/null +++ b/src/postProcessing/functionObjects/cloud/cloudFunctionObjectsDoc.H @@ -0,0 +1,33 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +\defgroup grpCloudFunctionObjects Cloud function objects +@{ + \ingroup grpFunctionObjects + This group contains cloud-based function objects. + + Function objects in this group are packaged into the + libcloudFunctionObjects.so library. +@} + +\*---------------------------------------------------------------------------*/ diff --git a/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.H b/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.H index 04e6468d689e85af78d75e53c48b0e5531a6c010..bf75dcacc4e719d33675b739bbb4da4efdd54ff7 100644 --- a/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.H +++ b/src/postProcessing/functionObjects/cloud/cloudInfo/cloudInfo.H @@ -24,12 +24,44 @@ License Class Foam::cloudInfo +Group + grpCloudFunctionObjects + Description - Outputs cloud information to file + This function object outputs Lagrangian cloud information to a file. The + current outputs include: + - total current number of parcels + - total current mass of parcels + + Example of function object specification: + \verbatim + cloudInfo1 + { + type cloudInfo; + functionObjectLibs ("libcloudFunctionObjects.so"); + ... + clouds + ( + kinematicCloud1 + thermoCloud1 + ); + } + \endverbatim + + + \heading Function object usage + + \table + Property | Description | Required | Default value + type | type name: cloudInfo | yes | + clouds | list of clouds names to process |yes | + \endtable + + The output data of each cloud is written to a file named \<cloudName\>.dat - Currently outputs: - - total current number of parcels - - total current mass of parcels +SeeAlso + Foam::functionObject + Foam::OutputFilterFunctionObject SourceFiles cloudInfo.C diff --git a/src/postProcessing/functionObjects/doc/functionObjects.dox b/src/postProcessing/functionObjects/doc/functionObjects.dox new file mode 100644 index 0000000000000000000000000000000000000000..098b7ae12dd1546426fc7051e9a0497daace53d0 --- /dev/null +++ b/src/postProcessing/functionObjects/doc/functionObjects.dox @@ -0,0 +1,93 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +\page pagePostProcessing Post-processing + +\section secFunctionObjects Function objects + +OpenFOAM includes a collection of \ref grpFunctionObjects that offer users the +opportunity to closely manage their computational analyses. These objects can +be applied to manipulate the workflow process, and provide a mechanism to +extract predicted field and derived quantities at run-time. Alternatively, +the actions can be executed afterwards using the \c execFlowFunctionObjects +utility. + +\linebreak +The current range of features comprises of: +- \ref grpCloudFunctionObjects +- \ref grpFieldFunctionObjects +- \ref grpForcesFunctionObjects +- \ref grpIOFunctionObjects +- \ref grpJobControlFunctionObjects +- \ref grpUtilitiesFunctionObjects + +\linebreak +\subsection secFieldFunctionObjectUsage Using function objects + +Function objects are defined by additional entries in the +$FOAM_CASE/system/controlDict input dictionary. Each object is listed in a +\c functions sub-dictionary entry, e.g. the following shows the input options +applicable to `output' -type objects: + +\verbatim +functions +{ + myFunctionObject // user-defined name of function object entry + { + type functionObjectType; + libs ("libMyFunctionObjectlib.so"); + region defaultRegion; + enabled yes; + timeStart 0; + timeEnd 10; + outputControl outputTime; + outputInterval 1; + ... + } +} +\endverbatim + +Where: +\table + Property | Description | Required | Default value + type | type of function object | yes | + libs | libraries containing object implementation | yes | + region | name of region for multi-region cases | no | + enabled | on/off switch | no | yes + timeStart| start time | no | + timeEnd | end time | no | + outputControl | when to output: either 'outputTime' or 'timeStep'| no | timeStep + outputInterval| steps between output when outputControl=timeStep | no | 1 +\endtable + +The sub-dictionary name \c myFunctionObject is chosen by the user, and is +typically used as the name of the output folder for any derived data. The +\c type entry defines the type of function object properties that follow. +Since the function objects are packaged into separate libraries, the user must +tell the code where to find the function object implementation, identified +using the \c libs entry. + + +\*---------------------------------------------------------------------------*/ diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C index be8b03a5b5157f9a1e58af3df0afae64fd18095c..5d63cced6c714f1c11c266bc973cab777b314414 100644 --- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C +++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -245,7 +245,7 @@ void Foam::fieldAverage::writeAveragingProperties() const void Foam::fieldAverage::readAveragingProperties() { - if (cleanRestart_) + if (resetOnRestart_) { Info<< "fieldAverage: starting averaging at time " << obr_.time().timeName() << nl << endl; @@ -306,7 +306,7 @@ Foam::fieldAverage::fieldAverage obr_(obr), active_(true), prevTimeIndex_(-1), - cleanRestart_(false), + resetOnRestart_(false), resetOnOutput_(false), faItems_(), meanScalarFields_(), @@ -354,7 +354,7 @@ void Foam::fieldAverage::read(const dictionary& dict) { if (active_) { - dict.readIfPresent("cleanRestart", cleanRestart_); + dict.readIfPresent("resetOnRestart", resetOnRestart_); dict.readIfPresent("resetOnOutput", resetOnOutput_); dict.lookup("fields") >> faItems_; diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H index 3e0ddad528508831ae55dced64bb0fef3bcac730..f1883b1b7d21862a92035697006db7f97254719b 100644 --- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H +++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverage/fieldAverage.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,28 +24,52 @@ License Class Foam::fieldAverage +Group + grpFieldFunctionObjects + Description - Calculates the field averages given list of fieldAverageItems, e.g. + This function object calculates average quantities for a user-specified + selection of fields. Fields are entered as a list of sub-dictionaries, + which indicate the type of averages to perform, and can be updated during + the calculation. The current options include: + - \c mean: arithmetic mean: + \f[ + \overline{x} = \frac{1}{N}\displaystyle\sum\limits_{i=0}^N x_i + \f] + - \c prime2Mean: prime-squared mean + \f[ + \overline{x'}^2 = \frac{1}{N}\displaystyle\sum\limits_{i=0}^N + (x_i - \overline{x})^2 + \f] + - base: average over 'time', or 'iteration' (\f$N\f$ in the above) + - window: optional averaging window, specified in 'base' units + + Average field names are constructed by concatenating the base field with + the averaging type, e.g. when averaging field 'U', the resultant fields + are: + - arithmetic mean field, UMean + - prime-squared field, UPrime2Mean + + Information regarding the number of averaging steps, and total averaging + time are written on a per-field basis to the + \c fieldAveragingProperties dictionary, located in \<time\>/uniform + + When restarting form a previous calculation, the averaging is continuous. + However, the averaging process can be restarted using the \c resetOnRestart + option. + To restart the averaging process after each calculation output time, use + the \c resetOnOutput option. + + Example of function object specification: \verbatim fieldAverage1 { - // Type of functionObject type fieldAverage; - - // Where to load it from (if not already in solver) functionObjectLibs ("libfieldFunctionObjects.so"); - - // Whether to perform a clean restart, or start from previous - // averaging info if available - cleanRestart true; - - // Whether to reset the averaged fields after they have been written. - // Used to average over only the preceding write interval for transient - // cases. - resetOnOutput true; - - // Fields to be averaged. runTime modifiable! + ... + resetOnRestart true; + resetOnOutput false; fields ( U @@ -61,24 +85,30 @@ Description base time; } ); + } \endverbatim - Member function calcAverages() calculates the averages. + \heading Function object usage + \table + Property | Description | Required | Default value + type | type name: fieldAverage | yes | + resetOnRestart | flag to reset the averaging on restart | yes | + resetOnOutput| flag to reset the averaging on output | yes | + fields | list of fields and averaging options | yes | + \endtable - Member function fieldAverage::write() calls calcAverages(). Average - field names are constructed by concatenating the base field with the - averaging type, e.g. - - base field, U - - arithmetic mean field, UMean - - prime-squared field, UPrime2Mean - Information regarding the number of averaging steps, and total averaging - time are written on a (base) per-field basis to the - fieldAveragingProperties dictionary, located in \<time\>/uniform +Note + To employ the \c prime2Mean option, the \c mean option must be selecetd. + +SeeAlso + Foam::functionObject + Foam::OutputFilterFunctionObject SourceFiles fieldAverage.C fieldAverageTemplates.C + fieldAverageItem.C \*---------------------------------------------------------------------------*/ @@ -134,10 +164,10 @@ protected: //- Time at last call, prevents repeated averaging label prevTimeIndex_; - //- Clean restart flag - Switch cleanRestart_; + //- Reset the averaging process on restart flag + Switch resetOnRestart_; - //- resetOnOutput flag + //- Reset the averaging process on output flag Switch resetOnOutput_; //- List of field average items, describing what averages to be diff --git a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.H b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.H index 10d1e08ad3b346b3ae395e5d2d1b872ad1f1243d..992b5e393f677cc82f8f12629ac3b89b0819f58e 100644 --- a/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.H +++ b/src/postProcessing/functionObjects/field/fieldAverage/fieldAverageItem/fieldAverageItem.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,16 +25,16 @@ Class Foam::fieldAverageItem Description - Helper class to describe what form of averaging to apply. A set will be + Helper class to describe what form of averaging to apply. A set will be applied to each base field in Foam::fieldAverage, of the form: \verbatim - { - mean on; - prime2Mean on; - base time; // iteration - window 200; // optional averaging window - } + { + mean on; + prime2Mean on; + base time; // iteration + window 200; // optional averaging window + } \endverbatim The averaging window corresponds to the averaging interval (iters or time) diff --git a/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.H b/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.H index 138d2d09d5fbe65cc6b424de9aa5337b441ff6df..e583e6b168cae3c2d9162a171100ab9c62240e82 100644 --- a/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.H +++ b/src/postProcessing/functionObjects/field/fieldCoordinateSystemTransform/fieldCoordinateSystemTransform.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,12 +24,52 @@ License Class Foam::fieldCoordinateSystemTransform +Group + grpFieldFunctionObjects + Description - Transforms fields from global cartesian co-ordinates to local co-ordinate - system + This function object transforms a user-specified selection of fields from + global Cartesian co-ordinates to a local co-ordinate system. The fields + are run-time modifiable. + + Example of function object specification: + \verbatim + fieldCoordinateSystemTransform1 + { + type fieldCoordinateSystemTransform; + functionObjectLibs ("libfieldFunctionObjects.so"); + ... + fields + ( + U + UMean + UPrime2Mean + ); + coordinateSystem + { + origin (0.001 0 0); + e1 (1 0.15 0); + e3 (0 0 -1); + } + } + \endverbatim + + \heading Function object usage + \table + Property | Description | Required | Default value + type | type name: fieldCoordinateSystemTransform | yes | + fields | list of fields to be transformed |yes | + coordinateSystem | local co-ordinate system | yes | + \endtable + +SeeAlso + Foam::functionObject + Foam::OutputFilterFunctionObject + Foam::coordinateSystem SourceFiles fieldCoordinateSystemTransform.C + fieldCoordinateSystemTransformTemplates.C IOfieldCoordinateSystemTransform.H \*---------------------------------------------------------------------------*/ diff --git a/src/postProcessing/functionObjects/field/fieldFunctionObjectsDoc.H b/src/postProcessing/functionObjects/field/fieldFunctionObjectsDoc.H new file mode 100644 index 0000000000000000000000000000000000000000..6c934be48ecefb962b4dcbebfbdf67753387a27a --- /dev/null +++ b/src/postProcessing/functionObjects/field/fieldFunctionObjectsDoc.H @@ -0,0 +1,33 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +\defgroup grpFieldFunctionObjects Field function objects +@{ + \ingroup grpFunctionObjects + This group contains field-based function objects + + Function objects in this group are packaged into the + libfieldFunctionObjects.so library. +@} + +\*---------------------------------------------------------------------------*/ diff --git a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.H b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.H index 3cccb9668d83fb50f1a2b0d3ef61a0fd388615ed..a2fbb10f710f8d3a5a6393ada49898dbc5fd380c 100644 --- a/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.H +++ b/src/postProcessing/functionObjects/field/fieldMinMax/fieldMinMax.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,14 +24,48 @@ License Class Foam::fieldMinMax -Description - Calculates scalar minimim and maximum field values. - - For variables with rank > 0, computes the magnitude of the min/max - values. - - Data written to the file \<timeDir\>/fieldMinMax.dat +Group + grpFieldFunctionObjects +Description + This function object calculates the value and position of scalar minimim + and maximum for a list of user-specified fields. For variables with a rank + greater than zero, either the min/max of a component value or the magnitude + is reported. When operating in parallel, the processor owning the value + is also given. + + Example of function object specification: + \verbatim + fieldMinMax1 + { + type fieldMinMax; + functionObjectLibs ("libfieldFunctionObjects.so"); + ... + write yes; + log yes; + mode magnitude; + fields + ( + U + p + ); + } + \endverbatim + + \heading Function object usage + \table + Property | Description | Required | Default value + type | type name: fieldMinMax | yes | + write | write min/max data to file | no | yes + log | write min/max data to standard output | no | no + mode | calculation mode: magnitude or component | no | magnitude + \endtable + + Output data is written to the file \<timeDir\>/fieldMinMax.dat + +SeeAlso + Foam::functionObject + Foam::OutputFilterFunctionObject SourceFiles fieldMinMax.C diff --git a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.H b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.H index 5e857e02f28db804e0a63b5efeb9045eecadb116..7548f0e2a820c2b3af4bb0a6ad52b999bd38aeca 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.H +++ b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.H @@ -24,39 +24,75 @@ License Class Foam::fieldValues::cellSource +Group + grpFieldFunctionObjects + Description - Cell source variant of field value function object. Values of user- - specified fields reported for collections of cells. + This function object provides a 'cell source' variant of the fieldValues + function object. Given a list of user-specified fields and a selection + of mesh cells, a number of operations can be performed, such as sums, + averages and integrations. + - cellObj1 // Name also used to identify output folder + Example of function object specification: + \verbatim + cellSource1 { type cellSource; functionObjectLibs ("libfieldFunctionObjects.so"); - enabled true; - outputControl outputTime; - log true; // log to screen? - valueOutput true; // Write values at run-time output times? - source cellZone; // Type of cell source + ... + log true; + valueOutput true; + source cellZone; sourceName c0; operation volAverage; - weightField alpha1; // optional weight field + weightField alpha1; fields ( p U ); } - - where operation is one of: - - none - - sum - - average - - weightedAverage - - volAverage - - volIntegrate - - CoV (Coefficient of variation: standard deviation/mean) - - min - - max + \endverbatim + + \heading Function object usage + \table + Property | Description | Required | Default value + type | type name: cellSource | yes | + log | write data to standard output | no | no + valueOutput | write the raw output values | yes | + source | cell source: see below | yes | + sourceName | name of cell source if required | no | + operation | operation to perform | yes | + weightField | name of field to apply weighting | no | + fields | list of fields to operate on | yes | + \endtable + + \linebreak + Where \c source is defined by + \plaintable + cellZone | requires a 'sourceName' entry to specify the cellZone + all | all cells + \endplaintable + + \linebreak + The \c operation is one of: + \plaintable + none | no operation + sum | sum + average | ensemble average + weightedAverage | weighted average + volAverage | volume weighted average + volIntegrate | volume integral + min | minimum + max | maximum + CoV | coefficient of variation: standard deviation/mean + \endplaintable + +SeeAlso + Foam::fieldValues + Foam::functionObject + Foam::OutputFilterFunctionObject SourceFiles cellSource.C diff --git a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.H b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.H index c4473b352a8209921d1381805fe17c005e554db1..fafedc3a128ef9d404b2ccca0256ca141bf23c32 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.H +++ b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.H @@ -24,24 +24,33 @@ License Class Foam::fieldValues::faceSource -Description - Face source variant of field value function object. Values of user- - specified fields reported for collections of faces. +Group + grpFieldFunctionObjects - faceObj1 // Name also used to identify output folder +Description + This function object provides a 'face source' variant of the fieldValues + function object. Given a list of user-specified fields and a selection + of mesh (or general surface) faces, a number of operations can be + performed, such as sums, averages and integrations. + + \linebreak + For example, to calculate the volumetric or mass flux across a patch, + apply the 'sum' operator to the flux field (typically \c phi) + + Example of function object specification: + \verbatim + faceSource1 { type faceSource; functionObjectLibs ("libfieldFunctionObjects.so"); - enabled true; - outputControl outputTime; - log true; // log to screen? - valueOutput true; // write the output values - surfaceFormat none; // output value format (if valueOutput) - source faceZone; // type of face source: - // faceZone, patch, sampledSurface - sourceName f0; // faceZone name, see below + ... + log yes; + valueOutput true; + surfaceFormat none; + source faceZone; + sourceName f0; operation sum; - weightField alpha1; // optional weight field + weightField alpha1; fields ( p @@ -49,42 +58,69 @@ Description U ); } - - source: - - faceZone : requires a 'sourceName' entry to specify the faceZone - - patch : "" patch - - sampledSurface : requires a 'sampledSurfaceDict' subdictionary. See e.g. - sampleDict. - - operation is one of: - - none - - sum - - average - - weightedAverage - - areaAverage - - areaIntegrate - - min - - max - - CoV (Coefficient of variation: standard deviation/mean) - - areaNormalAverage (vector with first component (average of) inproduct - of value and face area vector) - - areaNormalIntegrate ( ,, ,, (sum of) ,, - - Notes: + \endverbatim + + \heading Function object usage + \table + Property | Description | Required | Default value + type | type name: faceSource | yes | + log | write data to standard output | no | no + valueOutput | write the output values | yes | + surfaceFormat | output value format | no | + source | face source: see below | yes | + sourceName | name of face source if required | no | + operation | operation to perform | yes | + weightField | name of field to apply weighting | no | + fields | list of fields to operate on | yes | + \endtable + + \linebreak + Where \c source is defined by + \plaintable + faceZone | requires a 'sourceName' entry to specify the faceZone + patch | requires a 'sourceName' entry to specify the patch + sampledSurface | requires a 'sampledSurfaceDict' sub-dictionary + \endplaintable + + \linebreak + The \c operation is one of: + \plaintable + none | no operation + sum | sum + average | ensemble average + weightedAverage | weighted average + areaAverage | area weighted average + areaIntegrate | area integral + min | minimum + max | maximum + CoV | coefficient of variation: standard deviation/mean + areaNormalAverage| area weighted average in face normal direction + areaNormalIntegrate | area weighted integral in face normal directon + \endplaintable + +Note + - The values reported by the areaNormalAverage and areaNormalIntegrate + operations are written as the first component of a field with the same + rank as the input field. - faces on empty patches get ignored - - if the field is a volField the faceZone can only consist of boundary - faces. - - all fields get oriented according to the faceZone (so you might e.g. see - negative pressure) - - using sampledSurfaces: - - they do not do surface fields - - if interpolate=true they use interpolationCellPoint - otherwise they use cell values - - each triangle in sampledSurface is logically only in one cell - so interpolation will be wrong when triangles are larger than - cells. This can only happen for sampling on triSurfaceMesh. - - take care when using isoSurfaces - these might have duplicate - triangles so integration might be wrong + - if the field is a volField the \c faceZone can only consist of boundary + faces + - all fields are oriented according to the \c faceZone (so you might + e.g. see negative pressure) + - using \c sampledSurfaces: + - not available for surface fields + - if interpolate=true they use \c interpolationCellPoint + otherwise they use cell values + - each triangle in \c sampledSurface is logically only in one cell + so interpolation will be wrong when triangles are larger than + cells. This can only happen for sampling on a \c triSurfaceMesh + - take care when using isoSurfaces - these might have duplicate + triangles and so integration might be wrong + +SeeAlso + Foam::fieldValues + Foam::functionObject + Foam::OutputFilterFunctionObject SourceFiles faceSource.C diff --git a/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValue.H b/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValue.H index 44e6c6a89508111d7f231237ad03f8289b33bd21..2a67404c436ba807879774ad38662c11d63875f4 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValue.H +++ b/src/postProcessing/functionObjects/field/fieldValues/fieldValue/fieldValue.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,6 +24,9 @@ License Class Foam::fieldValue +Group + grpFieldFunctionObjects + Description Base class for field value -based function objects. diff --git a/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.H b/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.H index 11feb11041e68494f2c7bb2a49fc6a506983eb57..e6be5d7948ee44e1ef2bbcef3544e843bcb36c1a 100644 --- a/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.H +++ b/src/postProcessing/functionObjects/field/nearWallFields/nearWallFields.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,31 +24,45 @@ License Class Foam::nearWallFields +Group + grpFieldFunctionObjects + Description - Samples near-patch volFields + This function object samples near-patch volume fields + + Fields are stored + - every time step the field is updated with new values + - at output it writes the fields - Holds fields - - every timestep the field get updated with new values - - at write it writes the fields - so this functionObject can either be used to calculate a new field - as a postprocessing step or (since the fields are registered) - use these in another functionObject (e.g. faceSource). + This functionObject can either be used + - to calculate a new field as a post-processing step or + - since the fields are registered, used in another functionObject - surfaceValues + Example of function object specification: + \verbatim + nearWallFields1 { type nearWallFields; - .. - enabled true; - outputControl outputTime; - .. - // Name of volField and corresponding surfaceField + functionObjectLibs ("libfieldFunctionObjects.so"); + ... fields ((p pNear)(U UNear)); - // Name of patch to sample patches (movingWall); - // Distance away from the wall - distance 0.13; // distance away from wall + distance 0.13; } + \endverbatim + + \heading Function object usage + \table + Property | Description | Required | Default value + type | type name: nearWallFields | yes | + fields | list of fields with correspoding output field names | yes | + patches | list of patches to sample | yes | + distance | distance from patch to sample | yes | + \endtable +SeeAlso + Foam::functionObject + Foam::OutputFilterFunctionObject SourceFiles nearWallFields.C @@ -74,7 +88,7 @@ class dictionary; class mapPolyMesh; /*---------------------------------------------------------------------------*\ - Class nearWallFields Declaration + Class nearWallFields Declaration \*---------------------------------------------------------------------------*/ class nearWallFields diff --git a/src/postProcessing/functionObjects/field/processorField/processorField.H b/src/postProcessing/functionObjects/field/processorField/processorField.H index a51b17f969c8a0db3e02f26d803bff025843cf96..b1ecdb65f5cebbc7acc84a811ae32c09823adcf9 100644 --- a/src/postProcessing/functionObjects/field/processorField/processorField.H +++ b/src/postProcessing/functionObjects/field/processorField/processorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,9 +24,32 @@ License Class Foam::processorField +Group + grpFieldFunctionObjects + Description - Writes a scalar field whose value is the local processor ID. Output - field name is processorID. + This function object writes a scalar field whose value is the local + processor ID. The output field name is 'processorID'. + + Example of function object specification: + \verbatim + processorField1 + { + type processorField; + functionObjectLibs ("libfieldFunctionObjects.so"); + ... + } + \endverbatim + + \heading Function object usage + \table + Property | Description | Required | Default value + type | type name: processorField | yes | + \endtable + +SeeAlso + Foam::functionObject + Foam::OutputFilterFunctionObject SourceFiles processorField.C @@ -54,7 +77,7 @@ class dictionary; class mapPolyMesh; /*---------------------------------------------------------------------------*\ - Class processorField Declaration + Class processorField Declaration \*---------------------------------------------------------------------------*/ class processorField diff --git a/src/postProcessing/functionObjects/field/readFields/readFields.H b/src/postProcessing/functionObjects/field/readFields/readFields.H index 56232ec51ddafaa6148f84220cfad737cebf41c9..8a26b89f5688af7b6caba7980966534fe8ee51be 100644 --- a/src/postProcessing/functionObjects/field/readFields/readFields.H +++ b/src/postProcessing/functionObjects/field/readFields/readFields.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,9 +24,38 @@ License Class Foam::readFields +Group + grpFieldFunctionObjects + Description - Reads fields from the time folders and adds them to the mesh database - for further post-processing. + This function object reads fields from the time folders and adds them to + the mesh database for further post-processing. + + Example of function object specification: + \verbatim + readFields1 + { + type readFields; + functionObjectLibs ("libfieldFunctionObjects.so"); + ... + fields + ( + U + p + ); + } + \endverbatim + + \heading Function object usage + \table + Property | Description | Required | Default value + type | type name: readFields | yes | + fields | list of fields to read | no | + \endtable + +SeeAlso + Foam::functionObject + Foam::OutputFilterFunctionObject SourceFiles readFields.C diff --git a/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H b/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H index 7802733249ece4d57607f46282b78f976f795e2b..ce4174162eb12ec92ef492bc86ea353fcb609561 100644 --- a/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H +++ b/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H @@ -24,68 +24,71 @@ License Class Foam::regionSizeDistribution +Group + grpFieldFunctionObjects + Description - Droplet size distribution calculation. + This function object creates a size distribution via interrogating a + continuous phase fraction field. - Looks up a void-fraction (alpha) field and splits the mesh into regions - based on where the field is below the threshold value. These + Looks up a phase-fraction (alpha) field and splits the mesh into regions + based on where the field is below the threshold value. These regions ("droplets") can now be analysed. Regions: - - (debug) write regions as a volScalarField - - (debug) print for all regions the sum of volume and alpha*volume - print the regions connected to a user-defined set of patches. (in spray calculation these form the liquid core) - - print the regions with too large volume. These are the 'background' + - print the regions with too large volume. These are the 'background' regions. + - (debug) write regions as a volScalarField + - (debug) print for all regions the sum of volume and alpha*volume - Fields: - - write volScalarField alpha_liquidCore : alpha with outside liquid core - set to 0. - alpha_background : alpha with outside background - set to 0. + Output (volume scalar) fields include: + - alpha_liquidCore : alpha with outside liquid core set to 0 + - alpha_background : alpha with outside background set to 0. Histogram: - determine histogram of diameter (given minDiameter, maxDiameter, nBins) - write graph of number of droplets per bin - write graph of sum, average and deviation of droplet volume per bin - - write graph of sum, average and deviation of user-defined fields. For + - write graph of sum, average and deviation of user-defined fields. For volVectorFields these are those of the 3 components and the magnitude. - Sample input: - - functions + Example of function object specification: + \verbatim + regionSizeDistribution1 { - regionSizeDistribution - { - type regionSizeDistribution; - - outputControl timeStep; - outputInterval 1; - - // Field to determine regions from - field alpha; - // Patches that provide the liquid core - patches (inlet); - // Delimit alpha regions - threshold 0.4; - - // Fields to sample (no need to include alpha) - fields (p U); - - // Number of bins for histogram - nBins 100; - // Max droplet diameter - maxDiameter 0.5e-4; - //// Min droplet diameter (default is 0) - //minDiameter 0; - - // Writing format - setFormat gnuplot; - } + type regionSizeDistribution; + functionObjectLibs ("libfieldFunctionObjects.so"); + ... + field alpha; + patches (inlet); + threshold 0.4; + fields (p U); + nBins 100; + maxDiameter 0.5e-4; + minDiameter 0; + setFormat gnuplot; } - - + \endverbatim + + \heading Function object usage + \table + Property | Description | Required | Default value + type | type name: regionSizeDistribution |yes| + field | phase field to interrogate | yes | + patches | patches from which the liquid core is identified | yes| + threshold | phase fraction applied to delimit regions | yes | + fields | fields to sample | yes | + nBins | number of bins for histogram | yes | + maxDiameter | maximum region equivalent diameter | yes | + minDiameter | minimum region equivalent diameter | no | 0 + setFormat | writing format | yes | + \endtable + +SeeAlso + Foam::functionObject + Foam::OutputFilterFunctionObject SourceFiles regionSizeDistribution.C @@ -114,7 +117,7 @@ class regionSplit; class polyMesh; /*---------------------------------------------------------------------------*\ - Class regionSizeDistribution Declaration + Class regionSizeDistribution Declaration \*---------------------------------------------------------------------------*/ class regionSizeDistribution diff --git a/src/postProcessing/functionObjects/field/streamLine/streamLine.H b/src/postProcessing/functionObjects/field/streamLine/streamLine.H index f4fb4e42dc7bd0a58ab8e5abddb66a737121052a..08f01e45194d80c80fa9052722da70a361929a60 100644 --- a/src/postProcessing/functionObjects/field/streamLine/streamLine.H +++ b/src/postProcessing/functionObjects/field/streamLine/streamLine.H @@ -24,8 +24,76 @@ License Class Foam::streamLine +Group + grpFieldFunctionObjects + Description - Generation of streamlines. Samples along track of passive particle. + This function object generates streamline data by sampling a set of + user-specified fields along a particle track, transported by a + user-specified velocity field. + + Example of function object specification: + \verbatim + streamLine1 + { + type streamLine; + functionObjectLibs ("libfieldFunctionObjects.so"); + ... + setFormat vtk; + UName U; + trackForward yes; + fields + ( + U + p + ); + lifeTime 10000; + trackLength 1e-3; + nSubCycle 5; + cloudName particleTracks; + seedSampleSet uniform; + uniformCoeffs + { + type uniform; + axis x; //distance; + start (-0.0205 0.0001 0.00001); + end (-0.0205 0.0005 0.00001); + nPoints 100; + } + } + \endverbatim + + \heading Function object usage + \table + Property | Description | Required | Default value + type | type name: streamLine | yes | + setFormat | output data type | yes | + UName | tracking velocity field name | yes | + fields | fields to sample | yes | + lifetime | maximum number of particle tracking steps | yes | + trackLength | tracking segment length | no | + nSubCycle | number of tracking steps per cell | no| + cloudName | cloud name to use | yes | + seedSampleSet| seeding method (see below)| yes | + \endtable + + \linebreak + Where \c seedSampleSet is typically one of + \plaintable + uniform | uniform particle seeding + cloud | cloud of points + triSurfaceMeshPointSet | points according to a tri-surface mesh + \endplaintable + +Note + When specifying the track resolution, the \c trackLength OR \c nSubCycle + option should be used + +SeeAlso + Foam::functionObject + Foam::OutputFilterFunctionObject + Foam::sampledSet + Foam::wallBoundedStreamLine SourceFiles streamLine.C @@ -80,7 +148,6 @@ class streamLine //- On/off switch bool active_; - //- List of fields to sample wordList fields_; @@ -127,9 +194,10 @@ class streamLine //- Axis of the sampled points to output word sampledSetAxis_; - //- File output writer + //- File writer for scalar data autoPtr<writer<scalar> > scalarFormatterPtr_; + //- File writer for vector data autoPtr<writer<vector> > vectorFormatterPtr_; diff --git a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.H b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.H index a49a86e8bcd19b76942006cf52af79fe65a29d05..61d8724d698bb6fb4c410b6c3fbe608b8a15d013 100644 --- a/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.H +++ b/src/postProcessing/functionObjects/field/surfaceInterpolateFields/surfaceInterpolateFields.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,27 +24,42 @@ License Class Foam::surfaceInterpolateFields +Group grpFieldFunctionObjects + Description - Linear interpolates volFields to surfaceFields + This function object linearly interpolates volume fields to generate + surface fields - - at write it writes the fields - - it executes every time step + Fields are stored + - every time step the field is updated with new values + - at output it writes the fields - so it can either be used to calculate and write the interpolate or - (since the interpolates are registered) use some other functionObject - to work on them. + This functionObject can either be used + - to calculate a new field as a post-processing step or + - since the fields are registered, used in another functionObject - sampleSomeFields + Example of function object specification: + \verbatim + surfaceInterpolateFields1 { - type surfaceInterpolateFields; - .. - enabled true; - outputControl outputTime; - .. - // Name of volField and corresponding surfaceField - fields ((p pInterpolate)(U UInterpolate)); + type surfaceInterpolateFields; + functionObjectLibs ("libfieldFunctionObjects.so"); + ... + fields ((p pNear)(U UNear)); } + \endverbatim + + \heading Function object usage + \table + Property | Description | Required | Default value + type | type name: nearWallFields | yes | + fields | list of fields with correspoding output field names | yes | + \endtable + +SeeAlso + Foam::functionObject + Foam::OutputFilterFunctionObject SourceFiles surfaceInterpolateFields.C @@ -70,7 +85,7 @@ class dictionary; class mapPolyMesh; /*---------------------------------------------------------------------------*\ - Class surfaceInterpolateFields Declaration + Class surfaceInterpolateFields Declaration \*---------------------------------------------------------------------------*/ class surfaceInterpolateFields diff --git a/src/postProcessing/functionObjects/field/turbulenceFields/turbulenceFields.H b/src/postProcessing/functionObjects/field/turbulenceFields/turbulenceFields.H index e62ee5b17439e749296d6b36d8e4aab0d95e2683..527f332c4687aef2dfc9851170bddb97e593af15 100644 --- a/src/postProcessing/functionObjects/field/turbulenceFields/turbulenceFields.H +++ b/src/postProcessing/functionObjects/field/turbulenceFields/turbulenceFields.H @@ -24,14 +24,57 @@ License Class Foam::turbulenceFields +Group + grpFieldFunctionObjects + Description - Stores turbulence fields on the mesh database for further manipulation. + This function object stores turbulence fields on the mesh database for + further manipulation. Fields are stored as copies of the original, with the prefix "tubulenceModel::", e.g. turbulenceModel::R + Example of function object specification: + \verbatim + turbulenceFields1 + { + type turbulenceFields; + functionObjectLibs ("libfieldFunctionObjects.so"); + ... + fields + ( + R + devRhoReff + ); + } + \endverbatim + + \heading Function object usage + \table + Property | Description | Required | Default value + type | type name: processorField | yes | + fields | fields to store (see below) | yes | + \endtable + + Where \c fields can include: + \plaintable + R | Stress tensor + devRhoReff | + mut | turbulence viscosity (compressible) + muEff | effective turbulence viscosity (compressible) + alphat | turbulence thermal diffusivity (compressible) + alphaEff | effective turbulence thermal diffusivity (compressible) + devReff | + nut | turbulence viscosity (incompressible) + nuEff | effective turbulence viscosity (incompressible) + \endplaintable + +SeeAlso + Foam::functionObject + Foam::OutputFilterFunctionObject + SourceFiles turbulenceFields.C @@ -57,7 +100,7 @@ class dictionary; class mapPolyMesh; /*---------------------------------------------------------------------------*\ - Class turbulenceFields Declaration + Class turbulenceFields Declaration \*---------------------------------------------------------------------------*/ class turbulenceFields diff --git a/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.H b/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.H index bb130b985d855b61f96e3536009bfbcce7db39b2..e7dceed8bb6697a51d7b8f3112b7a0a0e2e9de28 100644 --- a/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.H +++ b/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedStreamLine.H @@ -24,8 +24,76 @@ License Class Foam::wallBoundedStreamLine +Group + grpFieldFunctionObjects + Description - Generation of streamlines. Samples along track of passive particle. + This function object generates streamline data by sampling a set of + user-specified fields along a particle track, transported by a + user-specified velocity field, constrained to a patch. + + Example of function object specification: + \verbatim + wallBoundedStreamLine1 + { + type wallBoundedStreamLine; + functionObjectLibs ("libfieldFunctionObjects.so"); + ... + setFormat vtk; + UName UNear; + trackForward yes; + fields + ( + UNear + p + ); + lifeTime 10000; + trackLength 1e-3; + nSubCycle 5; + cloudName particleTracks; + seedSampleSet patchSeed; + patchSeedCoeffs + { + type patchSeed; + patches (wall); + axis x; + maxPoints 20000; + } + } + \endverbatim + + \heading Function object usage + \table + Property | Description | Required | Default value + type | type name: wallBoundedStreamLine| yes | + setFormat | output data type | yes | + UName | tracking velocity field name | yes | + fields | fields to sample | yes | + lifetime | maximum number of particle tracking steps | yes | + trackLength | tracking segment length | no | + nSubCycle | number of tracking steps per cell | no| + cloudName | cloud name to use | yes | + seedSampleSet| seeding method (see below)| yes | + \endtable + + \linebreak + Where \c seedSampleSet is typically one of + \plaintable + uniform | uniform particle seeding + cloud | cloud of points + patchSeed | seeding via patch faces + triSurfaceMeshPointSet | points according to a tri-surface mesh + \endplaintable + +Note + When specifying the track resolution, the \c trackLength OR \c nSubCycle + option should be used + +SeeAlso + Foam::functionObject + Foam::OutputFilterFunctionObject + Foam::sampledSet + Foam::streamLine SourceFiles wallBoundedStreamLine.C @@ -60,7 +128,7 @@ class meshSearch; class sampledSet; /*---------------------------------------------------------------------------*\ - Class wallBoundedStreamLine Declaration + Class wallBoundedStreamLine Declaration \*---------------------------------------------------------------------------*/ class wallBoundedStreamLine diff --git a/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.H b/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.H index 1eb8db01af9384d5fc6dd835306ffcf0d1800ad4..fe6d074c549f0b2c5c493d39856a212481f99d01 100644 --- a/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.H +++ b/src/postProcessing/functionObjects/forces/forceCoeffs/forceCoeffs.H @@ -24,9 +24,56 @@ License Class Foam::forceCoeffs +Group + grpForcesFunctionObjects + Description - Derived from the forces function object, creates a specialisation to - calculate lift, drag and moment coefficients. + This function object extends the Foam::forces function object by providing + lift, drag and moment coefficients. The data can optionally be output into + bins, defined in a given direction. + + Example of function object specification: + \verbatim + forceCoeffs1 + { + type forceCoeffs; + functionObjectLibs ("libforces.so"); + ... + log yes; + patches (walls); + liftDir (0 1 0); + dragDir (-1 0 0); + pitchAxis (0 0 1); + magUInf 100; + lRef 3.5; + ARef 2.2; + nBin 20; + binDir (1 0 0); + binFormat gnuplot; + } + \endverbatim + + \heading Function object usage + \table + Property | Description | Required | Default value + type | type name: forces | yes | + log | write force data to standard output | no | no + patches | patches included in the forces calculation | yes | + liftDir | lift direction | yes | + dragDir | drag direction | yes | + pitchAxis | picth axis | yes | + magUInf | free stream velocity magnitude | yes | + lRef | reference length scale for moment calculations | yes | + ARef | reference area | yes | + nBin | number of data bins | no | + binDir | direction along which bins are defined | no | + binFormat | output format for bin data | no | + \endtable + +SeeAlso + Foam::functionObject + Foam::OutputFilterFunctionObject + Foam::forces SourceFiles forceCoeffs.C @@ -45,7 +92,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class forceCoeffs Declaration + Class forceCoeffs Declaration \*---------------------------------------------------------------------------*/ class forceCoeffs diff --git a/src/postProcessing/functionObjects/forces/forces/forces.H b/src/postProcessing/functionObjects/forces/forces/forces.H index d5a74b9ec7cfff3071d3612ff97cdec1c0880eb2..72be5979949afb4ae5923335d25b6c28edc11678 100644 --- a/src/postProcessing/functionObjects/forces/forces/forces.H +++ b/src/postProcessing/functionObjects/forces/forces/forces.H @@ -24,24 +24,58 @@ License Class Foam::forces +Group + grpForcesFunctionObjects + Description - Calculates the forces and moments by integrating the pressure and - skin-friction forces over a given list of patches. + This function object calculates the forces and moments by integrating the + pressure and skin-friction forces over a given list of patches. Member function forces::write() calculates the forces/moments and writes the forces/moments into the file \<timeDir\>/forces.dat - The data can optionally be collected into bins, using e.g. - \verbaitim - nBin 20; // output data into bins - binDir (1 0 0); // bin direction + Example of function object specification: + \verbatim + forces1 + { + type forces; + functionObjectLibs ("libforces.so"); + ... + log yes; + patches (walls); + nBin 20; + binDir (1 0 0); binFormat gnuplot; + } \endverbatim + \heading Function object usage + \table + Property | Description | Required | Default value + type | type name: forces | yes | + log | write force data to standard output | no | no + patches | patches included in the forces calculation | yes | + nBin | number of data bins | no | + binDir | direction along which bins are defined | no | + binFormat | output format for bin data | no | + pName | pressure field name | no | p + UName | velocity field name | no | U + rhoName | density field name (see below) | no | rho + CofR | centre of rotation (see below) | no | + directForceDensity | force density supplied directly (see below)|no|no + fDName | name of force density field (see below) | no | fD + \endtable + Note - The centre of rotation for moment calculations can either be specified - by an \c CofR entry, or be taken from origin of the local coordinateSystem. - For example, + - For incompressible cases, set \c rhoName to \c rhoInf. You will then be + required to provide a \c rhoInf value corresponding to the free-stream + constant density. + - If the force density is supplied directly, set the \c directForceDensity + flag to 'yes', and supply the force density field using the \c + fDName entry + - The centre of rotation (CofR) for moment calculations can either be + specified by an \c CofR entry, or be taken from origin of the local + coordinate system. For example, \verbatim CofR (0 0 0); \endverbatim @@ -55,6 +89,11 @@ Note } \endverbatim +SeeAlso + Foam::functionObject + Foam::OutputFilterFunctionObject + Foam::forceCoeffs + SourceFiles forces.C IOforces.H diff --git a/src/postProcessing/functionObjects/forces/forcesFunctionObjectsDoc.H b/src/postProcessing/functionObjects/forces/forcesFunctionObjectsDoc.H new file mode 100644 index 0000000000000000000000000000000000000000..b171ef9289183bb8eb56e4c1a4199c5beff64f2f --- /dev/null +++ b/src/postProcessing/functionObjects/forces/forcesFunctionObjectsDoc.H @@ -0,0 +1,33 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +\defgroup grpForcesFunctionObjects Forces function objects +@{ + \ingroup grpFunctionObjects + This group contains force-based function objects + + Function objects in this group are packaged into the + libforcesFunctionObjects.so library. +@} + +\*---------------------------------------------------------------------------*/ diff --git a/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculation.H b/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculation.H index 408674eba66e8950dcc9d26ee881a5197153a11f..42da71f90c4e66f642939ebfa4c42124e3b2a25f 100644 --- a/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculation.H +++ b/src/postProcessing/functionObjects/jobControl/abortCalculation/abortCalculation.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,6 +24,9 @@ License Class Foam::abortCalculation +Group + grpJobControlFunctionObjects + Description Watches for presence of the named file in the $FOAM_CASE directory and aborts the calculation if it is present. diff --git a/src/postProcessing/functionObjects/jobControl/jobControlFunctionObjectsDoc.H b/src/postProcessing/functionObjects/jobControl/jobControlFunctionObjectsDoc.H new file mode 100644 index 0000000000000000000000000000000000000000..34a586b2077d907aa06231a7f364ce8a026c1a42 --- /dev/null +++ b/src/postProcessing/functionObjects/jobControl/jobControlFunctionObjectsDoc.H @@ -0,0 +1,30 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +\defgroup grpJobControlFunctionObjects Job control function objects +@{ + \ingroup grpFunctionObjects + This group contains job control-based function objects +@} + +\*---------------------------------------------------------------------------*/ diff --git a/src/postProcessing/functionObjects/systemCall/systemCall.C b/src/postProcessing/functionObjects/systemCall/systemCall.C index 90a5c20257c246f9fc7fad353c1541542e0d378b..299c792aabc29a50c1aefd922c8594e4c0fad5a1 100644 --- a/src/postProcessing/functionObjects/systemCall/systemCall.C +++ b/src/postProcessing/functionObjects/systemCall/systemCall.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -73,26 +73,18 @@ void Foam::systemCall::read(const dictionary& dict) } else if (!dynamicCode::allowSystemOperations) { - FatalErrorIn - ( - "systemCall::read(const dictionary&)" - ) << "Executing user-supplied system calls is not" - << " enabled by default" << endl - << "because of security issues. If you trust the case you can" - << " enable this" << endl - << "facility be adding to the InfoSwitches setting in the system" - << " controlDict:" << endl - << endl - << " allowSystemOperations 1" << endl - << endl - << "The system controlDict is either" << endl - << endl - << " ~/.OpenFOAM/$WM_PROJECT_VERSION/controlDict" << endl - << endl - << "or" << endl - << endl - << " $WM_PROJECT_DIR/etc/controlDict" << endl - << endl + FatalErrorIn("systemCall::read(const dictionary&)") + << "Executing user-supplied system calls is not enabled by " + << "default because of " << nl + << "security issues. If you trust the case you can enable this " + << "facility by " << nl + << "adding to the InfoSwitches setting in the system controlDict:" + << nl << nl + << " allowSystemOperations 1" << nl << nl + << "The system controlDict is either" << nl << nl + << " ~/.OpenFOAM/$WM_PROJECT_VERSION/controlDict" << nl << nl + << "or" << nl << nl + << " $WM_PROJECT_DIR/etc/controlDict" << nl << nl << exit(FatalError); } } diff --git a/src/postProcessing/functionObjects/systemCall/systemCall.H b/src/postProcessing/functionObjects/systemCall/systemCall.H index 9baf118ef8aba9a96614282d30fb08a87069eebb..ad82219bcee9d32befa95e65edd1a94b3e48359a 100644 --- a/src/postProcessing/functionObjects/systemCall/systemCall.H +++ b/src/postProcessing/functionObjects/systemCall/systemCall.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,59 @@ License Class Foam::systemCall +Group + grpFunctionObjects + Description - Executes system calls, entered in the form of a string list + This function object executes system calls, entered in the form of a + string lists. Calls can be made at the following points in the + calculation: + - every time step + - every output time + - end of the calculation + + Example of function object specification: + \verbatim + systemCall1 + { + type systemCall; + functionObjectLibs ("libsystemCall.so"); + ... + executeCalls + ( + "echo execute" + ); + writeCalls + ( + "echo \*\*\* writing data \*\*\*" + ); + endCalls + ( + "echo \*\*\* writing .bashrc \*\*\*" + "cat ~/.bashrc" + "echo \*\*\* done \*\*\*" + ); + } + \endverbatim + + \heading Function object usage + \table + Property | Description | Required | Default value + type | type name: systemCall | yes | + executeCalls | list of calls on execute | yes | + writeCalls | list of calls on write | yes | + endCalls | list of calls on end | yes | + \endtable + +Note + Since this function object executes system calls, there is a potential + security risk. In order to use the \c systemCall function object, the + \c allowSystemOperations must be set to '1'; otherwise, system calls will + not be allowed. + +SeeAlso + Foam::functionObject + Foam::OutputFilterFunctionObject SourceFiles systemCall.C @@ -50,7 +101,7 @@ class dictionary; class mapPolyMesh; /*---------------------------------------------------------------------------*\ - Class systemCall Declaration + Class systemCall Declaration \*---------------------------------------------------------------------------*/ class systemCall diff --git a/src/postProcessing/functionObjects/utilities/DESModelRegions/DESModelRegions.C b/src/postProcessing/functionObjects/utilities/DESModelRegions/DESModelRegions.C new file mode 100644 index 0000000000000000000000000000000000000000..604cf2fd893630fcb527da01d3f7f3bebe737ab5 --- /dev/null +++ b/src/postProcessing/functionObjects/utilities/DESModelRegions/DESModelRegions.C @@ -0,0 +1,229 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "DESModelRegions.H" +#include "volFields.H" +#include "compressible/turbulenceModel/turbulenceModel.H" +#include "compressible/LES/DESModel/DESModel.H" +#include "incompressible/turbulenceModel/turbulenceModel.H" +#include "incompressible/LES/DESModel/DESModel.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(Foam::DESModelRegions, 0); + + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +void Foam::DESModelRegions::makeFile() +{ + // Create the output file if not already created + if (outputFilePtr_.empty()) + { + if (debug) + { + Info<< "Creating output file." << endl; + } + + // File update + if (Pstream::master()) + { + fileName outputDir; + word startTimeName = + obr_.time().timeName(obr_.time().startTime().value()); + + if (Pstream::parRun()) + { + // Put in undecomposed case (Note: gives problems for + // distributed data running) + outputDir = + obr_.time().path()/".."/name_/startTimeName; + } + else + { + outputDir = obr_.time().path()/name_/startTimeName; + } + + // Create directory if does not exist + mkDir(outputDir); + + // Open new file at start up + outputFilePtr_.reset(new OFstream(outputDir/(type() + ".dat"))); + + // Add headers to output data + outputFilePtr_() << "# DES model region coverage (% volume)" << nl + << "# time " << token::TAB << "LES" << token::TAB << "RAS" + << endl; + } + } +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::DESModelRegions::DESModelRegions +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +: + name_(name), + obr_(obr), + active_(true), + log_(false), + outputFilePtr_(NULL) +{ + // Check if the available mesh is an fvMesh, otherwise deactivate + if (!isA<fvMesh>(obr_)) + { + active_ = false; + WarningIn + ( + "DESModelRegions::DESModelRegions" + "(" + "const word&, " + "const objectRegistry&, " + "const dictionary&, " + "const bool" + ")" + ) << "No fvMesh available, deactivating." << nl + << endl; + } + + makeFile(); + + read(dict); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::DESModelRegions::~DESModelRegions() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::DESModelRegions::read(const dictionary& dict) +{ + if (active_) + { + log_ = dict.lookupOrDefault<Switch>("log", false); + } +} + + +void Foam::DESModelRegions::execute() +{ + // Do nothing - only valid on write +} + + +void Foam::DESModelRegions::end() +{ + // Do nothing - only valid on write +} + + +void Foam::DESModelRegions::write() +{ + typedef incompressible::turbulenceModel icoModel; + typedef incompressible::DESModel icoDESModel; + + typedef compressible::turbulenceModel cmpModel; + typedef compressible::DESModel cmpDESModel; + + if (active_) + { + const fvMesh& mesh = refCast<const fvMesh>(obr_); + + if (log_) + { + Info<< type() << " output:" << nl; + } + + tmp<volScalarField> result; + + label DESpresent = false; + if (mesh.foundObject<icoModel>("turbulenceModel")) + { + const icoModel& model = + mesh.lookupObject<icoModel>("turbulenceModel"); + + if (isA<icoDESModel>(model)) + { + const icoDESModel& des = + dynamic_cast<const icoDESModel&>(model); + result = des.LESRegion(); + DESpresent = true; + } + } + else if (mesh.foundObject<cmpModel>("turbulenceModel")) + { + const cmpModel& model = + mesh.lookupObject<cmpModel>("turbulenceModel"); + + if (isA<cmpDESModel>(model)) + { + const cmpDESModel& des = + dynamic_cast<const cmpDESModel&>(model); + result = des.LESRegion(); + DESpresent = true; + } + } + + if (DESpresent) + { + scalar prc = + gSum(result().internalField()*mesh.V())/gSum(mesh.V())*100.0; + + if (Pstream::master()) + { + outputFilePtr_() << obr_.time().timeName() << token::TAB + << prc << token::TAB << 100.0 - prc << endl; + } + + if (log_) + { + Info<< " LES = " << prc << " % (volume)" << nl + << " RES = " << 100.0 - prc << " % (volume)" << nl + << endl; + } + } + else + { + if (log_) + { + Info<< " No DES turbulence model found in database" << nl + << endl; + } + } + } +} + + +// ************************************************************************* // diff --git a/src/postProcessing/functionObjects/utilities/DESModelRegions/DESModelRegions.H b/src/postProcessing/functionObjects/utilities/DESModelRegions/DESModelRegions.H new file mode 100644 index 0000000000000000000000000000000000000000..38c8be7c139033fa223f2f22a8409c39caa9a34e --- /dev/null +++ b/src/postProcessing/functionObjects/utilities/DESModelRegions/DESModelRegions.H @@ -0,0 +1,158 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +Class + Foam::DESModelRegions + +Group + grpUtilitiesFunctionObjects + +Description + This function object writes out an indicator field for DES turbulence + calculations, that is: + + - 0 for RAS regions + - 1 for LES regions + +SourceFiles + DESModelRegions.C + IODESModelRegions.H + +\*---------------------------------------------------------------------------*/ + +#ifndef DESModelRegions_H +#define DESModelRegions_H + +#include "volFieldsFwd.H" +#include "pointFieldFwd.H" +#include "Switch.H" +#include "OFstream.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// Forward declaration of classes +class objectRegistry; +class dictionary; +class mapPolyMesh; +class fvMesh; + +/*---------------------------------------------------------------------------*\ + Class DESModelRegions Declaration +\*---------------------------------------------------------------------------*/ + +class DESModelRegions +{ + // Private data + + //- Name of this set of DESModelRegions object + word name_; + + const objectRegistry& obr_; + + //- on/off switch + bool active_; + + //- Switch to send output to Info as well as to file + Switch log_; + + //- Output file pointer + autoPtr<OFstream> outputFilePtr_; + + + // Private Member Functions + + //- Make the output file + virtual void makeFile(); + + //- Disallow default bitwise copy construct + DESModelRegions(const DESModelRegions&); + + //- Disallow default bitwise assignment + void operator=(const DESModelRegions&); + + +public: + + //- Runtime type information + TypeName("DESModelRegions"); + + + // Constructors + + //- Construct for given objectRegistry and dictionary. + // Allow the possibility to load fields from files + DESModelRegions + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + + + //- Destructor + virtual ~DESModelRegions(); + + + // Member Functions + + //- Return name of the set of DESModelRegions + virtual const word& name() const + { + return name_; + } + + //- Read the DESModelRegions data + virtual void read(const dictionary&); + + //- Execute, currently does nothing + virtual void execute(); + + //- Execute at the final time-loop, currently does nothing + virtual void end(); + + //- Calculate the DESModelRegions and write + virtual void write(); + + //- Update for changes of mesh + virtual void updateMesh(const mapPolyMesh&) + {} + + //- Update for changes of mesh + virtual void movePoints(const pointField&) + {} +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/postProcessing/functionObjects/utilities/DESModelRegions/DESModelRegionsFunctionObject.C b/src/postProcessing/functionObjects/utilities/DESModelRegions/DESModelRegionsFunctionObject.C new file mode 100644 index 0000000000000000000000000000000000000000..2312e6f5fb80bbedada0e434316541b3c73b570a --- /dev/null +++ b/src/postProcessing/functionObjects/utilities/DESModelRegions/DESModelRegionsFunctionObject.C @@ -0,0 +1,42 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "DESModelRegionsFunctionObject.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineNamedTemplateTypeNameAndDebug(DESModelRegionsFunctionObject, 0); + + addToRunTimeSelectionTable + ( + functionObject, + DESModelRegionsFunctionObject, + dictionary + ); +} + +// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/mixtures/basicMixture/makeBasicMixture.H b/src/postProcessing/functionObjects/utilities/DESModelRegions/DESModelRegionsFunctionObject.H similarity index 57% rename from src/thermophysicalModels/basic/mixtures/basicMixture/makeBasicMixture.H rename to src/postProcessing/functionObjects/utilities/DESModelRegions/DESModelRegionsFunctionObject.H index 29e93165a247ce7e87f173b47c14f850e7a977fe..7e9a6ba45cb21063912f193edc4b07fb4d1a066f 100644 --- a/src/thermophysicalModels/basic/mixtures/basicMixture/makeBasicMixture.H +++ b/src/postProcessing/functionObjects/utilities/DESModelRegions/DESModelRegionsFunctionObject.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -21,31 +21,31 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. -InClass - Foam::basicMixture +Typedef + Foam::DESModelRegionsFunctionObject Description - Macros for creating 'basic' mixtures for basic fluid thermo packages + FunctionObject wrapper around DESModelRegions to allow it to be created + via the functions entry within controlDict. + +SourceFiles + DESModelRegionsFunctionObject.C \*---------------------------------------------------------------------------*/ -#ifndef makeBasicMixture_H -#define makeBasicMixture_H +#ifndef DESModelRegionsFunctionObject_H +#define DESModelRegionsFunctionObject_H -#include "basicMixture.H" -#include "addToRunTimeSelectionTable.H" +#include "DESModelRegions.H" +#include "OutputFilterFunctionObject.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -#define makeBasicMixture(Mixture,Transport,Type,Thermo,EqnOfState,Specie) \ - \ -typedef \ - Mixture<Transport<species::thermo<Thermo<EqnOfState<Specie> >, Type> > > \ - Mixture##Transport##Type##Thermo##EqnOfState##Specie; \ - \ -defineTemplateTypeNameAndDebugWithName \ - (Mixture##Transport##Type##Thermo##EqnOfState##Specie, \ - #Mixture"<"#Transport"<"#Thermo"<"#EqnOfState"<"#Specie">>,"#Type">>", 0) +namespace Foam +{ + typedef OutputFilterFunctionObject<DESModelRegions> + DESModelRegionsFunctionObject; +} // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/postProcessing/functionObjects/utilities/DESModelRegions/IODESModelRegions.H b/src/postProcessing/functionObjects/utilities/DESModelRegions/IODESModelRegions.H new file mode 100644 index 0000000000000000000000000000000000000000..17cc16b74ee973ad00035c04db02cb6dd9abe2de --- /dev/null +++ b/src/postProcessing/functionObjects/utilities/DESModelRegions/IODESModelRegions.H @@ -0,0 +1,49 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +Typedef + Foam::IODESModelRegions + +Description + Instance of the generic IOOutputFilter for DESModelRegions. + +\*---------------------------------------------------------------------------*/ + +#ifndef IODESModelRegions_H +#define IODESModelRegions_H + +#include "DESModelRegions.H" +#include "IOOutputFilter.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + typedef IOOutputFilter<DESModelRegions> IODESModelRegions; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/postProcessing/functionObjects/utilities/Make/files b/src/postProcessing/functionObjects/utilities/Make/files index d5a78589b2fa13a72a42aa49b84babae6c3bb13e..362f24a0e7e7ef93aa9bb2ef264c2b710d0c045b 100644 --- a/src/postProcessing/functionObjects/utilities/Make/files +++ b/src/postProcessing/functionObjects/utilities/Make/files @@ -3,6 +3,9 @@ codedFunctionObject/codedFunctionObject.C CourantNo/CourantNo.C CourantNo/CourantNoFunctionObject.C +DESModelRegions/DESModelRegions.C +DESModelRegions/DESModelRegionsFunctionObject.C + dsmcFields/dsmcFields.C dsmcFields/dsmcFieldsFunctionObject.C diff --git a/src/postProcessing/functionObjects/utilities/codedFunctionObject/codedFunctionObject.C b/src/postProcessing/functionObjects/utilities/codedFunctionObject/codedFunctionObject.C index 81cb1d9b23b651bd57bd5b21edbba62e56309770..0248190cde571ab78111670f6047a3eefcfb6bc3 100644 --- a/src/postProcessing/functionObjects/utilities/codedFunctionObject/codedFunctionObject.C +++ b/src/postProcessing/functionObjects/utilities/codedFunctionObject/codedFunctionObject.C @@ -47,9 +47,6 @@ namespace Foam ); } -// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * // - - // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // void Foam::codedFunctionObject::prepare diff --git a/src/postProcessing/functionObjects/utilities/codedFunctionObject/codedFunctionObject.H b/src/postProcessing/functionObjects/utilities/codedFunctionObject/codedFunctionObject.H index 52a202df54bd0dc4ebabe68028279141ee0f6cfb..a9c6818f7765f64132722d73cb03968e0c4fada2 100644 --- a/src/postProcessing/functionObjects/utilities/codedFunctionObject/codedFunctionObject.H +++ b/src/postProcessing/functionObjects/utilities/codedFunctionObject/codedFunctionObject.H @@ -24,8 +24,17 @@ License Class Foam::codedFunctionObject +Group + grpUtilitiesFunctionObjects + Description - functionObject using dynamic code compilation. + This function object provides a general interface to enable dynamic code + compilation. + +SeeAlso + Foam::functionObject + Foam::OutputFilterFunctionObject + Foam::codedBase SourceFiles codedFunctionObject.C @@ -44,7 +53,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class codedFunctionObject Declaration + Class codedFunctionObject Declaration \*---------------------------------------------------------------------------*/ class codedFunctionObject @@ -90,6 +99,7 @@ protected: // Get the dictionary to initialize the codeContext virtual const dictionary& codeDict() const; + private: //- Disallow default bitwise copy construct diff --git a/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.H b/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.H index 548a83df5c0f83674f76fa308f1cd606ed51a5d5..512ac251c6aa46200974a985f502f8c1b9e37aa8 100644 --- a/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.H +++ b/src/postProcessing/functionObjects/utilities/dsmcFields/dsmcFields.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,6 +24,9 @@ License Class Foam::dsmcFields +Group + grpUtilitiesFunctionObjects + Description Calculate intensive fields: - UMean @@ -69,6 +72,7 @@ class dsmcFields //- on/off switch bool active_; + // Private Member Functions //- Disallow default bitwise copy construct diff --git a/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.H b/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.H index d9a5b071f539b51fbfb060d635594bd16388fab3..786e0f21fa70b958d3fa35e295c6703949604a83 100644 --- a/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.H +++ b/src/postProcessing/functionObjects/utilities/timeActivatedFileUpdate/timeActivatedFileUpdate.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,28 +24,32 @@ License Class Foam::timeActivatedFileUpdate +Group + grpUtilitiesFunctionObjects + Description Performs a file copy/replacement once a specified time has been reached. Example usage to update the fvSolution dictionary at various times throughout the calculation: - fileUpdate1 - { - type timeActivatedFileUpdate; - functionObjectLibs ("libutilityFunctionObjects.so"); - outputControl timeStep; - outputInterval 1; - fileToUpdate "$FOAM_CASE/system/fvSolution"; - timeVsFile - ( - (-1 "$FOAM_CASE/system/fvSolution.0") - (0.10 "$FOAM_CASE/system/fvSolution.10") - (0.20 "$FOAM_CASE/system/fvSolution.20") - (0.35 "$FOAM_CASE/system/fvSolution.35") - ); - } - + \verbatim + fileUpdate1 + { + type timeActivatedFileUpdate; + functionObjectLibs ("libutilityFunctionObjects.so"); + outputControl timeStep; + outputInterval 1; + fileToUpdate "$FOAM_CASE/system/fvSolution"; + timeVsFile + ( + (-1 "$FOAM_CASE/system/fvSolution.0") + (0.10 "$FOAM_CASE/system/fvSolution.10") + (0.20 "$FOAM_CASE/system/fvSolution.20") + (0.35 "$FOAM_CASE/system/fvSolution.35") + ); + } + \endverbatim SourceFiles timeActivatedFileUpdate.C diff --git a/src/postProcessing/functionObjects/utilities/utilitiesFunctionObjectsDoc.H b/src/postProcessing/functionObjects/utilities/utilitiesFunctionObjectsDoc.H new file mode 100644 index 0000000000000000000000000000000000000000..b6e39e565d76f2ed806e3457d943fc49c9880471 --- /dev/null +++ b/src/postProcessing/functionObjects/utilities/utilitiesFunctionObjectsDoc.H @@ -0,0 +1,30 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +\defgroup grpUtilitiesFunctionObjects Utility function objects +@{ + \ingroup grpFunctionObjects + This group contains utility-based function objects +@} + +\*---------------------------------------------------------------------------*/ diff --git a/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.C b/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.C index 72244ea4b125c683a2d51b0733f3873ba309f372..91e5eb7f04be83a65ca71e64f0f26fa7982ff4a5 100644 --- a/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.C +++ b/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.C @@ -222,6 +222,13 @@ void Foam::wallShearStress::write() tmp<volSymmTensorField> Reff; if (phi.dimensions() == dimMass/dimTime) { + if (!mesh.foundObject<cmpModel>("turbulenceModel")) + { + FatalErrorIn("void Foam::wallShearStress::write()") + << "Unable to find compressible turbulence model in the " + << "database" << exit(FatalError); + } + const cmpModel& model = mesh.lookupObject<cmpModel>("turbulenceModel"); @@ -229,6 +236,13 @@ void Foam::wallShearStress::write() } else { + if (!mesh.foundObject<icoModel>("turbulenceModel")) + { + FatalErrorIn("void Foam::wallShearStress::write()") + << "Unable to find incompressible turbulence model in the " + << "database" << exit(FatalError); + } + const icoModel& model = mesh.lookupObject<icoModel>("turbulenceModel"); diff --git a/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.H b/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.H index b2cff373bece4fac9337ed316d21e2d11bf2cb15..71c3b5c34f40a8780573e52835a831a2f237563a 100644 --- a/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.H +++ b/src/postProcessing/functionObjects/utilities/wallShearStress/wallShearStress.H @@ -24,9 +24,26 @@ License Class Foam::wallShearStress +Group + grpUtilitiesFunctionObjects + Description - Evaluates and outputs wall shear stress. Values written to time folders - as field 'wallShearStress' + This function object evaluates and outputs the shear stress at wall + patches. The result is written as a volVectorField to time folders as + field 'wallShearStress' + + \f[ + Stress = R \dot n + \f] + + The shear stress (symmetrical) tensor field is retrieved from the + turbulence model. + + where + \vartable + R | stress tensor + n | patch normal vector (into the domain) + \endvartable SourceFiles wallShearStress.C diff --git a/src/postProcessing/functionObjects/utilities/yPlusLES/yPlusLES.H b/src/postProcessing/functionObjects/utilities/yPlusLES/yPlusLES.H index 5ab936ab7eefbccba74bd85196390ab088302e0b..795e9aed896319784ae0dc3b222e82a77f031de7 100644 --- a/src/postProcessing/functionObjects/utilities/yPlusLES/yPlusLES.H +++ b/src/postProcessing/functionObjects/utilities/yPlusLES/yPlusLES.H @@ -24,6 +24,9 @@ License Class Foam::yPlusLES +Group + grpUtilitiesFunctionObjects + Description Evaluates and outputs turbulence y+ for LES models. Values written to time folders as field 'yPlusLES' diff --git a/src/postProcessing/functionObjects/utilities/yPlusRAS/yPlusRAS.H b/src/postProcessing/functionObjects/utilities/yPlusRAS/yPlusRAS.H index 2be629342424f959809d755b3b2382859e6d9540..38085ae7224f88ca29998ba8d4d305e0b2f4e013 100644 --- a/src/postProcessing/functionObjects/utilities/yPlusRAS/yPlusRAS.H +++ b/src/postProcessing/functionObjects/utilities/yPlusRAS/yPlusRAS.H @@ -24,6 +24,9 @@ License Class Foam::yPlusRAS +Group + grpUtilitiesFunctionObjects + Description Evaluates and outputs turbulence y+ for RAS models. Values written to time folders as field 'yPlusRAS' diff --git a/src/regionModels/doc/regionBoundaryConditionsDoc.H b/src/regionModels/doc/regionBoundaryConditionsDoc.H new file mode 100644 index 0000000000000000000000000000000000000000..7f4981d4adfc7da91892935f987879044a740a7d --- /dev/null +++ b/src/regionModels/doc/regionBoundaryConditionsDoc.H @@ -0,0 +1,31 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +\defgroup grpRegionBoundaryConditions Region boundary conditions +@{ + This group contains region model boundary conditions +@} + +\*---------------------------------------------------------------------------*/ diff --git a/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisTemperatureCoupled/filmPyrolysisTemperatureCoupledFvPatchScalarField.H b/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisTemperatureCoupled/filmPyrolysisTemperatureCoupledFvPatchScalarField.H index 5f3446c1826ecf25b11c04041d51aea0088e2387..503b023f955c89dccc683a0311766352aaf38413 100644 --- a/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisTemperatureCoupled/filmPyrolysisTemperatureCoupledFvPatchScalarField.H +++ b/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisTemperatureCoupled/filmPyrolysisTemperatureCoupledFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,12 +25,33 @@ Class Foam::filmPyrolysisTemperatureCoupledFvPatchScalarField Description - Temperature boundary condition for patches on the primary region: + This boundary condition is designed to be used in conjunction with surface + film and pyrolysis modelling. It provides a temperature boundary condition + for patches on the primary region based on whether the patch is seen to + be 'wet', specified by: - - where the film height > height threshold value: - apply film surface temperature values - - else - apply pyrolysis surface temperature values + \f[ + delta > delta_wet + \f] + + where + \var delta = film height [m] + \var delta_wet = film height above which the surface is considered wet + + \li if the patch is wet, the temperature is set using the film temperature + \li otherwise, it is set using pyrolysis temperature + + Example of the boundary condition specification: + \verbatim + myPatch + { + type filmPyrolysisTemperatureCoupled; + phi phi; // name of flux field (default = phi) + rho rho; // name of density field (default = rho) + deltaWet 1e-4; // threshold height for 'wet' film + value uniform 300; // initial temperature / [K] + } + \endverbatim SourceFiles filmPyrolysisTemperatureCoupledFvPatchScalarField.C @@ -63,7 +84,7 @@ class filmPyrolysisTemperatureCoupledFvPatchScalarField //- Name of density field word rhoName_; - //- Film height threshold beyond which it is considered 'wet' + //- Film height threshold beyond which it is considered 'wet' [m] scalar deltaWet_; diff --git a/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisVelocityCoupled/filmPyrolysisVelocityCoupledFvPatchVectorField.H b/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisVelocityCoupled/filmPyrolysisVelocityCoupledFvPatchVectorField.H index 8b654ec1683759a4f72afccd00327b3ac25ce594..c7c4c5d24be220b83c3bb478b61b40148895b104 100644 --- a/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisVelocityCoupled/filmPyrolysisVelocityCoupledFvPatchVectorField.H +++ b/src/regionModels/regionCoupling/derivedFvPatchFields/filmPyrolysisVelocityCoupled/filmPyrolysisVelocityCoupledFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,12 +25,33 @@ Class Foam::filmPyrolysisVelocityCoupledFvPatchVectorField Description - Velocity boundary condition for patches on the primary region: + This boundary condition is designed to be used in conjunction with surface + film and pyrolysis modelling. It provides a velocity boundary condition + for patches on the primary region based on whether the patch is seen to + be 'wet', specified by: - - where the film height > height threshold value: - apply film surface velocity values - - else - apply pyrolysis out-gassing velocity values + \f[ + delta > delta_wet + \f] + + where + \var delta = film height [m] + \var delta_wet = film height above which the surface is considered wet + + \li if the patch is wet, the velocity is set using the film velocity + \li otherwise, it is set using pyrolysis out-gassing velocity + + Example of the boundary condition specification: + \verbatim + myPatch + { + type filmPyrolysisVelocityCoupled; + phi phi; // name of flux field (default = phi) + rho rho; // name of density field (default = rho) + deltaWet 1e-4; // threshold height for 'wet' film + value uniform (0 0 0); // initial velocity / [m/s] + } + \endverbatim SourceFiles filmPyrolysisVelocityCoupledFvPatchVectorField.C diff --git a/src/regionModels/regionModel/derivedFvPatches/mappedVariableThicknessWall/mappedVariableThicknessWallFvPatch.H b/src/regionModels/regionModel/derivedFvPatches/mappedVariableThicknessWall/mappedVariableThicknessWallFvPatch.H index a203fc016966f7c27a7eb2caa00b971afdb78706..f4709bb62e66b008a88867432a357270fc51019b 100644 --- a/src/regionModels/regionModel/derivedFvPatches/mappedVariableThicknessWall/mappedVariableThicknessWallFvPatch.H +++ b/src/regionModels/regionModel/derivedFvPatches/mappedVariableThicknessWall/mappedVariableThicknessWallFvPatch.H @@ -24,6 +24,9 @@ License Class Foam::mappedVariableThicknessWallFvPatch +Group + grpRegionBoundaryConditions + Description Take thickness field and number of layers and returns deltaCoeffs as 2.0/thickness/nLayers. diff --git a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/doc/surfaceFilmBoundaryConditionsDoc.H b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/doc/surfaceFilmBoundaryConditionsDoc.H new file mode 100644 index 0000000000000000000000000000000000000000..600a85bf2dcb102df43886d4438681b4b373c646 --- /dev/null +++ b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/doc/surfaceFilmBoundaryConditionsDoc.H @@ -0,0 +1,32 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +\defgroup grpSurfaceFilmBoundaryConditions Surface film boundary conditions +@{ + \ingroup grpRegionBoundaryConditions + This group contains surface film model boundary conditions +@} + +\*---------------------------------------------------------------------------*/ diff --git a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/filmHeightInletVelocity/filmHeightInletVelocityFvPatchVectorField.H b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/filmHeightInletVelocity/filmHeightInletVelocityFvPatchVectorField.H index 194861cd92c77f33f41cf6ee9f69d710b6eb30aa..98b8f49808815c96fd206d5ec47d55ec6653b2cb 100644 --- a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/filmHeightInletVelocity/filmHeightInletVelocityFvPatchVectorField.H +++ b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/filmHeightInletVelocity/filmHeightInletVelocityFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,10 +24,52 @@ License Class Foam::filmHeightInletVelocityFvPatchVectorField +Group + grpSurfaceFilmBoundaryConditions + Description - Velocity inlet boundary condition for patches where the film height is - specified. The inflow velocity is obtained from the flux with a direction - normal to the patch faces. + This boundary condition is designed to be used in conjunction with + surface film modelling. It provides a velocity inlet boundary condition + for patches where the film height is specified. The inflow velocity is + obtained from the flux with a direction normal to the patch faces using: + + \f[ + U_p = \frac{n \phi}{\rho |Sf| \delta} + \f] + + where + \vartable + U_p | patch velocity [m/s] + n | patch normal vector + \phi | mass flux [kg/s] + \rho | density [kg/m3] + Sf | patch face area vectors [m2] + \delta | film height [m] + \endvartable + + \heading Patch usage + + \table + Property | Description | Required | Default value + phi | Flux field name | no | phi + rho | density field name | no | rho + deltaf | height field name | no | deltaf + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type filmHeightInletVelocity; + phi phi; + rho rho; + deltaf deltaf; + value uniform (0 0 0); // initial velocity / [m/s] + } + \endverbatim + +SeeAlso + Foam::fixedValueFvPatchField SourceFiles filmHeightInletVelocityFvPatchVectorField.C diff --git a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/alphatFilmWallFunction/alphatFilmWallFunctionFvPatchScalarField.H b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/alphatFilmWallFunction/alphatFilmWallFunctionFvPatchScalarField.H index 25ec24197904a0733f856f577c80938aeb9a53a8..de61d62b946aee8d87a98cc374e97acb5974089f 100644 --- a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/alphatFilmWallFunction/alphatFilmWallFunctionFvPatchScalarField.H +++ b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/alphatFilmWallFunction/alphatFilmWallFunctionFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,9 +24,42 @@ License Class Foam::compressible::RASModels::alphatFilmWallFunctionFvPatchScalarField +Group + grpSurfaceFilmBoundaryConditions grpCmpWallFunctions + Description - Turbulent thermal diffusivity boundary conditions for use with surface - film models. + This boundary condition provides a turbulent thermal diffusivity condition + when using wall functions, for use with surface film models. This + condition varies from the standard wall function by taking into account any + mass released from the film model. + + \heading Patch usage + + \table + Property | Description | Required | Default value + B | model coefficient | no | 5.5 + yPlusCrit | critical y+ for transition to turbulent flow | no|11.05 + Cmu | model coefficient | no | 0.09 + kappa | Von-Karman constant | no | 0.41 + Prt | turbulent Prandtl number | no | 0.85 + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type alphatFilmWallFunction; + B 5.5; + yPlusCrit 11.05; + Cmu 0.09; + kappa 0.41; + Prt 0.85; + value uniform 0; + } + \endverbatim + +SeeAlso + Foam::fixedValueFvPatchField SourceFiles alphatFilmWallFunctionFvPatchScalarField.C diff --git a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/mutkFilmWallFunction/mutkFilmWallFunctionFvPatchScalarField.H b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/mutkFilmWallFunction/mutkFilmWallFunctionFvPatchScalarField.H index aab054effb796d25ad25527064a9a3e6b30b07ef..7e7a2a99f84c1d5b275f8946f0a5481050c48067 100644 --- a/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/mutkFilmWallFunction/mutkFilmWallFunctionFvPatchScalarField.H +++ b/src/regionModels/surfaceFilmModels/derivedFvPatchFields/wallFunctions/mutkFilmWallFunction/mutkFilmWallFunctionFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,11 +22,29 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::compressible::RASModels:: - mutkFilmWallFunctionFvPatchScalarField + Foam::compressible::RASModels::mutkFilmWallFunctionFvPatchScalarField + +Group + grpSurfaceFilmBoundaryConditions grpCmpWallFunctions Description - Wall function boundary condition for use with surface film models. + This boundary condition provides a turbulent viscosity condition when + using wall functions, based on turbulence kinetic energy, for use with + surface film models. + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type mutkFilmWallFunction; + value uniform 0; + } + \endverbatim + +SeeAlso + Foam::mutkWallFunctionFvPatchScalarField SourceFiles mutkFilmWallFunctionFvPatchScalarField.C diff --git a/src/regionModels/thermoBaffleModels/derivedFvPatchFields/doc/thermoBaffleBoundaryConditionsDoc.H b/src/regionModels/thermoBaffleModels/derivedFvPatchFields/doc/thermoBaffleBoundaryConditionsDoc.H new file mode 100644 index 0000000000000000000000000000000000000000..ac1553d10405d66a902a8e9100884f3fd28e8ac6 --- /dev/null +++ b/src/regionModels/thermoBaffleModels/derivedFvPatchFields/doc/thermoBaffleBoundaryConditionsDoc.H @@ -0,0 +1,32 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +\defgroup grpThermoBoundaryConditions Thermo baffle boundary conditions +@{ + \ingroup grpRegionBoundaryConditions + This group contains thermo baffle model boundary conditions +@} + +\*---------------------------------------------------------------------------*/ diff --git a/src/regionModels/thermoBaffleModels/derivedFvPatchFields/temperatureThermoBaffle/temperatureThermoBaffleFvPatchScalarField.H b/src/regionModels/thermoBaffleModels/derivedFvPatchFields/temperatureThermoBaffle/temperatureThermoBaffleFvPatchScalarField.H index 7ad5ded31eb07b7e5f096dbfc4b6eeba786e4354..6dd5cbbb4e489becd1cae5330511cb8a0734a4e0 100644 --- a/src/regionModels/thermoBaffleModels/derivedFvPatchFields/temperatureThermoBaffle/temperatureThermoBaffleFvPatchScalarField.H +++ b/src/regionModels/thermoBaffleModels/derivedFvPatchFields/temperatureThermoBaffle/temperatureThermoBaffleFvPatchScalarField.H @@ -24,9 +24,12 @@ License Class Foam::temperatureThermoBaffleFvPatchScalarField +Group + grpThermoBoundaryConditions + Description - Thermal boundary applied to both sides:the baffle region and - in the primary region. + This boundary condition provides a coupled condition between the primary + baffle mesh regions. The primary region creates it and evolves the thermal baffle heat transfer equation. @@ -95,6 +98,8 @@ Description value uniform 300; +SeeAlso + Foam::turbulentTemperatureCoupledBaffleMixedFvPatchScalarField SourceFiles temperatureThermoBaffleFvPatchScalarField.C diff --git a/src/sampling/probes/probes.H b/src/sampling/probes/probes.H index 2bcebe16749041bc7a88803e2c09f369ad39e666..9634d626dd07d1fc8c840702cee1c17a33224dfb 100644 --- a/src/sampling/probes/probes.H +++ b/src/sampling/probes/probes.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,6 +24,9 @@ License Class Foam::probes +Group + grpFunctionObjects + Description Set of locations to sample. diff --git a/src/sampling/sampledSet/sampledSet/sampledSet.H b/src/sampling/sampledSet/sampledSet/sampledSet.H index 953f65d77e67e86b4cdc59437e5a244a028952f4..51905951f90b0f8481ed33b383e8f977a3343a2f 100644 --- a/src/sampling/sampledSet/sampledSet/sampledSet.H +++ b/src/sampling/sampledSet/sampledSet/sampledSet.H @@ -24,6 +24,9 @@ License Class Foam::sampledSet +Group + grpFunctionObjects + Description Holds list of sampling points which is filled at construction time. Various implementations of this base class to e.g. get sampling points diff --git a/src/sampling/sampledSurface/sampledSurface/sampledSurface.H b/src/sampling/sampledSurface/sampledSurface/sampledSurface.H index 7ef9654ebdc651a88cbb2addd0fb7a03234b4570..2659af8f51799584f0ae2e7b758cc0660744f265 100644 --- a/src/sampling/sampledSurface/sampledSurface/sampledSurface.H +++ b/src/sampling/sampledSurface/sampledSurface/sampledSurface.H @@ -24,6 +24,9 @@ License Class Foam::sampledSurface +Group + grpFunctionObjects + Description An abstract class for surfaces with sampling. diff --git a/src/thermophysicalModels/basic/Make/files b/src/thermophysicalModels/basic/Make/files index f49b474762a378a019eb3adf8d5190b43dd260a4..ca80ac7279a4a74876fde1b03e0c9e778fcbe586 100644 --- a/src/thermophysicalModels/basic/Make/files +++ b/src/thermophysicalModels/basic/Make/files @@ -1,18 +1,10 @@ -mixtures/basicMixture/basicMixture.C -mixtures/basicMixture/basicMixtures.C - basicThermo/basicThermo.C -basicThermo/basicThermoNew.C - fluidThermo/fluidThermo.C -fluidThermo/fluidThermoNew.C psiThermo/psiThermo/psiThermo.C -psiThermo/psiThermo/psiThermoNew.C psiThermo/hePsiThermo/hePsiThermos.C rhoThermo/rhoThermo/rhoThermo.C -rhoThermo/rhoThermo/rhoThermoNew.C rhoThermo/heRhoThermo/heRhoThermos.C derivedFvPatchFields/fixedEnergy/fixedEnergyFvPatchScalarField.C diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermo.C b/src/thermophysicalModels/basic/basicThermo/basicThermo.C index 13d6f0462c763525fc27551cfd574ec434ac1559..d20f1cbe4dcc1025afa06d6adf56bb8b8e0f004c 100644 --- a/src/thermophysicalModels/basic/basicThermo/basicThermo.C +++ b/src/thermophysicalModels/basic/basicThermo/basicThermo.C @@ -156,6 +156,15 @@ Foam::basicThermo::basicThermo {} +Foam::autoPtr<Foam::basicThermo> Foam::basicThermo::New +( + const fvMesh& mesh +) +{ + return NewThermo<basicThermo>(mesh); +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // Foam::basicThermo::~basicThermo() @@ -247,6 +256,41 @@ void Foam::basicThermo::validate } +Foam::wordList Foam::basicThermo::splitThermoName +( + const word& thermoName, + const int nCmpt +) +{ + wordList cmpts(nCmpt); + + string::size_type beg=0, end=0; + int i = 0; + + while + ( + (end = thermoName.find('<', beg)) != string::npos + || (end = thermoName.find(',', beg)) != string::npos + ) + { + if (beg < end) + { + cmpts[i] = thermoName.substr(beg, end-beg); + cmpts[i++].replaceAll(">",""); + } + beg = end + 1; + } + + if (beg < thermoName.size()) + { + cmpts[i] = thermoName.substr(beg, string::npos); + cmpts[i++].replaceAll(">",""); + } + + return cmpts; +} + + Foam::volScalarField& Foam::basicThermo::p() { return p_; diff --git a/src/thermophysicalModels/basic/basicThermo/basicThermo.H b/src/thermophysicalModels/basic/basicThermo/basicThermo.H index 079ffd7d34fd02f28f3a22178f6e46277c11fd93..85ffe044675b875c47539dca85153d4b8e6d8a60 100644 --- a/src/thermophysicalModels/basic/basicThermo/basicThermo.H +++ b/src/thermophysicalModels/basic/basicThermo/basicThermo.H @@ -40,6 +40,7 @@ SourceFiles #include "typeInfo.H" #include "IOdictionary.H" #include "autoPtr.H" +#include "wordIOList.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -93,6 +94,7 @@ public: (mesh) ); + // Constructors //- Construct from mesh @@ -150,6 +152,12 @@ public: const word& ) const; + //- Split name of thermo package into a list of the components names + static wordList splitThermoName + ( + const word& thermoName, + const int nCmpt + ); //- Update properties virtual void correct() = 0; @@ -336,6 +344,126 @@ public: }; +template<class Thermo> +autoPtr<Thermo> NewThermo +( + const fvMesh& mesh +) +{ + IOdictionary thermoDict + ( + IOobject + ( + "thermophysicalProperties", + mesh.time().constant(), + mesh, + IOobject::MUST_READ_IF_MODIFIED, + IOobject::NO_WRITE, + false + ) + ); + + word thermoTypeName; + + if (thermoDict.isDict("thermoType")) + { + const dictionary& thermoTypeDict(thermoDict.subDict("thermoType")); + + Info<< "Selecting thermodynamics package " << thermoTypeDict << endl; + + const int nCmpt = 7; + const char* cmptNames[nCmpt] = + { + "type", + "mixture", + "transport", + "thermo", + "equationOfState", + "specie", + "energy" + }; + + // Construct the name of the thermo package from the components + thermoTypeName = + word(thermoTypeDict.lookup("type")) + '<' + + word(thermoTypeDict.lookup("mixture")) + '<' + + word(thermoTypeDict.lookup("transport")) + '<' + + word(thermoTypeDict.lookup("thermo")) + '<' + + word(thermoTypeDict.lookup("equationOfState")) + '<' + + word(thermoTypeDict.lookup("specie")) + ">>," + + word(thermoTypeDict.lookup("energy")) + ">>>"; + + // Lookup the thermo package + typename Thermo::fvMeshConstructorTable::iterator cstrIter = + Thermo::fvMeshConstructorTablePtr_->find(thermoTypeName); + + // Print error message if package not found in the table + if (cstrIter == Thermo::fvMeshConstructorTablePtr_->end()) + { + FatalErrorIn(Thermo::typeName + "::New(const fvMesh&)") + << "Unknown " << Thermo::typeName << " type " << nl + << "thermoType" << thermoTypeDict << nl << nl + << "Valid " << Thermo::typeName << " types are:" << nl << nl; + + // Get the list of all the suitable thermo packages available + wordList validThermoTypeNames + ( + Thermo::fvMeshConstructorTablePtr_->sortedToc() + ); + + // Build a table of the thermo packages constituent parts + // Note: row-0 contains the names of constituent parts + List<wordList> validThermoTypeNameCmpts + ( + validThermoTypeNames.size() + 1 + ); + + validThermoTypeNameCmpts[0].setSize(nCmpt); + forAll(validThermoTypeNameCmpts[0], j) + { + validThermoTypeNameCmpts[0][j] = cmptNames[j]; + } + + // Split the thermo package names into their constituent parts + forAll(validThermoTypeNames, i) + { + validThermoTypeNameCmpts[i+1] = + Thermo::splitThermoName(validThermoTypeNames[i], nCmpt); + } + + // Print the table of available packages + // in terms of their constituent parts + printTable(validThermoTypeNameCmpts, FatalError); + + FatalError<< exit(FatalError); + } + + return autoPtr<Thermo>(cstrIter()(mesh)); + } + else + { + thermoTypeName = word(thermoDict.lookup("thermoType")); + + Info<< "Selecting thermodynamics package " << thermoTypeName << endl; + + typename Thermo::fvMeshConstructorTable::iterator cstrIter = + Thermo::fvMeshConstructorTablePtr_->find(thermoTypeName); + + if (cstrIter == Thermo::fvMeshConstructorTablePtr_->end()) + { + FatalErrorIn(Thermo::typeName + "::New(const fvMesh&)") + << "Unknown " << Thermo::typeName << " type " + << thermoTypeName << nl << nl + << "Valid " << Thermo::typeName << " types are:" << nl + << Thermo::fvMeshConstructorTablePtr_->sortedToc() << nl + << exit(FatalError); + } + + return autoPtr<Thermo>(cstrIter()(mesh)); + } +} + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/doc/thermophysicalBoundaryConditionsDoc.H b/src/thermophysicalModels/basic/derivedFvPatchFields/doc/thermophysicalBoundaryConditionsDoc.H new file mode 100644 index 0000000000000000000000000000000000000000..f7f9389b7188a11ba552920b52956128e8ec6369 --- /dev/null +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/doc/thermophysicalBoundaryConditionsDoc.H @@ -0,0 +1,32 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +\defgroup grpThermoBoundaryConditions Thermophysical boundary conditions +@{ + \ingroup grpBoundaryConditions + This group contains thermophysical model boundary conditions +@} + +\*---------------------------------------------------------------------------*/ diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/energyJump/energyJumpFvPatchScalarField.H b/src/thermophysicalModels/basic/derivedFvPatchFields/energyJump/energyJumpFvPatchScalarField.H index 6fb7820ee3cfa29e18a84016ca47e80d3dd0411f..aae2d9597b07a17adbff7b2515b7eb23b81d091e 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/energyJump/energyJumpFvPatchScalarField.H +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/energyJump/energyJumpFvPatchScalarField.H @@ -24,7 +24,31 @@ License Class Foam::energyJumpFvPatchScalarField +Group + grpThermoBoundaryConditions grpCoupledBoundaryConditions + Description + This boundary condition provides an energy jump condition across a pair + of coupled patches. + + \heading Patch usage + + \table + Property | Description | Required | Default value + jump | energy jump values | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type energyJump; + jump uniform 100; + } + \endverbatim + +SeeAlso + Foam::fixedJumpFvPatchField SourceFiles energyJumpFvPatchScalarField.C @@ -43,7 +67,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class energyJumpFvPatchScalarField Declaration + Class energyJumpFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class energyJumpFvPatchScalarField @@ -120,7 +144,6 @@ public: // Member functions - // Evaluation functions //- Update the coefficients diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/fixedEnergy/fixedEnergyFvPatchScalarField.H b/src/thermophysicalModels/basic/derivedFvPatchFields/fixedEnergy/fixedEnergyFvPatchScalarField.H index 2c3b83ed60193a0b323a7b4aa4846232ce014909..b37cb57e498afa425d8212993501cd209b623de9 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/fixedEnergy/fixedEnergyFvPatchScalarField.H +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/fixedEnergy/fixedEnergyFvPatchScalarField.H @@ -24,8 +24,25 @@ License Class Foam::fixedEnergyFvPatchScalarField +Group + grpThermoBoundaryConditions + Description - A fixed boundary condition for internal energy + This boundary condition provides a fixed condition for internal energy + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type fixedEnergy; + value uniform 100; + } + \endverbatim + +SeeAlso + Foam::fixedValueFvPatchField SourceFiles fixedEnergyFvPatchScalarField.C @@ -43,7 +60,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class fixedEnergyFvPatchScalarField Declaration + Class fixedEnergyFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class fixedEnergyFvPatchScalarField diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/gradientEnergy/gradientEnergyFvPatchScalarField.C b/src/thermophysicalModels/basic/derivedFvPatchFields/gradientEnergy/gradientEnergyFvPatchScalarField.C index 42ed096ea60e297e05d85600c12843d4ebf7eeca..5f0e009d13c0731faf04bb3068ee972c80a825e9 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/gradientEnergy/gradientEnergyFvPatchScalarField.C +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/gradientEnergy/gradientEnergyFvPatchScalarField.C @@ -97,10 +97,8 @@ void Foam::gradientEnergyFvPatchScalarField::updateCoeffs() return; } - const basicThermo& thermo = db().lookupObject<basicThermo> - ( - "thermophysicalProperties" - ); + const basicThermo& thermo = + db().lookupObject<basicThermo>("thermophysicalProperties"); const label patchi = patch().index(); diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/gradientEnergy/gradientEnergyFvPatchScalarField.H b/src/thermophysicalModels/basic/derivedFvPatchFields/gradientEnergy/gradientEnergyFvPatchScalarField.H index 6a5bc19f9e78b7962578d3fa3ce729e096c4512a..a510d3ac82db8f6ad2b902e9e113282227665946 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/gradientEnergy/gradientEnergyFvPatchScalarField.H +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/gradientEnergy/gradientEnergyFvPatchScalarField.H @@ -22,10 +22,42 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::gradientInternalEnergyFvPatchScalarField + Foam::gradientEnergyFvPatchScalarField + +Group + grpThermoBoundaryConditions Description - Gradient boundary condition for internal energy + This boundary condition provides a gradient condition for internal energy, + where the gradient is calculated using: + + \f[ + \nabla(e_p) = \nabla_\perp C_p(p, T) + \frac{e_p - e_c}{\Delta} + \f] + + where + \vartable + e_p | energy at patch faces [J] + e_c | energy at patch internal cells [J] + p | pressure [bar] + T | temperature [K] + C_p | specific heat [J/kg/K] + \Delta | distance between patch face and internal cell centres [m] + \endvartable + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type gradientEnergy; + gradient uniform 10; + } + \endverbatim + +SeeAlso + Foam::fixedGradientFvPatchField SourceFiles gradientEnergyFvPatchScalarField.C @@ -43,7 +75,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class gradientEnergyFvPatchScalarField Declaration + Class gradientEnergyFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class gradientEnergyFvPatchScalarField diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/mixedEnergy/mixedEnergyFvPatchScalarField.H b/src/thermophysicalModels/basic/derivedFvPatchFields/mixedEnergy/mixedEnergyFvPatchScalarField.H index 204e7c29382635a306411e771b4bb97c10874701..97c55cbd1ebce9285e0be6fda6f40259546e6454 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/mixedEnergy/mixedEnergyFvPatchScalarField.H +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/mixedEnergy/mixedEnergyFvPatchScalarField.H @@ -24,8 +24,14 @@ License Class Foam::mixedEnergyFvPatchScalarField +Group + grpThermoBoundaryConditions + Description - Mixed boundary conditions for internal energy + This boundary condition provides a mixed condition for internal energy + +SeeAlso + Foam::mixedFvPatchField SourceFiles mixedEnergyFvPatchScalarField.C @@ -43,7 +49,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class mixedEnergyFvPatchScalarField Declaration + Class mixedEnergyFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class mixedEnergyFvPatchScalarField diff --git a/src/thermophysicalModels/basic/derivedFvPatchFields/wallHeatTransfer/wallHeatTransferFvPatchScalarField.H b/src/thermophysicalModels/basic/derivedFvPatchFields/wallHeatTransfer/wallHeatTransferFvPatchScalarField.H index 3a30ea1660ff1628ef596c7f1f66725a84f52b11..da2ab661efd19dd253456865cb9a9bfa240a9a67 100644 --- a/src/thermophysicalModels/basic/derivedFvPatchFields/wallHeatTransfer/wallHeatTransferFvPatchScalarField.H +++ b/src/thermophysicalModels/basic/derivedFvPatchFields/wallHeatTransfer/wallHeatTransferFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,30 @@ License Class Foam::wallHeatTransferFvPatchScalarField +Group + grpThermoBoundaryConditions grpWallBoundaryConditions + Description - Enthalpy boundary conditions for wall heat transfer + This boundary condition provides an enthalpy condition for wall heat + transfer + + \heading Patch usage + + \table + Property | Description | Required | Default value + Tinf | wall temperature | yes | + alphaWall | thermal diffusivity | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type wallHeatTransfer; + Tif uniform 500; + alphaWall uniform 1; + } + \endverbatim SourceFiles wallHeatTransferFvPatchScalarField.C @@ -43,7 +65,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class wallHeatTransferFvPatch Declaration + Class wallHeatTransferFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class wallHeatTransferFvPatchScalarField @@ -52,10 +74,10 @@ class wallHeatTransferFvPatchScalarField { // Private data - //- Tinf + //- Temperature at the wall scalarField Tinf_; - //- alphaWall + //- Thermal diffusivity at the wall scalarField alphaWall_; diff --git a/src/thermophysicalModels/basic/fluidThermo/fluidThermo.C b/src/thermophysicalModels/basic/fluidThermo/fluidThermo.C index e62ae73c6592af6ebb87ebd46e00416728298348..b0438e6431331c9c7c9942c771e3f42291e2854e 100644 --- a/src/thermophysicalModels/basic/fluidThermo/fluidThermo.C +++ b/src/thermophysicalModels/basic/fluidThermo/fluidThermo.C @@ -49,6 +49,15 @@ Foam::fluidThermo::fluidThermo(const fvMesh& mesh, const dictionary& dict) {} +Foam::autoPtr<Foam::fluidThermo> Foam::fluidThermo::New +( + const fvMesh& mesh +) +{ + return NewThermo<fluidThermo>(mesh); +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // Foam::fluidThermo::~fluidThermo() diff --git a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixture.C b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixture.C index 8fa95c5bbf97acd2156c42feca4a5a054ff8f5cc..02d65d7a27dba7880ffe22096d2676d78d97cba4 100644 --- a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixture.C +++ b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixture.C @@ -24,29 +24,12 @@ License \*---------------------------------------------------------------------------*/ #include "basicMixture.H" -#include "fvMesh.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -defineTypeNameAndDebug(basicMixture, 0); - -// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // - -basicMixture::basicMixture(const dictionary&, const fvMesh&) -{} - - -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -basicMixture::~basicMixture() -{} - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace Foam diff --git a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixture.H b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixture.H index f918d99d7b600df1477d50f3fa8072baca181a7b..8d8ed84cb0f8dbf916ab9da7ea393e006248a952 100644 --- a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixture.H +++ b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixture.H @@ -35,8 +35,6 @@ SourceFiles #ifndef basicMixture_H #define basicMixture_H -#include "typeInfo.H" - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam @@ -58,18 +56,11 @@ public: typedef basicMixture basicMixtureType; - // Runtime type information - TypeName("basicMixture"); - - // Constructors //- Construct from dictionary and mesh - basicMixture(const dictionary&, const fvMesh&); - - - //- Destructor - virtual ~basicMixture(); + basicMixture(const dictionary&, const fvMesh&) + {} }; diff --git a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C b/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C deleted file mode 100644 index ac7d3c65bddfa0620bcc5f4a258935fefe955163..0000000000000000000000000000000000000000 --- a/src/thermophysicalModels/basic/mixtures/basicMixture/basicMixtures.C +++ /dev/null @@ -1,253 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation - \\/ 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 3 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, see <http://www.gnu.org/licenses/>. - -Description - Mixture instantiation - -\*---------------------------------------------------------------------------*/ - -#include "error.H" - -#include "basicMixture.H" -#include "makeBasicMixture.H" - -#include "specie.H" -#include "perfectGas.H" -#include "rhoConst.H" -#include "incompressiblePerfectGas.H" - -#include "eConstThermo.H" - -#include "hConstThermo.H" -#include "janafThermo.H" -#include "sensibleInternalEnergy.H" -#include "sensibleEnthalpy.H" -#include "thermo.H" - -#include "constTransport.H" -#include "sutherlandTransport.H" - -#include "icoPolynomial.H" -#include "hPolynomialThermo.H" -#include "polynomialTransport.H" - -#include "pureMixture.H" - -#include "addToRunTimeSelectionTable.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ - -/* * * * * * * * * * * * * * * private static data * * * * * * * * * * * * * */ - -makeBasicMixture -( - pureMixture, - constTransport, - sensibleEnthalpy, - hConstThermo, - perfectGas, - specie -); - -makeBasicMixture -( - pureMixture, - sutherlandTransport, - sensibleEnthalpy, - hConstThermo, - perfectGas, - specie -); - -makeBasicMixture -( - pureMixture, - sutherlandTransport, - sensibleEnthalpy, - janafThermo, - perfectGas, - specie -); - -makeBasicMixture -( - pureMixture, - constTransport, - sensibleEnthalpy, - hConstThermo, - rhoConst, - specie -); - -makeBasicMixture -( - pureMixture, - polynomialTransport, - sensibleEnthalpy, - hPolynomialThermo, - icoPolynomial, - specie -); - -makeBasicMixture -( - pureMixture, - constTransport, - sensibleEnthalpy, - hConstThermo, - incompressiblePerfectGas, - specie -); - -makeBasicMixture -( - pureMixture, - sutherlandTransport, - sensibleEnthalpy, - hConstThermo, - incompressiblePerfectGas, - specie -); - -makeBasicMixture -( - pureMixture, - sutherlandTransport, - sensibleEnthalpy, - janafThermo, - incompressiblePerfectGas, - specie -); - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -makeBasicMixture -( - pureMixture, - constTransport, - sensibleInternalEnergy, - eConstThermo, - perfectGas, - specie -); - -makeBasicMixture -( - pureMixture, - sutherlandTransport, - sensibleInternalEnergy, - eConstThermo, - perfectGas, - specie -); - -makeBasicMixture -( - pureMixture, - constTransport, - sensibleInternalEnergy, - hConstThermo, - perfectGas, - specie -); - -makeBasicMixture -( - pureMixture, - sutherlandTransport, - sensibleInternalEnergy, - hConstThermo, - perfectGas, - specie -); - -makeBasicMixture -( - pureMixture, - sutherlandTransport, - sensibleInternalEnergy, - janafThermo, - perfectGas, - specie -); - -makeBasicMixture -( - pureMixture, - constTransport, - sensibleInternalEnergy, - hConstThermo, - rhoConst, - specie -); - -makeBasicMixture -( - pureMixture, - polynomialTransport, - sensibleInternalEnergy, - hPolynomialThermo, - icoPolynomial, - specie -); - -makeBasicMixture -( - pureMixture, - constTransport, - sensibleInternalEnergy, - hConstThermo, - incompressiblePerfectGas, - specie -); - -makeBasicMixture -( - pureMixture, - sutherlandTransport, - sensibleInternalEnergy, - hConstThermo, - incompressiblePerfectGas, - specie -); - -makeBasicMixture -( - pureMixture, - sutherlandTransport, - sensibleInternalEnergy, - janafThermo, - incompressiblePerfectGas, - specie -); - - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace Foam - -// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/mixtures/pureMixture/pureMixture.C b/src/thermophysicalModels/basic/mixtures/pureMixture/pureMixture.C index 02d5ddafc53640be7d64a4ee01aea9a3af22c625..bfd8ed2a8f83e6d9e8821060009e28a3d8eb73ea 100644 --- a/src/thermophysicalModels/basic/mixtures/pureMixture/pureMixture.C +++ b/src/thermophysicalModels/basic/mixtures/pureMixture/pureMixture.C @@ -45,13 +45,6 @@ pureMixture<ThermoType>::pureMixture {} -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -template<class ThermoType> -pureMixture<ThermoType>::~pureMixture() -{} - - // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template<class ThermoType> diff --git a/src/thermophysicalModels/basic/mixtures/pureMixture/pureMixture.H b/src/thermophysicalModels/basic/mixtures/pureMixture/pureMixture.H index 5ed25b97f4f37939493a8e89637581d5b10c2eac..b2401e1123afef1e102467bf5b4996a192eb89c4 100644 --- a/src/thermophysicalModels/basic/mixtures/pureMixture/pureMixture.H +++ b/src/thermophysicalModels/basic/mixtures/pureMixture/pureMixture.H @@ -65,20 +65,12 @@ public: typedef ThermoType thermoType; - //- Runtime type information - TypeName("pureMixture"); - - // Constructors //- Construct from dictionary and mesh pureMixture(const dictionary&, const fvMesh&); - //- Destructor - virtual ~pureMixture(); - - // Member functions const ThermoType& cellMixture(const label) const diff --git a/src/thermophysicalModels/basic/psiThermo/psiThermo/psiThermo.C b/src/thermophysicalModels/basic/psiThermo/psiThermo/psiThermo.C index 134103106e6434e53e9f0d01db23183e1b401923..e9a6a2219ea356989f2b08fa719bc664cf119f58 100644 --- a/src/thermophysicalModels/basic/psiThermo/psiThermo/psiThermo.C +++ b/src/thermophysicalModels/basic/psiThermo/psiThermo/psiThermo.C @@ -70,6 +70,15 @@ Foam::psiThermo::psiThermo(const fvMesh& mesh) {} +Foam::autoPtr<Foam::psiThermo> Foam::psiThermo::New +( + const fvMesh& mesh +) +{ + return NewThermo<psiThermo>(mesh); +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // Foam::psiThermo::~psiThermo() diff --git a/src/thermophysicalModels/basic/psiThermo/psiThermo/psiThermoNew.C b/src/thermophysicalModels/basic/psiThermo/psiThermo/psiThermoNew.C deleted file mode 100644 index d0601fe15c0f1e76b4adb7994a0c4b66beb4f4a9..0000000000000000000000000000000000000000 --- a/src/thermophysicalModels/basic/psiThermo/psiThermo/psiThermoNew.C +++ /dev/null @@ -1,94 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation - \\/ 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 3 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, see <http://www.gnu.org/licenses/>. - -\*---------------------------------------------------------------------------*/ - -#include "psiThermo.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -Foam::autoPtr<Foam::psiThermo> Foam::psiThermo::New -( - const fvMesh& mesh -) -{ - IOdictionary thermoDict - ( - IOobject - ( - "thermophysicalProperties", - mesh.time().constant(), - mesh, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE, - false - ) - ); - - word thermoTypeName; - - if (thermoDict.isDict("thermoType")) - { - const dictionary& thermoTypeDict(thermoDict.subDict("thermoType")); - - word type(thermoTypeDict.lookup("type")); - word mixture(thermoTypeDict.lookup("mixture")); - word transport(thermoTypeDict.lookup("transport")); - word thermo(thermoTypeDict.lookup("thermo")); - word energy(thermoTypeDict.lookup("energy")); - word equationOfState(thermoTypeDict.lookup("equationOfState")); - word specie(thermoTypeDict.lookup("specie")); - - thermoTypeName = - type + '<' - + mixture + '<' - + transport + '<' - + thermo + '<' - + equationOfState + '<' - + specie + ">>," - + energy + ">>>"; - } - else - { - thermoTypeName = word(thermoDict.lookup("thermoType")); - } - - Info<< "Selecting thermodynamics package " << thermoTypeName << endl; - - fvMeshConstructorTable::iterator cstrIter = - fvMeshConstructorTablePtr_->find(thermoTypeName); - - if (cstrIter == fvMeshConstructorTablePtr_->end()) - { - FatalErrorIn("psiThermo::New(const fvMesh&)") - << "Unknown psiThermo type " << thermoTypeName << nl << nl - << "Valid psiThermo types are:" << nl - << fvMeshConstructorTablePtr_->sortedToc() << nl - << exit(FatalError); - } - - return autoPtr<psiThermo>(cstrIter()(mesh)); -} - - -// ************************************************************************* // diff --git a/src/thermophysicalModels/basic/rhoThermo/rhoThermo/rhoThermo.C b/src/thermophysicalModels/basic/rhoThermo/rhoThermo/rhoThermo.C index a43347cb9137afba6240c78df241ed458a830c5c..ababc128c2cbec11303109a601d4cf6e572b3c9c 100644 --- a/src/thermophysicalModels/basic/rhoThermo/rhoThermo/rhoThermo.C +++ b/src/thermophysicalModels/basic/rhoThermo/rhoThermo/rhoThermo.C @@ -130,6 +130,15 @@ Foam::rhoThermo::rhoThermo(const fvMesh& mesh, const dictionary& dict) {} +Foam::autoPtr<Foam::rhoThermo> Foam::rhoThermo::New +( + const fvMesh& mesh +) +{ + return NewThermo<rhoThermo>(mesh); +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // Foam::rhoThermo::~rhoThermo() diff --git a/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/chemistrySolver.H b/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/chemistrySolver.H index 5e8dcff289933dbbb78c8aa5cfb320cccc65162b..f8348150b0d86b60e9a5ca9fd50bcbfb0edb4da6 100644 --- a/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/chemistrySolver.H +++ b/src/thermophysicalModels/chemistryModel/chemistrySolver/chemistrySolver/chemistrySolver.H @@ -112,7 +112,6 @@ public: ); - #define makeChemistrySolverType(SS, ODEChem, Comp, Thermo) \ \ typedef SS<ODEChem<Comp, Thermo> > SS##ODEChem##Comp##Thermo; \ @@ -132,26 +131,6 @@ public: ); -#define makeSolidChemistrySolverType(SS, ODEChem, Comp, SThermo, GThermo) \ - \ - typedef SS<ODEChem<Comp, SThermo, GThermo> > \ - SS##ODEChem##Comp##SThermo##GThermo; \ - \ - defineTemplateTypeNameAndDebugWithName \ - ( \ - SS##ODEChem##Comp##SThermo##GThermo, \ - #SS"<"#ODEChem"<"#Comp","#SThermo","#GThermo">>", \ - 0 \ - ); \ - \ - addToRunTimeSelectionTable \ - ( \ - Comp, \ - SS##ODEChem##Comp##SThermo##GThermo, \ - fvMesh \ - ); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #ifdef NoRepository diff --git a/src/thermophysicalModels/radiationModels/Make/files b/src/thermophysicalModels/radiationModels/Make/files index c86d8aa8d321f33659d709a87fd51afb032cb5ca..9822712105c54ed7ed9214356e6c999b954305b2 100644 --- a/src/thermophysicalModels/radiationModels/Make/files +++ b/src/thermophysicalModels/radiationModels/Make/files @@ -26,8 +26,8 @@ submodels/absorptionEmissionModel/wideBandAbsorptionEmission/wideBandAbsorptionE /* Boundary conditions */ -derivedFvPatchFields/MarshakRadiation/MarshakRadiationMixedFvPatchScalarField.C -derivedFvPatchFields/MarshakRadiationFixedT/MarshakRadiationFixedTMixedFvPatchScalarField.C +derivedFvPatchFields/MarshakRadiation/MarshakRadiationFvPatchScalarField.C +derivedFvPatchFields/MarshakRadiationFixedTemperature/MarshakRadiationFixedTemperatureFvPatchScalarField.C derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C derivedFvPatchFields/radiationCoupledBase/radiationCoupledBase.C diff --git a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiation/MarshakRadiationMixedFvPatchScalarField.C b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiation/MarshakRadiationFvPatchScalarField.C similarity index 95% rename from src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiation/MarshakRadiationMixedFvPatchScalarField.C rename to src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiation/MarshakRadiationFvPatchScalarField.C index 9068904d50c7f8a75f7560e5670acdef30390ce7..2bd7a38f3d76eb2757a884df8bff77172eeab31f 100644 --- a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiation/MarshakRadiationMixedFvPatchScalarField.C +++ b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiation/MarshakRadiationFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -23,12 +23,10 @@ License \*---------------------------------------------------------------------------*/ -#include "MarshakRadiationMixedFvPatchScalarField.H" +#include "MarshakRadiationFvPatchScalarField.H" #include "addToRunTimeSelectionTable.H" #include "fvPatchFieldMapper.H" #include "volFields.H" - -#include "fvc.H" #include "radiationModel.H" #include "physicoChemicalConstants.H" @@ -42,7 +40,7 @@ Foam::MarshakRadiationFvPatchScalarField::MarshakRadiationFvPatchScalarField : mixedFvPatchScalarField(p, iF), radiationCoupledBase(p, "undefined", scalarField::null()), - TName_("undefined") + TName_("T") { refValue() = 0.0; refGrad() = 0.0; @@ -78,7 +76,7 @@ Foam::MarshakRadiationFvPatchScalarField::MarshakRadiationFvPatchScalarField : mixedFvPatchScalarField(p, iF), radiationCoupledBase(p, dict), - TName_(dict.lookup("T")) + TName_(dict.lookupOrDefault<word>("T", "T")) { if (dict.found("value")) { @@ -193,7 +191,7 @@ void Foam::MarshakRadiationFvPatchScalarField::write(Ostream& os) const { mixedFvPatchScalarField::write(os); radiationCoupledBase::write(os); - os.writeKeyword("T") << TName_ << token::END_STATEMENT << nl; + writeEntryIfDifferent<word>(os, "T", "T", TName_); } diff --git a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiation/MarshakRadiationMixedFvPatchScalarField.H b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiation/MarshakRadiationFvPatchScalarField.H similarity index 85% rename from src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiation/MarshakRadiationMixedFvPatchScalarField.H rename to src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiation/MarshakRadiationFvPatchScalarField.H index a8ba8cbfc8132b5e4a3097fd3ff5fbf6c5e1285e..53506a5ed4a17c599c685ebaa886364b3c2b9cfd 100644 --- a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiation/MarshakRadiationMixedFvPatchScalarField.H +++ b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiation/MarshakRadiationFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,9 +24,36 @@ License Class Foam::MarshakRadiationFvPatchScalarField +Group + grpThermoBoundaryConditions + Description - Marshak boundary for radiation G field - - radiation temperature taken from patch value + A 'mixed' boundary condition that implements a Marshak condition for the + incident radiation field (usually written as G) + + The radiation temperature is retrieved from the mesh database, using a + user specified temperature field name. + + \heading Patch usage + + \table + Property | Description | Required | Default value + T | temperature field name | no | T + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type MarshakRadiation; + T T; + value uniform 0; + } + \endverbatim + +SeeAlso + Foam::radiationCoupledBase + Foam::mixedFvPatchField SourceFiles MarshakRadiationFvPatchScalarField.C diff --git a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiationFixedT/MarshakRadiationFixedTMixedFvPatchScalarField.C b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiationFixedTemperature/MarshakRadiationFixedTemperatureFvPatchScalarField.C similarity index 75% rename from src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiationFixedT/MarshakRadiationFixedTMixedFvPatchScalarField.C rename to src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiationFixedTemperature/MarshakRadiationFixedTemperatureFvPatchScalarField.C index 711ac43bd9c122db22d8496f373dffa29cdf9b27..d98d0c56f51dd8ca963d11292afa673086d9a233 100644 --- a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiationFixedT/MarshakRadiationFixedTMixedFvPatchScalarField.C +++ b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiationFixedTemperature/MarshakRadiationFixedTemperatureFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -23,19 +23,17 @@ License \*---------------------------------------------------------------------------*/ -#include "MarshakRadiationFixedTMixedFvPatchScalarField.H" +#include "MarshakRadiationFixedTemperatureFvPatchScalarField.H" #include "addToRunTimeSelectionTable.H" #include "fvPatchFieldMapper.H" #include "volFields.H" - -#include "fvc.H" #include "radiationModel.H" #include "physicoChemicalConstants.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -Foam::MarshakRadiationFixedTMixedFvPatchScalarField:: -MarshakRadiationFixedTMixedFvPatchScalarField +Foam::MarshakRadiationFixedTemperatureFvPatchScalarField:: +MarshakRadiationFixedTemperatureFvPatchScalarField ( const fvPatch& p, const DimensionedField<scalar, volMesh>& iF @@ -51,10 +49,10 @@ MarshakRadiationFixedTMixedFvPatchScalarField } -Foam::MarshakRadiationFixedTMixedFvPatchScalarField:: -MarshakRadiationFixedTMixedFvPatchScalarField +Foam::MarshakRadiationFixedTemperatureFvPatchScalarField:: +MarshakRadiationFixedTemperatureFvPatchScalarField ( - const MarshakRadiationFixedTMixedFvPatchScalarField& ptf, + const MarshakRadiationFixedTemperatureFvPatchScalarField& ptf, const fvPatch& p, const DimensionedField<scalar, volMesh>& iF, const fvPatchFieldMapper& mapper @@ -71,8 +69,8 @@ MarshakRadiationFixedTMixedFvPatchScalarField {} -Foam::MarshakRadiationFixedTMixedFvPatchScalarField:: -MarshakRadiationFixedTMixedFvPatchScalarField +Foam::MarshakRadiationFixedTemperatureFvPatchScalarField:: +MarshakRadiationFixedTemperatureFvPatchScalarField ( const fvPatch& p, const DimensionedField<scalar, volMesh>& iF, @@ -95,10 +93,10 @@ MarshakRadiationFixedTMixedFvPatchScalarField } -Foam::MarshakRadiationFixedTMixedFvPatchScalarField:: -MarshakRadiationFixedTMixedFvPatchScalarField +Foam::MarshakRadiationFixedTemperatureFvPatchScalarField:: +MarshakRadiationFixedTemperatureFvPatchScalarField ( - const MarshakRadiationFixedTMixedFvPatchScalarField& ptf + const MarshakRadiationFixedTemperatureFvPatchScalarField& ptf ) : mixedFvPatchScalarField(ptf), @@ -112,10 +110,10 @@ MarshakRadiationFixedTMixedFvPatchScalarField {} -Foam::MarshakRadiationFixedTMixedFvPatchScalarField:: -MarshakRadiationFixedTMixedFvPatchScalarField +Foam::MarshakRadiationFixedTemperatureFvPatchScalarField:: +MarshakRadiationFixedTemperatureFvPatchScalarField ( - const MarshakRadiationFixedTMixedFvPatchScalarField& ptf, + const MarshakRadiationFixedTemperatureFvPatchScalarField& ptf, const DimensionedField<scalar, volMesh>& iF ) : @@ -132,7 +130,7 @@ MarshakRadiationFixedTMixedFvPatchScalarField // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void Foam::MarshakRadiationFixedTMixedFvPatchScalarField::autoMap +void Foam::MarshakRadiationFixedTemperatureFvPatchScalarField::autoMap ( const fvPatchFieldMapper& m ) @@ -142,7 +140,7 @@ void Foam::MarshakRadiationFixedTMixedFvPatchScalarField::autoMap } -void Foam::MarshakRadiationFixedTMixedFvPatchScalarField::rmap +void Foam::MarshakRadiationFixedTemperatureFvPatchScalarField::rmap ( const fvPatchScalarField& ptf, const labelList& addr @@ -150,14 +148,14 @@ void Foam::MarshakRadiationFixedTMixedFvPatchScalarField::rmap { mixedFvPatchScalarField::rmap(ptf, addr); - const MarshakRadiationFixedTMixedFvPatchScalarField& mrptf = - refCast<const MarshakRadiationFixedTMixedFvPatchScalarField>(ptf); + const MarshakRadiationFixedTemperatureFvPatchScalarField& mrptf = + refCast<const MarshakRadiationFixedTemperatureFvPatchScalarField>(ptf); Trad_.rmap(mrptf.Trad_, addr); } -void Foam::MarshakRadiationFixedTMixedFvPatchScalarField::updateCoeffs() +void Foam::MarshakRadiationFixedTemperatureFvPatchScalarField::updateCoeffs() { if (this->updated()) { @@ -190,7 +188,7 @@ void Foam::MarshakRadiationFixedTMixedFvPatchScalarField::updateCoeffs() } -void Foam::MarshakRadiationFixedTMixedFvPatchScalarField::write +void Foam::MarshakRadiationFixedTemperatureFvPatchScalarField::write ( Ostream& os ) const @@ -208,7 +206,7 @@ namespace Foam makePatchTypeField ( fvPatchScalarField, - MarshakRadiationFixedTMixedFvPatchScalarField + MarshakRadiationFixedTemperatureFvPatchScalarField ); } diff --git a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiationFixedT/MarshakRadiationFixedTMixedFvPatchScalarField.H b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiationFixedTemperature/MarshakRadiationFixedTemperatureFvPatchScalarField.H similarity index 67% rename from src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiationFixedT/MarshakRadiationFixedTMixedFvPatchScalarField.H rename to src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiationFixedTemperature/MarshakRadiationFixedTemperatureFvPatchScalarField.H index 97bde41076786e4a4fde990ec4d47853b9c4bb5b..646b0ca2678b23a97e8fead9db4826eb153352e8 100644 --- a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiationFixedT/MarshakRadiationFixedTMixedFvPatchScalarField.H +++ b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/MarshakRadiationFixedTemperature/MarshakRadiationFixedTemperatureFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,19 +22,46 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::MarshakRadiationFixedTMixedFvPatchScalarField + Foam::MarshakRadiationFixedTemperatureFvPatchScalarField + +Group + grpThermoBoundaryConditions Description - Marshak boundary for radiation G field - - radiation temperature specified + A 'mixed' boundary condition that implements a Marshak condition for the + incident radiation field (usually written as G) + + The radiation temperature field across the patch is supplied by the user + using the \c Trad entry. + + \heading Patch usage + + \table + Property | Description | Required | Default value + T | temperature field name | no | T + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type MarshakRadiationFixedTemperature; + Trad uniform 1000; // radiation temperature field + value uniform 0; // place holder + } + \endverbatim + +SeeAlso + Foam::radiationCoupledBase + Foam::mixedFvPatchField SourceFiles - MarshakRadiationFixedTMixedFvPatchScalarField.C + MarshakRadiationFixedTemperatureFvPatchScalarField.C \*---------------------------------------------------------------------------*/ -#ifndef MarshakRadiationFixedTMixedFvPatchField_H -#define MarshakRadiationFixedTMixedFvPatchField_H +#ifndef MarshakRadiationFixedTemperatureFvPatchScalarField_H +#define MarshakRadiationFixedTemperatureFvPatchScalarField_H #include "mixedFvPatchFields.H" #include "radiationCoupledBase.H" @@ -45,10 +72,10 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class MarshakRadiationFixedTMixedFvPatchScalarField Declaration + Class MarshakRadiationFixedTemperatureFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ -class MarshakRadiationFixedTMixedFvPatchScalarField +class MarshakRadiationFixedTemperatureFvPatchScalarField : public mixedFvPatchScalarField, public radiationCoupledBase @@ -63,20 +90,20 @@ class MarshakRadiationFixedTMixedFvPatchScalarField public: //- Runtime type information - TypeName("MarshakRadiationFixedT"); + TypeName("MarshakRadiationFixedTemperature"); // Constructors //- Construct from patch and internal field - MarshakRadiationFixedTMixedFvPatchScalarField + MarshakRadiationFixedTemperatureFvPatchScalarField ( const fvPatch&, const DimensionedField<scalar, volMesh>& ); //- Construct from patch, internal field and dictionary - MarshakRadiationFixedTMixedFvPatchScalarField + MarshakRadiationFixedTemperatureFvPatchScalarField ( const fvPatch&, const DimensionedField<scalar, volMesh>&, @@ -85,18 +112,18 @@ public: //- Construct by mapping given MarshakRadiationFvPatchField onto a new // patch - MarshakRadiationFixedTMixedFvPatchScalarField + MarshakRadiationFixedTemperatureFvPatchScalarField ( - const MarshakRadiationFixedTMixedFvPatchScalarField&, + const MarshakRadiationFixedTemperatureFvPatchScalarField&, const fvPatch&, const DimensionedField<scalar, volMesh>&, const fvPatchFieldMapper& ); //- Construct as copy - MarshakRadiationFixedTMixedFvPatchScalarField + MarshakRadiationFixedTemperatureFvPatchScalarField ( - const MarshakRadiationFixedTMixedFvPatchScalarField& + const MarshakRadiationFixedTemperatureFvPatchScalarField& ); //- Construct and return a clone @@ -104,14 +131,14 @@ public: { return tmp<fvPatchScalarField> ( - new MarshakRadiationFixedTMixedFvPatchScalarField(*this) + new MarshakRadiationFixedTemperatureFvPatchScalarField(*this) ); } //- Construct as copy setting internal field reference - MarshakRadiationFixedTMixedFvPatchScalarField + MarshakRadiationFixedTemperatureFvPatchScalarField ( - const MarshakRadiationFixedTMixedFvPatchScalarField&, + const MarshakRadiationFixedTemperatureFvPatchScalarField&, const DimensionedField<scalar, volMesh>& ); @@ -123,7 +150,11 @@ public: { return tmp<fvPatchScalarField> ( - new MarshakRadiationFixedTMixedFvPatchScalarField(*this, iF) + new MarshakRadiationFixedTemperatureFvPatchScalarField + ( + *this, + iF + ) ); } diff --git a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C index 02637c203a1de3474f2d59a7ebd761933b2f7733..5817279076fcbbf90e12553acbfa81d6377e9fd2 100644 --- a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C +++ b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -45,7 +45,7 @@ greyDiffusiveRadiationMixedFvPatchScalarField : mixedFvPatchScalarField(p, iF), radiationCoupledBase(p, "undefined", scalarField::null()), - TName_("undefinedT") + TName_("T") { refValue() = 0.0; refGrad() = 0.0; @@ -83,7 +83,7 @@ greyDiffusiveRadiationMixedFvPatchScalarField : mixedFvPatchScalarField(p, iF), radiationCoupledBase(p, dict), - TName_(dict.lookup("T")) + TName_(dict.lookupOrDefault<word>("T", "T")) { if (dict.found("refValue")) { @@ -262,7 +262,7 @@ void Foam::radiation::greyDiffusiveRadiationMixedFvPatchScalarField::write { mixedFvPatchScalarField::write(os); radiationCoupledBase::write(os); - os.writeKeyword("T") << TName_ << token::END_STATEMENT << nl; + writeEntryIfDifferent<word>(os, "T", "T", TName_); } diff --git a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.H b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.H index 2199242b59204e986489e4931eb2982a05bc8252..f1a38077e0acb383c0b83fae37fe654a4ce1dcd5 100644 --- a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.H +++ b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,10 +22,41 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::greyDiffusiveRadiationMixedFvPatchScalarField + Foam::radiation::greyDiffusiveRadiationMixedFvPatchScalarField + +Group + grpThermoBoundaryConditions Description - Radiation temperature specified + This boundary condition provides a grey-diffuse condition for radiation + intensity, \c I, for use with the finite-volume discrete-ordinates model + (fvDOM), in which the radiation temperature is retrieved from the + temperature field boundary condition. + + \heading Patch usage + + \table + Property | Description | Required | Default value + T | temperature field name | no | T + emissivityMode | emissivity mode: solidThermo or lookup | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type greyDiffusiveRadiation; + T T; + emissivityMode solidThermo; + value uniform 0; + } + \endverbatim + +SeeAlso + Foam::radiation::radiationModel + Foam::radiation::fvDOM + Foam::radiationCoupledBase + Foam::mixedFvPatchField SourceFiles greyDiffusiveRadiationMixedFvPatchScalarField.C diff --git a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.H b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.H index 74a552ddb16476ea4e4fb9a402adaeae7183f281..3dff551ee7fe1717b7dd1efe43cbb6c1dbd13356 100644 --- a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.H +++ b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/greyDiffusiveViewFactor/greyDiffusiveViewFactorFixedValueFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,10 +22,39 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::greyDiffusiveViewFactorFixedValueFvPatchScalarField + Foam::radiation::greyDiffusiveViewFactorFixedValueFvPatchScalarField + +Group + grpThermoBoundaryConditions Description - Radiation temperature specified + This boundary condition provides a grey-diffuse condition for radiative + heat flux, \c Qr, for use with the view factor model + + \heading Patch usage + + \table + Property | Description | Required | Default value + Qro | external radiative heat flux | yes | + emissivityMode | emissivity mode: solidThermo or lookup | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type greyDiffusiveRadiationViewFactor; + Qro uniform 0; + emissivityMode solidThermo; + value uniform 0; + } + \endverbatim + +SeeAlso + Foam::radiation::radiationModel + Foam::radiation::viewFactor + Foam::radiationCoupledBase + Foam::fixedValueFvPatchField SourceFiles greyDiffusiveViewFactorFixedValueFvPatchScalarField.C diff --git a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/radiationCoupledBase/radiationCoupledBase.H b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/radiationCoupledBase/radiationCoupledBase.H index d4a9599395c3dab6bb465c6d9a1ea2e6cdfb82bf..01d8e8761c58ad996b9d1bea44338662a7f32bc9 100644 --- a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/radiationCoupledBase/radiationCoupledBase.H +++ b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/radiationCoupledBase/radiationCoupledBase.H @@ -55,12 +55,14 @@ namespace Foam class radiationCoupledBase { public: - //- Type of supplied emissivity - enum emissivityMethodType - { - SOLIDTHERMO, - LOOKUP - }; + + //- Type of supplied emissivity + enum emissivityMethodType + { + SOLIDTHERMO, + LOOKUP + }; + private: @@ -72,6 +74,7 @@ private: //- Underlying patch const fvPatch& patch_; + protected: // Protected data diff --git a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C index ff0bb83b4603963d32238e43dfeceb145c6e3367..e6e7b4b225915b3254a3c5ee4c6bcf40ef7fdab2 100644 --- a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C +++ b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C @@ -46,7 +46,7 @@ wideBandDiffusiveRadiationMixedFvPatchScalarField : mixedFvPatchScalarField(p, iF), radiationCoupledBase(p, "undefined", scalarField::null()), - TName_("undefinedT") + TName_("T") { refValue() = 0.0; refGrad() = 0.0; @@ -84,7 +84,7 @@ wideBandDiffusiveRadiationMixedFvPatchScalarField : mixedFvPatchScalarField(p, iF), radiationCoupledBase(p, dict), - TName_(dict.lookup("T")) + TName_(dict.lookupOrDefault<word>("T", "T")) { if (dict.found("value")) { @@ -249,8 +249,7 @@ void Foam::radiation::wideBandDiffusiveRadiationMixedFvPatchScalarField::write { mixedFvPatchScalarField::write(os); radiationCoupledBase::write(os); - os.writeKeyword("T") << TName_ << token::END_STATEMENT << nl; - + writeEntryIfDifferent<word>(os, "T", "T", TName_); } diff --git a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.H b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.H index cd9fb9aecedca24f8ed192c8f9340f623d4856ae..4f7afc0fa0ee417e43a6fd7886a2536b27538f8e 100644 --- a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.H +++ b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,10 +22,34 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::wideBandDiffusiveRadiationMixedFvPatchScalarField + Foam::radiation::wideBandDiffusiveRadiationMixedFvPatchScalarField + +Group + grpThermoBoundaryConditions Description - Radiation temperature specified + This boundary condition provides a wide-band, diffusive radiation + condition, where the patch temperature is specified. + + \heading Patch usage + + \table + Property | Description | Required | Default value + T | temperature field name | no | T + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type wideBandDiffusiveRadiation; + value uniform 0; + } + \endverbatim + +SeeAlso + Foam::mixedFvPatchScalarField + Foam::radiationCoupledBase SourceFiles wideBandDiffusiveRadiationMixedFvPatchScalarField.C diff --git a/src/thermophysicalModels/radiationModels/radiationModel/fvDOM/fvDOM/fvDOM.H b/src/thermophysicalModels/radiationModels/radiationModel/fvDOM/fvDOM/fvDOM.H index 1e49063fa4248ba728e030e72f1f3d5f1936731d..dda36a5c5d6119f34fda6c376531a877144b9a4b 100644 --- a/src/thermophysicalModels/radiationModels/radiationModel/fvDOM/fvDOM/fvDOM.H +++ b/src/thermophysicalModels/radiationModels/radiationModel/fvDOM/fvDOM/fvDOM.H @@ -34,14 +34,16 @@ Description wideBandAbsorptionEmission i.e. dictionary - fvDOMCoeffs - { - nPhi 1; // azimuthal angles in PI/2 on X-Y.(from Y to X) - nTheta 2; // polar angles in PI (from Z to X-Y plane) - convergence 1e-4; // convergence criteria for radiation iteration - } - - solverFreq 1; // Number of flow iterations per radiation iteration + \verbatim + fvDOMCoeffs + { + nPhi 1; // azimuthal angles in PI/2 on X-Y.(from Y to X) + nTheta 2; // polar angles in PI (from Z to X-Y plane) + convergence 1e-4; // convergence criteria for radiation iteration + } + + solverFreq 1; // Number of flow iterations per radiation iteration + \endverbatim The total number of solid angles is 4*nPhi*nTheta. diff --git a/src/thermophysicalModels/solidChemistryModel/solidChemistrySolver/makeSolidChemistrySolverType.H b/src/thermophysicalModels/solidChemistryModel/solidChemistrySolver/makeSolidChemistrySolverType.H index f528bc50a5dccffcc9d050e6fbdf5d28ec375cb1..39e49524e431cf492d87290f53c9ab9c441ead74 100644 --- a/src/thermophysicalModels/solidChemistryModel/solidChemistrySolver/makeSolidChemistrySolverType.H +++ b/src/thermophysicalModels/solidChemistryModel/solidChemistrySolver/makeSolidChemistrySolverType.H @@ -41,6 +41,11 @@ namespace Foam #define makeSolidChemistrySolverType(SS, ODEChem, Comp, SThermo, GThermo) \ \ + typedef ODESolidChemistryModel<Comp, SThermo, GThermo> \ + ODESolidChemistryModel##Comp##SThermo##GThermo; \ + \ + makeChemistrySolver(ODESolidChemistryModel##Comp##SThermo##GThermo) \ + \ typedef SS<ODEChem<Comp, SThermo, GThermo> > \ SS##ODEChem##Comp##SThermo##GThermo; \ \ diff --git a/src/thermophysicalModels/solidChemistryModel/solidChemistrySolver/makeSolidChemistrySolvers.C b/src/thermophysicalModels/solidChemistryModel/solidChemistrySolver/makeSolidChemistrySolvers.C index cfdb9c2d534b378b6bd6e1c63907423e0f21233a..64cc73126628f523957c47c2d1106626571dd7b2 100644 --- a/src/thermophysicalModels/solidChemistryModel/solidChemistrySolver/makeSolidChemistrySolvers.C +++ b/src/thermophysicalModels/solidChemistryModel/solidChemistrySolver/makeSolidChemistrySolvers.C @@ -27,8 +27,6 @@ License #include "solidThermoPhysicsTypes.H" #include "thermoPhysicsTypes.H" -#include "chemistrySolver.H" - #include "ODESolidChemistryModel.H" #include "solidChemistryModel.H" @@ -38,12 +36,6 @@ License namespace Foam { - typedef ODESolidChemistryModel - <solidChemistryModel, hConstSolidThermoPhysics, gasThermoPhysics> - solidODEChemistryConstThermo; - - makeChemistrySolver(solidODEChemistryConstThermo) - makeSolidChemistrySolverType ( ode, @@ -53,12 +45,6 @@ namespace Foam gasThermoPhysics ) - typedef ODESolidChemistryModel - <solidChemistryModel, hExponentialSolidThermoPhysics, gasThermoPhysics> - solidODEChemistryExpThermo; - - makeChemistrySolver(solidODEChemistryExpThermo) - makeSolidChemistrySolverType ( ode, diff --git a/src/transportModels/twoPhaseInterfaceProperties/alphaContactAngle/alphaContactAngle/alphaContactAngleFvPatchScalarField.H b/src/transportModels/twoPhaseInterfaceProperties/alphaContactAngle/alphaContactAngle/alphaContactAngleFvPatchScalarField.H index de6086c906fd6f4c67ea4850d88bcc5aecab029d..6d1f65fe73f0c42feabea6a470be8093302116b8 100644 --- a/src/transportModels/twoPhaseInterfaceProperties/alphaContactAngle/alphaContactAngle/alphaContactAngleFvPatchScalarField.H +++ b/src/transportModels/twoPhaseInterfaceProperties/alphaContactAngle/alphaContactAngle/alphaContactAngleFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,6 +24,9 @@ License Class Foam::alphaContactAngleFvPatchScalarField +Group + grpWallBoundaryConditions grpGenericBoundaryConditions + Description Abstract base class for alphaContactAngle boundary conditions. @@ -47,11 +50,12 @@ Description on p_rgh must set to guarantee that the flux is corrected to be zero at the wall e.g. - walls - { - type fixedFluxPressure; - adjoint no; - } + \verbatim + myPatch + { + type alphaContactAngle; + } + \endverbatim If "limit zeroGradient;" is used the pressure BCs can be left as before. @@ -72,7 +76,7 @@ namespace Foam { /*---------------------------------------------------------------------------*\ - Class alphaContactAngleFvPatch Declaration + Class alphaContactAngleFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class alphaContactAngleFvPatchScalarField diff --git a/src/turbulenceModels/compressible/LES/DESModel/DESModel.C b/src/turbulenceModels/compressible/LES/DESModel/DESModel.C new file mode 100644 index 0000000000000000000000000000000000000000..74873f49e56f6f19332bf5df5a257488ac54d5dc --- /dev/null +++ b/src/turbulenceModels/compressible/LES/DESModel/DESModel.C @@ -0,0 +1,57 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "DESModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace compressible +{ + +// * * * * * * * * * * * * * * * Constructor * * * * * * * * * * * * * * * * // + +DESModel::DESModel +( + const word& type, + const volScalarField& rho, + const volVectorField& U, + const surfaceScalarField& phi, + const fluidThermo& thermoPhysicalModel, + const word& turbulenceModelName +) +: + LESModel(type, rho, U, phi, thermoPhysicalModel, turbulenceModelName) + +{} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace compressible +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/turbulenceModels/compressible/LES/DESModel/DESModel.H b/src/turbulenceModels/compressible/LES/DESModel/DESModel.H new file mode 100644 index 0000000000000000000000000000000000000000..9832c4de389aec12ac2926edf54423fe7624c952 --- /dev/null +++ b/src/turbulenceModels/compressible/LES/DESModel/DESModel.H @@ -0,0 +1,114 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +Group + grpCmpDESTurbulence + +Class + Foam::compressible::DESModel + +Description + Extension of LES models to provide an interface for Detached Eddy + Simulation turbulence models + +SeeAlso + Foam::LESModel + +SourceFiles + DESModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef compressibleDESModel_H +#define compressibleDESModel_H + +// note: use full(er) path so that derived utilities can bring in +// incompressible and compressible variants + +#include "compressible/LES/LESModel/LESModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace compressible +{ + +/*---------------------------------------------------------------------------*\ + Class DESModel Declaration +\*---------------------------------------------------------------------------*/ + +class DESModel +: + public LESModel +{ + +private: + + // Private Member Functions + + //- Disallow default bitwise copy construct + DESModel(const DESModel&); + + //- Disallow default bitwise assignment + DESModel& operator=(const DESModel&); + + +public: + + // Constructors + + //- Construct from components + DESModel + ( + const word& type, + const volScalarField& rho, + const volVectorField& U, + const surfaceScalarField& phi, + const fluidThermo& thermoPhysicalModel, + const word& turbulenceModelName + ); + + + //- Destructor + virtual ~DESModel() + {} + + + // Public Member Functions + + //- Return the LES field indicator + virtual tmp<volScalarField> LESRegion() const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace compressible +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/turbulenceModels/compressible/LES/DESModel/DESModelDoc.H b/src/turbulenceModels/compressible/LES/DESModel/DESModelDoc.H new file mode 100644 index 0000000000000000000000000000000000000000..e9deb3208edc0f55672c0c3afdda65716e28fe23 --- /dev/null +++ b/src/turbulenceModels/compressible/LES/DESModel/DESModelDoc.H @@ -0,0 +1,32 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +\defgroup grpCmpDESTurbulence Compressible DES turbulence +@{ + \ingroup grpCmpTurbulence + This group contains compressible DES models. +@} + +\*---------------------------------------------------------------------------*/ diff --git a/src/turbulenceModels/compressible/LES/DeardorffDiffStress/DeardorffDiffStress.H b/src/turbulenceModels/compressible/LES/DeardorffDiffStress/DeardorffDiffStress.H index 38e743c24230f2f3e4c1cafeb135160ed91dcc37..f84c00f5d3ebd4d3abb4da65e0ac5eaad69f2aa2 100644 --- a/src/turbulenceModels/compressible/LES/DeardorffDiffStress/DeardorffDiffStress.H +++ b/src/turbulenceModels/compressible/LES/DeardorffDiffStress/DeardorffDiffStress.H @@ -24,6 +24,9 @@ License Class Foam::compressible::LESModels::DeardorffDiffStress +Group + grpCmpLESTurbulence + Description Differential SGS Stress Equation Model for compressible flows diff --git a/src/turbulenceModels/compressible/LES/GenEddyVisc/GenEddyVisc.H b/src/turbulenceModels/compressible/LES/GenEddyVisc/GenEddyVisc.H index 7e32d57396f99f0ea751223df915dcb2e3a63453..d4af6e5e2a7149f6a36a8409bf824d2454c0b916 100644 --- a/src/turbulenceModels/compressible/LES/GenEddyVisc/GenEddyVisc.H +++ b/src/turbulenceModels/compressible/LES/GenEddyVisc/GenEddyVisc.H @@ -24,6 +24,9 @@ License Class Foam::compressible::LESModels::GenEddyVisc +Group + grpCmpLESTurbulence + Description General base class for all compressible models that can be implemented as an eddy viscosity, i.e. algebraic and one-equation models. diff --git a/src/turbulenceModels/compressible/LES/GenSGSStress/GenSGSStress.H b/src/turbulenceModels/compressible/LES/GenSGSStress/GenSGSStress.H index 202a85371ead0719fad8e24d40b1ddfca8baec53..44eef6da8f164f0ee14c566fbedb3bdf4445c412 100644 --- a/src/turbulenceModels/compressible/LES/GenSGSStress/GenSGSStress.H +++ b/src/turbulenceModels/compressible/LES/GenSGSStress/GenSGSStress.H @@ -24,6 +24,9 @@ License Class Foam::compressible::LESModels::GenSGSStress +Group + grpCmpLESTurbulence + Description General base class for all compressible models that directly solve for the SGS stress tensor B. @@ -52,7 +55,7 @@ namespace LESModels { /*---------------------------------------------------------------------------*\ - Class GenSGSStress Declaration + Class GenSGSStress Declaration \*---------------------------------------------------------------------------*/ class GenSGSStress diff --git a/src/turbulenceModels/compressible/LES/LESModel/LESModel.H b/src/turbulenceModels/compressible/LES/LESModel/LESModel.H index 47b25419204b167cbad12eb116ddaad92d209410..f33a1681dcf2eccf9c853f39ff560e2764c04e44 100644 --- a/src/turbulenceModels/compressible/LES/LESModel/LESModel.H +++ b/src/turbulenceModels/compressible/LES/LESModel/LESModel.H @@ -24,10 +24,12 @@ License Namespace Foam::compressible::LESModels +Group + grpCmpLESTurbulence + Description Namespace for compressible LES models. - Class Foam::compressible::LESModel diff --git a/src/turbulenceModels/compressible/LES/LESModel/LESModelDoc.H b/src/turbulenceModels/compressible/LES/LESModel/LESModelDoc.H new file mode 100644 index 0000000000000000000000000000000000000000..ac8c52e36ad9580d7ea04cc09555476d52af335a --- /dev/null +++ b/src/turbulenceModels/compressible/LES/LESModel/LESModelDoc.H @@ -0,0 +1,32 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +\defgroup grpCmpLESTurbulence Compressible LES turbulence +@{ + \ingroup grpCmpTurbulence + This group contains compressible LES models. +@} + +\*---------------------------------------------------------------------------*/ diff --git a/src/turbulenceModels/compressible/LES/Make/files b/src/turbulenceModels/compressible/LES/Make/files index cc52d88433d2bc58b9549e147c01ed4bbfb5b098..1ed6bd6b4ba9b7bbc2caec0d507e5c7a6aff6fdc 100644 --- a/src/turbulenceModels/compressible/LES/Make/files +++ b/src/turbulenceModels/compressible/LES/Make/files @@ -1,4 +1,5 @@ LESModel/LESModel.C +DESModel/DESModel.C GenEddyVisc/GenEddyVisc.C GenSGSStress/GenSGSStress.C diff --git a/src/turbulenceModels/compressible/LES/Smagorinsky/Smagorinsky.H b/src/turbulenceModels/compressible/LES/Smagorinsky/Smagorinsky.H index 6ba2e6634caaa56b727686249f447a46fdb58a8a..56821ae60eb481f5b024ad5ed0bddbafce65a191 100644 --- a/src/turbulenceModels/compressible/LES/Smagorinsky/Smagorinsky.H +++ b/src/turbulenceModels/compressible/LES/Smagorinsky/Smagorinsky.H @@ -24,6 +24,9 @@ License Class Foam::compressible::LESModels::Smagorinsky +Group + grpCmpLESTurbulence + Description The choric Smagorinsky Model for compressible flows. diff --git a/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.C b/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.C index bda2af653d3e466e2eb346a3626fe84bce3b5003..6994f926e37dc402a4702d850ca1f6a441d99306 100644 --- a/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.C +++ b/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.C @@ -118,7 +118,7 @@ SpalartAllmaras::SpalartAllmaras const word& modelName ) : - LESModel(modelName, rho, U, phi, thermoPhysicalModel, turbulenceModelName), + DESModel(modelName, rho, U, phi, thermoPhysicalModel, turbulenceModelName), sigmaNut_ ( @@ -364,6 +364,32 @@ bool SpalartAllmaras::read() } +tmp<volScalarField> SpalartAllmaras::LESRegion() const +{ + volScalarField wd(wallDist(mesh_).y()); + + tmp<volScalarField> tLESRegion + ( + new volScalarField + ( + IOobject + ( + "DES::LESRegion", + mesh_.time().timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + neg(min(CDES_*delta(), wd) - wd) +// mesh_, +// dimensionedScalar("zero", dimless, 0.0) + ) + ); + + return tLESRegion; +} + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace LESModels diff --git a/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.H b/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.H index cac2c693f3e55acb4423fbce49133eab02badb4e..18975789422911059336d189d54f3fae1b3feb44 100644 --- a/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.H +++ b/src/turbulenceModels/compressible/LES/SpalartAllmaras/SpalartAllmaras.H @@ -24,6 +24,9 @@ License Class Foam::compressible::LESModels::SpalartAllmaras +Group + grpCmpDESTurbulence + Description SpalartAllmaras for compressible flows @@ -35,7 +38,7 @@ SourceFiles #ifndef compressibleSpalartAllmaras_H #define compressibleSpalartAllmaras_H -#include "LESModel.H" +#include "DESModel.H" #include "volFields.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -53,7 +56,7 @@ namespace LESModels class SpalartAllmaras : - public LESModel + public DESModel { // Private data @@ -166,6 +169,9 @@ public: //- Read LESProperties dictionary virtual bool read(); + + //- Return the LES field indicator + virtual tmp<volScalarField> LESRegion() const; }; diff --git a/src/turbulenceModels/compressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.H b/src/turbulenceModels/compressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.H index e7727db7858181ad4b4b35b6afee942004ccf914..fca371f0d3904480ed43961f779433342b2b856d 100644 --- a/src/turbulenceModels/compressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.H +++ b/src/turbulenceModels/compressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.H @@ -24,6 +24,9 @@ License Class Foam::compressible::LESModels::homogeneousDynOneEqEddy +Group + grpCmpLESTurbulence + Description One Equation Eddy Viscosity Model for compressible flows. diff --git a/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.H b/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.H index d35ee9da1670ffbcebc54fdfb7cae2c51ed1bf1f..e3e836d3a58c5aa0332c237b2855eda6e7ec5940 100644 --- a/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.H +++ b/src/turbulenceModels/compressible/LES/lowReOneEqEddy/lowReOneEqEddy.H @@ -24,6 +24,9 @@ License Class Foam::compressible::LESModels::lowReOneEqEddy +Group + grpCmpLESTurbulence + Description One Equation Eddy Viscosity Model for compressible flow diff --git a/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.H b/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.H index 1220e39a69526b51952c89908fd17d83455585da..7e0896935ca1e71d89b1a7d65653163783ee670b 100644 --- a/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.H +++ b/src/turbulenceModels/compressible/LES/oneEqEddy/oneEqEddy.H @@ -24,6 +24,9 @@ License Class Foam::compressible::LESModels::oneEqEddy +Group + grpCmpLESTurbulence + Description One Equation Eddy Viscosity Model for compressible flows diff --git a/src/turbulenceModels/compressible/RAS/LRR/LRR.H b/src/turbulenceModels/compressible/RAS/LRR/LRR.H index 2fee193d6797e6fd85fcd960ebff3b24de70622e..a80bf4171be81cb7bc6c671ee55806d0f7303ff7 100644 --- a/src/turbulenceModels/compressible/RAS/LRR/LRR.H +++ b/src/turbulenceModels/compressible/RAS/LRR/LRR.H @@ -24,6 +24,9 @@ License Class Foam::compressible::RASModels::LRR +Group + grpCmpRASTurbulence + Description Launder, Reece and Rodi Reynolds-stress turbulence model for compressible flows. diff --git a/src/turbulenceModels/compressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.H b/src/turbulenceModels/compressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.H index 7e8760946900990b5498123503ae295988eaed5e..d7f09205b08c8dc78bffddb3dfdf0f0e28d77f57 100644 --- a/src/turbulenceModels/compressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.H +++ b/src/turbulenceModels/compressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.H @@ -24,6 +24,9 @@ License Class Foam::compressible::RASModels::LaunderGibsonRSTM +Group + grpCmpRASTurbulence + Description Launder-Gibson Reynolds stress turbulence model for compressible flows. diff --git a/src/turbulenceModels/compressible/RAS/LaunderSharmaKE/LaunderSharmaKE.H b/src/turbulenceModels/compressible/RAS/LaunderSharmaKE/LaunderSharmaKE.H index 6ab57c98ef9db558fcaf65b80de9a4615d24df99..034b542ad99875c0291c44bd23de9bce53e4bf1a 100644 --- a/src/turbulenceModels/compressible/RAS/LaunderSharmaKE/LaunderSharmaKE.H +++ b/src/turbulenceModels/compressible/RAS/LaunderSharmaKE/LaunderSharmaKE.H @@ -24,6 +24,9 @@ License Class Foam::compressible::RASModels::LaunderSharmaKE +Group + grpCmpRASTurbulence + Description Launder and Sharma low-Reynolds k-epsilon turbulence model for compressible and combusting flows. diff --git a/src/turbulenceModels/compressible/RAS/RASModel/RASModel.H b/src/turbulenceModels/compressible/RAS/RASModel/RASModel.H index 377515afa7982d1500cb000d5fd4ae55b3d6731a..1efe2cd08dfdd64be7c8a4e1080120d76976479d 100644 --- a/src/turbulenceModels/compressible/RAS/RASModel/RASModel.H +++ b/src/turbulenceModels/compressible/RAS/RASModel/RASModel.H @@ -27,7 +27,6 @@ Namespace Description Namespace for compressible RAS turbulence models. - Class Foam::compressible::RASModel diff --git a/src/turbulenceModels/compressible/RAS/RASModel/RASModelDoc.H b/src/turbulenceModels/compressible/RAS/RASModel/RASModelDoc.H new file mode 100644 index 0000000000000000000000000000000000000000..53757f8141d0733e92dbba76c37256230739e478 --- /dev/null +++ b/src/turbulenceModels/compressible/RAS/RASModel/RASModelDoc.H @@ -0,0 +1,32 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +\defgroup grpCmpRASTurbulence Compressible RAS turbulence +@{ + \ingroup grpCmpTurbulence + This group contains compressible RAS models. +@} + +\*---------------------------------------------------------------------------*/ diff --git a/src/turbulenceModels/compressible/RAS/RNGkEpsilon/RNGkEpsilon.H b/src/turbulenceModels/compressible/RAS/RNGkEpsilon/RNGkEpsilon.H index ba0077e7c4dae87813ec1462b690dec5800e14fa..2c95acd766dad44a26dd0e1250e3ac7630737186 100644 --- a/src/turbulenceModels/compressible/RAS/RNGkEpsilon/RNGkEpsilon.H +++ b/src/turbulenceModels/compressible/RAS/RNGkEpsilon/RNGkEpsilon.H @@ -24,6 +24,9 @@ License Class Foam::compressible::RASModels::RNGkEpsilon +Group + grpCmpRASTurbulence + Description Renormalisation group k-epsilon turbulence model for compressible flows. diff --git a/src/turbulenceModels/compressible/RAS/SpalartAllmaras/SpalartAllmaras.H b/src/turbulenceModels/compressible/RAS/SpalartAllmaras/SpalartAllmaras.H index 0bea2f35a01d1b017a6501504dc7de3fb8713f96..ea829fc88dfbe69502c2346ec6723a84df45a952 100644 --- a/src/turbulenceModels/compressible/RAS/SpalartAllmaras/SpalartAllmaras.H +++ b/src/turbulenceModels/compressible/RAS/SpalartAllmaras/SpalartAllmaras.H @@ -24,6 +24,9 @@ License Class Foam::compressible::RASModels::SpalartAllmaras +Group + grpCmpRASTurbulence + Description Spalart-Allmaras one-eqn mixing-length model for compressible external flows. diff --git a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/convectiveHeatTransfer/convectiveHeatTransferFvPatchScalarField.H b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/convectiveHeatTransfer/convectiveHeatTransferFvPatchScalarField.H index 8731d01a6e7aeaf28c53628aea09dbce675eadd7..2bc06bb0e47751bf72d8887ca9ba011fb647ed34 100644 --- a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/convectiveHeatTransfer/convectiveHeatTransferFvPatchScalarField.H +++ b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/convectiveHeatTransfer/convectiveHeatTransferFvPatchScalarField.H @@ -24,8 +24,50 @@ License Class Foam::compressible::RASModels::convectiveHeatTransferFvPatchScalarField +Group + grpCmpRASBoundaryConditions + Description - Convective heat transfer boundary condition + This boundary condition provides a convective heat transfer coefficient + condition + + if Re > 500000 + \f[ + htc_p = \frac{0.664 Re^{0.5} Pr^{0.333} \kappa_p}{L} + \f] + else + \f[ + htc_p = \frac{0.037 Re^{0.8} Pr^{0.333} \kappa_p}{L} + \f] + + where + + \vartable + htc_p | patch convective heat transfer coefficient + Re | Reynolds number + Pr | Prandtl number + \kappa_p | thermal conductivity + L | length scale + \endvartable + + \heading Patch usage + + \table + Property | Description | Required | Default value + L | Length scale [m] | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type convectiveHeatTransfer; + L 0.1; + } + \endverbatim + +SeeAlso + Foam::fixedValueFvPatchField SourceFiles convectiveHeatTransferFvPatchScalarField.C diff --git a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/doc/compressibleRASBoundaryConditionsDoc.H b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/doc/compressibleRASBoundaryConditionsDoc.H new file mode 100644 index 0000000000000000000000000000000000000000..d0ef1e1af9ce1d1b4627ffd3d0efb87ac5cc2167 --- /dev/null +++ b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/doc/compressibleRASBoundaryConditionsDoc.H @@ -0,0 +1,39 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +\defgroup grpCmpRASBoundaryConditions RAS compressible boundary conditions +@{ + \ingroup grpCmpRASTurbulence + This group contains compressible RAS turbulence model boundary conditions +@} + +\defgroup grpCmpWallFunctions RAS compressible wall functions +@{ + \ingroup grpCmpRASBoundaryConditions + This group contains compressible RAS turbulence model wall functions +@} + + +\*---------------------------------------------------------------------------*/ diff --git a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C index 25a34bf82e563868407890f422edff82569ed897..2811ea25795e9734a7faca4ebdfc0e6708aad2a5 100644 --- a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C +++ b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -48,14 +48,15 @@ turbulentMixingLengthDissipationRateInletFvPatchScalarField : inletOutletFvPatchScalarField(p, iF), mixingLength_(0.0), - phiName_("undefined-phi"), - kName_("undefined-k") + phiName_("phi"), + kName_("k") { this->refValue() = 0.0; this->refGrad() = 0.0; this->valueFraction() = 0.0; } + turbulentMixingLengthDissipationRateInletFvPatchScalarField:: turbulentMixingLengthDissipationRateInletFvPatchScalarField ( @@ -71,6 +72,7 @@ turbulentMixingLengthDissipationRateInletFvPatchScalarField kName_(ptf.kName_) {} + turbulentMixingLengthDissipationRateInletFvPatchScalarField:: turbulentMixingLengthDissipationRateInletFvPatchScalarField ( @@ -91,6 +93,7 @@ turbulentMixingLengthDissipationRateInletFvPatchScalarField this->valueFraction() = 0.0; } + turbulentMixingLengthDissipationRateInletFvPatchScalarField:: turbulentMixingLengthDissipationRateInletFvPatchScalarField ( @@ -103,6 +106,7 @@ turbulentMixingLengthDissipationRateInletFvPatchScalarField kName_(ptf.kName_) {} + turbulentMixingLengthDissipationRateInletFvPatchScalarField:: turbulentMixingLengthDissipationRateInletFvPatchScalarField ( diff --git a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.H b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.H index 25a401239a47ca54e88385e0d3d551f48678ef38..2031e2a808ac4692580927c0ee9d82485b093fbb 100644 --- a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.H +++ b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,19 +25,52 @@ Class Foam::compressible:: turbulentMixingLengthDissipationRateInletFvPatchScalarField +Group + grpCmpRASBoundaryConditions grpInletBoundaryConditions + Description - Calculate epsilon via the mixing length [m] + This boundary condition provides a turbulence dissipation, \f$\epsilon\f$ + (epsilon) inlet condition based on a specified mixing length. The patch + values are calculated using: + + \f[ + \epsilon_p = \frac{C_{\mu}^{0.75} k^{1.5}}{L} + \f] + + where + + \vartable + \epsilon_p | patch epsilon values + C_{\mu} | Model coefficient, set to 0.09 + k | turbulence kinetic energy + L | length scale + \endvartable + + \heading Patch usage + + \table + Property | Description | Required | Default value + mixingLength | Length scale [m] | yes | + phi | flux field name | no | phi + k | turbulence kinetic energy field name | no | k + \endtable Example of the boundary condition specification: \verbatim - inlet - { - type compressible::turbulentMixingLengthDissipationRateInlet; - mixingLength 0.005; // 5 mm - value uniform 200; // placeholder - } + myPatch + { + type compressible::turbulentMixingLengthDissipationRateInlet; + mixingLength 0.005; + value uniform 200; // placeholder + } \endverbatim +Note + In the event of reverse flow, a zero-gradient condition is applied + +SeeAlso + Foam::inletOutletFvPatchField + SourceFiles turbulentMixingLengthDissipationRateInletFvPatchScalarField.C @@ -56,7 +89,7 @@ namespace compressible { /*---------------------------------------------------------------------------*\ - Class turbulentMixingLengthDissipationRateInletFvPatch Declaration + Class turbulentMixingLengthDissipationRateInletFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class turbulentMixingLengthDissipationRateInletFvPatchScalarField diff --git a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.C b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.C index f60fb9555f8b14d144d7f176ec8abb898f394bb3..eda8faf3244b0cdf47c01234b069db195c94d00a 100644 --- a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.C +++ b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -48,14 +48,15 @@ turbulentMixingLengthFrequencyInletFvPatchScalarField : inletOutletFvPatchScalarField(p, iF), mixingLength_(0.0), - phiName_("undefined-phi"), - kName_("undefined-k") + phiName_("phi"), + kName_("k") { this->refValue() = 0.0; this->refGrad() = 0.0; this->valueFraction() = 0.0; } + turbulentMixingLengthFrequencyInletFvPatchScalarField:: turbulentMixingLengthFrequencyInletFvPatchScalarField ( @@ -71,6 +72,7 @@ turbulentMixingLengthFrequencyInletFvPatchScalarField kName_(ptf.kName_) {} + turbulentMixingLengthFrequencyInletFvPatchScalarField:: turbulentMixingLengthFrequencyInletFvPatchScalarField ( @@ -91,6 +93,7 @@ turbulentMixingLengthFrequencyInletFvPatchScalarField this->valueFraction() = 0.0; } + turbulentMixingLengthFrequencyInletFvPatchScalarField:: turbulentMixingLengthFrequencyInletFvPatchScalarField ( @@ -103,6 +106,7 @@ turbulentMixingLengthFrequencyInletFvPatchScalarField kName_(ptf.kName_) {} + turbulentMixingLengthFrequencyInletFvPatchScalarField:: turbulentMixingLengthFrequencyInletFvPatchScalarField ( diff --git a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.H b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.H index 288a9e30de40ffa40073158459adc5c5868b7db5..9aaeb71db0a5d0ef46df8b03080b489ebfb3a6ed 100644 --- a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.H +++ b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,20 +24,52 @@ License Class Foam::compressible::turbulentMixingLengthFrequencyInletFvPatchScalarField +Group + grpCmpRASBoundaryConditions grpInletBoundaryConditions + Description - Calculate omega via the mixing length + This boundary condition provides a turbulence specific dissipation, + \f$\omega\f$ (omega) inlet condition based on a specified mixing length. + The patch values are calculated using: + + \f[ + \omega_p = \frac{k^{0.5}}{C_{\mu}^{0.25} L} + \f] + + where + + \vartable + \omega_p | patch omega values + C_{\mu} | Model coefficient, set to 0.09 + k | turbulence kinetic energy + L | length scale + \endvartable + + \heading Patch usage + + \table + Property | Description | Required | Default value + mixingLength | Length scale [m] | yes | + phi | flux field name | no | phi + k | turbulence kinetic energy field name | no | k + \endtable Example of the boundary condition specification: \verbatim - inlet - { - type compressible::turbulentMixingLengthFrequencyInlet; - mixingLength 0.005; // 5 mm - k k; // turbulent k field - value uniform 5; // initial value - } + myPatch + { + type compressible::turbulentMixingLengthFrequencyInlet; + mixingLength 0.005; + value uniform 200; // placeholder + } \endverbatim +Note + In the event of reverse flow, a zero-gradient condition is applied + +SeeAlso + Foam::inletOutletFvPatchField + SourceFiles turbulentMixingLengthFrequencyInletFvPatchScalarField.C diff --git a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatJayatillekeWallFunction/alphatJayatillekeWallFunctionFvPatchScalarField.H b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatJayatillekeWallFunction/alphatJayatillekeWallFunctionFvPatchScalarField.H index b36779b35c362bb90ae50a6193c3be55338b7446..60271aae48a4a17fc420737a61f4696468d2efd3 100644 --- a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatJayatillekeWallFunction/alphatJayatillekeWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatJayatillekeWallFunction/alphatJayatillekeWallFunctionFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,9 +24,37 @@ License Class alphatJayatillekeWallFunctionFvPatchScalarField +Group + grpCmpWallFunctions + Description - Thermal wall function for turbulent thermal diffusivity based on the - Jayatilleke thermal wall function + This boundary condition provides a thermal wall function for turbulent + thermal diffusivity (usually\c alphat) based on the Jayatilleke model. + + \heading Patch usage + + \table + Property | Description | Required | Default value + Prt | turbulent Prandtl number | no | 0.85 + Cmu | model coefficient | no | 0.09 + kappa | Von Karman constant | no | 0.41 + E | model coefficient | no | 9.8 + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type alphatJayatillekeWallFunction; + Prt 0.85; + kappa 0.41; + E 9.8; + value uniform 0; // optional value entry + } + \endverbatim + +SeeAlso + Foam::fixedValueFvPatchField SourceFiles alphatJayatillekeWallFunctionFvPatchScalarField.C @@ -48,7 +76,7 @@ namespace RASModels { /*---------------------------------------------------------------------------*\ - Class alphatJayatillekeWallFunctionFvPatchScalarField Declaration + Class alphatJayatillekeWallFunctionFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class alphatJayatillekeWallFunctionFvPatchScalarField diff --git a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatWallFunction/alphatWallFunctionFvPatchScalarField.H b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatWallFunction/alphatWallFunctionFvPatchScalarField.H index 8681a33afd9fcd77ed3f95a02927cdcdfb3fef2d..c9031e53ed58e8ba158584d6067948adcd9e41ea 100644 --- a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatWallFunction/alphatWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatWallFunction/alphatWallFunctionFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,11 +24,49 @@ License Class Foam::compressible::RASModels::alphatWallFunctionFvPatchScalarField +Group + grpCmpWallFunctions + Description - Boundary condition for turbulent thermal diffusivity when using wall - functions + This boundary condition provides a turbulent thermal diffusivity conditon + when using wall functions - replicates OpenFOAM v1.5 (and earlier) behaviour - - Turbulent Prandtl number defaults to 0.85 if unspecified + + The turbulent thermal diffusivity calculated using: + + \f[ + \alpha_t = \frac{\mu_t}{Pr_t} + \f] + + where + + \vartable + \alpha_t| turblence thermal diffusivity + \mu_t | turblence viscosity + Pr_t | turblent Prandtl number + \endvartable + + \heading Patch usage + + \table + Property | Description | Required | Default value + mut | turbulence viscosity field name | no | mut + Prt | turbulent Prandtl number | no | 0.85 + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type alphatWallFunction; + mut mut; + Prt 0.85; + value uniform 0; // optional value entry + } + \endverbatim + +SeeAlso + Foam::fixedValueFvPatchField SourceFiles alphatWallFunctionFvPatchScalarField.C @@ -59,10 +97,10 @@ class alphatWallFunctionFvPatchScalarField { // Private data - //- Name of turbulent viscosity field + //- Name of turbulent viscosity field (default = mut) word mutName_; - //- Turbulent Prandtl number + //- Turbulent Prandtl number (default = 0.85) scalar Prt_; diff --git a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.H b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.H index d523c8d38f5905615ba4f2356e70bf38f31292ea..24172ea21e870bafc7146ee1f7ea98d21934595f 100644 --- a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.H @@ -24,10 +24,45 @@ License Class Foam::compressible::RASModels::epsilonWallFunctionFvPatchScalarField +Group + grpCmpWallFunctions + Description - Boundary condition for epsilon when using wall functions - - calculates epsilon and G - - epsilon values added directly into the matrix to act as a constraint + This boundary condition provides a turbulence dissipation wall function + condition for high Reynolds number, turbulent flow cases. + + The condition can be applied to wall boundaries, whereby it + - calculates \c epsilon and \c G + - inserts near wall epsilon values directly into the epsilon equation + to act as a constraint + + where + + \vartable + epsilon | turblence dissipation field + G | turblence generation field + \endvartable + + \heading Patch usage + + \table + Property | Description | Required | Default value + G | turbulence generation field name | no | G + Cmu | model coefficient | no | 0.09 + kappa | Von Karman constant | no | 0.41 + E | model coefficient | no | 9.8 + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type compressible::epsilonWallFunction; + } + \endverbatim + +SeeAlso + Foam::fixedInternalValueFvPatchField SourceFiles epsilonWallFunctionFvPatchScalarField.C diff --git a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.H b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.H index a2756319a52a97d165fa2dc3d81b30f6dee5d290..d525d80b56c8f16ab1560d5a41ef7d752a6fe1ff 100644 --- a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.H +++ b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.H @@ -24,9 +24,25 @@ License Class Foam::compressible::RASModels::kqRWallFunctionFvPatchField +Group + grpCmpWallFunctions + Description - Boundary condition for turbulence k, Q, and R when using wall functions. - Simply acts as a zero gradient condition. + This boundary condition is applied to turbulence \c k, \c q, and \c R + when using wall functions, and simply enforces a zero-gradient condition. + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type compressible::kqRWallFunction; + } + \endverbatim + +SeeAlso + Foam::zeroGradientFvPatchField SourceFiles kqRWallFunctionFvPatchField.C diff --git a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutLowReWallFunction/mutLowReWallFunctionFvPatchScalarField.H b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutLowReWallFunction/mutLowReWallFunctionFvPatchScalarField.H index bbed4a8bbf80f4ed47b289a3f5b1607839450f80..2cbbef359cb13de77d4c80e703471f9d12940bbc 100644 --- a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutLowReWallFunction/mutLowReWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutLowReWallFunction/mutLowReWallFunctionFvPatchScalarField.H @@ -24,11 +24,26 @@ License Class Foam::compressible::RASModels::mutLowReWallFunctionFvPatchScalarField -Description - Boundary condition for turbulent (kinematic) viscosity when for use with - low Reynolds number models. +Group + grpCmpWallFunctions - Sets mut to zero, and provides an access to calculate y+. +Description + This boundary condition provides a turbulent viscosity condition for use + with low Reynolds number models. It sets \c nut to zero, and provides an + access function to calculate y+. + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type mutLowReWallFunction; + } + \endverbatim + +SeeAlso + Foam::mutWallFunctionFvPatchScalarField SourceFiles mutLowReWallFunctionFvPatchScalarField.C diff --git a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutURoughWallFunction/mutURoughWallFunctionFvPatchScalarField.H b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutURoughWallFunction/mutURoughWallFunctionFvPatchScalarField.H index 05f82c57f6bb001709bbfdb03a48f16d233ad226..479cb18b4009dc3b940cd965a6ddcae6417726cd 100644 --- a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutURoughWallFunction/mutURoughWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutURoughWallFunction/mutURoughWallFunctionFvPatchScalarField.H @@ -24,11 +24,38 @@ License Class Foam::compressible::RASModels::mutURoughWallFunctionFvPatchScalarField +Group + grpCmpWallFunctions + Description - Wall function boundary condition for rough walls, based on velocity. + This boundary condition provides a turbulent viscosity condition when + using wall functions for rough walls, based on velocity. + + \heading Patch usage + + \table + Property | Description | Required | Default value + roughnessHeight | roughness height | yes | + roughnessConstant | roughness constanr | yes | + roughnessFactor | scaling factor | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type mutURoughWallFunction; + roughnessHeight 1e-5; + roughnessConstant 0.5; + roughnessFactor 1; + } + \endverbatim + +SeeAlso + Foam::mutWallFunctionFvPatchScalarField SourceFiles - mutSpalartAllamarasStandardWallFunctionFvPatchScalarField.C + mutURoughWallFunctionFvPatchScalarField.C \*---------------------------------------------------------------------------*/ diff --git a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutUSpaldingWallFunction/mutUSpaldingWallFunctionFvPatchScalarField.H b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutUSpaldingWallFunction/mutUSpaldingWallFunctionFvPatchScalarField.H index 4157f384a15378c5df0c1b20a90dd1e35a02dece..2501fa5b719427f210694eb2b417ab8b18ae851f 100644 --- a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutUSpaldingWallFunction/mutUSpaldingWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutUSpaldingWallFunction/mutUSpaldingWallFunctionFvPatchScalarField.H @@ -24,8 +24,39 @@ License Class Foam::compressible::RASModels::mutUSpaldingWallFunctionFvPatchScalarField +Group + grpCmpWallFunctions + Description - Wall function boundary condition for walls + This boundary condition provides a turbulent viscosity condition when + using wall functions for rough walls, based on velocity, using Spalding's + law to give a continuous nut profile to the wall (y+ = 0) + + \f[ + y^+ = u^+ + \frac{1}{E} \left[exp(\kappa u^+) - 1 - \kappa u^+\, + - 0.5 (\kappa u^+)^2 - \frac{1}{6} (\kappa u^+)^3\right] + \f] + + where + \vartable + y^+ | non-dimensional position + u^+ | non-dimensional velocity + \kappa | Von Karman constant + \endvartable + + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type mutUSpaldingWallFunction; + } + \endverbatim + +SeeAlso + Foam::mutWallFunctionFvPatchScalarField SourceFiles mutUSpaldingWallFunctionFvPatchScalarField.C diff --git a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutUWallFunction/mutUWallFunctionFvPatchScalarField.H b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutUWallFunction/mutUWallFunctionFvPatchScalarField.H index 6071a32128c9406af282d7432a641bced807beb1..08a938b52c5716cd6a30b19de151096809350910 100644 --- a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutUWallFunction/mutUWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutUWallFunction/mutUWallFunctionFvPatchScalarField.H @@ -24,8 +24,25 @@ License Class Foam::compressible::RASModels::mutUWallFunctionFvPatchScalarField +Group + grpCmpWallFunctions + Description - Wall function boundary condition for walls, based on velocity. + This boundary condition provides a turbulent viscosity condition when + using wall functions, based on velocity. + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type mutUWallFunction; + } + \endverbatim + +SeeAlso + Foam::mutWallFunctionFvPatchScalarField SourceFiles mutUWallFunctionFvPatchScalarField.C diff --git a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutWallFunction/mutWallFunctionFvPatchScalarField.H b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutWallFunction/mutWallFunctionFvPatchScalarField.H index ab0478508ff7bacc99b7fe7f67df1a1c2078485a..9228b609242f5a08f1e76e18e52885d753781520 100644 --- a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutWallFunction/mutWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutWallFunction/mutWallFunctionFvPatchScalarField.H @@ -24,11 +24,27 @@ License Class Foam::compressible::RASModels::mutWallFunctionFvPatchScalarField +Group + grpCmpWallFunctions + Description - Boundary condition for turbulent (kinematic) viscosity when using wall - functions, based on turbulence kinetic energy. + This boundary condition provides a turbulent viscosity condition when + using wall functions, based on turbulence kinetic energy. - replicates OpenFOAM v1.5 (and earlier) behaviour + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type mutWallFunction; + } + \endverbatim + +SeeAlso + Foam::fixedValueFvPatchField + SourceFiles mutWallFunctionFvPatchScalarField.C diff --git a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutkRoughWallFunction/mutkRoughWallFunctionFvPatchScalarField.H b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutkRoughWallFunction/mutkRoughWallFunctionFvPatchScalarField.H index da413fed1cb9a7476731deb2660880b5bc036c65..fdf5a0a7d6364919c2cea2b7604c9951953f2473 100644 --- a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutkRoughWallFunction/mutkRoughWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutkRoughWallFunction/mutkRoughWallFunctionFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,15 +24,39 @@ License Class Foam::compressible::RASModels::mutkRoughWallFunctionFvPatchScalarField -Description - Boundary condition for turbulent (kinematic) viscosity when using wall - functions for rough walls, based on turbulence kinetic energy. +Group + grpCmpWallFunctions - Manipulates the E parameter to account for roughness effects, based on - KsPlus. +Description + This boundary condition provides a turbulent viscosity condition when + using wall functions for rough walls, based on turbulence kinetic energy. + The condition manipulates the E parameter to account for roughness + effects. + Parameter ranges - roughness height = sand-grain roughness (0 for smooth walls) - - roughness constant = 0.5-1.0 (0.5 default) + - roughness constant = 0.5-1.0 + + \heading Patch usage + + \table + Property | Description | Required | Default value + Ks | sand-grain roughness height | yes | + Cs | roughness constant | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type mutkRoughWallFunction; + Ks uniform 0; + Cs uniform 0.5; + } + \endverbatim + +SeeAlso + Foam::mutkRoughWallFunctionFvPatchScalarField SourceFiles mutkRoughWallFunctionFvPatchScalarField.C diff --git a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutkWallFunction/mutkWallFunctionFvPatchScalarField.H b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutkWallFunction/mutkWallFunctionFvPatchScalarField.H index 0aa935d59b56bcaddda51cf47c9b35a71eef966f..8d952a64285e0811afca6082f9c2d778030e04f1 100644 --- a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutkWallFunction/mutkWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/mutWallFunctions/mutkWallFunction/mutkWallFunctionFvPatchScalarField.H @@ -24,11 +24,27 @@ License Class Foam::compressible::RASModels::mutkWallFunctionFvPatchScalarField +Group + grpCmpWallFunctions + Description - Boundary condition for turbulent (kinematic) viscosity when using wall - functions, based on turbulence kinetic energy. + This boundary condition provides a turbulent viscosity condition when + using wall functions, based on turbulence kinetic energy. - replicates OpenFOAM v1.5 (and earlier) behaviour + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type mutkWallFunction; + } + \endverbatim + +SeeAlso + Foam::mutWallFunctionFvPatchScalarField + SourceFiles mutkWallFunctionFvPatchScalarField.C diff --git a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.H b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.H index db1b91b68814df0e40b7baaf9865d8cc834f3636..d6516c5449ab748a213960619e6301e290e1a602 100644 --- a/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/compressible/RAS/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.H @@ -24,16 +24,23 @@ License Class Foam::compressible::RASModels::omegaWallFunctionFvPatchScalarField -Description - Provides a wall function boundary condition/constraint on omega +Group + grpCmpWallFunctions - Computed value is: +Description + This boundary condition provides a wall function constraint on turbulnce + specific dissipation, omega. The values are computed using: - omega = sqrt(omega_vis^2 + omega_log^2) + \f[ + \omega = sqrt(\omega_{vis}^2 + \omega_{log}^2) + \f] where - omega_vis = omega in viscous region - omega_log = omega in logarithmic region + + \vartable + \omega_{vis} | omega in viscous region + \omega_{log} | omega in logarithmic region + \endvartable Model described by Eq.(15) of: \verbatim @@ -43,6 +50,25 @@ Description Nov. 2001 \endverbatim + \heading Patch usage + + \table + Property | Description | Required | Default value + G | turbulence generation field name | no | G + Cmu | model coefficient | no | 0.09 + kappa | Von Karman constant | no | 0.41 + E | model coefficient | no | 9.8 + beta1 | model coefficient | no | 0.075 + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type compressible::omegaWallFunction; + } + \endverbatim + SourceFiles omegaWallFunctionFvPatchScalarField.C diff --git a/src/turbulenceModels/compressible/RAS/kEpsilon/kEpsilon.H b/src/turbulenceModels/compressible/RAS/kEpsilon/kEpsilon.H index 63418fada074fb3291bc3de8910337cc400338fe..4084d289f9aa17923374e33482fb633ae03957d1 100644 --- a/src/turbulenceModels/compressible/RAS/kEpsilon/kEpsilon.H +++ b/src/turbulenceModels/compressible/RAS/kEpsilon/kEpsilon.H @@ -24,6 +24,9 @@ License Class Foam::compressible::RASModels::kEpsilon +Group + grpCmpRASTurbulence + Description Standard k-epsilon turbulence model for compressible flows diff --git a/src/turbulenceModels/compressible/RAS/kOmegaSST/kOmegaSST.H b/src/turbulenceModels/compressible/RAS/kOmegaSST/kOmegaSST.H index a90912e5a313cd529b577f13684e9cc9e3f018e6..d498a9a1f1031afdbeeb768dc1c9f3453720b170 100644 --- a/src/turbulenceModels/compressible/RAS/kOmegaSST/kOmegaSST.H +++ b/src/turbulenceModels/compressible/RAS/kOmegaSST/kOmegaSST.H @@ -24,6 +24,9 @@ License Class Foam::compressible::RASModels::kOmegaSST +Group + grpCmpRASTurbulence + Description Implementation of the k-omega-SST turbulence model for compressible flows. diff --git a/src/turbulenceModels/compressible/RAS/laminar/laminar.H b/src/turbulenceModels/compressible/RAS/laminar/laminar.H index 2b226d602fb18cfaa81c65055dae10918177979d..0b099d01aa77b94311987ad94d809a32537f4a21 100644 --- a/src/turbulenceModels/compressible/RAS/laminar/laminar.H +++ b/src/turbulenceModels/compressible/RAS/laminar/laminar.H @@ -24,6 +24,9 @@ License Class Foam::compressible::RASModels::laminar +Group + grpCmpRASTurbulence + Description Dummy turbulence model for laminar compressible flow. diff --git a/src/turbulenceModels/compressible/RAS/realizableKE/realizableKE.H b/src/turbulenceModels/compressible/RAS/realizableKE/realizableKE.H index 12c0105f837da42acaffae4241e7a6994a6b13c4..c417fa5c4347e2529a26b0d03ee66c1eeb989607 100644 --- a/src/turbulenceModels/compressible/RAS/realizableKE/realizableKE.H +++ b/src/turbulenceModels/compressible/RAS/realizableKE/realizableKE.H @@ -24,6 +24,9 @@ License Class Foam::compressible::RASModels::realizableKE +Group + grpCmpRASTurbulence + Description Realizable k-epsilon turbulence model for compressible flows. diff --git a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.H b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.H index 9b461334cb50b488a1b8167c2a92c3162f880945..44e96635bacdf6056c9b724dff868e8660977e9a 100644 --- a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.H +++ b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,26 +25,38 @@ Class externalWallHeatFluxTemperatureFvPatchScalarField Description - Heat flux boundary condition for temperature on external wall. + This boundary condition supplies a heat flux condition for temperature + on an external wall. - If h and Ta are specified then fixed_heat_transfer_coefficient mode is used - If q is specified then fixed_heat_flux is used. + The condition can operate in two modes: + \li fixed heat transfer coefficient: supply h and Ta + \li fixed heat flux: supply q - Example usage: - myWallPatch + where + \var h = heat transfer coefficient [W/m2/K] + \var Ta = ambient temperature [K] + \var q = heat flux [W/m2] + + The thermal conductivity, \c kappa, can either be retrieved from the + mesh database using the \c lookup option, or from a \c solidThermo + thermophysical package. + + Example of the boundary condition specification: + \verbatim + myPatch { type externalWallHeatFluxTemperature; kappa solidThermo; // solidThermo or lookup - q uniform 1000; // Heat flux / [W/m2] - Ta uniform 300.0; // Tambient temperature /[K] - h uniform 10.0; // Heat transfer coeff /[W/Km2] - value uniform 300.0; // Initial temperature / [K] + q uniform 1000; // heat flux / [W/m2] + Ta uniform 300.0; // ambient temperature /[K] + h uniform 10.0; // heat transfer coeff /[W/Km2] + value uniform 300.0; // initial temperature / [K] kappaName none; } + \endverbatim -Note: - Only the pair h, Ta or q can be specified in the dictionary. - +Note + Only supply \c h and \c Ta, or \c q in the dictionary (see above) SourceFiles externalWallHeatFluxTemperatureFvPatchScalarField.C @@ -178,6 +190,7 @@ public: //- Update the coefficients associated with the patch field virtual void updateCoeffs(); + // I-O //- Write diff --git a/src/turbulenceModels/compressible/turbulenceModel/turbulenceModelDoc.H b/src/turbulenceModels/compressible/turbulenceModel/turbulenceModelDoc.H new file mode 100644 index 0000000000000000000000000000000000000000..17bc210959fe987753d0437a6480e29a733ecea3 --- /dev/null +++ b/src/turbulenceModels/compressible/turbulenceModel/turbulenceModelDoc.H @@ -0,0 +1,31 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +\defgroup grpCmpTurbulence Compressible turbulence +@{ + This group contains compressible turbulence models. +@} + +\*---------------------------------------------------------------------------*/ diff --git a/src/turbulenceModels/derivedFvPatchFields/Make/files b/src/turbulenceModels/derivedFvPatchFields/Make/files index 360b593edb969a0e98352a71e08b3a7c9b90c9c9..f0a5fdfa8a46fea1f71552718f705e23ced305ff 100644 --- a/src/turbulenceModels/derivedFvPatchFields/Make/files +++ b/src/turbulenceModels/derivedFvPatchFields/Make/files @@ -1,3 +1,4 @@ porousBafflePressure/porousBafflePressureFvPatchFields.C +fixedShearStress/fixedShearStressFvPatchVectorField.C LIB = $(FOAM_LIBBIN)/libturbulenceDerivedFvPatchFields diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/fixedShearStress/fixedShearStressFvPatchVectorField.C b/src/turbulenceModels/derivedFvPatchFields/fixedShearStress/fixedShearStressFvPatchVectorField.C similarity index 54% rename from src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/fixedShearStress/fixedShearStressFvPatchVectorField.C rename to src/turbulenceModels/derivedFvPatchFields/fixedShearStress/fixedShearStressFvPatchVectorField.C index c5a2c5f8e8a6447359b44d9e00c0555aec3ee042..0f1d19bb2e04a4cfaf55054b1cc327767efcb01d 100644 --- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/fixedShearStress/fixedShearStressFvPatchVectorField.C +++ b/src/turbulenceModels/derivedFvPatchFields/fixedShearStress/fixedShearStressFvPatchVectorField.C @@ -28,28 +28,25 @@ License #include "addToRunTimeSelectionTable.H" #include "fvPatchFieldMapper.H" #include "volFields.H" -#include "RASModel.H" -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -namespace Foam -{ -namespace incompressible -{ +#include "incompressible/RAS/RASModel/RASModel.H" +#include "compressible/RAS/RASModel/RASModel.H" // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -fixedShearStressFvPatchVectorField::fixedShearStressFvPatchVectorField +Foam::fixedShearStressFvPatchVectorField::fixedShearStressFvPatchVectorField ( const fvPatch& p, const DimensionedField<vector, volMesh>& iF ) : fixedValueFvPatchVectorField(p, iF), + phiName_("phi"), + rhoName_("rho"), tau0_(vector::zero) {} -fixedShearStressFvPatchVectorField::fixedShearStressFvPatchVectorField +Foam::fixedShearStressFvPatchVectorField::fixedShearStressFvPatchVectorField ( const fvPatch& p, const DimensionedField<vector, volMesh>& iF, @@ -57,13 +54,15 @@ fixedShearStressFvPatchVectorField::fixedShearStressFvPatchVectorField ) : fixedValueFvPatchVectorField(p, iF), + phiName_(dict.lookupOrDefault<word>("phi", "phi")), + rhoName_(dict.lookupOrDefault<word>("rho", "rho")), tau0_(dict.lookupOrDefault<vector>("tau", vector::zero)) { fvPatchField<vector>::operator=(patchInternalField()); } -fixedShearStressFvPatchVectorField::fixedShearStressFvPatchVectorField +Foam::fixedShearStressFvPatchVectorField::fixedShearStressFvPatchVectorField ( const fixedShearStressFvPatchVectorField& ptf, const fvPatch& p, @@ -72,76 +71,102 @@ fixedShearStressFvPatchVectorField::fixedShearStressFvPatchVectorField ) : fixedValueFvPatchVectorField(ptf, p, iF, mapper), + phiName_(ptf.phiName_), + rhoName_(ptf.rhoName_), tau0_(ptf.tau0_) {} -fixedShearStressFvPatchVectorField::fixedShearStressFvPatchVectorField +Foam::fixedShearStressFvPatchVectorField::fixedShearStressFvPatchVectorField ( const fixedShearStressFvPatchVectorField& ptf ) : fixedValueFvPatchVectorField(ptf), + phiName_(ptf.phiName_), + rhoName_(ptf.rhoName_), tau0_(ptf.tau0_) {} -fixedShearStressFvPatchVectorField::fixedShearStressFvPatchVectorField +Foam::fixedShearStressFvPatchVectorField::fixedShearStressFvPatchVectorField ( const fixedShearStressFvPatchVectorField& ptf, const DimensionedField<vector, volMesh>& iF ) : fixedValueFvPatchVectorField(ptf, iF), + phiName_(ptf.phiName_), + rhoName_(ptf.rhoName_), tau0_(ptf.tau0_) {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // -void fixedShearStressFvPatchVectorField::updateCoeffs() +void Foam::fixedShearStressFvPatchVectorField::updateCoeffs() { if (updated()) { return; } - const label patchi = patch().index(); + const label patchI = patch().index(); - const turbulenceModel& turbModel = - db().lookupObject<turbulenceModel>("turbulenceModel"); + const surfaceScalarField& phi = + db().lookupObject<surfaceScalarField>(phiName_); - const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchi]; + scalarField nuEff; + if (phi.dimensions() == dimVelocity*dimArea) + { + const incompressible::turbulenceModel& turbModel = + db().lookupObject<incompressible::turbulenceModel> + ( + "turbulenceModel" + ); - const vectorField Ui(Uw.patchInternalField()); + nuEff = turbModel.nuEff()()[patchI]; + } + else if (phi.dimensions() == dimDensity*dimVelocity*dimArea) + { + const compressible::turbulenceModel& turbModel = + db().lookupObject<compressible::turbulenceModel> + ( + "turbulenceModel" + ); - vector tauHat = tau0_/(mag(tau0_) + ROOTVSMALL); + const fvPatchField<scalar>& rhop = + patch().lookupPatchField<volScalarField, scalar>(rhoName_); - const scalarField& ry = patch().deltaCoeffs(); + nuEff = turbModel.muEff()()[patchI]/rhop; + } + else + { + FatalErrorIn("fixedShearStressFvPatchVectorField::updateCoeffs()") + << "dimensions of phi are not correct" + << "\n on patch " << this->patch().name() + << " of field " << this->dimensionedInternalField().name() + << " in file " << this->dimensionedInternalField().objectPath() + << exit(FatalError); + } - tmp<volScalarField> tnuEff = turbModel.nuEff(); - const volScalarField& nuEff = tnuEff(); - const scalarField& nuEffw = nuEff.boundaryField()[patchi]; + const vectorField Uc(patchInternalField()); - tmp<vectorField> UwUpdated = - tauHat*(tauHat & (tau0_*(1.0/(ry*nuEffw)) + Ui)); + vector tauHat = tau0_/(mag(tau0_) + ROOTVSMALL); - operator==(UwUpdated); + const scalarField& ry = patch().deltaCoeffs(); - if (debug) - { - tmp<vectorField> nHat = this->patch().nf(); - volSymmTensorField Reff(turbModel.devReff()); - Info << "tau : " << (nHat & Reff.boundaryField()[patchi])() << endl; - } + operator==(tauHat*(tauHat & (tau0_*(1.0/(ry*nuEff)) + Uc))); fixedValueFvPatchVectorField::updateCoeffs(); } -void fixedShearStressFvPatchVectorField::write(Ostream& os) const +void Foam::fixedShearStressFvPatchVectorField::write(Ostream& os) const { fixedValueFvPatchVectorField::write(os); + writeEntryIfDifferent<word>(os, "phi", "phi", phiName_); + writeEntryIfDifferent<word>(os, "rho", "rho", rhoName_); os.writeKeyword("tau") << tau0_ << token::END_STATEMENT << nl; writeEntry("value", os); } @@ -149,15 +174,13 @@ void fixedShearStressFvPatchVectorField::write(Ostream& os) const // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -makePatchTypeField -( - fvPatchVectorField, - fixedShearStressFvPatchVectorField -); - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -} // End namespace incompressible -} // End namespace Foam +namespace Foam +{ + makePatchTypeField + ( + fvPatchVectorField, + fixedShearStressFvPatchVectorField + ); +} // ************************************************************************* // diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/fixedShearStress/fixedShearStressFvPatchVectorField.H b/src/turbulenceModels/derivedFvPatchFields/fixedShearStress/fixedShearStressFvPatchVectorField.H similarity index 94% rename from src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/fixedShearStress/fixedShearStressFvPatchVectorField.H rename to src/turbulenceModels/derivedFvPatchFields/fixedShearStress/fixedShearStressFvPatchVectorField.H index 6bbcf8c9c67662f211b09450e615dae290b1ffcf..d1ad27977f37dfbad72012823b1158ee1d0d8522 100644 --- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/fixedShearStress/fixedShearStressFvPatchVectorField.H +++ b/src/turbulenceModels/derivedFvPatchFields/fixedShearStress/fixedShearStressFvPatchVectorField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,6 +25,9 @@ License Class Foam::fixedShearStressFvPatchVectorField +Group + grpWallBoundaryConditions + Description Set a constant shear stress as tau0 = -nuEff dU/dn. @@ -43,8 +46,7 @@ SourceFiles namespace Foam { -namespace incompressible -{ + /*---------------------------------------------------------------------------*\ Class fixedShearStressFvPatchVectorField Declaration \*---------------------------------------------------------------------------*/ @@ -55,6 +57,12 @@ class fixedShearStressFvPatchVectorField { // Private data + //- Name of flux field (default = phi) + const word phiName_; + + //- Name of density field (default = rho) + const word rhoName_; + //- Constant shear stress const vector tau0_; @@ -138,7 +146,6 @@ public: // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -} // End namespace incompressible } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/turbulenceModels/derivedFvPatchFields/porousBafflePressure/porousBafflePressureFvPatchField.H b/src/turbulenceModels/derivedFvPatchFields/porousBafflePressure/porousBafflePressureFvPatchField.H index 8e0dccd0cc824874a7f81eec921840696519ad57..a52e8e5b34fa2731631459a4be58c037d0a30fad 100644 --- a/src/turbulenceModels/derivedFvPatchFields/porousBafflePressure/porousBafflePressureFvPatchField.H +++ b/src/turbulenceModels/derivedFvPatchFields/porousBafflePressure/porousBafflePressureFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,18 +24,57 @@ License Class Foam::porousBafflePressureFvPatchField -Description - Foam::porousBafflePressureFvPatchField - the porous baffle operates on a cyclic patch and introduce a jump on the p - field as follow: - - deltaP = -(I*mu*U + 0.5*D*rho*magSqr(U)*L) +Group + grpCoupledBoundaryConditions - where: - - I is the inertial coefficient - D is the darcy coeafficient - L is the porous media lenght in the flow direction +Description + This boundary condition provides a jump condition, using the \cyclic + condition as a base. + + The porous baffle introduces a pressure jump defined by: + + \f[ + \Delta p = -(I \mu U + 0.5 D \rho |U|^2 L) + \f] + + where + + \vartable + p | pressure [Pa] + \rho | density [kg/m3] + \mu | viscosity [Pa s] + I | inertial coefficient + D | Darcy coefficient + L | porous media length in the flow direction + \endvartable + + + \heading Patch usage + + \table + Property | Description | Required | Default value + patchType | underlying patch type should be \c cyclic| yes | + D | Darcy coefficient | yes | + I | inertial coefficient | yes | + L | porous media length in the flow direction | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type porousBafflePressure; + patchType cyclic; + jump uniform 0; + D 1000000; + I 0.001; + L 0.1; + value uniform 0; + } + \endverbatim + +Note + The underlying \c patchType should be set to \c cyclic SourceFiles porousBafflePressureFvPatchField.C @@ -63,7 +102,7 @@ class porousBafflePressureFvPatchField { // Private data - //- Darcy pressure lost coefficient + //- Darcy pressure loss coefficient scalar D_; //- Inertia pressure lost coefficient diff --git a/src/turbulenceModels/incompressible/LES/DESModel/DESModel.C b/src/turbulenceModels/incompressible/LES/DESModel/DESModel.C new file mode 100644 index 0000000000000000000000000000000000000000..3722f9cce60dd284c855e252fb8da53a55b8cae4 --- /dev/null +++ b/src/turbulenceModels/incompressible/LES/DESModel/DESModel.C @@ -0,0 +1,56 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +\*---------------------------------------------------------------------------*/ + +#include "DESModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace incompressible +{ + +// * * * * * * * * * * * * * * * Constructor * * * * * * * * * * * * * * * * // + +DESModel::DESModel +( + const word& type, + const volVectorField& U, + const surfaceScalarField& phi, + transportModel& transport, + const word& turbulenceModelName +) +: + LESModel(type, U, phi, transport, turbulenceModelName) + +{} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace incompressible +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/turbulenceModels/incompressible/LES/DESModel/DESModel.H b/src/turbulenceModels/incompressible/LES/DESModel/DESModel.H new file mode 100644 index 0000000000000000000000000000000000000000..5f73e0d156841f39a60ee8bcbb576f7b86669d18 --- /dev/null +++ b/src/turbulenceModels/incompressible/LES/DESModel/DESModel.H @@ -0,0 +1,113 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +Group + grpIcoDESTurbulence + +Class + Foam::incompressible::DESModel + +Description + Extension of LES models to provide an interface for Detached Eddy + Simulation turbulence models + +SeeAlso + Foam::LESModel + +SourceFiles + DESModel.C + +\*---------------------------------------------------------------------------*/ + +#ifndef incompressibleDESModel_H +#define incompressibleDESModel_H + +// note: use full(er) path so that derived utilities can bring in +// incompressible and compressible variants + +#include "incompressible/LES/LESModel/LESModel.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace incompressible +{ + +/*---------------------------------------------------------------------------*\ + Class DESModel Declaration +\*---------------------------------------------------------------------------*/ + +class DESModel +: + public LESModel +{ + +private: + + // Private Member Functions + + //- Disallow default bitwise copy construct + DESModel(const DESModel&); + + //- Disallow default bitwise assignment + DESModel& operator=(const DESModel&); + + +public: + + // Constructors + + //- Construct from components + DESModel + ( + const word& type, + const volVectorField& U, + const surfaceScalarField& phi, + transportModel& transport, + const word& turbulenceModelName + ); + + + //- Destructor + virtual ~DESModel() + {} + + + // Public Member Functions + + //- Return the LES field indicator + virtual tmp<volScalarField> LESRegion() const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace incompressible +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/turbulenceModels/incompressible/LES/DESModel/DESModelDoc.H b/src/turbulenceModels/incompressible/LES/DESModel/DESModelDoc.H new file mode 100644 index 0000000000000000000000000000000000000000..5311d09d671711799f45c8d5d5ca6555b04eec9d --- /dev/null +++ b/src/turbulenceModels/incompressible/LES/DESModel/DESModelDoc.H @@ -0,0 +1,32 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +\defgroup grpIcoDESTurbulence Incompressible DES turbulence +@{ + \ingroup grpIcoTurbulence + This group contains incompressible DES models. +@} + +\*---------------------------------------------------------------------------*/ diff --git a/src/turbulenceModels/incompressible/LES/DeardorffDiffStress/DeardorffDiffStress.H b/src/turbulenceModels/incompressible/LES/DeardorffDiffStress/DeardorffDiffStress.H index 7862490dc8a2d2fbd3107dcb9a0f2537895d3b96..f3b8c6c4489ac662ff60245349fcc5a4042896a6 100644 --- a/src/turbulenceModels/incompressible/LES/DeardorffDiffStress/DeardorffDiffStress.H +++ b/src/turbulenceModels/incompressible/LES/DeardorffDiffStress/DeardorffDiffStress.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,26 +24,31 @@ License Class Foam::incompressible::LESModels::DeardorffDiffStress +Group + grpIcoLESTurbulence + Description Differential SGS Stress Equation Model for incompressible flows The DSEM uses a model version of the full balance equation for the SGS stress tensor to simulate the behaviour of B. Thus, - \verbatim - d/dt(B) + div(U*B) - div(nuSgs*grad(B)) - = - P - c1*epsilon/k*B - 0.667*(1 - c1)*epsilon*I - c2*(P - 0.333*trP*I) + \f[ + \frac{d}{dt}(B) + \nabla\cdot(U B) - \nabla\cdot(\nu_{sgs}\nabla B) + = + P - c_1 \frac{\epsilon}{k}B - 0.667(1 - c_1)\epsilon I + - c_2 (P - 0.333 trP I) + \f] where - - k = 0.5*tr(B), - epsilon = ce*k^3/2/delta, - epsilon/k = ce*k^1/2/delta - P = -(B'L + L'B) - nuSgs = ck*sqrt(k)*delta - nuEff = nuSgs + nu - \endverbatim + \f{eqnarray*}{ + k &=& 0.5 tr(B) \\ + \epsilon &=& c_e k^{3/2}/\Delta \\ + \epsilon/k &=& c_e k^{1/2}/\Delta \\ + P &=& -(B'L + L'B) \\ + \nu_{sgs} &=& c_k k^{1/2} \Delta \\ + \nu_{eff} &=& \nu_{sgs} + \nu + \f} SourceFiles DeardorffDiffStress.C @@ -65,7 +70,7 @@ namespace LESModels { /*---------------------------------------------------------------------------*\ - Class DeardorffDiffStress Declaration + Class DeardorffDiffStress Declaration \*---------------------------------------------------------------------------*/ class DeardorffDiffStress diff --git a/src/turbulenceModels/incompressible/LES/GenEddyVisc/GenEddyVisc.H b/src/turbulenceModels/incompressible/LES/GenEddyVisc/GenEddyVisc.H index c40adc383be052813551a0ad60bf89b373ba27bb..e1dc9c2b373c13805daf2229796d3ec91457d1ff 100644 --- a/src/turbulenceModels/incompressible/LES/GenEddyVisc/GenEddyVisc.H +++ b/src/turbulenceModels/incompressible/LES/GenEddyVisc/GenEddyVisc.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::LESModels::GenEddyVisc +Group + grpIcoLESTurbulence + Description General base class for all incompressible models that can be implemented as an eddy viscosity, i.e. algebraic and one-equation models. diff --git a/src/turbulenceModels/incompressible/LES/GenSGSStress/GenSGSStress.H b/src/turbulenceModels/incompressible/LES/GenSGSStress/GenSGSStress.H index f7b6040f377701637cffcb50a58d53a4a723960a..4f24f7913586eb203764f87b70db333395408696 100644 --- a/src/turbulenceModels/incompressible/LES/GenSGSStress/GenSGSStress.H +++ b/src/turbulenceModels/incompressible/LES/GenSGSStress/GenSGSStress.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::LESModels::GenSGSStress +Group + grpIcoLESTurbulence + Description General base class for all incompressible models that directly solve for the SGS stress tensor B. diff --git a/src/turbulenceModels/incompressible/LES/LESModel/LESModel.H b/src/turbulenceModels/incompressible/LES/LESModel/LESModel.H index 3688cb8dec91781b9b33c7f28a960630f16116a3..3a9af24df8a1999d90bac7b984a6e9958dd19e84 100644 --- a/src/turbulenceModels/incompressible/LES/LESModel/LESModel.H +++ b/src/turbulenceModels/incompressible/LES/LESModel/LESModel.H @@ -24,6 +24,9 @@ License Namespace Foam::incompressible::LESModels +Group + grpIcoLESTurbulence + Description Namespace for incompressible LES models. @@ -44,8 +47,8 @@ SourceFiles \*---------------------------------------------------------------------------*/ -#ifndef LESModel_H -#define LESModel_H +#ifndef incompressibleLESModel_H +#define incompressibleLESModel_H #include "incompressible/turbulenceModel/turbulenceModel.H" #include "LESdelta.H" diff --git a/src/turbulenceModels/incompressible/LES/LESModel/LESModelDoc.H b/src/turbulenceModels/incompressible/LES/LESModel/LESModelDoc.H new file mode 100644 index 0000000000000000000000000000000000000000..9b400e23eeb517ee6afaeb8dc906fbb86f461e54 --- /dev/null +++ b/src/turbulenceModels/incompressible/LES/LESModel/LESModelDoc.H @@ -0,0 +1,32 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +\defgroup grpIcoLESTurbulence Incompressible LES turbulence +@{ + \ingroup grpIcoTurbulence + This group contains incompressible LES models. +@} + +\*---------------------------------------------------------------------------*/ diff --git a/src/turbulenceModels/incompressible/LES/LRRDiffStress/LRRDiffStress.H b/src/turbulenceModels/incompressible/LES/LRRDiffStress/LRRDiffStress.H index afe530a00efe6bc8dafdb8c85aedda8017cea4fd..62aaaa3ef0489d75d73329fb0ebe47a781fb1478 100644 --- a/src/turbulenceModels/incompressible/LES/LRRDiffStress/LRRDiffStress.H +++ b/src/turbulenceModels/incompressible/LES/LRRDiffStress/LRRDiffStress.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,6 +24,9 @@ License Class Foam::incompressible::LESModels::LRRDiffStress +Group + grpIcoLESTurbulence + Description Differential SGS Stress Equation Model for incompressible flows. diff --git a/src/turbulenceModels/incompressible/LES/Make/files b/src/turbulenceModels/incompressible/LES/Make/files index aff6654eadca4f1ab10a84b6bbe1585a2b0b4301..c41aefe994ba6e9520c56e58db1d408c07e0bcb9 100644 --- a/src/turbulenceModels/incompressible/LES/Make/files +++ b/src/turbulenceModels/incompressible/LES/Make/files @@ -2,6 +2,8 @@ vanDriestDelta/vanDriestDelta.C LESModel/LESModel.C +DESModel/DESModel.C + GenEddyVisc/GenEddyVisc.C GenSGSStress/GenSGSStress.C diff --git a/src/turbulenceModels/incompressible/LES/Smagorinsky/Smagorinsky.H b/src/turbulenceModels/incompressible/LES/Smagorinsky/Smagorinsky.H index e110591917adad56a27931e7ec2c2d17b8cbc624..8af2bbe08a59a03e1f374a8a4855e882ead7b27b 100644 --- a/src/turbulenceModels/incompressible/LES/Smagorinsky/Smagorinsky.H +++ b/src/turbulenceModels/incompressible/LES/Smagorinsky/Smagorinsky.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,6 +24,9 @@ License Class Foam::incompressible::LESModels::Smagorinsky +Group + grpIcoLESTurbulence + Description The Isochoric Smagorinsky Model for incompressible flows. diff --git a/src/turbulenceModels/incompressible/LES/Smagorinsky2/Smagorinsky2.H b/src/turbulenceModels/incompressible/LES/Smagorinsky2/Smagorinsky2.H index c9133e4e8732cf7e265552fedaf276f65de7a7ae..b51528f945e9f40c07dfb9e71e0509a04b0792b4 100644 --- a/src/turbulenceModels/incompressible/LES/Smagorinsky2/Smagorinsky2.H +++ b/src/turbulenceModels/incompressible/LES/Smagorinsky2/Smagorinsky2.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::LESModels::Smagorinsky2 +Group + grpIcoLESTurbulence + Description The Isochoric Smagorinsky Model for incompressible flows diff --git a/src/turbulenceModels/incompressible/LES/SpalartAllmaras/SpalartAllmaras.C b/src/turbulenceModels/incompressible/LES/SpalartAllmaras/SpalartAllmaras.C index da8ab55e07b45492e216296381b0f4cd89a7d78d..bbbf51332b98cd60f5ca3f12a07001d7d3cac223 100644 --- a/src/turbulenceModels/incompressible/LES/SpalartAllmaras/SpalartAllmaras.C +++ b/src/turbulenceModels/incompressible/LES/SpalartAllmaras/SpalartAllmaras.C @@ -152,7 +152,7 @@ SpalartAllmaras::SpalartAllmaras const word& modelName ) : - LESModel(modelName, U, phi, transport, turbulenceModelName), + DESModel(modelName, U, phi, transport, turbulenceModelName), sigmaNut_ ( @@ -395,6 +395,30 @@ bool SpalartAllmaras::read() } +tmp<volScalarField> SpalartAllmaras::LESRegion() const +{ + tmp<volScalarField> tLESRegion + ( + new volScalarField + ( + IOobject + ( + "DES::LESRegion", + mesh_.time().timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + neg(dTilda(S(fvc::grad(U_))) - y_) +// mesh_, +// dimensionedScalar("zero", dimless, 0.0) + ) + ); + + return tLESRegion; +} + + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace LESModels diff --git a/src/turbulenceModels/incompressible/LES/SpalartAllmaras/SpalartAllmaras.H b/src/turbulenceModels/incompressible/LES/SpalartAllmaras/SpalartAllmaras.H index 68e5ef4c73bd60cc5d5f54afeff2b467d30c07e4..fe4fe280f3186a44ca889d32ef19d2a1d0ea0f7a 100644 --- a/src/turbulenceModels/incompressible/LES/SpalartAllmaras/SpalartAllmaras.H +++ b/src/turbulenceModels/incompressible/LES/SpalartAllmaras/SpalartAllmaras.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::LESModels::SpalartAllmaras +Group + grpIcoDESTurbulence + Description SpalartAllmaras DES (SA + LES) turbulence model for incompressible flows @@ -35,7 +38,7 @@ SourceFiles #ifndef SpalartAllmaras_H #define SpalartAllmaras_H -#include "LESModel.H" +#include "DESModel.H" #include "volFields.H" #include "wallDist.H" @@ -54,7 +57,7 @@ namespace LESModels class SpalartAllmaras : - public LESModel + public DESModel { // Private Member Functions @@ -191,6 +194,9 @@ public: //- Read LESProperties dictionary virtual bool read(); + + //- Return the LES field indicator + virtual tmp<volScalarField> LESRegion() const; }; diff --git a/src/turbulenceModels/incompressible/LES/SpalartAllmarasDDES/SpalartAllmarasDDES.H b/src/turbulenceModels/incompressible/LES/SpalartAllmarasDDES/SpalartAllmarasDDES.H index b721e8b8b8c0427f3415d4a0424e6a0842dfb041..70b6f5cf9b4a40c4b816fdc7cef7c37c32f8a259 100644 --- a/src/turbulenceModels/incompressible/LES/SpalartAllmarasDDES/SpalartAllmarasDDES.H +++ b/src/turbulenceModels/incompressible/LES/SpalartAllmarasDDES/SpalartAllmarasDDES.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,6 +24,9 @@ License Class Foam::incompressible::LESModels::SpalartAllmarasDDES +Group + grpIcoDESTurbulence + Description SpalartAllmaras DDES LES turbulence model for incompressible flows @@ -52,7 +55,7 @@ namespace LESModels { /*---------------------------------------------------------------------------*\ - Class SpalartAllmarasDDES Declaration + Class SpalartAllmarasDDES Declaration \*---------------------------------------------------------------------------*/ class SpalartAllmarasDDES diff --git a/src/turbulenceModels/incompressible/LES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.H b/src/turbulenceModels/incompressible/LES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.H index bf44430e5a356453ebe3eceef51918bf3e47070c..fc31252782b70447511af9e42ebcadff7a723d81 100644 --- a/src/turbulenceModels/incompressible/LES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.H +++ b/src/turbulenceModels/incompressible/LES/SpalartAllmarasIDDES/SpalartAllmarasIDDES.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,6 +24,9 @@ License Class Foam::incompressible::LESModels::SpalartAllmarasIDDES +Group + grpIcoDESTurbulence + Description SpalartAllmarasIDDES LES turbulence model for incompressible flows diff --git a/src/turbulenceModels/incompressible/LES/dynLagrangian/dynLagrangian.H b/src/turbulenceModels/incompressible/LES/dynLagrangian/dynLagrangian.H index 2d83299d4ac401d2d12df74640071d9f4ca52509..004efeaaed7e9fe92cb047eb008145995c74e7b4 100644 --- a/src/turbulenceModels/incompressible/LES/dynLagrangian/dynLagrangian.H +++ b/src/turbulenceModels/incompressible/LES/dynLagrangian/dynLagrangian.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,6 +24,9 @@ License Class Foam::incompressible::LESModels::dynLagrangian +Group + grpIcoLESTurbulence + Description Dynamic eddy-viscosity model with Lagrangian averaging for incompressible flow diff --git a/src/turbulenceModels/incompressible/LES/dynOneEqEddy/dynOneEqEddy.H b/src/turbulenceModels/incompressible/LES/dynOneEqEddy/dynOneEqEddy.H index 5b744eb0d2a67cdcbd1027638e3f190ff5183184..6a9384f406f43238216472f16ec7ce2a330c0ecb 100644 --- a/src/turbulenceModels/incompressible/LES/dynOneEqEddy/dynOneEqEddy.H +++ b/src/turbulenceModels/incompressible/LES/dynOneEqEddy/dynOneEqEddy.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,6 +24,9 @@ License Class Foam::incompressible::LESModels::dynOneEqEddy +Group + grpIcoLESTurbulence + Description Localised Dynamic One Equation Eddy Viscosity Model for incompressible flows diff --git a/src/turbulenceModels/incompressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.H b/src/turbulenceModels/incompressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.H index 6de3992574ff8a7b5f07706448eef090ea063adc..68e0183345964eab5121b1a9b0bcd7a928df849b 100644 --- a/src/turbulenceModels/incompressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.H +++ b/src/turbulenceModels/incompressible/LES/homogeneousDynOneEqEddy/homogeneousDynOneEqEddy.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,6 +24,9 @@ License Class Foam::incompressible::LESModels::homogeneousDynOneEqEddy +Group + grpIcoLESTurbulence + Description One Equation Eddy Viscosity Model for incompressible flows. diff --git a/src/turbulenceModels/incompressible/LES/homogeneousDynSmagorinsky/homogeneousDynSmagorinsky.H b/src/turbulenceModels/incompressible/LES/homogeneousDynSmagorinsky/homogeneousDynSmagorinsky.H index 05ac587a5b6d94efde10ae55cadb035356105484..cc95bb047aeee0cf92520ba24171dc4adf5e62c8 100644 --- a/src/turbulenceModels/incompressible/LES/homogeneousDynSmagorinsky/homogeneousDynSmagorinsky.H +++ b/src/turbulenceModels/incompressible/LES/homogeneousDynSmagorinsky/homogeneousDynSmagorinsky.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,6 +24,9 @@ License Class Foam::incompressible::LESModels::homogeneousDynSmagorinsky +Group + grpIcoLESTurbulence + Description The Isochoric homogeneous dynamic Smagorinsky Model for incompressible flows. diff --git a/src/turbulenceModels/incompressible/LES/kOmegaSSTSAS/kOmegaSSTSAS.H b/src/turbulenceModels/incompressible/LES/kOmegaSSTSAS/kOmegaSSTSAS.H index e61156f9c9081626d85018a744f76549497587ad..6d5eb587a7d0f1987cfecc800609bfc2ea6123c2 100644 --- a/src/turbulenceModels/incompressible/LES/kOmegaSSTSAS/kOmegaSSTSAS.H +++ b/src/turbulenceModels/incompressible/LES/kOmegaSSTSAS/kOmegaSSTSAS.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::LESModels::kOmegaSSTSAS +Group + grpIcoLESTurbulence + Description kOmegaSSTSAS LES turbulence model for incompressible flows based on: diff --git a/src/turbulenceModels/incompressible/LES/mixedSmagorinsky/mixedSmagorinsky.H b/src/turbulenceModels/incompressible/LES/mixedSmagorinsky/mixedSmagorinsky.H index 72dca5d35484ab6929c7635e3b09f70b08df3f58..c48932d0874a17565c6ccf099057a731ce552b0c 100644 --- a/src/turbulenceModels/incompressible/LES/mixedSmagorinsky/mixedSmagorinsky.H +++ b/src/turbulenceModels/incompressible/LES/mixedSmagorinsky/mixedSmagorinsky.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::LESModels::mixedSmagorinsky +Group + grpIcoLESTurbulence + Description The mixed Isochoric Smagorinsky Model for incompressible flows. diff --git a/src/turbulenceModels/incompressible/LES/oneEqEddy/oneEqEddy.H b/src/turbulenceModels/incompressible/LES/oneEqEddy/oneEqEddy.H index 143329c8c62a37131450b3c9f6f76ed9f1a35540..1b7472d787646414c48f84085107095369b45265 100644 --- a/src/turbulenceModels/incompressible/LES/oneEqEddy/oneEqEddy.H +++ b/src/turbulenceModels/incompressible/LES/oneEqEddy/oneEqEddy.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::LESModels::oneEqEddy +Group + grpIcoLESTurbulence + Description One Equation Eddy Viscosity Model for incompressible flows diff --git a/src/turbulenceModels/incompressible/LES/scaleSimilarity/scaleSimilarity.H b/src/turbulenceModels/incompressible/LES/scaleSimilarity/scaleSimilarity.H index c757a8165e2f266c1c0f9e01407ed62be8c59652..f159ebab741ccb03892e77d54eea30bf296c1ca1 100644 --- a/src/turbulenceModels/incompressible/LES/scaleSimilarity/scaleSimilarity.H +++ b/src/turbulenceModels/incompressible/LES/scaleSimilarity/scaleSimilarity.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::LESModels::scaleSimilarity +Group + grpIcoLESTurbulence + Description General base class for all scale similarity models for incompressible flows. diff --git a/src/turbulenceModels/incompressible/LES/spectEddyVisc/spectEddyVisc.H b/src/turbulenceModels/incompressible/LES/spectEddyVisc/spectEddyVisc.H index 9b3782e49bcbb544661d4b9233fb8f6067744b4f..a223a9d076f9fa57e06a5840c662b45e665e3301 100644 --- a/src/turbulenceModels/incompressible/LES/spectEddyVisc/spectEddyVisc.H +++ b/src/turbulenceModels/incompressible/LES/spectEddyVisc/spectEddyVisc.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,6 +24,9 @@ License Class Foam::incompressible::LESModels::spectEddyVisc +Group + grpIcoLESTurbulence + Description The Isochoric spectral Eddy Viscosity Model for incompressible flows. diff --git a/src/turbulenceModels/incompressible/RAS/LRR/LRR.H b/src/turbulenceModels/incompressible/RAS/LRR/LRR.H index e7873560081a0c7ad1755f69b5a2dafd383fea49..f60f0a66304102f5d2655b8496445b5c27ff30da 100644 --- a/src/turbulenceModels/incompressible/RAS/LRR/LRR.H +++ b/src/turbulenceModels/incompressible/RAS/LRR/LRR.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::RASModels::LRR +Group + grpIcoRASTurbulence + Description Launder, Reece and Rodi Reynolds-stress turbulence model for incompressible flows. diff --git a/src/turbulenceModels/incompressible/RAS/LamBremhorstKE/LamBremhorstKE.H b/src/turbulenceModels/incompressible/RAS/LamBremhorstKE/LamBremhorstKE.H index 3ae7cfda29753bc9f6d960bb213ddee40360f35c..2b5870cacdf7e649497177715bcc93d7ef9364be 100644 --- a/src/turbulenceModels/incompressible/RAS/LamBremhorstKE/LamBremhorstKE.H +++ b/src/turbulenceModels/incompressible/RAS/LamBremhorstKE/LamBremhorstKE.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::RASModels::LamBremhorstKE +Group + grpIcoRASTurbulence + Description Lam and Bremhorst low-Reynolds number k-epsilon turbulence model for incompressible flows diff --git a/src/turbulenceModels/incompressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.H b/src/turbulenceModels/incompressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.H index 528a7dd5d6d0c0556b32958600da3050e9a857b8..42233d41b0454087cc52c2d559129381aeba818d 100644 --- a/src/turbulenceModels/incompressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.H +++ b/src/turbulenceModels/incompressible/RAS/LaunderGibsonRSTM/LaunderGibsonRSTM.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::RASModels::LaunderGibsonRSTM +Group + grpIcoRASTurbulence + Description Launder-Gibson Reynolds stress turbulence model for incompressible flows. diff --git a/src/turbulenceModels/incompressible/RAS/LaunderSharmaKE/LaunderSharmaKE.H b/src/turbulenceModels/incompressible/RAS/LaunderSharmaKE/LaunderSharmaKE.H index 5e4ae36f5ae2f7103536f5056563ea5ecc9ece02..9396df87b9dcef65ad95705288bda9faf35a0f5b 100644 --- a/src/turbulenceModels/incompressible/RAS/LaunderSharmaKE/LaunderSharmaKE.H +++ b/src/turbulenceModels/incompressible/RAS/LaunderSharmaKE/LaunderSharmaKE.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::RASModels::LaunderSharmaKE +Group + grpIcoRASTurbulence + Description Launder and Sharma low-Reynolds k-epsilon turbulence model for incompressible flows. diff --git a/src/turbulenceModels/incompressible/RAS/LienCubicKE/LienCubicKE.H b/src/turbulenceModels/incompressible/RAS/LienCubicKE/LienCubicKE.H index 56696f42539287ccac73766159ee3a2a02e81c60..78771f9d6e0be42579b75c27b966d4ddff00f0f4 100644 --- a/src/turbulenceModels/incompressible/RAS/LienCubicKE/LienCubicKE.H +++ b/src/turbulenceModels/incompressible/RAS/LienCubicKE/LienCubicKE.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::RASModels::LienCubicKE +Group + grpIcoRASTurbulence + Description Lien cubic non-linear k-epsilon turbulence model for incompressible flows. diff --git a/src/turbulenceModels/incompressible/RAS/LienCubicKELowRe/LienCubicKELowRe.H b/src/turbulenceModels/incompressible/RAS/LienCubicKELowRe/LienCubicKELowRe.H index 8794af1fc4bec51c8f73f42a5ba7d331ed2146e8..df9d0fab823ce8eac199462569a7095638239307 100644 --- a/src/turbulenceModels/incompressible/RAS/LienCubicKELowRe/LienCubicKELowRe.H +++ b/src/turbulenceModels/incompressible/RAS/LienCubicKELowRe/LienCubicKELowRe.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::RASModels::LienCubicKELowRe +Group + grpIcoRASTurbulence + Description Lien cubic non-linear low-Reynolds k-epsilon turbulence models for incompressible flows. diff --git a/src/turbulenceModels/incompressible/RAS/LienLeschzinerLowRe/LienLeschzinerLowRe.H b/src/turbulenceModels/incompressible/RAS/LienLeschzinerLowRe/LienLeschzinerLowRe.H index 5aebe9ea50a30f3aaa84b8a54e9c3f5ae59eb728..0d8da074b558030135c21d7c295374e7da502693 100644 --- a/src/turbulenceModels/incompressible/RAS/LienLeschzinerLowRe/LienLeschzinerLowRe.H +++ b/src/turbulenceModels/incompressible/RAS/LienLeschzinerLowRe/LienLeschzinerLowRe.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::RASModels::LienLeschzinerLowRe +Group + grpIcoRASTurbulence + Description Lien and Leschziner low-Reynolds k-epsilon turbulence model for incompressible flows. diff --git a/src/turbulenceModels/incompressible/RAS/Make/files b/src/turbulenceModels/incompressible/RAS/Make/files index b76fb0c41119f725043c297e55c818915959e47e..ce75d3834626a834541b142d988649ca9f0af0b0 100644 --- a/src/turbulenceModels/incompressible/RAS/Make/files +++ b/src/turbulenceModels/incompressible/RAS/Make/files @@ -51,7 +51,6 @@ $(kappatWallFunctions)/kappatJayatillekeWallFunction/kappatJayatillekeWallFuncti derivedFvPatchFields/turbulentHeatFluxTemperature/turbulentHeatFluxTemperatureFvPatchScalarField.C derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.C -derivedFvPatchFields/fixedShearStress/fixedShearStressFvPatchVectorField.C derivedFvPatchFields/atmBoundaryLayerInletEpsilon/atmBoundaryLayerInletEpsilonFvPatchScalarField.C derivedFvPatchFields/atmBoundaryLayerInletVelocity/atmBoundaryLayerInletVelocityFvPatchVectorField.C diff --git a/src/turbulenceModels/incompressible/RAS/NonlinearKEShih/NonlinearKEShih.H b/src/turbulenceModels/incompressible/RAS/NonlinearKEShih/NonlinearKEShih.H index f63f0c6565c3300fd96378f7294a8c9af81a0712..b7c89fac1bf8eb201e073b939c8efb8ab6256810 100644 --- a/src/turbulenceModels/incompressible/RAS/NonlinearKEShih/NonlinearKEShih.H +++ b/src/turbulenceModels/incompressible/RAS/NonlinearKEShih/NonlinearKEShih.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::RASModels::NonlinearKEShih +Group + grpIcoRASTurbulence + Description Shih's quadratic non-linear k-epsilon turbulence model for incompressible flows diff --git a/src/turbulenceModels/incompressible/RAS/RASModel/RASModel.H b/src/turbulenceModels/incompressible/RAS/RASModel/RASModel.H index 0d0d41ea1ecb0c7edab2ffe9178af5ac8e7bb68f..b1a97681c28c41f042f0235e7e5abe4e9ac0f498 100644 --- a/src/turbulenceModels/incompressible/RAS/RASModel/RASModel.H +++ b/src/turbulenceModels/incompressible/RAS/RASModel/RASModel.H @@ -24,6 +24,9 @@ License Namespace Foam::incompressible::RASModels +Group + grpIcoRASTurbulence + Description Namespace for incompressible RAS turbulence models. diff --git a/src/turbulenceModels/incompressible/RAS/RASModel/RASModelDoc.H b/src/turbulenceModels/incompressible/RAS/RASModel/RASModelDoc.H new file mode 100644 index 0000000000000000000000000000000000000000..216165664d20d67bb5d63e8607b472dad86047d0 --- /dev/null +++ b/src/turbulenceModels/incompressible/RAS/RASModel/RASModelDoc.H @@ -0,0 +1,32 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +\defgroup grpIcoRASTurbulence Incompressible RAS turbulence +@{ + \ingroup grpIcoTurbulence + This group contains incompressible RAS models. +@} + +\*---------------------------------------------------------------------------*/ diff --git a/src/turbulenceModels/incompressible/RAS/RNGkEpsilon/RNGkEpsilon.H b/src/turbulenceModels/incompressible/RAS/RNGkEpsilon/RNGkEpsilon.H index 2d06ee9ec1a804e2cb68793698e974aa12158348..b9bf88048af2bc41bd31fa00783c589d440fb68e 100644 --- a/src/turbulenceModels/incompressible/RAS/RNGkEpsilon/RNGkEpsilon.H +++ b/src/turbulenceModels/incompressible/RAS/RNGkEpsilon/RNGkEpsilon.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::RASModels::RNGkEpsilon +Group + grpIcoRASTurbulence + Description Renormalisation group k-epsilon turbulence model for incompressible flows. diff --git a/src/turbulenceModels/incompressible/RAS/SpalartAllmaras/SpalartAllmaras.H b/src/turbulenceModels/incompressible/RAS/SpalartAllmaras/SpalartAllmaras.H index 4190fc7d8090fe1429a02bf9917258350abae941..d7479c2dd5b829c5b08e703682f730fbd33f3252 100644 --- a/src/turbulenceModels/incompressible/RAS/SpalartAllmaras/SpalartAllmaras.H +++ b/src/turbulenceModels/incompressible/RAS/SpalartAllmaras/SpalartAllmaras.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::RASModels::SpalartAllmaras +Group + grpIcoRASTurbulence + Description Spalart-Allmaras 1-eqn mixing-length model for incompressible external flows. diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/atmBoundaryLayerInletEpsilon/atmBoundaryLayerInletEpsilonFvPatchScalarField.H b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/atmBoundaryLayerInletEpsilon/atmBoundaryLayerInletEpsilonFvPatchScalarField.H index bce9e01480943d9efa1dee778d462922219cd54e..b94500ae52400f11a320aeb1b3ba81e9c1283680 100644 --- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/atmBoundaryLayerInletEpsilon/atmBoundaryLayerInletEpsilonFvPatchScalarField.H +++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/atmBoundaryLayerInletEpsilon/atmBoundaryLayerInletEpsilonFvPatchScalarField.H @@ -8,10 +8,10 @@ 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 3 of the License, or (at your - option) any later version. + 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 3 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 @@ -19,45 +19,76 @@ 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 + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - atmBoundaryLayerInletEpsilonFvPatchScalarField - -Description - Boundary condition specifies a epsilon inlet for the atmospheric boundary - layer (ABL). This boundaty is to be used in conjunction with - ABLInletVelocity. - - \verbatim - epsilon = Ustar^3 / (K(z - zGround + z0)) - - where: - - Ustar is the frictional velocity - K is karman's constant - z is the verical coordinate - z0 is the surface roughness lenght - zGround minium vlaue in z direction + Foam::incompressible::atmBoundaryLayerInletEpsilonFvPatchScalarField +Group + grpIcoRASBoundaryConditions grpInletBoundaryConditions +Description + This boundary condition specifies an inlet value for the turbulence + dissipation, \f$\epsilon\f$ (\c epsilon), appropriate for atmospheric + boundary layers (ABL), and designed to be used in conjunction with the + \c ABLInletVelocity inlet velocity boundary condition. + + \f[ + \epsilon = \frac{(U^*)^3}{K(z - z_g + z_0)} + \f] + + where + \vartable + U^* | frictional velocity + K | Karman's constant + z | vertical co-ordinate [m] + z_0 | surface roughness length [m] + z_g | minimum vlaue in z direction [m] + \endvartable + and: - Ustar = K Uref/ln((Zref + z0)/z0) + \f[ + U^* = K \frac{U_{ref}}{ln\left(\frac{Z_{ref} + z_0}{z_0}\right)} + \f] where: - - Uref is the reference velocity at Zref - Zref is the reference height. - + \vartable + U_{ref} | reference velocity at \f$Z_{ref}\f$ [m/s] + Z_{ref} | reference height [m] + \endvartable + + \heading Patch usage + + \table + Property | Description | Required | Default value + z | vertical co-ordinate [m] | yes | + kappa | Karman's constanat | no | 0.41 + Uref | reference velocity [m/s] | yes | + Href | reference height [m] | yes | + z0 | surface roughness length [m] | yes | + zGround | minimum z co-ordinate [m] | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type atmBoundaryLayerInletEpsilon; + z 1.0; + kappa 0.41; + Uref 1.0; + Href 0.0; + z0 uniform 0.0; + zGround uniform 0.0; + } \endverbatim Reference: - D.M. Hargreaves and N.G. Wright - "On the use of the k-epsilon model in commercial CFD software to model the - neutral atmospheric boundary layer" - Journal of Wind Engineering and Industrial Aerodynamics 95(2007) 355-369. + D.M. Hargreaves and N.G. Wright, "On the use of the k-epsilon model + in commercial CFD software to model the neutral atmospheric boundary + layer", Journal of Wind Engineering and Industrial Aerodynamics + 95(2007), pp 355-369. SourceFiles atmBoundaryLayerInletEpsilonFvPatchScalarField.C @@ -96,13 +127,13 @@ class atmBoundaryLayerInletEpsilonFvPatchScalarField //- Reference velocity const scalar Uref_; - //- Reference hight + //- Reference height const scalar Href_; //- Surface roughness length scalarField z0_; - //- Minimum coordinate value in z direction + //- Minimum co-ordinate value in z direction scalarField zGround_; //- Frictional velocity diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/atmBoundaryLayerInletVelocity/atmBoundaryLayerInletVelocityFvPatchVectorField.H b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/atmBoundaryLayerInletVelocity/atmBoundaryLayerInletVelocityFvPatchVectorField.H index 0249b7111c9a2db372087acec37396dcdc248c0b..b37c40a3da6d37849f6653708f08388677f52359 100644 --- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/atmBoundaryLayerInletVelocity/atmBoundaryLayerInletVelocityFvPatchVectorField.H +++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/atmBoundaryLayerInletVelocity/atmBoundaryLayerInletVelocityFvPatchVectorField.H @@ -8,10 +8,10 @@ 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 3 of the License, or (at your - option) any later version. + 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 3 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 @@ -19,49 +19,84 @@ 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 + along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - atmBoundaryLayerInletVelocityFvPatchVectorField + Foam::incompressible::atmBoundaryLayerInletVelocityFvPatchVectorField -Description - Boundary condition specifies a atmospheric boundary layer (ABL) - velocity inlet profile given the friction velocity value, - flow direction n and direction of the parabolic coordinate z. - - \verbatim - U = (Ustar/K) ln((z - zGround + z0)/z0) - - where: +Group + grpIcoRASBoundaryConditions grpInletBoundaryConditions - Ustar is the frictional velocity - K is karman's constant - z0 is the surface roughness lenght - z is the verical coordinate - zGround is the minumum coordinate value in z direction. +Description + This boundary condition specifies a velocity inlet profile appropriate + for atmospheric boundary layers (ABL). The profile is derived from the + friction velocity, flow direction and the direction of the parabolic + co-ordinate \c z. + + \f[ + U = \frac{U^*}{K} ln\left(\frac{z - z_g + z_0}{z_0}\right) + \f] + + where + \vartable + U^* | frictional velocity + K | Karman's constant + z | vertical co-ordinate [m] + z_0 | surface roughness length [m] + z_g | minimum vlaue in z direction [m] + \endvartable and: - Ustar = K Uref/ln((Zref + z0)/z0) + \f[ + U^* = K \frac{U_{ref}}{ln\left(\frac{Z_{ref} + z_0}{z_0}\right)} + \f] where: + \vartable + U_{ref} | reference velocity at \f$Z_{ref}\f$ [m/s] + Z_{ref} | reference height [m] + \endvartable - Uref is the reference velocity at Zref - Zref is the reference height. - + Reference: + D.M. Hargreaves and N.G. Wright, "On the use of the k-epsilon model + in commercial CFD software to model the neutral atmospheric boundary + layer", Journal of Wind Engineering and Industrial Aerodynamics + 95(2007), pp 355-369. + + \heading Patch usage + + \table + Property | Description | Required | Default value + n | flow direction | yes | + z | vertical co-ordinate [m] | yes | + kappa | Karman's constanat | no | 0.41 + Uref | reference velocity [m/s] | yes | + Href | reference height [m] | yes | + z0 | surface roughness length [m] | yes | + zGround | minimum z co-ordinate [m] | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type atmBoundaryLayerInletVelocity; + n (0 1 0); + z 1.0; + kappa 0.41; + Uref 1.0; + Href 0.0; + z0 uniform 0.0; + zGround uniform 0.0; + } \endverbatim - Reference: - D.M. Hargreaves and N.G. Wright - "On the use of the k-epsilon model in commercial CFD software to model the - neutral atmospheric boundary layer" - Journal of Wind Engineering and Industrial Aerodynamics 95(2007) 355-369. - -NOTE: D.M. Hargreaves and N.G. Wright recommend Gamma epsilon in the k-epsilon - model should be changed from 1.3 to 1.11 for consistency. - The roughness height (Er) is given by Er = 20 z0 following the same - reference +Note + D.M. Hargreaves and N.G. Wright recommend Gamma epsilon in the + k-epsilon model should be changed from 1.3 to 1.11 for consistency. + The roughness height (Er) is given by Er = 20 z0 following the same + reference. SourceFiles atmBoundaryLayerInletVelocityFvPatchVectorField.C diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/doc/incompressibleRASBoundaryConditionsDoc.H b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/doc/incompressibleRASBoundaryConditionsDoc.H new file mode 100644 index 0000000000000000000000000000000000000000..c59310206487cb7a6d1ef670a31964e9eac67e39 --- /dev/null +++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/doc/incompressibleRASBoundaryConditionsDoc.H @@ -0,0 +1,39 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +\defgroup grpIcoRASBoundaryConditions RAS incompressible boundary conditions +@{ + \ingroup grpIcoRASTurbulence + This group contains incompressible RAS turbulence model boundary conditions +@} + +\defgroup grpIcoWallFunctions RAS incompressible wall functions +@{ + \ingroup grpIcoRASBoundaryConditions + This group contains incompressible RAS turbulence model wall functions +@} + + +\*---------------------------------------------------------------------------*/ diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/turbulentHeatFluxTemperature/turbulentHeatFluxTemperatureFvPatchScalarField.H b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/turbulentHeatFluxTemperature/turbulentHeatFluxTemperatureFvPatchScalarField.H index cb3a0c9d17b0a01aad30d6328e1c8119d9290149..59b8106d151bc72f91b692708d9d0e04047755ce 100644 --- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/turbulentHeatFluxTemperature/turbulentHeatFluxTemperatureFvPatchScalarField.H +++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/turbulentHeatFluxTemperature/turbulentHeatFluxTemperatureFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -22,26 +22,42 @@ License along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class - Foam::turbulentHeatFluxTemperatureFvPatchScalarField + Foam::incompressible::turbulentHeatFluxTemperatureFvPatchScalarField + +Group + grpIcoRASBoundaryConditions grpWallBoundaryConditions Description Fixed heat boundary condition to specify temperature gradient. Input heat source either specified in terms of an absolute power [W], or as a flux [W/m2]. - Example usage: - - hotWall - { - type turbulentHeatFluxTemperature; - heatSource flux; // power [W]; flux [W/m2] - q uniform 10; // heat power or flux - alphaEff alphaEff; // alphaEff field name; - // alphaEff in [kg/m/s] - Cp Cp; // Cp field name; Cp in [J/kg/K] - value uniform 300; // initial temperature value - } - + \heading Patch usage + + \table + Property | Description | Required | Default value + heatSource | heat source type: \c flux [W/m2] or \c power [W]| yes | + q | heat source value | yes | + alphaEff | turbulent thermal diffusivity field name | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type turbulentHeatFluxTemperature; + heatSource flux; + q uniform 10; + alphaEff alphaEff; + value uniform 300; // place holder + } + \endverbatim + +Note + - it is assumed that the units of \c alphaEff are [kg/m/s] + - the specific heat capcaity is read from the transport dictionary entry + \c Cp0 + SourceFiles turbulentHeatFluxTemperatureFvPatchScalarField.C diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C index a0fee136cac87691edb173a670dc9ccbdc667736..f0e9d5bdfeaffb5fddcd4984ef270325b0aae6f7 100644 --- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C +++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -48,14 +48,15 @@ turbulentMixingLengthDissipationRateInletFvPatchScalarField : inletOutletFvPatchScalarField(p, iF), mixingLength_(0.0), - phiName_("undefined-phi"), - kName_("undefined-k") + phiName_("phi"), + kName_("k") { this->refValue() = 0.0; this->refGrad() = 0.0; this->valueFraction() = 0.0; } + turbulentMixingLengthDissipationRateInletFvPatchScalarField:: turbulentMixingLengthDissipationRateInletFvPatchScalarField ( @@ -71,6 +72,7 @@ turbulentMixingLengthDissipationRateInletFvPatchScalarField kName_(ptf.kName_) {} + turbulentMixingLengthDissipationRateInletFvPatchScalarField:: turbulentMixingLengthDissipationRateInletFvPatchScalarField ( @@ -91,6 +93,7 @@ turbulentMixingLengthDissipationRateInletFvPatchScalarField this->valueFraction() = 0.0; } + turbulentMixingLengthDissipationRateInletFvPatchScalarField:: turbulentMixingLengthDissipationRateInletFvPatchScalarField ( @@ -103,6 +106,7 @@ turbulentMixingLengthDissipationRateInletFvPatchScalarField kName_(ptf.kName_) {} + turbulentMixingLengthDissipationRateInletFvPatchScalarField:: turbulentMixingLengthDissipationRateInletFvPatchScalarField ( diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.H b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.H index 1cfb9013b32346be4b475749ac17ddfa33419bef..7a74a838496833a460e917438c7cffae9342dfa1 100644 --- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.H +++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/turbulentMixingLengthDissipationRateInlet/turbulentMixingLengthDissipationRateInletFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,19 +25,52 @@ Class Foam::incompressible:: turbulentMixingLengthDissipationRateInletFvPatchScalarField +Group + grpIcoRASBoundaryConditions grpInletBoundaryConditions + Description - Calculate epsilon via the mixing length [m] + This boundary condition provides a turbulence dissipation, \f$\epsilon\f$ + (epsilon) inlet condition based on a specified mixing length. The patch + values are calculated using: + + \f[ + \epsilon_p = \frac{C_{\mu}^{0.75} k^{1.5}}{L} + \f] + + where + + \vartable + \epsilon_p | patch epsilon values + C_{\mu} | Model coefficient, set to 0.09 + k | turbulence kinetic energy + L | length scale + \endvartable + + \heading Patch usage + + \table + Property | Description | Required | Default value + mixingLength | Length scale [m] | yes | + phi | flux field name | no | phi + k | turbulence kinetic energy field name | no | k + \endtable Example of the boundary condition specification: \verbatim - inlet - { - type turbulentMixingLengthDissipationRateInlet; - mixingLength 0.005; // 5 mm - value uniform 200; // placeholder - } + myPatch + { + type turbulentMixingLengthDissipationRateInlet; + mixingLength 0.005; + value uniform 200; // placeholder + } \endverbatim +Note + In the event of reverse flow, a zero-gradient condition is applied + +SeeAlso + Foam::inletOutletFvPatchField + SourceFiles turbulentMixingLengthDissipationRateInletFvPatchScalarField.C @@ -56,7 +89,7 @@ namespace incompressible { /*---------------------------------------------------------------------------*\ - Class turbulentMixingLengthDissipationRateInletFvPatch Declaration + Class turbulentMixingLengthDissipationRateInletFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class turbulentMixingLengthDissipationRateInletFvPatchScalarField diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.H b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.H index 41a871b8df03a3e6a6ae776cf6b0432d4dd16641..e39e13845f464066d08ba247f94d0a1efbc9c156 100644 --- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.H +++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/turbulentMixingLengthFrequencyInlet/turbulentMixingLengthFrequencyInletFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,20 +24,53 @@ License Class Foam::incompressible::turbulentMixingLengthFrequencyInletFvPatchScalarField +Group + grpIcoRASBoundaryConditions grpInletBoundaryConditions + Description - Calculate omega via the mixing length + This boundary condition provides a turbulence specific dissipation, + \f$\omega\f$ (omega) inlet condition based on a specified mixing length. + The patch values are calculated using: + + \f[ + \omega_p = \frac{k^{0.5}}{C_{\mu}^{0.25} L} + \f] + + where + + \vartable + \omega_p | patch omega values + C_{\mu} | Model coefficient, set to 0.09 + k | turbulence kinetic energy + L | length scale + \endvartable + + \heading Patch usage + + \table + Property | Description | Required | Default value + mixingLength | Length scale [m] | yes | + phi | flux field name | no | phi + k | turbulence kinetic energy field name | no | k + \endtable Example of the boundary condition specification: \verbatim - inlet - { - type turbulentMixingLengthFrequencyInlet; - mixingLength 0.005; // 5 mm - k k; // turbulent k field - value uniform 5; // initial value - } + myPatch + { + type turbulentMixingLengthFrequencyInlet; + mixingLength 0.005; + value uniform 200; // placeholder + } \endverbatim +Note + In the event of reverse flow, a zero-gradient condition is applied + +SeeAlso + Foam::inletOutletFvPatchField + + SourceFiles turbulentMixingLengthFrequencyInletFvPatchScalarField.C diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.H b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.H index b95f74dd92751a077b1c0945c7c9e126612b9ce4..abd360cba4d0b81b8fb68e23fd6256bbddd44ab1 100644 --- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/epsilonWallFunctions/epsilonWallFunction/epsilonWallFunctionFvPatchScalarField.H @@ -24,10 +24,45 @@ License Class Foam::incompressible::RASModels::epsilonWallFunctionFvPatchScalarField +Group + grpIcoWallFunctions + Description - Boundary condition for epsilon when using wall functions - - calculates epsilon and G - - epsilon values added directly into the matrix to act as a constraint + This boundary condition provides a turbulence dissipation wall function + condition for high Reynolds number, turbulent flow cases. + + The condition can be applied to wall boundaries, whereby it + - calculates \c epsilon and \c G + - inserts near wall epsilon values directly into the epsilon equation + to act as a constraint + + where + + \vartable + epsilon | turblence dissipation field + G | turblence generation field + \endvartable + + \heading Patch usage + + \table + Property | Description | Required | Default value + G | turbulence generation field name | no | G + Cmu | model coefficient | no | 0.09 + kappa | Von Karman constant | no | 0.41 + E | model coefficient | no | 9.8 + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type epsilonWallFunction; + } + \endverbatim + +SeeAlso + Foam::fixedInternalValueFvPatchField SourceFiles epsilonWallFunctionFvPatchScalarField.C @@ -72,7 +107,6 @@ protected: //- E coefficient scalar E_; - //- Y+ at the edge of the laminar sublayer scalar yPlusLam_; diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/kappatWallFunctions/kappatJayatillekeWallFunction/kappatJayatillekeWallFunctionFvPatchScalarField.H b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/kappatWallFunctions/kappatJayatillekeWallFunction/kappatJayatillekeWallFunctionFvPatchScalarField.H index d9ba225361fda51bbaa71306703994c573bc235d..c26d9a41ecbfadfe77b83ca340892a814034f7e0 100644 --- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/kappatWallFunctions/kappatJayatillekeWallFunction/kappatJayatillekeWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/kappatWallFunctions/kappatJayatillekeWallFunction/kappatJayatillekeWallFunctionFvPatchScalarField.H @@ -2,34 +2,59 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ 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 3 of the License, or - (at your option) any later version. + 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 3 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. + 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, see <http://www.gnu.org/licenses/>. + You should have received a copy of the GNU General Public License along with + OpenFOAM. If not, see <http://www.gnu.org/licenses/>. Class Foam::incompressible::RASModels:: kappatJayatillekeWallFunctionFvPatchScalarField -Description - Boundary condition for (kinematic) turbulent thermal conductivity when - using wall functions, using Jayatilleke P function. +Group + grpIcoWallFunctions - Units of m2/s +Description + This boundary condition provides a kinematic turbulent thermal conductivity + for using wall functions, using the Jayatilleke 'P' function. + + \heading Patch usage + + \table + Property | Description | Required | Default value + Prt | turbulent Prandtl number | no | 0.85 + Cmu | model coefficient | no | 0.09 + kappa | Von Karman constant | no | 0.41 + E | model coefficient | no | 9.8 + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type kappatJayatillekeWallFunction; + } + \endverbatim + +Note + The units of kinematic turbulent thermal conductivity are [m2/s] + +SeeAlso + Foam::fixedValueFvPatchField SourceFiles kappatJayatillekeWallFunctionFvPatchScalarField.C diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.H b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.H index 292fe79a890b60f404989383196ca8fa8dfe311e..c63821fe9a9da5502a534060c93801f5088df372 100644 --- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.H +++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/kqRWallFunctions/kqRWallFunction/kqRWallFunctionFvPatchField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,9 +24,28 @@ License Class Foam::incompressible::RASModels::kqRWallFunctionFvPatchField +Group + grpIcoWallFunctions + Description - Boundary condition for turbulence k, Q, and R when using wall functions. - Simply acts as a zero gradient condition. + This boundary condition provides a suitable condition for turbulence + \c k, \c q, and \c R fields for the case of high Reynolds number flow using + wall functions. + + It is a simple wrapper around the zero-gradient condition. + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type kqRWallFunction; + } + \endverbatim + +SeeAlso + Foam::zeroGradientFvPatchField SourceFiles kqRWallFunctionFvPatchField.C diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutLowReWallFunction/nutLowReWallFunctionFvPatchScalarField.H b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutLowReWallFunction/nutLowReWallFunctionFvPatchScalarField.H index 1dc153b0b90207359817b319cf31e5d1abdd98ac..008fe9c96c6559b978b189787080ccbeb9c346b7 100644 --- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutLowReWallFunction/nutLowReWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutLowReWallFunction/nutLowReWallFunctionFvPatchScalarField.H @@ -24,11 +24,26 @@ License Class Foam::incompressible::RASModels::nutLowReWallFunctionFvPatchScalarField -Description - Boundary condition for turbulent (kinematic) viscosity when for use with - low Reynolds number models. +Group + grpIcoWallFunctions - Sets nut to zero, and provides an access function to calculate y+. +Description + This boundary condition provides a turbulent kinematic viscosity condition + for use with low Reynolds number models. It sets \c nut to zero, and + provides an access function to calculate y+. + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type nutLowReWallFunction; + } + \endverbatim + +SeeAlso + Foam::nutWallFunctionFvPatchScalarField SourceFiles nutLowReWallFunctionFvPatchScalarField.C diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutURoughWallFunction/nutURoughWallFunctionFvPatchScalarField.H b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutURoughWallFunction/nutURoughWallFunctionFvPatchScalarField.H index ea00181a21d33b1ad07980aa5e3a2d904b263716..881752d9f54e21fb0565311a0756957634d5cb68 100644 --- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutURoughWallFunction/nutURoughWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutURoughWallFunction/nutURoughWallFunctionFvPatchScalarField.H @@ -24,11 +24,38 @@ License Class Foam::incompressible::RASModels::nutURoughWallFunctionFvPatchScalarField +Group + grpIcoWallFunctions + Description - Wall function boundary condition for rough walls, based on velocity. + This boundary condition provides a turbulent kinematic viscosity condition + when using wall functions for rough walls, based on velocity. + + \heading Patch usage + + \table + Property | Description | Required | Default value + roughnessHeight | roughness height | yes | + roughnessConstant | roughness constanr | yes | + roughnessFactor | scaling factor | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type nutURoughWallFunction; + roughnessHeight 1e-5; + roughnessConstant 0.5; + roughnessFactor 1; + } + \endverbatim + +SeeAlso + Foam::nutWallFunctionFvPatchScalarField SourceFiles - nutSpalartAllmarasStandardWallFunctionFvPatchScalarField.C + nutURoughWallFunctionFvPatchScalarField.C \*---------------------------------------------------------------------------*/ diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUSpaldingWallFunction/nutUSpaldingWallFunctionFvPatchScalarField.H b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUSpaldingWallFunction/nutUSpaldingWallFunctionFvPatchScalarField.H index 983ecc57ae9ef1f7311ad2808738b7d81627c5b2..b9f75ed1b17395581b2b981b9532bf4ba7bd7257 100644 --- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUSpaldingWallFunction/nutUSpaldingWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUSpaldingWallFunction/nutUSpaldingWallFunctionFvPatchScalarField.H @@ -24,9 +24,39 @@ License Class Foam::incompressible::RASModels::nutUSpaldingWallFunctionFvPatchScalarField +Group + grpIcoWallFunctions + Description - Wall function boundary condition for walls, based on velocity, using - Spaldings law to give a continuous nut profile to the wall (y+ = 0) + This boundary condition provides a turbulent kinematic viscosity condition + when using wall functions for rough walls, based on velocity, using + Spalding's law to give a continuous nut profile to the wall (y+ = 0) + + \f[ + y^+ = u^+ + \frac{1}{E} \left[exp(\kappa u^+) - 1 - \kappa u^+\, + - 0.5 (\kappa u^+)^2 - \frac{1}{6} (\kappa u^+)^3\right] + \f] + + where + \vartable + y^+ | non-dimensional position + u^+ | non-dimensional velocity + \kappa | Von Karman constant + \endvartable + + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type nutUSpaldingWallFunction; + } + \endverbatim + +SeeAlso + Foam::nutWallFunctionFvPatchScalarField SourceFiles nutUSpaldingWallFunctionFvPatchScalarField.C @@ -48,7 +78,7 @@ namespace RASModels { /*---------------------------------------------------------------------------*\ - Class nutUSpaldingWallFunctionFvPatch Declaration + Class nutUSpaldingWallFunctionFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class nutUSpaldingWallFunctionFvPatchScalarField diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUTabulatedWallFunction/nutUTabulatedWallFunctionFvPatchScalarField.H b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUTabulatedWallFunction/nutUTabulatedWallFunctionFvPatchScalarField.H index a164366d7c8355b828a8baa0472a56f97978e8e4..95bde3ba032d724ebb8c5628af4a7155ff6632bc 100644 --- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUTabulatedWallFunction/nutUTabulatedWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUTabulatedWallFunction/nutUTabulatedWallFunctionFvPatchScalarField.H @@ -24,12 +24,37 @@ License Class Foam::incompressible::RASModels::nutUTabulatedWallFunctionFvPatchScalarField -Description - Wall function boundary condition for turbulence kinematic viscosity. Uses a - table to return the value of U+ as a function of near-wall Reynolds number. +Group + grpIcoWallFunctions - Note: the tables are not registered since the same table object may be used - for more than one patch. +Description + This boundary condition provides a turbulent kinematic viscosity condition + when using wall functions. As input, the user specifies a look-up table + of U+ as a function of near-wall Reynolds number. The table should be + located in the $FOAM_CASE/constant folder. + + \heading Patch usage + + \table + Property | Description | Required | Default value + uPlusTable | U+ as a function of Re table name | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type nutTabulatedWallFunction; + uPlusTable myUPlusTable; + } + \endverbatim + +Note + The tables are not registered since the same table object may be used for + more than one patch. + +SeeAlso + Foam::nutWallFunctionFvPatchScalarField SourceFiles nutUTabulatedWallFunctionFvPatchScalarField.C diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUWallFunction/nutUWallFunctionFvPatchScalarField.H b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUWallFunction/nutUWallFunctionFvPatchScalarField.H index 4ebf73063679ed6b57a9026f6f7f1682f9e51943..6f32734149b36460f2f1e8069db4366c41ae6410 100644 --- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUWallFunction/nutUWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutUWallFunction/nutUWallFunctionFvPatchScalarField.H @@ -24,8 +24,25 @@ License Class Foam::incompressible::RASModels::nutUWallFunctionFvPatchScalarField +Group + grpIcoWallFunctions + Description - Wall function boundary condition for walls, based on velocity. + This boundary condition provides a turbulent kinematic viscosity condition + when using wall functions, based on velocity. + + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type nutUWallFunction; + } + \endverbatim + +SeeAlso + Foam::nutWallFunctionFvPatchScalarField SourceFiles nutUWallFunctionFvPatchScalarField.C @@ -47,7 +64,7 @@ namespace RASModels { /*---------------------------------------------------------------------------*\ - Class nutUWallFunctionFvPatchScalarField Declaration + Class nutUWallFunctionFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class nutUWallFunctionFvPatchScalarField diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutWallFunction/nutWallFunctionFvPatchScalarField.H b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutWallFunction/nutWallFunctionFvPatchScalarField.H index a6e196472eaa8c71ee8bf41c57a372e9e825c244..01355ec454d7260ba0000f81d887e3c7e73e97df 100644 --- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutWallFunction/nutWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutWallFunction/nutWallFunctionFvPatchScalarField.H @@ -24,11 +24,27 @@ License Class Foam::incompressible::RASModels::nutWallFunctionFvPatchScalarField +Group + grpIcoWallFunctions + Description - Boundary condition for turbulent (kinematic) viscosity when using wall - functions, based on turbulence kinetic energy. + This boundary condition provides a turbulent kinematic viscosity condition + when using wall functions, based on turbulence kinetic energy. - replicates OpenFOAM v1.5 (and earlier) behaviour + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type nutWallFunction; + } + \endverbatim + +SeeAlso + Foam::fixedValueFvPatchField + SourceFiles nutWallFunctionFvPatchScalarField.C diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkAtmRoughWallFunction/nutkAtmRoughWallFunctionFvPatchScalarField.C b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkAtmRoughWallFunction/nutkAtmRoughWallFunctionFvPatchScalarField.C index 035bd813d7e7ab1a17b91fe84c27b81c1ac8f5d8..b00e9f0bf984e881f8237a3f75197531ae9e4cfa 100644 --- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkAtmRoughWallFunction/nutkAtmRoughWallFunctionFvPatchScalarField.C +++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkAtmRoughWallFunction/nutkAtmRoughWallFunctionFvPatchScalarField.C @@ -40,7 +40,6 @@ namespace RASModels // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // - tmp<scalarField> nutkAtmRoughWallFunctionFvPatchScalarField::calcNut() const { const label patchI = patch().index(); diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkAtmRoughWallFunction/nutkAtmRoughWallFunctionFvPatchScalarField.H b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkAtmRoughWallFunction/nutkAtmRoughWallFunctionFvPatchScalarField.H index a4c2aaa936aa0aac9911a4fb532132788f1aa552..3e0f67a4fcbfe3803eb4b0f6f4189a39006742a3 100644 --- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkAtmRoughWallFunction/nutkAtmRoughWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkAtmRoughWallFunction/nutkAtmRoughWallFunctionFvPatchScalarField.H @@ -25,20 +25,46 @@ Class Foam::incompressible::RASModels:: nutkAtmRoughWallFunctionFvPatchScalarField -Description - Boundary condition for turbulent (kinematic) viscosity for atmospheric - velocity profiles. - Desinged to be used togheter with atmBoundaryLayerInletVelocity. - It follows U = (Ustar/K) ln((z - zGround + z0)/z0) - - where: - - Ustar is the frictional velocity - K is karman's constant - z0 is the surface roughness lenght - z is the verical coordinate - zGround is the minumum coordinate value in z direction. +Group + grpIcoWallFunctions +Description + This boundary condition provides a turbulent kinematic viscosity for + atmospheric velocity profiles. It is desinged to be used in conjunction + with the atmBoundaryLayerInletVelocity boundary condition. The values + are calculated using: + + \f[ + U = frac{U_f}{K} ln(\frac{z + z_0}{z_0}) + \f] + + where + + \vartable + U_f | frictional velocity + K | Von Karman's constant + z_0 | surface roughness length + z | vertical co-ordinate + \endvartable + + \heading Patch usage + + \table + Property | Description | Required | Default value + z0 | surface roughness length| yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type nutkAtmRoughWallFunction; + z0 uniform 0; + } + \endverbatim + +SeeAlso + Foam::nutkWallFunctionFvPatchField SourceFiles nutkAtmRoughWallFunctionFvPatchScalarField.C @@ -60,7 +86,7 @@ namespace RASModels { /*---------------------------------------------------------------------------*\ - Class nutkAtmRoughWallFunctionFvPatchScalarField Declaration + Class nutkAtmRoughWallFunctionFvPatchScalarField Declaration \*---------------------------------------------------------------------------*/ class nutkAtmRoughWallFunctionFvPatchScalarField @@ -71,7 +97,7 @@ protected: // Protected data - //- Surface roughness lenght + //- Surface roughness length scalarField z0_; diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkRoughWallFunction/nutkRoughWallFunctionFvPatchScalarField.H b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkRoughWallFunction/nutkRoughWallFunctionFvPatchScalarField.H index ad39e628a270f523ecff939852ecc5cea8043623..50d24a3ebd804f849b7ad7b550d127693c18ef4d 100644 --- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkRoughWallFunction/nutkRoughWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkRoughWallFunction/nutkRoughWallFunctionFvPatchScalarField.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,15 +24,39 @@ License Class Foam::incompressible::RASModels::nutkRoughWallFunctionFvPatchScalarField -Description - Boundary condition for turbulent (kinematic) viscosity when using wall - functions for rough walls, based on turbulence kinetic energy. +Group + grpIcoWallFunctions - Manipulates the E parameter to account for roughness effects, based on - KsPlus. +Description + This boundary condition provides a turbulent kinematic viscosity condition + when using wall functions for rough walls, based on turbulence kinetic + energy. The condition manipulates the E parameter to account for roughness + effects. + Parameter ranges - roughness height = sand-grain roughness (0 for smooth walls) - - roughness constant = 0.5-1.0 (0.5 default) + - roughness constant = 0.5-1.0 + + \heading Patch usage + + \table + Property | Description | Required | Default value + Ks | sand-grain roughness height | yes | + Cs | roughness constant | yes | + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type nutkRoughWallFunction; + Ks uniform 0; + Cs uniform 0.5; + } + \endverbatim + +SeeAlso + Foam::nutkRoughWallFunctionFvPatchScalarField SourceFiles nutkRoughWallFunctionFvPatchScalarField.C diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkWallFunction/nutkWallFunctionFvPatchScalarField.H b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkWallFunction/nutkWallFunctionFvPatchScalarField.H index d4ffd6167a03d7a4b1dc29b9097a115d59aafc60..49a2257e093eb2df45e83be774232dbe9f23ded3 100644 --- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkWallFunction/nutkWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/nutWallFunctions/nutkWallFunction/nutkWallFunctionFvPatchScalarField.H @@ -24,11 +24,27 @@ License Class Foam::incompressible::RASModels::nutkWallFunctionFvPatchScalarField +Group + grpIcoWallFunctions + Description - Boundary condition for turbulent (kinematic) viscosity when using wall - functions, based on turbulence kinetic energy. + This boundary condition provides a turbulent kinematic viscosity condition + when using wall functions, based on turbulence kinetic energy. - replicates OpenFOAM v1.5 (and earlier) behaviour + \heading Patch usage + + Example of the boundary condition specification: + \verbatim + myPatch + { + type nutkWallFunction; + } + \endverbatim + +SeeAlso + Foam::nutWallFunctionFvPatchScalarField + SourceFiles nutkWallFunctionFvPatchScalarField.C diff --git a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.H b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.H index 41f1d0027dc42aed4db296f407dc8879521ecf26..9c03a85f259a0ddfded87dcba8313f5cf29798ab 100644 --- a/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.H +++ b/src/turbulenceModels/incompressible/RAS/derivedFvPatchFields/wallFunctions/omegaWallFunctions/omegaWallFunction/omegaWallFunctionFvPatchScalarField.H @@ -24,16 +24,23 @@ License Class Foam::incompressible::RASModels::omegaWallFunctionFvPatchScalarField -Description - Provides a wall function boundary condition/constraint on omega +Group + grpIcoWallFunctions - Computed value is: +Description + This boundary condition provides a wall function constraint on turbulnce + specific dissipation, omega. The values are computed using: - omega = sqrt(omega_vis^2 + omega_log^2) + \f[ + \omega = sqrt(\omega_{vis}^2 + \omega_{log}^2) + \f] where - omega_vis = omega in viscous region - omega_log = omega in logarithmic region + + \vartable + \omega_{vis} | omega in viscous region + \omega_{log} | omega in logarithmic region + \endvartable Model described by Eq.(15) of: \verbatim @@ -43,6 +50,25 @@ Description Nov. 2001 \endverbatim + \heading Patch usage + + \table + Property | Description | Required | Default value + G | turbulence generation field name | no | G + Cmu | model coefficient | no | 0.09 + kappa | Von Karman constant | no | 0.41 + E | model coefficient | no | 9.8 + beta1 | model coefficient | no | 0.075 + \endtable + + Example of the boundary condition specification: + \verbatim + myPatch + { + type omegaWallFunction; + } + \endverbatim + SourceFiles omegaWallFunctionFvPatchScalarField.C diff --git a/src/turbulenceModels/incompressible/RAS/kEpsilon/kEpsilon.H b/src/turbulenceModels/incompressible/RAS/kEpsilon/kEpsilon.H index 89c94fe42faff1c5a885688d05a33d41c2ad325d..1ba0f94fd9c083e3d64e7ee19ddc0350f3fabf9b 100644 --- a/src/turbulenceModels/incompressible/RAS/kEpsilon/kEpsilon.H +++ b/src/turbulenceModels/incompressible/RAS/kEpsilon/kEpsilon.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::RASModels::kEpsilon +Group + grpIcoRASTurbulence + Description Standard k-epsilon turbulence model for incompressible flows. diff --git a/src/turbulenceModels/incompressible/RAS/kOmega/kOmega.H b/src/turbulenceModels/incompressible/RAS/kOmega/kOmega.H index 1e63fd2eca384a027fbbdf879a7d1d8fbc2aea6d..d0c9e3ad2f6ff6070548ef94f4753adbd0c81cd5 100644 --- a/src/turbulenceModels/incompressible/RAS/kOmega/kOmega.H +++ b/src/turbulenceModels/incompressible/RAS/kOmega/kOmega.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::RASModels::kOmega +Group + grpIcoRASTurbulence + Description Standard high Reynolds-number k-omega turbulence model for incompressible flows. diff --git a/src/turbulenceModels/incompressible/RAS/kOmegaSST/kOmegaSST.H b/src/turbulenceModels/incompressible/RAS/kOmegaSST/kOmegaSST.H index 60f2775b1b0d618665c41d2b880e689ef0f54183..7b2580094e1cb76e511066f3cb7dbd8e36aa6e25 100644 --- a/src/turbulenceModels/incompressible/RAS/kOmegaSST/kOmegaSST.H +++ b/src/turbulenceModels/incompressible/RAS/kOmegaSST/kOmegaSST.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::RASModels::kOmegaSST +Group + grpIcoRASTurbulence + Description Implementation of the k-omega-SST turbulence model for incompressible flows. diff --git a/src/turbulenceModels/incompressible/RAS/kkLOmega/kkLOmega.H b/src/turbulenceModels/incompressible/RAS/kkLOmega/kkLOmega.H index dbd5ce0832a09f23c5ab3411933f9eb383c3f721..6badc208c3dd98b33fd630f059281ec902659b04 100644 --- a/src/turbulenceModels/incompressible/RAS/kkLOmega/kkLOmega.H +++ b/src/turbulenceModels/incompressible/RAS/kkLOmega/kkLOmega.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::RASModels::kkLOmega +Group + grpIcoRASTurbulence + Description Low Reynolds-number k-kl-omega turbulence model for incompressible flows. diff --git a/src/turbulenceModels/incompressible/RAS/laminar/laminar.H b/src/turbulenceModels/incompressible/RAS/laminar/laminar.H index ccebe774ed171d0b24216327cc2e735bb676dea5..29426dadaf362dc1b2b66509c908f86d8f6fa292 100644 --- a/src/turbulenceModels/incompressible/RAS/laminar/laminar.H +++ b/src/turbulenceModels/incompressible/RAS/laminar/laminar.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::RASModels::laminar +Group + grpIcoRASTurbulence + Description Dummy turbulence model for laminar incompressible flow. diff --git a/src/turbulenceModels/incompressible/RAS/qZeta/qZeta.H b/src/turbulenceModels/incompressible/RAS/qZeta/qZeta.H index 9347998a2e94f23b7fa50d4ac21924789d9accd9..d45f686af7bf9af12286147843d5357af8eff77f 100644 --- a/src/turbulenceModels/incompressible/RAS/qZeta/qZeta.H +++ b/src/turbulenceModels/incompressible/RAS/qZeta/qZeta.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::RASModels::qZeta +Group + grpIcoRASTurbulence + Description Gibson and Dafa'Alla's q-zeta two-equation low-Re turbulence model for incompressible flows diff --git a/src/turbulenceModels/incompressible/RAS/realizableKE/realizableKE.H b/src/turbulenceModels/incompressible/RAS/realizableKE/realizableKE.H index ed2bc4841e1e79cfa7eb05dfc3d3be5ef7142d2f..3f32089a6c9dd3abc554772931918bc1b720fcd1 100644 --- a/src/turbulenceModels/incompressible/RAS/realizableKE/realizableKE.H +++ b/src/turbulenceModels/incompressible/RAS/realizableKE/realizableKE.H @@ -24,6 +24,9 @@ License Class Foam::incompressible::RASModels::realizableKE +Group + grpIcoRASTurbulence + Description Realizable k-epsilon turbulence model for incompressible flows. diff --git a/src/turbulenceModels/incompressible/turbulenceModel/turbulenceModelDoc.H b/src/turbulenceModels/incompressible/turbulenceModel/turbulenceModelDoc.H new file mode 100644 index 0000000000000000000000000000000000000000..f9751dc542e29c5416e6e5f8f5091e83ca4c37f7 --- /dev/null +++ b/src/turbulenceModels/incompressible/turbulenceModel/turbulenceModelDoc.H @@ -0,0 +1,31 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\/ 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 3 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, see <http://www.gnu.org/licenses/>. + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +\defgroup grpIcoTurbulence Incompressible turbulence +@{ + This group contains incompressible turbulence models. +@} + +\*---------------------------------------------------------------------------*/ diff --git a/tutorials/incompressible/pimpleDyMFoam/propeller/system/fvSolution b/tutorials/incompressible/pimpleDyMFoam/propeller/system/fvSolution index a6da9b769ee93b4b3ef0e099d7cc47d4f13cf3d8..d9be29118014c17abc18029fbcf46f680f125284 100644 --- a/tutorials/incompressible/pimpleDyMFoam/propeller/system/fvSolution +++ b/tutorials/incompressible/pimpleDyMFoam/propeller/system/fvSolution @@ -43,7 +43,7 @@ solvers relTol 0; } - "(U|k|epsion)" + "(U|k|epsilon)" { solver smoothSolver; smoother GaussSeidel; diff --git a/tutorials/lagrangian/sprayFoam/aachenBomb/constant/sprayCloudProperties b/tutorials/lagrangian/sprayFoam/aachenBomb/constant/sprayCloudProperties index f46abc6258484cb9ede9fa82613b434f0291f03e..153a5fc0b2bd83c346589193ad9b8d783199c74a 100644 --- a/tutorials/lagrangian/sprayFoam/aachenBomb/constant/sprayCloudProperties +++ b/tutorials/lagrangian/sprayFoam/aachenBomb/constant/sprayCloudProperties @@ -54,8 +54,10 @@ solution constantProperties { - rho0 1000; T0 320; + + // place holders for rho0 and Cp0 - reset from liquid props using T0 + rho0 1000; Cp0 4187; youngsModulus 1e9;