diff --git a/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C b/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C index 8a58b394acc88edb38a9c792595bb1ed32f05f7a..66bc3bcb1114b9d9f9ae0ab05e545c8ca576614d 100644 --- a/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C +++ b/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C @@ -83,6 +83,7 @@ label addPatch pp.inGroups().append(groupName); } + // Add patch, create calculated everywhere fvMeshTools::addPatch ( @@ -636,18 +637,17 @@ int main(int argc, char *argv[]) // Note: This is added for the particular case where we want // master and slave in different groupNames // (ie 3D thermal baffles) - bool groupBase = false; - if (patchSource.found("groupBase")) - { - groupBase = readBool(patchSource.lookup("groupBase")); - if (groupBase) - { - groupNameMaster = groupName + "Group_master"; - groupNameSlave = groupName + "Group_slave"; - patchDictMaster.set("coupleGroup", groupNameMaster); - patchDictSlave.set("coupleGroup", groupNameSlave); - } + Switch sameGroup + ( + patchSource.lookupOrDefault("sameGroup", true) + ); + if (!sameGroup) + { + groupNameMaster = groupName + "Group_master"; + groupNameSlave = groupName + "Group_slave"; + patchDictMaster.set("coupleGroup", groupNameMaster); + patchDictSlave.set("coupleGroup", groupNameSlave); } addPatch(mesh, masterName, groupNameMaster, patchDictMaster); @@ -818,11 +818,11 @@ int main(int argc, char *argv[]) else { const dictionary& patchSource = dict.subDict("patchPairs"); - bool groupBase = false; - if (patchSource.found("groupBase")) - { - groupBase = readBool(patchSource.lookup("groupBase")); - } + + Switch sameGroup + ( + patchSource.lookupOrDefault("sameGroup", true) + ); const word& groupName = selectors[selectorI].name(); @@ -833,7 +833,7 @@ int main(int argc, char *argv[]) "patchFields" ); - if (!groupBase) + if (sameGroup) { // Add coupleGroup to all entries forAllIter(dictionary, patchFieldsDict, iter) diff --git a/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C b/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C index 9771757c9edea8022c98326a7daeb9c0de171730..6d7b9fe6887707ebed82918389cb5ce3816eca45 100644 --- a/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C +++ b/applications/utilities/mesh/manipulation/splitMeshRegions/splitMeshRegions.C @@ -1078,7 +1078,6 @@ labelList addRegionPatches mesh.boundaryMesh() ); - //interfacePatches[interI] = addPatch(mesh, patch1); interfacePatches[interI] = fvMeshTools::addPatch ( mesh, @@ -1100,7 +1099,6 @@ labelList addRegionPatches point::zero, // offset mesh.boundaryMesh() ); - //addPatch(mesh, patch2); fvMeshTools::addPatch ( mesh, diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/derived/wall/wallPolyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/derived/wall/wallPolyPatch.C index f6c3d5106155f37fe7fa4eae84fabbf6c8ea5b42..9263609ee5cfa6a53a7d2093189fe82268f8dc4f 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyPatches/derived/wall/wallPolyPatch.C +++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/derived/wall/wallPolyPatch.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) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -49,7 +49,13 @@ Foam::wallPolyPatch::wallPolyPatch ) : polyPatch(name, size, start, index, bm, patchType) -{} +{ + // wall is not constraint type so add wall group explicitly + if (findIndex(inGroups(), typeName) == -1) + { + inGroups().append(typeName); + } +} Foam::wallPolyPatch::wallPolyPatch @@ -62,7 +68,13 @@ Foam::wallPolyPatch::wallPolyPatch ) : polyPatch(name, dict, index, bm, patchType) -{} +{ + // wall is not constraint type so add wall group explicitly + if (findIndex(inGroups(), typeName) == -1) + { + inGroups().append(typeName); + } +} Foam::wallPolyPatch::wallPolyPatch diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files index 0bcfcf48a575f19a1d2aa01748f8e5ba00385db1..d7ea0f00996f6b171414068c5ff2c8463bbe7dd3 100644 --- a/src/finiteVolume/Make/files +++ b/src/finiteVolume/Make/files @@ -251,6 +251,8 @@ surfaceInterpolation = interpolation/surfaceInterpolation $(surfaceInterpolation)/surfaceInterpolation/surfaceInterpolation.C $(surfaceInterpolation)/surfaceInterpolationScheme/surfaceInterpolationSchemes.C +$(surfaceInterpolation)/blendedSchemeBase/blendedSchemeBaseName.C + schemes = $(surfaceInterpolation)/schemes $(schemes)/linear/linear.C $(schemes)/pointLinear/pointLinear.C diff --git a/src/finiteVolume/fields/fvPatchFields/derived/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.C index c59d8d89ee43617be7a238f83b7a176e39cba1a8..e05c34aa208c3e90f42a13a70961851554010c46 100644 --- a/src/finiteVolume/fields/fvPatchFields/derived/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.C +++ b/src/finiteVolume/fields/fvPatchFields/derived/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.C @@ -199,10 +199,7 @@ void Foam::flowRateInletVelocityFvPatchVectorField::updateCoeffs() else { // mass flow-rate - if - ( - patch().boundaryMesh().mesh().foundObject<volScalarField>(rhoName_) - ) + if (db().foundObject<volScalarField>(rhoName_)) { const fvPatchField<scalar>& rhop = patch().lookupPatchField<volScalarField, scalar>(rhoName_); diff --git a/src/finiteVolume/finiteVolume/convectionSchemes/gaussConvectionScheme/gaussConvectionScheme.C b/src/finiteVolume/finiteVolume/convectionSchemes/gaussConvectionScheme/gaussConvectionScheme.C index c814f220601e2618adc0cc1976e8bed0e15e6529..1c68b9cf12eb497f20b35a12bd84e913a6838f5d 100644 --- a/src/finiteVolume/finiteVolume/convectionSchemes/gaussConvectionScheme/gaussConvectionScheme.C +++ b/src/finiteVolume/finiteVolume/convectionSchemes/gaussConvectionScheme/gaussConvectionScheme.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-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -39,6 +39,14 @@ namespace fv // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +template<class Type> +const surfaceInterpolationScheme<Type>& +gaussConvectionScheme<Type>::interpScheme() const +{ + return tinterpScheme_(); +} + + template<class Type> tmp<GeometricField<Type, fvsPatchField, surfaceMesh> > gaussConvectionScheme<Type>::interpolate diff --git a/src/finiteVolume/finiteVolume/convectionSchemes/gaussConvectionScheme/gaussConvectionScheme.H b/src/finiteVolume/finiteVolume/convectionSchemes/gaussConvectionScheme/gaussConvectionScheme.H index 61d6c22d37aadd055fa8546a2ddbab561760b6ad..a3ce0d1ec0d02ac8e23db84cd220c707023ae09d 100644 --- a/src/finiteVolume/finiteVolume/convectionSchemes/gaussConvectionScheme/gaussConvectionScheme.H +++ b/src/finiteVolume/finiteVolume/convectionSchemes/gaussConvectionScheme/gaussConvectionScheme.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) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -134,6 +134,8 @@ public: // Member Functions + const surfaceInterpolationScheme<Type>& interpScheme() const; + tmp<GeometricField<Type, fvsPatchField, surfaceMesh> > interpolate ( const surfaceScalarField&, diff --git a/src/finiteVolume/finiteVolume/fvc/fvcCellReduce.C b/src/finiteVolume/finiteVolume/fvc/fvcCellReduce.C new file mode 100644 index 0000000000000000000000000000000000000000..63c718375bf950119b8592ddd0966eb3cc796d64 --- /dev/null +++ b/src/finiteVolume/finiteVolume/fvc/fvcCellReduce.C @@ -0,0 +1,118 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 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 "fvcCellReduce.H" +#include "fvMesh.H" +#include "volFields.H" +#include "surfaceFields.H" +#include "zeroGradientFvPatchFields.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace fvc +{ + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +template<class Type, class CombineOp> +tmp<GeometricField<Type, fvPatchField, volMesh> > cellReduce +( + const GeometricField<Type, fvsPatchField, surfaceMesh>& ssf, + const CombineOp& cop +) +{ + typedef GeometricField<Type, fvPatchField, volMesh> volFieldType; + + const fvMesh& mesh = ssf.mesh(); + + tmp<volFieldType> tresult + ( + new volFieldType + ( + IOobject + ( + "cellReduce(" + ssf.name() + ')', + ssf.instance(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensioned<Type>("0", ssf.dimensions(), pTraits<Type>::zero), + zeroGradientFvPatchField<Type>::typeName + ) + ); + + volFieldType& result = tresult(); + + const labelUList& own = mesh.owner(); + const labelUList& nbr = mesh.neighbour(); + + forAll(own, i) + { + label cellI = own[i]; + cop(result[cellI], ssf[i]); + } + forAll(nbr, i) + { + label cellI = nbr[i]; + cop(result[cellI], ssf[i]); + } + + result.correctBoundaryConditions(); + + return tresult; +} + + +template<class Type, class CombineOp> +tmp<GeometricField<Type, fvPatchField, volMesh> > cellReduce +( + const tmp<GeometricField<Type, fvsPatchField, surfaceMesh>&> tssf, + const CombineOp& cop +) +{ + tmp<GeometricField<Type, fvPatchField, volMesh> > + tvf(cellReduce(cop, tssf)); + + tssf.clear(); + return tvf; +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace fvc + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/finiteVolume/finiteVolume/fvc/fvcCellReduce.H b/src/finiteVolume/finiteVolume/fvc/fvcCellReduce.H new file mode 100644 index 0000000000000000000000000000000000000000..19bd24135af0a4dd75a11ca446192301e0e6443a --- /dev/null +++ b/src/finiteVolume/finiteVolume/fvc/fvcCellReduce.H @@ -0,0 +1,82 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 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/>. + +InNamespace + Foam::fvc + +Description + Construct a volume field from a surface field using a combine operator. + +SourceFiles + fvcCellReduce.C + +\*---------------------------------------------------------------------------*/ + +#ifndef fvcCellReduce_H +#define fvcCellReduce_H + +#include "volFieldsFwd.H" +#include "surfaceFieldsFwd.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Namespace fvc functions Declaration +\*---------------------------------------------------------------------------*/ + +namespace fvc +{ + template<class Type, class CombineOp> + tmp<GeometricField<Type, fvPatchField, volMesh> > cellReduce + ( + const GeometricField<Type, fvsPatchField, surfaceMesh>&, + const CombineOp& cop + ); + + template<class Type, class CombineOp> + tmp<GeometricField<Type, fvPatchField, volMesh> > cellReduce + ( + const tmp<GeometricField<Type, fvsPatchField, surfaceMesh> >&, + const CombineOp& cop + ); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository +# include "fvcCellReduce.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/blendedSchemeBase/blendedSchemeBase.H b/src/finiteVolume/interpolation/surfaceInterpolation/blendedSchemeBase/blendedSchemeBase.H new file mode 100644 index 0000000000000000000000000000000000000000..2c485e01477edcf0740317437b98d62d0fc4d75f --- /dev/null +++ b/src/finiteVolume/interpolation/surfaceInterpolation/blendedSchemeBase/blendedSchemeBase.H @@ -0,0 +1,87 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 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::blendedSchemeBase + +Description + Base class for blended schemes to provide access to the blending factor + surface field + +\*---------------------------------------------------------------------------*/ + +#ifndef blendedSchemeBase_H +#define blendedSchemeBase_H + +#include "className.H" +#include "tmp.H" +#include "surfaceFieldsFwd.H" +#include "volFieldsFwd.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +TemplateName(blendedSchemeBase); + +/*---------------------------------------------------------------------------*\ + Class blendedSchemeBase Declaration +\*---------------------------------------------------------------------------*/ + +template<class Type> +class blendedSchemeBase +: + public blendedSchemeBaseName +{ + +public: + + //- Constructor + blendedSchemeBase() + {} + + //- Destructor + virtual ~blendedSchemeBase() + {} + + + // Memeber Functions + + //- Return the face-based blending factor + virtual tmp<surfaceScalarField> blendingFactor + ( + const GeometricField<Type, fvPatchField, volMesh>& vf + ) const = 0; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/blendedSchemeBase/blendedSchemeBaseName.C b/src/finiteVolume/interpolation/surfaceInterpolation/blendedSchemeBase/blendedSchemeBaseName.C new file mode 100644 index 0000000000000000000000000000000000000000..0a97d7f617b49805ea7502176dc0acca2295be4c --- /dev/null +++ b/src/finiteVolume/interpolation/surfaceInterpolation/blendedSchemeBase/blendedSchemeBaseName.C @@ -0,0 +1,36 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 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 "blendedSchemeBase.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(blendedSchemeBaseName, 0); +} + + +// ************************************************************************* // diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/blended/blended.H b/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/blended/blended.H index 6d207fcdcde08bfedfa59287d128464109a5b2b0..f58b8c2393b4119a847702eb342d28e72e537b57 100644 --- a/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/blended/blended.H +++ b/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/blended/blended.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-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -36,6 +36,7 @@ SourceFiles #define blended_H #include "limitedSurfaceInterpolationScheme.H" +#include "blendedSchemeBase.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -49,7 +50,8 @@ namespace Foam template<class Type> class blended : - public limitedSurfaceInterpolationScheme<Type> + public limitedSurfaceInterpolationScheme<Type>, + public blendedSchemeBase<Type> { // Private data @@ -111,8 +113,40 @@ public: {} + //- Destructor + virtual ~blended() + {} + + // Member Functions + //- Return the face-based blending factor + virtual tmp<surfaceScalarField> blendingFactor + ( + const GeometricField<Type, fvPatchField, volMesh>& vf + ) const + { + return tmp<surfaceScalarField> + ( + new surfaceScalarField + ( + IOobject + ( + vf.name() + "BlendingFactor", + this->mesh().time().timeName(), + this->mesh() + ), + this->mesh(), + dimensionedScalar + ( + "blendingFactor", + dimless, + blendingFactor_ + ) + ) + ); + } + //- Return the interpolation limiter virtual tmp<surfaceScalarField> limiter ( diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/CoBlended/CoBlended.H b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/CoBlended/CoBlended.H index e8ed67a9d836ebc1f7e01ed3f8de9e8608b2947b..3f15520061c879c341d7093a997462daa162c12a 100644 --- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/CoBlended/CoBlended.H +++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/CoBlended/CoBlended.H @@ -63,6 +63,7 @@ SourceFiles #define CoBlended_H #include "surfaceInterpolationScheme.H" +#include "blendedSchemeBase.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -76,7 +77,8 @@ namespace Foam template<class Type> class CoBlended : - public surfaceInterpolationScheme<Type> + public surfaceInterpolationScheme<Type>, + public blendedSchemeBase<Type> { // Private data @@ -135,10 +137,7 @@ public: ), faceFlux_ ( - mesh.lookupObject<surfaceScalarField> - ( - word(is) - ) + mesh.lookupObject<surfaceScalarField>(word(is)) ) { if (Co1_ < 0 || Co2_ < 0 || Co1_ >= Co2_) @@ -170,7 +169,7 @@ public: ( surfaceInterpolationScheme<Type>::New(mesh, faceFlux, is) ), - faceFlux_(faceFlux) + faceFlux_(faceFlux) { if (Co1_ < 0 || Co2_ < 0 || Co1_ >= Co2_) { @@ -182,17 +181,39 @@ public: } + //- Destructor + virtual ~CoBlended() + {} + + // Member Functions - //- Return the face-based Courant number blending factor - tmp<surfaceScalarField> blendingFactor() const + //- Return the face-based blending factor + virtual tmp<surfaceScalarField> blendingFactor + ( + const GeometricField<Type, fvPatchField, volMesh>& vf + ) const { - const fvMesh& mesh = faceFlux_.mesh(); + const fvMesh& mesh = this->mesh(); - return + tmp<surfaceScalarField> tbf ( - scalar(1) - - max + new surfaceScalarField + ( + IOobject + ( + vf.name() + "BlendingFactor", + mesh.time().timeName(), + mesh + ), + mesh, + dimensionedScalar("blendingFactor", dimless, 0.0) + ) + ); + + tbf() = + scalar(1) + - max ( min ( @@ -204,8 +225,9 @@ public: scalar(1) ), scalar(0) - ) - ); + ); + + return tbf; } @@ -216,9 +238,10 @@ public: const GeometricField<Type, fvPatchField, volMesh>& vf ) const { - surfaceScalarField bf(blendingFactor()); + surfaceScalarField bf(blendingFactor(vf)); - Info<< "weights " << max(bf) << " " << min(bf) << endl; + Info<< "weights " << max(bf).value() << " " << min(bf).value() + << endl; return bf*tScheme1_().weights(vf) @@ -234,7 +257,7 @@ public: const GeometricField<Type, fvPatchField, volMesh>& vf ) const { - surfaceScalarField bf(blendingFactor()); + surfaceScalarField bf(blendingFactor(vf)); return bf*tScheme1_().interpolate(vf) @@ -257,7 +280,7 @@ public: const GeometricField<Type, fvPatchField, volMesh>& vf ) const { - surfaceScalarField bf(blendingFactor()); + surfaceScalarField bf(blendingFactor(vf)); if (tScheme1_().corrected()) { diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/localBlended/localBlended.H b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/localBlended/localBlended.H index 5f49be98fd2348f75b2586ccf225c602fdaa13b3..0e85f0ea7620ff97734e3ec8012a91e420194664 100644 --- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/localBlended/localBlended.H +++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/localBlended/localBlended.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-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -36,6 +36,7 @@ SourceFiles #define localBlended_H #include "surfaceInterpolationScheme.H" +#include "blendedSchemeBase.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -49,7 +50,8 @@ namespace Foam template<class Type> class localBlended : - public surfaceInterpolationScheme<Type> + public surfaceInterpolationScheme<Type>, + public blendedSchemeBase<Type> { // Private Member Functions @@ -115,8 +117,27 @@ public: {} + //- Destructor + virtual ~localBlended() + {} + + // Member Functions + //- Return the face-based blending factor + virtual tmp<surfaceScalarField> blendingFactor + ( + const GeometricField<Type, fvPatchField, volMesh>& vf + ) const + { + return + this->mesh().objectRegistry::template + lookupObject<const surfaceScalarField> + ( + word(vf.name() + "BlendingFactor") + ); + } + //- Return the interpolation weighting factors tmp<surfaceScalarField> weights ( @@ -125,10 +146,10 @@ public: { const surfaceScalarField& blendingFactor = this->mesh().objectRegistry::template - lookupObject<const surfaceScalarField> - ( - word(vf.name() + "BlendingFactor") - ); + lookupObject<const surfaceScalarField> + ( + word(vf.name() + "BlendingFactor") + ); return blendingFactor*tScheme1_().weights(vf) diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C index 35db99fe0d7b77333efeda2f7ad159763dc3270e..d4a3ca5a0a7c1f7b3dfdd2fe55eb3879d26a68b9 100644 --- a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C +++ b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.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) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -139,6 +139,21 @@ Foam::displacementLaplacianFvMotionSolver:: // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +Foam::motionDiffusivity& +Foam::displacementLaplacianFvMotionSolver::diffusivity() +{ + if (!diffusivityPtr_.valid()) + { + diffusivityPtr_ = motionDiffusivity::New + ( + fvMesh_, + coeffDict().lookup("diffusivity") + ); + } + return diffusivityPtr_(); +} + + Foam::tmp<Foam::pointField> Foam::displacementLaplacianFvMotionSolver::curPoints() const { @@ -210,14 +225,14 @@ void Foam::displacementLaplacianFvMotionSolver::solve() // the motionSolver accordingly movePoints(fvMesh_.points()); - diffusivityPtr_->correct(); + diffusivity().correct(); pointDisplacement_.boundaryField().updateCoeffs(); Foam::solve ( fvm::laplacian ( - diffusivityPtr_->operator()(), + diffusivity().operator()(), cellDisplacement_, "laplacian(diffusivity,cellDisplacement)" ) @@ -234,12 +249,7 @@ void Foam::displacementLaplacianFvMotionSolver::updateMesh // Update diffusivity. Note two stage to make sure old one is de-registered // before creating/registering new one. - diffusivityPtr_.reset(NULL); - diffusivityPtr_ = motionDiffusivity::New - ( - fvMesh_, - coeffDict().lookup("diffusivity") - ); + diffusivityPtr_.clear(); } diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.H index c0b4e9970a25ae31d9b3f6970f8b779263b4383e..47ad2c672c9a8edd77a53cd1594f6680cb10d46a 100644 --- a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.H +++ b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.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) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,7 +53,6 @@ class motionDiffusivity; class displacementLaplacianFvMotionSolver : -// public displacementFvMotionSolver public displacementMotionSolver, public fvMotionSolverCore { @@ -120,6 +119,9 @@ public: return cellDisplacement_; } + //- Return reference to the diffusivity field + motionDiffusivity& diffusivity(); + //- Return point location obtained from the current motion field virtual tmp<pointField> curPoints() const; diff --git a/src/fvOptions/fvOptions/fvIOoptionList.C b/src/fvOptions/fvOptions/fvIOoptionList.C index 287e4171be455dd9856a37eeaf0530260324ffe4..0a7ab4e6fc9f50b891253d378699cbc804b0101b 100644 --- a/src/fvOptions/fvOptions/fvIOoptionList.C +++ b/src/fvOptions/fvOptions/fvIOoptionList.C @@ -45,7 +45,7 @@ Foam::IOobject Foam::fv::IOoptionList::createIOobject if (io.headerOk()) { - Info<< "Creating fintite volume options from " << io.name() << nl + Info<< "Creating finite volume options from " << io.name() << nl << endl; io.readOpt() = IOobject::MUST_READ_IF_MODIFIED; diff --git a/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.C b/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.C index 8d1729361e1d370a0357c0d5b8d9a20e746f1b89..51272f3560ed8d25a0899d74885e6818e7ba7c17 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.C @@ -26,7 +26,6 @@ License #include "SurfaceFilmModel.H" #include "surfaceFilmModel.H" #include "mathematicalConstants.H" -#include "mappedPatchBase.H" using namespace Foam::constant; diff --git a/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.H b/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.H index 0f0a4d4196725d34152fd598731998d20fd1f721..9098782204e0f5041d87f3724bd8bd2f0058c296 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/SurfaceFilmModel/SurfaceFilmModel/SurfaceFilmModel.H @@ -55,8 +55,6 @@ namespace regionModels } } -class mappedPatchBase; - /*---------------------------------------------------------------------------*\ Class SurfaceFilmModel Declaration \*---------------------------------------------------------------------------*/ diff --git a/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.C b/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.C index eb223c88414a6c294290464d790e15b4629d74a1..b2a142accfada9399ab60ab44cbdf61371215fe2 100644 --- a/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.C +++ b/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.C @@ -66,7 +66,6 @@ Foam::labelList Foam::medialAxisMeshMover::getFixedValueBCs if (isA<valuePointPatchField<vector> >(patchFld)) { adaptPatchIDs.append(patchI); - //Info<< "Detected adapt patch " << patchFld.patch().name() << endl; } } return adaptPatchIDs; @@ -1259,6 +1258,7 @@ handleFeatureAngleLayerTerminations void Foam::medialAxisMeshMover::findIsolatedRegions ( const scalar minCosLayerTermination, + const bool detectExtrusionIsland, const PackedBoolList& isMasterPoint, const PackedBoolList& isMasterEdge, const labelList& meshEdges, @@ -1268,6 +1268,8 @@ void Foam::medialAxisMeshMover::findIsolatedRegions ) const { const indirectPrimitivePatch& pp = adaptPatchPtr_(); + const labelListList& pointFaces = pp.pointFaces(); + Info<< typeName << " : Removing isolated regions ..." << endl; @@ -1292,41 +1294,111 @@ void Foam::medialAxisMeshMover::findIsolatedRegions syncPatchDisplacement(minThickness, patchDisp, extrudeStatus); - // Do not extrude from point where all neighbouring - // faces are not grown - // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - boolList extrudedFaces(pp.size(), true); - forAll(pp.localFaces(), faceI) + + // Detect either: + // - point where all surrounding points are not extruded + // (detectExtrusionIsland) + // or + // - point where all the faces surrounding it are not fully + // extruded + + boolList keptPoints(pp.nPoints(), false); + + if (detectExtrusionIsland) { - const face& f = pp.localFaces()[faceI]; - forAll(f, fp) + // Do not extrude from point where all neighbouring + // points are not grown + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + labelList islandPoint(pp.size(), -1); + forAll(pp, faceI) { - if (extrudeStatus[f[fp]] == autoLayerDriver::NOEXTRUDE) + const face& f = pp.localFaces()[faceI]; + + forAll(f, fp) { - extrudedFaces[faceI] = false; - break; + label patchPointI = f[fp]; + + if (extrudeStatus[f[fp]] != autoLayerDriver::NOEXTRUDE) + { + if (islandPoint[faceI] == -1) + { + // First point to extrude + islandPoint[faceI] = patchPointI; + } + else + { + // Second or more point to extrude + islandPoint[faceI] = -2; + } + } } } - } - const labelListList& pointFaces = pp.pointFaces(); + // islandPoint: + // -1 : no point extruded + // -2 : >= 2 points extruded + // >=0: label of point extruded - boolList keptPoints(pp.nPoints(), false); - forAll(keptPoints, patchPointI) + // Check all surrounding faces that I am the islandPoint + boolList keptPoints(pp.nPoints(), false); + forAll(pointFaces, patchPointI) + { + if (extrudeStatus[patchPointI] != autoLayerDriver::NOEXTRUDE) + { + const labelList& pFaces = pointFaces[patchPointI]; + + forAll(pFaces, i) + { + label faceI = pFaces[i]; + if (islandPoint[faceI] != patchPointI) + { + keptPoints[patchPointI] = true; + break; + } + } + } + } + } + else { - const labelList& pFaces = pointFaces[patchPointI]; + // Do not extrude from point where all neighbouring + // faces are not grown + // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - forAll(pFaces, i) + boolList extrudedFaces(pp.size(), true); + forAll(pp.localFaces(), faceI) { - label faceI = pFaces[i]; - if (extrudedFaces[faceI]) + const face& f = pp.localFaces()[faceI]; + forAll(f, fp) { - keptPoints[patchPointI] = true; - break; + if (extrudeStatus[f[fp]] == autoLayerDriver::NOEXTRUDE) + { + extrudedFaces[faceI] = false; + break; + } + } + } + + const labelListList& pointFaces = pp.pointFaces(); + + forAll(keptPoints, patchPointI) + { + const labelList& pFaces = pointFaces[patchPointI]; + + forAll(pFaces, i) + { + label faceI = pFaces[i]; + if (extrudedFaces[faceI]) + { + keptPoints[patchPointI] = true; + break; + } } } } + syncTools::syncPointList ( mesh(), @@ -1344,8 +1416,8 @@ void Foam::medialAxisMeshMover::findIsolatedRegions { if (unmarkExtrusion(patchPointI, patchDisp, extrudeStatus)) { - nPointCounter++; - nChanged++; + nPointCounter++; + nChanged++; } } } @@ -1701,6 +1773,13 @@ void Foam::medialAxisMeshMover::calculateDisplacement mesh().globalData().nTotalPoints() ); + //- Use strick extrusionIsland detection + const Switch detectExtrusionIsland = coeffDict.lookupOrDefault<label> + ( + "detectExtrusionIsland", + true + ); + // Precalulate master points/edge (only relevant for shared points/edges) const PackedBoolList isMasterPoint(syncTools::getMasterPoints(mesh())); @@ -1851,6 +1930,8 @@ void Foam::medialAxisMeshMover::calculateDisplacement findIsolatedRegions ( minCosLayerTermination, + detectExtrusionIsland, + isMasterPoint, isMasterEdge, meshEdges, diff --git a/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.H b/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.H index a81b073dd2995a8233b94370bc3b6b976c9f5e9d..b402ecba259731069ccc03c8f02b8be9a87f2fb4 100644 --- a/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.H +++ b/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.H @@ -219,6 +219,7 @@ class medialAxisMeshMover void findIsolatedRegions ( const scalar minCosLayerTermination, + const bool detectExtrusionIsland, const PackedBoolList& isMasterPoint, const PackedBoolList& isMasterEdge, const labelList& meshEdges, diff --git a/src/mesh/autoMesh/autoHexMesh/refinementFeatures/refinementFeatures.C b/src/mesh/autoMesh/autoHexMesh/refinementFeatures/refinementFeatures.C index f3d969e69113b09948af15f631a9c8f1672ad404..a5109bc3c88a9c322211b1e80896d293a800d9b3 100644 --- a/src/mesh/autoMesh/autoHexMesh/refinementFeatures/refinementFeatures.C +++ b/src/mesh/autoMesh/autoHexMesh/refinementFeatures/refinementFeatures.C @@ -303,7 +303,7 @@ Foam::refinementFeatures::refinementFeatures Info<< "Detected " << featurePoints.size() << " featurePoints out of " << pointEdges.size() - << " on feature " << eMesh.name() << endl; + << " points on feature " << eMesh.name() << endl; buildTrees(i, featurePoints); } @@ -372,7 +372,7 @@ Foam::refinementFeatures::refinementFeatures Info<< "Detected " << featurePoints.size() << " featurePoints out of " << points.size() - << " on feature " << eMesh.name() + << " points on feature " << eMesh.name() << " when using feature cos " << minCos << endl; buildTrees(i, featurePoints); diff --git a/src/meshTools/mappedPatches/mappedPolyPatch/mappedPolyPatch.C b/src/meshTools/mappedPatches/mappedPolyPatch/mappedPolyPatch.C index 804b96affbc2bbab126ef28d3849e60e07d15f70..6732e5c7b18d8ca2462e9074dc6d4e22bcbfcbf3 100644 --- a/src/meshTools/mappedPatches/mappedPolyPatch/mappedPolyPatch.C +++ b/src/meshTools/mappedPatches/mappedPolyPatch/mappedPolyPatch.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) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -51,7 +51,13 @@ Foam::mappedPolyPatch::mappedPolyPatch : polyPatch(name, size, start, index, bm, patchType), mappedPatchBase(static_cast<const polyPatch&>(*this)) -{} +{ + // mapped is not constraint type so add mapped group explicitly + if (findIndex(inGroups(), typeName) == -1) + { + inGroups().append(typeName); + } +} Foam::mappedPolyPatch::mappedPolyPatch @@ -115,7 +121,13 @@ Foam::mappedPolyPatch::mappedPolyPatch : polyPatch(name, dict, index, bm, patchType), mappedPatchBase(*this, dict) -{} +{ + // mapped is not constraint type so add mapped group explicitly + if (findIndex(inGroups(), typeName) == -1) + { + inGroups().append(typeName); + } +} Foam::mappedPolyPatch::mappedPolyPatch diff --git a/src/meshTools/mappedPatches/mappedPolyPatch/mappedWallPolyPatch.C b/src/meshTools/mappedPatches/mappedPolyPatch/mappedWallPolyPatch.C index 61bc54a3d0fc630d0ea2382460b604f4eeb4decb..243d0a804ae10a776f5a4c0a69837ab0e7ae4f2d 100644 --- a/src/meshTools/mappedPatches/mappedPolyPatch/mappedWallPolyPatch.C +++ b/src/meshTools/mappedPatches/mappedPolyPatch/mappedWallPolyPatch.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) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,6 +25,7 @@ License #include "mappedWallPolyPatch.H" #include "addToRunTimeSelectionTable.H" +#include "mappedPolyPatch.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -56,7 +57,13 @@ Foam::mappedWallPolyPatch::mappedWallPolyPatch : wallPolyPatch(name, size, start, index, bm, patchType), mappedPatchBase(static_cast<const polyPatch&>(*this)) -{} +{ + // mapped is not constraint type so add mapped group explicitly + if (findIndex(inGroups(), mappedPolyPatch::typeName) == -1) + { + inGroups().append(mappedPolyPatch::typeName); + } +} Foam::mappedWallPolyPatch::mappedWallPolyPatch @@ -120,7 +127,13 @@ Foam::mappedWallPolyPatch::mappedWallPolyPatch : wallPolyPatch(name, dict, index, bm, patchType), mappedPatchBase(*this, dict) -{} +{ + // mapped is not constraint type so add mapped group explicitly + if (findIndex(inGroups(), mappedPolyPatch::typeName) == -1) + { + inGroups().append(mappedPolyPatch::typeName); + } +} Foam::mappedWallPolyPatch::mappedWallPolyPatch diff --git a/src/postProcessing/functionObjects/utilities/Make/files b/src/postProcessing/functionObjects/utilities/Make/files index f711fc0880616f7edc11475d876a79dac7d76ec1..6a905f28a1e0245d752a0275f83a15469dfdbaa4 100644 --- a/src/postProcessing/functionObjects/utilities/Make/files +++ b/src/postProcessing/functionObjects/utilities/Make/files @@ -12,6 +12,9 @@ Peclet/PecletFunctionObject.C Q/Q.C Q/QFunctionObject.C +blendingFactor/blendingFactor.C +blendingFactor/blendingFactorFunctionObject.C + DESModelRegions/DESModelRegions.C DESModelRegions/DESModelRegionsFunctionObject.C diff --git a/src/postProcessing/functionObjects/utilities/Peclet/Peclet.C b/src/postProcessing/functionObjects/utilities/Peclet/Peclet.C index 07c7e436b55a4f32b2347162076342c8b0cd25c8..0c77608b13ffb1877685e1884749adfa6b739c0b 100644 --- a/src/postProcessing/functionObjects/utilities/Peclet/Peclet.C +++ b/src/postProcessing/functionObjects/utilities/Peclet/Peclet.C @@ -197,12 +197,12 @@ void Foam::Peclet::execute() void Foam::Peclet::end() { - // Do nothing - only valid on write + // Do nothing } void Foam::Peclet::timeSet() { - // Do nothing - only valid on write + // Do nothing } diff --git a/src/postProcessing/functionObjects/utilities/blendingFactor/IOblendingFactor.H b/src/postProcessing/functionObjects/utilities/blendingFactor/IOblendingFactor.H new file mode 100644 index 0000000000000000000000000000000000000000..2d1ae3dc1e4885eeed8272ef93d3331f45a1a17c --- /dev/null +++ b/src/postProcessing/functionObjects/utilities/blendingFactor/IOblendingFactor.H @@ -0,0 +1,49 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 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::IOblendingFactor + +Description + Instance of the generic IOOutputFilter for blendingFactor. + +\*---------------------------------------------------------------------------*/ + +#ifndef IOblendingFactor_H +#define IOblendingFactor_H + +#include "blendingFactor.H" +#include "IOOutputFilter.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + typedef IOOutputFilter<blendingFactor> IOblendingFactor; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactor.C b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactor.C new file mode 100644 index 0000000000000000000000000000000000000000..351c48bfb4b6f4994753dcc7221b1764fed87199 --- /dev/null +++ b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactor.C @@ -0,0 +1,131 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 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 "blendingFactor.H" +#include "dictionary.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineTypeNameAndDebug(blendingFactor, 0); +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::blendingFactor::blendingFactor +( + const word& name, + const objectRegistry& obr, + const dictionary& dict, + const bool loadFromFiles +) +: + name_(name), + obr_(obr), + active_(true), + phiName_("unknown-phiName"), + fieldName_("unknown-fieldName") +{ + // Check if the available mesh is an fvMesh, otherwise deactivate + if (!isA<fvMesh>(obr_)) + { + active_ = false; + WarningIn + ( + "blendingFactor::blendingFactor" + "(" + "const word&, " + "const objectRegistry&, " + "const dictionary&, " + "const bool" + ")" + ) << "No fvMesh available, deactivating " << name_ << nl + << endl; + } + + read(dict); +} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::blendingFactor::~blendingFactor() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +void Foam::blendingFactor::read(const dictionary& dict) +{ + if (active_) + { + phiName_ = dict.lookupOrDefault<word>("phiName", "phi"); + dict.lookup("fieldName") >> fieldName_; + } +} + + +void Foam::blendingFactor::execute() +{ + if (active_) + { + calc<scalar>(); + calc<vector>(); + } +} + + +void Foam::blendingFactor::end() +{ + // Do nothing +} + +void Foam::blendingFactor::timeSet() +{ + // Do nothing +} + + +void Foam::blendingFactor::write() +{ + if (active_) + { + const word fieldName = "blendingFactor:" + fieldName_; + + const volScalarField& blendingFactor = + obr_.lookupObject<volScalarField>(fieldName); + + Info<< type() << " " << name_ << " output:" << nl + << " writing field " << blendingFactor.name() << nl + << endl; + + blendingFactor.write(); + } +} + + +// ************************************************************************* // diff --git a/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactor.H b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactor.H new file mode 100644 index 0000000000000000000000000000000000000000..8b86a25cea60707f2cd5dc7208c6af2344f064b3 --- /dev/null +++ b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactor.H @@ -0,0 +1,175 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 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::blendingFactor + +Group + grpUtilitiesFunctionObjects + +Description + This function object calculates and outputs the blendingFactor as used by + the bended convection schemes. The output is a volume field (cells) whose + value is calculated via the maximum blending factor for any cell face. + + +SourceFiles + blendingFactor.C + IOblendingFactor.H + +\*---------------------------------------------------------------------------*/ + +#ifndef blendingFactor_H +#define blendingFactor_H + +#include "volFieldsFwd.H" +#include "surfaceFieldsFwd.H" +#include "OFstream.H" +#include "Switch.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// Forward declaration of classes +class objectRegistry; +class dictionary; +class polyMesh; +class mapPolyMesh; + +/*---------------------------------------------------------------------------*\ + Class blendingFactor Declaration +\*---------------------------------------------------------------------------*/ + +class blendingFactor +{ + // Private data + + //- Name of this set of blendingFactor objects + word name_; + + //- Reference to the database + const objectRegistry& obr_; + + //- On/off switch + bool active_; + + //- Name of flux field, default is "phi" + word phiName_; + + //- Field name + word fieldName_; + + + // Private Member Functions + + //- Disallow default bitwise copy construct + blendingFactor(const blendingFactor&); + + //- Disallow default bitwise assignment + void operator=(const blendingFactor&); + + //- Return the blending factor field from the database + template<class Type> + volScalarField& factor + ( + const GeometricField<Type, fvPatchField, volMesh>& field + ); + + //- Calculate the blending factor + template<class Type> + void calc(); + + +public: + + //- Runtime type information + TypeName("blendingFactor"); + + + // Constructors + + //- Construct for given objectRegistry and dictionary. + // Allow the possibility to load fields from files + blendingFactor + ( + const word& name, + const objectRegistry&, + const dictionary&, + const bool loadFromFiles = false + ); + + + //- Destructor + virtual ~blendingFactor(); + + + // Member Functions + + //- Return name of the set of blendingFactor + virtual const word& name() const + { + return name_; + } + + //- Read the blendingFactor 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(); + + //- Called when time was set at the end of the Time::operator++ + virtual void timeSet(); + + //- Calculate the blendingFactor and write + virtual void write(); + + //- Update for changes of mesh + virtual void updateMesh(const mapPolyMesh&) + {} + + //- Update for changes of mesh + virtual void movePoints(const polyMesh&) + {} +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository + #include "blendingFactorTemplates.C" +#endif + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorFunctionObject.C b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorFunctionObject.C new file mode 100644 index 0000000000000000000000000000000000000000..6f32ea9c6f5d800583c1f4ef9ac9a387980e25bf --- /dev/null +++ b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorFunctionObject.C @@ -0,0 +1,42 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 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 "blendingFactorFunctionObject.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ + defineNamedTemplateTypeNameAndDebug(blendingFactorFunctionObject, 0); + + addToRunTimeSelectionTable + ( + functionObject, + blendingFactorFunctionObject, + dictionary + ); +} + +// ************************************************************************* // diff --git a/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorFunctionObject.H b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorFunctionObject.H new file mode 100644 index 0000000000000000000000000000000000000000..b2e2369ebe191138b2ee919473590a3e917b2096 --- /dev/null +++ b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorFunctionObject.H @@ -0,0 +1,54 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 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::blendingFactorFunctionObject + +Description + FunctionObject wrapper around blendingFactor to allow it to be created + via the functions entry within controlDict. + +SourceFiles + blendingFactorFunctionObject.C + +\*---------------------------------------------------------------------------*/ + +#ifndef blendingFactorFunctionObject_H +#define blendingFactorFunctionObject_H + +#include "blendingFactor.H" +#include "OutputFilterFunctionObject.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + typedef OutputFilterFunctionObject<blendingFactor> + blendingFactorFunctionObject; +} + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorTemplates.C b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorTemplates.C new file mode 100644 index 0000000000000000000000000000000000000000..3a284b8c731b0d83025cb989674f7c9c93662135 --- /dev/null +++ b/src/postProcessing/functionObjects/utilities/blendingFactor/blendingFactorTemplates.C @@ -0,0 +1,119 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2013 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 "gaussConvectionScheme.H" +#include "blendedSchemeBase.H" +#include "fvcCellReduce.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +template<class Type> +Foam::volScalarField& Foam::blendingFactor::factor +( + const GeometricField<Type, fvPatchField, volMesh>& field +) +{ + const word fieldName = "blendingFactor:" + field.name(); + + if (!obr_.foundObject<volScalarField>(fieldName)) + { + const fvMesh& mesh = refCast<const fvMesh>(obr_); + + volScalarField* factorPtr = + new volScalarField + ( + IOobject + ( + fieldName, + mesh.time().timeName(), + mesh, + IOobject::NO_READ, + IOobject::NO_WRITE + ), + mesh, + dimensionedScalar("0", dimless, 0.0), + zeroGradientFvPatchScalarField::typeName + ); + + obr_.store(factorPtr); + } + + return + const_cast<volScalarField&> + ( + obr_.lookupObject<volScalarField>(fieldName) + ); +} + + +template<class Type> +void Foam::blendingFactor::calc() +{ + typedef GeometricField<Type, fvPatchField, volMesh> fieldType; + + if (!obr_.foundObject<fieldType>(fieldName_)) + { + return; + } + + const fvMesh& mesh = refCast<const fvMesh>(obr_); + + const fieldType& field = mesh.lookupObject<fieldType>(fieldName_); + + const word divScheme("div(" + phiName_ + ',' + fieldName_ + ')'); + ITstream& its = mesh.divScheme(divScheme); + + const surfaceScalarField& phi = + mesh.lookupObject<surfaceScalarField>(phiName_); + + tmp<fv::convectionScheme<Type> > cs = + fv::convectionScheme<Type>::New(mesh, phi, its); + + const fv::gaussConvectionScheme<Type>& gcs = + refCast<const fv::gaussConvectionScheme<Type> >(cs()); + + const surfaceInterpolationScheme<Type>& interpScheme = + gcs.interpScheme(); + + if (!isA<blendedSchemeBase<Type> >(interpScheme)) + { + FatalErrorIn("void Foam::blendingFactor::execute()") + << interpScheme.typeName << " is not a blended scheme" + << exit(FatalError); + } + + // retrieve the face-based blending factor + const blendedSchemeBase<Type>& blendedScheme = + refCast<const blendedSchemeBase<Type> >(interpScheme); + const surfaceScalarField factorf(blendedScheme.blendingFactor(field)); + + // convert into vol field whose values represent the local face maxima + volScalarField& factor = this->factor(field); + factor = fvc::cellReduce(factorf, maxEqOp<scalar>()); + factor.correctBoundaryConditions(); +} + + +// ************************************************************************* // diff --git a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C index 0327dd1da758b485c23cef211752c8b97c248f3e..4b51db9f17b1d1e0e57712a502e7ab078a962d4e 100644 --- a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C +++ b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/externalWallHeatFluxTemperature/externalWallHeatFluxTemperatureFvPatchScalarField.C @@ -263,9 +263,9 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::updateCoeffs() forAll (thicknessLayers_, iLayer) { const scalar l = thicknessLayers_[iLayer]; - if (l > 0.0) + if (kappaLayers_[iLayer] > 0.0) { - totalSolidRes += kappaLayers_[iLayer]/l; + totalSolidRes += l/kappaLayers_[iLayer]; } } } diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/T b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/T index cba8f5dedda0645d287bef1315539e78fc4cedc8..09fb826c639e52e1df9d483f5cee85f2c9bd066a 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/T +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/T @@ -44,6 +44,11 @@ boundaryField { type empty; } + processor + { + type processor; + value $internalField; + } } diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/U b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/U index 713c1df761387fcda8db742d5c3cefc4789a7da2..94521707e2bad885cfcd41175f934f7909fadc39 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/U +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/U @@ -21,6 +21,9 @@ internalField uniform (0.1 0 0); boundaryField { + //- Set patchGroups for constraint patches + #include "${WM_PROJECT_DIR}/etc/caseDicts/setConstraintTypes" + floor { type fixedValue; diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/alphat b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/alphat index d98e7838b44fa9b51307b7398618dec8422c1e6f..e0c1d0dfbead048eee4637b2986e04cf5735a784 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/alphat +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/alphat @@ -21,6 +21,9 @@ internalField uniform 0; boundaryField { + //- Set patchGroups for constraint patches + #include "${WM_PROJECT_DIR}/etc/caseDicts/setConstraintTypes" + floor { type compressible::alphatWallFunction; diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/epsilon b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/epsilon index 7e7f3670e7b94a0b8a43a240b9140c263b35183e..7ac88b9230b1da2c8e6d50303e375c519fcd50b2 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/epsilon +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/epsilon @@ -21,6 +21,9 @@ internalField uniform 0.01; boundaryField { + //- Set patchGroups for constraint patches + #include "${WM_PROJECT_DIR}/etc/caseDicts/setConstraintTypes" + floor { type compressible::epsilonWallFunction; diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/k b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/k index 6e03f3ece448971b124b43ea9776832c1b639d80..97f41e6e200425dfb58ebf718a4f637940b599c9 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/k +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/k @@ -21,6 +21,9 @@ internalField uniform 0.1; boundaryField { + //- Set patchGroups for constraint patches + #include "${WM_PROJECT_DIR}/etc/caseDicts/setConstraintTypes" + floor { type compressible::kqRWallFunction; diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/mut b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/mut index cf8ccb9182cc90916c530ed3d8c726b5d1eb7d20..329027bb91ef622ea523c0511394a2ad917def0d 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/mut +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/mut @@ -21,6 +21,9 @@ internalField uniform 0; boundaryField { + //- Set patchGroups for constraint patches + #include "${WM_PROJECT_DIR}/etc/caseDicts/setConstraintTypes" + floor { type mutkWallFunction; diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/p b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/p index 2d49a19495048c3636dbcd2ab9f36a016592a7cd..a18ef4e1807e504ba0c125a4e15b103d3e066972 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/p +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/p @@ -21,6 +21,9 @@ internalField uniform 101325; boundaryField { + //- Set patchGroups for constraint patches + #include "${WM_PROJECT_DIR}/etc/caseDicts/setConstraintTypes" + floor { type calculated; diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/p_rgh b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/p_rgh index d4845488a8365bba29ef5a82f7e45cc319f2ea6c..ac641156fbcbecac521d981ec572a39424e05a99 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/p_rgh +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/p_rgh @@ -21,6 +21,9 @@ internalField uniform 101325; boundaryField { + //- Set patchGroups for constraint patches + #include "${WM_PROJECT_DIR}/etc/caseDicts/setConstraintTypes" + floor { type fixedFluxPressure; diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/createBafflesDict b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/createBafflesDict index 2aed1e32a615e3405ccb0d355239984cfc0f1514..2bc58e0d700de664fa0f4498d7df3ce5e9f3817d 100644 --- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/createBafflesDict +++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/createBafflesDict @@ -52,8 +52,9 @@ baffles { type mappedWall; sampleMode nearestPatchFace; - //Group master and slave in different groups. (default off) - groupBase on; + // Put master and slave patch in same group (default on) + // Otherwise makeup group names xxx_master and xxx_slave + sameGroup off; patchFields { #include "./0/include/wallBafflePatches" diff --git a/tutorials/incompressible/pimpleFoam/pitzDaily/0/U b/tutorials/incompressible/pimpleFoam/pitzDaily/0/U new file mode 100644 index 0000000000000000000000000000000000000000..885c5b9de439fa3983f723c56d7734369a6248ad --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/pitzDaily/0/U @@ -0,0 +1,52 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 0); + +boundaryField +{ + inlet + { + type fixedValue; + value uniform (10 0 0); + } + + outlet + { + type zeroGradient; + } + + upperWall + { + type fixedValue; + value uniform (0 0 0); + } + + lowerWall + { + type fixedValue; + value uniform (0 0 0); + } + + frontAndBack + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/pitzDaily/0/epsilon b/tutorials/incompressible/pimpleFoam/pitzDaily/0/epsilon new file mode 100644 index 0000000000000000000000000000000000000000..d82c45e6290be093bee3d9a3d6af3f84072a543d --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/pitzDaily/0/epsilon @@ -0,0 +1,50 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object epsilon; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -3 0 0 0 0]; + +internalField uniform 14.855; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 14.855; + } + outlet + { + type zeroGradient; + } + upperWall + { + type epsilonWallFunction; + value uniform 14.855; + } + lowerWall + { + type epsilonWallFunction; + value uniform 14.855; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/pitzDaily/0/k b/tutorials/incompressible/pimpleFoam/pitzDaily/0/k new file mode 100644 index 0000000000000000000000000000000000000000..7de1adf4b5d6b4518dc306b6d4ab6d0f40ea2312 --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/pitzDaily/0/k @@ -0,0 +1,50 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object k; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0.375; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0.375; + } + outlet + { + type zeroGradient; + } + upperWall + { + type kqRWallFunction; + value uniform 0.375; + } + lowerWall + { + type kqRWallFunction; + value uniform 0.375; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/pitzDaily/0/nuTilda b/tutorials/incompressible/pimpleFoam/pitzDaily/0/nuTilda new file mode 100644 index 0000000000000000000000000000000000000000..cbe04420b91623c7b0736f7f818d8ac8c59634d8 --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/pitzDaily/0/nuTilda @@ -0,0 +1,50 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object nuTilda; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type fixedValue; + value uniform 0; + } + + outlet + { + type zeroGradient; + } + + upperWall + { + type zeroGradient; + } + + lowerWall + { + type zeroGradient; + } + + frontAndBack + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/pitzDaily/0/nut b/tutorials/incompressible/pimpleFoam/pitzDaily/0/nut new file mode 100644 index 0000000000000000000000000000000000000000..585d8ec0f4c35a1a0d5c797222096d9483947cce --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/pitzDaily/0/nut @@ -0,0 +1,51 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + location "0"; + object nut; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -1 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type calculated; + value uniform 0; + } + outlet + { + type calculated; + value uniform 0; + } + upperWall + { + type nutkWallFunction; + value uniform 0; + } + lowerWall + { + type nutkWallFunction; + value uniform 0; + } + frontAndBack + { + type empty; + } +} + + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/pitzDaily/0/p b/tutorials/incompressible/pimpleFoam/pitzDaily/0/p new file mode 100644 index 0000000000000000000000000000000000000000..0fdd33ec47f28523f2ae5b0964b19321c1d92f4d --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/pitzDaily/0/p @@ -0,0 +1,50 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + inlet + { + type zeroGradient; + } + + outlet + { + type fixedValue; + value uniform 0; + } + + upperWall + { + type zeroGradient; + } + + lowerWall + { + type zeroGradient; + } + + frontAndBack + { + type empty; + } +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/pitzDaily/constant/RASProperties b/tutorials/incompressible/pimpleFoam/pitzDaily/constant/RASProperties new file mode 100644 index 0000000000000000000000000000000000000000..a4937b503a46850b2626f0d301e4a07b9f691507 --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/pitzDaily/constant/RASProperties @@ -0,0 +1,25 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object RASProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +RASModel kEpsilon; + +turbulence on; + +printCoeffs on; + + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/pitzDaily/constant/polyMesh/blockMeshDict b/tutorials/incompressible/pimpleFoam/pitzDaily/constant/polyMesh/blockMeshDict new file mode 100644 index 0000000000000000000000000000000000000000..0e0fcf1c9855da788effb6cfe4f7773c99bf2594 --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/pitzDaily/constant/polyMesh/blockMeshDict @@ -0,0 +1,173 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object blockMeshDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +convertToMeters 0.001; + +vertices +( + (-20.6 0 -0.5) + (-20.6 3 -0.5) + (-20.6 12.7 -0.5) + (-20.6 25.4 -0.5) + (0 -25.4 -0.5) + (0 -5 -0.5) + (0 0 -0.5) + (0 3 -0.5) + (0 12.7 -0.5) + (0 25.4 -0.5) + (206 -25.4 -0.5) + (206 -8.5 -0.5) + (206 0 -0.5) + (206 6.5 -0.5) + (206 17 -0.5) + (206 25.4 -0.5) + (290 -16.6 -0.5) + (290 -6.3 -0.5) + (290 0 -0.5) + (290 4.5 -0.5) + (290 11 -0.5) + (290 16.6 -0.5) + (-20.6 0 0.5) + (-20.6 3 0.5) + (-20.6 12.7 0.5) + (-20.6 25.4 0.5) + (0 -25.4 0.5) + (0 -5 0.5) + (0 0 0.5) + (0 3 0.5) + (0 12.7 0.5) + (0 25.4 0.5) + (206 -25.4 0.5) + (206 -8.5 0.5) + (206 0 0.5) + (206 6.5 0.5) + (206 17 0.5) + (206 25.4 0.5) + (290 -16.6 0.5) + (290 -6.3 0.5) + (290 0 0.5) + (290 4.5 0.5) + (290 11 0.5) + (290 16.6 0.5) +); + +blocks +( + hex (0 6 7 1 22 28 29 23) (18 7 1) simpleGrading (0.5 1.8 1) + hex (1 7 8 2 23 29 30 24) (18 10 1) simpleGrading (0.5 4 1) + hex (2 8 9 3 24 30 31 25) (18 13 1) simpleGrading (0.5 0.25 1) + hex (4 10 11 5 26 32 33 27) (180 18 1) simpleGrading (4 1 1) + hex (5 11 12 6 27 33 34 28) (180 9 1) edgeGrading (4 4 4 4 0.5 1 1 0.5 1 1 1 1) + hex (6 12 13 7 28 34 35 29) (180 7 1) edgeGrading (4 4 4 4 1.8 1 1 1.8 1 1 1 1) + hex (7 13 14 8 29 35 36 30) (180 10 1) edgeGrading (4 4 4 4 4 1 1 4 1 1 1 1) + hex (8 14 15 9 30 36 37 31) (180 13 1) simpleGrading (4 0.25 1) + hex (10 16 17 11 32 38 39 33) (25 18 1) simpleGrading (2.5 1 1) + hex (11 17 18 12 33 39 40 34) (25 9 1) simpleGrading (2.5 1 1) + hex (12 18 19 13 34 40 41 35) (25 7 1) simpleGrading (2.5 1 1) + hex (13 19 20 14 35 41 42 36) (25 10 1) simpleGrading (2.5 1 1) + hex (14 20 21 15 36 42 43 37) (25 13 1) simpleGrading (2.5 0.25 1) +); + +edges +( +); + +boundary +( + inlet + { + type patch; + faces + ( + (0 22 23 1) + (1 23 24 2) + (2 24 25 3) + ); + } + outlet + { + type patch; + faces + ( + (16 17 39 38) + (17 18 40 39) + (18 19 41 40) + (19 20 42 41) + (20 21 43 42) + ); + } + upperWall + { + type wall; + faces + ( + (3 25 31 9) + (9 31 37 15) + (15 37 43 21) + ); + } + lowerWall + { + type wall; + faces + ( + (0 6 28 22) + (6 5 27 28) + (5 4 26 27) + (4 10 32 26) + (10 16 38 32) + ); + } + frontAndBack + { + type empty; + faces + ( + (22 28 29 23) + (23 29 30 24) + (24 30 31 25) + (26 32 33 27) + (27 33 34 28) + (28 34 35 29) + (29 35 36 30) + (30 36 37 31) + (32 38 39 33) + (33 39 40 34) + (34 40 41 35) + (35 41 42 36) + (36 42 43 37) + (0 1 7 6) + (1 2 8 7) + (2 3 9 8) + (4 5 11 10) + (5 6 12 11) + (6 7 13 12) + (7 8 14 13) + (8 9 15 14) + (10 11 17 16) + (11 12 18 17) + (12 13 19 18) + (13 14 20 19) + (14 15 21 20) + ); + } +); + +mergePatchPairs +( +); + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/pitzDaily/constant/polyMesh/boundary b/tutorials/incompressible/pimpleFoam/pitzDaily/constant/polyMesh/boundary new file mode 100644 index 0000000000000000000000000000000000000000..221823b308d5063df215d77e90a11eae26d6c1c6 --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/pitzDaily/constant/polyMesh/boundary @@ -0,0 +1,53 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: 2.2.x | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class polyBoundaryMesh; + location "constant/polyMesh"; + object boundary; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +5 +( + inlet + { + type patch; + nFaces 30; + startFace 24170; + } + outlet + { + type patch; + nFaces 57; + startFace 24200; + } + upperWall + { + type wall; + nFaces 223; + startFace 24257; + } + lowerWall + { + type wall; + nFaces 250; + startFace 24480; + } + frontAndBack + { + type empty; + inGroups 1(empty); + nFaces 24450; + startFace 24730; + } +) + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/pitzDaily/constant/transportProperties b/tutorials/incompressible/pimpleFoam/pitzDaily/constant/transportProperties new file mode 100644 index 0000000000000000000000000000000000000000..b40b7d66cd884b7a54d4c7a61b50b1e39a466150 --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/pitzDaily/constant/transportProperties @@ -0,0 +1,39 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object transportProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +transportModel Newtonian; + +nu nu [ 0 2 -1 0 0 0 0 ] 1e-05; + +CrossPowerLawCoeffs +{ + nu0 nu0 [ 0 2 -1 0 0 0 0 ] 1e-06; + nuInf nuInf [ 0 2 -1 0 0 0 0 ] 1e-06; + m m [ 0 0 1 0 0 0 0 ] 1; + n n [ 0 0 0 0 0 0 0 ] 1; +} + +BirdCarreauCoeffs +{ + nu0 nu0 [ 0 2 -1 0 0 0 0 ] 1e-06; + nuInf nuInf [ 0 2 -1 0 0 0 0 ] 1e-06; + k k [ 0 0 1 0 0 0 0 ] 0; + n n [ 0 0 0 0 0 0 0 ] 1; +} + + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/pitzDaily/constant/turbulenceProperties b/tutorials/incompressible/pimpleFoam/pitzDaily/constant/turbulenceProperties new file mode 100644 index 0000000000000000000000000000000000000000..e7fa28c74a5fead3fbcdd79b5587ef684e8bacb4 --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/pitzDaily/constant/turbulenceProperties @@ -0,0 +1,20 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "constant"; + object turbulenceProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +simulationType RASModel; + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/pitzDaily/system/controlDict b/tutorials/incompressible/pimpleFoam/pitzDaily/system/controlDict new file mode 100644 index 0000000000000000000000000000000000000000..a8ea900b3c47194aaf01f6803065fe4306bc6395 --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/pitzDaily/system/controlDict @@ -0,0 +1,52 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application pimpleFoam; + +startFrom latestTime; + +startTime 0; + +stopAt endTime; + +endTime 1; + +deltaT 0.0001; + +writeControl adjustableRunTime; + +writeInterval 0.001; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression off; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +adjustTimeStep yes; + +maxCo 5; + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/pitzDaily/system/fvSchemes b/tutorials/incompressible/pimpleFoam/pitzDaily/system/fvSchemes new file mode 100644 index 0000000000000000000000000000000000000000..926d489aae55eb3d059e41849197d58c6129a2b3 --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/pitzDaily/system/fvSchemes @@ -0,0 +1,71 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSchemes; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +ddtSchemes +{ + default Euler; +} + +gradSchemes +{ + default Gauss linear; + grad(p) Gauss linear; + grad(U) Gauss linear; +} + +divSchemes +{ + default none; + div(phi,U) bounded Gauss linearUpwind grad(U); + div(phi,k) bounded Gauss upwind; + div(phi,epsilon) bounded Gauss upwind; + div(phi,R) bounded Gauss upwind; + div(R) Gauss linear; + div(phi,nuTilda) bounded Gauss upwind; + div((nuEff*dev(T(grad(U))))) Gauss linear; +} + +laplacianSchemes +{ + default none; + laplacian(nuEff,U) Gauss linear corrected; + laplacian(rAUf,p) Gauss linear corrected; + laplacian(DkEff,k) Gauss linear corrected; + laplacian(DepsilonEff,epsilon) Gauss linear corrected; + laplacian(DREff,R) Gauss linear corrected; + laplacian(DnuTildaEff,nuTilda) Gauss linear corrected; +} + +interpolationSchemes +{ + default linear; + interpolate(U) linear; +} + +snGradSchemes +{ + default corrected; +} + +fluxRequired +{ + default no; + p ; +} + + +// ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/pitzDaily/system/fvSolution b/tutorials/incompressible/pimpleFoam/pitzDaily/system/fvSolution new file mode 100644 index 0000000000000000000000000000000000000000..880d7bef7b27665cfb7675d2036a2b2faf848267 --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/pitzDaily/system/fvSolution @@ -0,0 +1,62 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + location "system"; + object fvSolution; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +solvers +{ + p + { + solver GAMG; + tolerance 1e-7; + relTol 0.01; + + smoother GaussSeidel; + + cacheAgglomeration true; + nCellsInCoarsestLevel 10; + agglomerator faceAreaPair; + mergeLevels 1; + } + + pFinal + { + $p; + relTol 0; + } + + "(U|k|epsilon)" + { + solver PBiCG; + preconditioner DILU; + tolerance 1e-05; + relTol 0.1; + } + + "(U|k|epsilon)Final" + { + $U; + relTol 0; + } +} + +PIMPLE +{ + nNonOrthogonalCorrectors 0; + nCorrectors 2; +} + + +// ************************************************************************* //