diff --git a/README.html b/README.html index afcf0675..722830ec 100644 --- a/README.html +++ b/README.html @@ -26,10 +26,10 @@ .center {margin-left:auto; margin-right:auto; text-align:center;} p.verse { margin-left: 3% } pre { - border: 1pt solid #AEBDCC; - background-color: #F3F5F7; - padding: 5pt; - font-family: courier, monospace; + border: 1pt solid #AEBDCC; + background-color: #F3F5F7; + padding: 5pt; + font-family: courier, monospace; font-size: 90%; overflow:auto; } @@ -137,7 +137,7 @@ for the JavaScript code in this tag.

1 About OpenFOAM

-

OpenFOAM is a free, open source computational fluid dynamcis (CFD) software +

OpenFOAM is a free, open source computational fluid dynamics (CFD) software package released by the OpenFOAM Foundation. It has a large user base across most areas of engineering and science, from both commercial and academic organisations. OpenFOAM has an extensive range of features to solve anything diff --git a/README.org b/README.org index f363c019..3118d613 100644 --- a/README.org +++ b/README.org @@ -8,7 +8,7 @@ # Copyright (c) 2014 OpenFOAM Foundation. * About OpenFOAM - OpenFOAM is a free, open source computational fluid dynamcis (CFD) software + OpenFOAM is a free, open source computational fluid dynamics (CFD) software package released by the OpenFOAM Foundation. It has a large user base across most areas of engineering and science, from both commercial and academic organisations. OpenFOAM has an extensive range of features to solve anything diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.C b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.C index 6e741014..cd254865 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.C +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.C @@ -52,7 +52,7 @@ Foam::aspectRatioModels::TomiyamaAspectRatio::TomiyamaAspectRatio const orderedPhasePair& pair ) : - aspectRatioModel(dict, pair), + VakhrushevEfremov(dict, pair), yWall_(pair.phase1().mesh().lookupObject("yWall")) {} @@ -69,7 +69,7 @@ Foam::tmp Foam::aspectRatioModels::TomiyamaAspectRatio::E() const { return - pair_.Eo() + VakhrushevEfremov::E() *max ( scalar(1) - 0.35*yWall_/pair_.dispersed().d(), diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.H b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.H index ba32d21c..82f00642 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.H +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/aspectRatioModels/TomiyamaAspectRatio/TomiyamaAspectRatio.H @@ -44,7 +44,7 @@ SourceFiles #ifndef TomiyamaAspectRatio_H #define TomiyamaAspectRatio_H -#include "aspectRatioModel.H" +#include "VakhrushevEfremov.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -59,7 +59,7 @@ namespace aspectRatioModels class TomiyamaAspectRatio : - public aspectRatioModel + public VakhrushevEfremov { private: diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.C b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.C index 0531e30b..01d122de 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.C +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/dragModels/TomiyamaAnalytic/TomiyamaAnalytic.C @@ -69,17 +69,17 @@ Foam::dragModels::TomiyamaAnalytic::CdRe() const volScalarField Eo(max(pair_.Eo(), residualEo_)); volScalarField E(max(pair_.E(), residualE_)); - volScalarField OmEsq(max(scalar(1) - sqr(E), residualE_)); + volScalarField OmEsq(max(scalar(1) - sqr(E), sqr(residualE_))); volScalarField rtOmEsq(sqrt(OmEsq)); - volScalarField F((asin(rtOmEsq) - E*rtOmEsq)/OmEsq); + volScalarField F(max(asin(rtOmEsq) - E*rtOmEsq, residualE_)/OmEsq); return (8.0/3.0) *Eo /( Eo*pow(E, 2.0/3.0)/OmEsq - + 16*pow(E, 0.75) + + 16*pow(E, 4.0/3.0) ) /sqr(F) *max(pair_.Re(), residualRe_); diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.C b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.C index 24ab01e7..2544e038 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.C +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/interfacialModels/liftModels/Moraga/Moraga.C @@ -62,15 +62,39 @@ Foam::liftModels::Moraga::~Moraga() Foam::tmp Foam::liftModels::Moraga::Cl() const { - volScalarField ReSqrSr + volScalarField Re(pair_.Re()); + + volScalarField sqrSr ( - pair_.Re() - *sqr(pair_.dispersed().d()) + sqr(pair_.dispersed().d()) /pair_.continuous().nu() *mag(fvc::grad(pair_.continuous().U())) ); - return 0.2*exp(- ReSqrSr/3.6e5 - 0.12)*exp(ReSqrSr/3.0e7); + if + ( + min(Re).value() < 1200.0 + || max(Re).value() > 18800.0 + || min(sqrSr).value() < 0.0016 + || max(sqrSr).value() > 0.04 + ) + { + WarningIn + ( + "Foam::tmp " + "Foam::liftModels::Moraga::Cl() const" + ) << "Re and/or Sr are out of the range of applicability of the " + << "Moraga model. Clamping to range bounds" + << endl; + } + + Re.min(1200.0); + Re.max(18800.0); + + sqrSr.min(0.0016); + sqrSr.max(0.04); + + return 0.2*exp(- Re*sqrSr/3.6e5 - 0.12)*exp(Re*sqrSr/3.0e7); } diff --git a/applications/utilities/mesh/manipulation/checkMesh/checkGeometry.C b/applications/utilities/mesh/manipulation/checkMesh/checkGeometry.C index 32e260f5..8677f08c 100644 --- a/applications/utilities/mesh/manipulation/checkMesh/checkGeometry.C +++ b/applications/utilities/mesh/manipulation/checkMesh/checkGeometry.C @@ -19,7 +19,7 @@ Foam::label Foam::findOppositeWedge { const polyBoundaryMesh& patches = mesh.boundaryMesh(); - scalar wppCosAngle = wpp.centreNormal()&wpp.patchNormal(); + scalar wppCosAngle = wpp.cosAngle(); forAll(patches, patchI) { @@ -30,13 +30,11 @@ Foam::label Foam::findOppositeWedge && isA(patches[patchI]) ) { - const wedgePolyPatch& pp = refCast - ( - patches[patchI] - ); + const wedgePolyPatch& pp = + refCast(patches[patchI]); // Calculate (cos of) angle to wpp (not pp!) centre normal - scalar ppCosAngle = wpp.centreNormal()&pp.patchNormal(); + scalar ppCosAngle = wpp.centreNormal() & pp.n(); if ( @@ -73,12 +71,10 @@ bool Foam::checkWedges { if (patches[patchI].size() && isA(patches[patchI])) { - const wedgePolyPatch& pp = refCast - ( - patches[patchI] - ); + const wedgePolyPatch& pp = + refCast(patches[patchI]); - scalar wedgeAngle = acos(pp.centreNormal()&pp.patchNormal()); + scalar wedgeAngle = acos(pp.cosAngle()); if (report) { @@ -100,10 +96,8 @@ bool Foam::checkWedges return true; } - const wedgePolyPatch& opp = refCast - ( - patches[oppositePatchI] - ); + const wedgePolyPatch& opp = + refCast(patches[oppositePatchI]); if (mag(opp.axis() & pp.axis()) < (1-1e-3)) @@ -140,7 +134,7 @@ bool Foam::checkWedges forAll(pp.meshPoints(), i) { const point& pt = p[pp.meshPoints()[i]]; - scalar d = mag((pt-p0) & pp.patchNormal()); + scalar d = mag((pt - p0) & pp.n()); if (d > sqrt(SMALL)) { @@ -385,10 +379,8 @@ bool Foam::checkCoupledPoints { if (patches[patchI].coupled()) { - const coupledPolyPatch& cpp = refCast - ( - patches[patchI] - ); + const coupledPolyPatch& cpp = + refCast(patches[patchI]); if (cpp.owner()) { diff --git a/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/wedge/wedgePointPatch.C b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/wedge/wedgePointPatch.C index c335911c..56dba997 100644 --- a/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/wedge/wedgePointPatch.C +++ b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/wedge/wedgePointPatch.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -21,9 +21,6 @@ License You should have received a copy of the GNU General Public License along with OpenFOAM. If not, see . -Description - Wedge front and back plane patch - \*---------------------------------------------------------------------------*/ #include "wedgePointPatch.H" @@ -46,6 +43,19 @@ namespace Foam } +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::wedgePointPatch::wedgePointPatch +( + const polyPatch& patch, + const pointBoundaryMesh& bm +) +: + facePointPatch(patch, bm), + wedgePolyPatch_(refCast(patch)) +{} + + // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // void Foam::wedgePointPatch::applyConstraint @@ -54,7 +64,7 @@ void Foam::wedgePointPatch::applyConstraint pointConstraint& pc ) const { - pc.applyConstraint(pointNormals()[pointi]); + pc.applyConstraint(wedgePolyPatch_.n()); } diff --git a/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/wedge/wedgePointPatch.H b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/wedge/wedgePointPatch.H index a62acfaa..0a437c32 100644 --- a/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/wedge/wedgePointPatch.H +++ b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/wedge/wedgePointPatch.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -51,6 +51,11 @@ class wedgePointPatch : public facePointPatch { + // Private data + + //- Local reference cast into the symmetryPlane patch + const wedgePolyPatch& wedgePolyPatch_; + public: @@ -65,10 +70,7 @@ public: ( const polyPatch& patch, const pointBoundaryMesh& bm - ) - : - facePointPatch(patch, bm) - {} + ); // Member Functions @@ -85,6 +87,12 @@ public: const label pointi, pointConstraint& ) const; + + //- Return symmetry plane normal + const vector& n() const + { + return wedgePolyPatch_.n(); + } }; diff --git a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/faceMapper/faceMapper.C b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/faceMapper/faceMapper.C index e95fbe95..803e523d 100644 --- a/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/faceMapper/faceMapper.C +++ b/src/OpenFOAM/meshes/polyMesh/mapPolyMesh/faceMapper/faceMapper.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,9 +28,6 @@ License #include "polyMesh.H" #include "mapPolyMesh.H" -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - - // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // void Foam::faceMapper::calcAddressing() const @@ -168,7 +165,7 @@ void Foam::faceMapper::calcAddressing() const } - // Grab inserted points (for them the size of addressing is still zero) + // Grab inserted faces (for them the size of addressing is still zero) insertedFaceLabelsPtr_ = new labelList(mesh_.nFaces()); labelList& insertedFaces = *insertedFaceLabelsPtr_; @@ -413,13 +410,4 @@ const Foam::labelList& Foam::faceMapper::oldPatchSizes() const } -// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // - - -// * * * * * * * * * * * * * * * Friend Functions * * * * * * * * * * * * * // - - -// * * * * * * * * * * * * * * * Friend Operators * * * * * * * * * * * * * // - - // ************************************************************************* // diff --git a/src/OpenFOAM/meshes/polyMesh/polyMesh.C b/src/OpenFOAM/meshes/polyMesh/polyMesh.C index cd70eb39..668a5953 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyMesh.C +++ b/src/OpenFOAM/meshes/polyMesh/polyMesh.C @@ -921,7 +921,6 @@ Foam::polyMesh::cellTree() const } -// Add boundary patches. Constructor helper void Foam::polyMesh::addPatches ( const List& p, @@ -968,7 +967,6 @@ void Foam::polyMesh::addPatches } -// Add mesh zones. Constructor helper void Foam::polyMesh::addZones ( const List& pz, @@ -1084,7 +1082,6 @@ const Foam::labelList& Foam::polyMesh::faceNeighbour() const } -// Return old mesh motion points const Foam::pointField& Foam::polyMesh::oldPoints() const { if (oldPointsPtr_.empty()) @@ -1129,11 +1126,14 @@ Foam::tmp Foam::polyMesh::movePoints points_ = newPoints; + bool moveError = false; if (debug) { // Check mesh motion if (checkMeshMotion(points_, true)) { + moveError = true; + Info<< "tmp polyMesh::movePoints" << "(const pointField&) : " << "Moving the mesh with given points will " @@ -1176,6 +1176,12 @@ Foam::tmp Foam::polyMesh::movePoints const_cast(time()).functionObjects().movePoints(*this); + + if (debug && moveError) + { + write(); + } + return sweptVols; } @@ -1219,7 +1225,6 @@ Foam::label& Foam::polyMesh::comm() } -// Remove all files and some subdirs (eg, sets) void Foam::polyMesh::removeFiles(const fileName& instanceDir) const { fileName meshFilesPath = thisDb().time().path()/instanceDir/meshDir(); diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/wedge/wedgePolyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/wedge/wedgePolyPatch.C index b7c9783c..e12d22e5 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/wedge/wedgePolyPatch.C +++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/wedge/wedgePolyPatch.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-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -40,56 +40,90 @@ namespace Foam // * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // -void Foam::wedgePolyPatch::initTransforms() +void Foam::wedgePolyPatch::calcGeometry(PstreamBuffers&) { - if (size() > 0) + if (axis_ != vector::rootMax) { - const pointField& points = this->points(); + return; + } - patchNormal_ = operator[](0).normal(points); - patchNormal_ /= mag(patchNormal_); + if (returnReduce(size(), sumOp