diff --git a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict index 1a27956dbc..8ee2c4b74c 100644 --- a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict +++ b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict @@ -270,7 +270,7 @@ addLayersControls //- If points get not extruded do nGrow layers of connected faces that are // also not grown. This helps convergence of the layer addition process // close to features. - // Note: changed(corrected) w.r.t 16x! (didn't do anything in 16x) + // Note: changed(corrected) w.r.t 17x! (didn't do anything in 17x) nGrow 0; @@ -301,7 +301,7 @@ addLayersControls maxThicknessToMedialRatio 0.3; // Angle used to pick up medial axis points - // Note: changed(corrected) w.r.t 16x! 90 degrees corresponds to 130 in 16x. + // Note: changed(corrected) w.r.t 17x! 90 degrees corresponds to 130 in 17x. minMedianAxisAngle 90; // Create buffer region for new layer terminations diff --git a/src/OpenFOAM/db/Time/Time.C b/src/OpenFOAM/db/Time/Time.C index f7566f5f93..af3b5544d8 100644 --- a/src/OpenFOAM/db/Time/Time.C +++ b/src/OpenFOAM/db/Time/Time.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -86,18 +86,25 @@ void Foam::Time::adjustDeltaT() (outputTimeIndex_ + 1)*writeInterval_ - (value() - startTime_) ); - label nStepsToNextWrite = label(timeToNextWrite/deltaT_ - SMALL) + 1; - scalar newDeltaT = timeToNextWrite/nStepsToNextWrite; + scalar nSteps = timeToNextWrite/deltaT_ - SMALL; - // Control the increase of the time step to within a factor of 2 - // and the decrease within a factor of 5. - if (newDeltaT >= deltaT_) + // For tiny deltaT the label can overflow! + if (nSteps < labelMax) { - deltaT_ = min(newDeltaT, 2.0*deltaT_); - } - else - { - deltaT_ = max(newDeltaT, 0.2*deltaT_); + label nStepsToNextWrite = label(nSteps) + 1; + + scalar newDeltaT = timeToNextWrite/nStepsToNextWrite; + + // Control the increase of the time step to within a factor of 2 + // and the decrease within a factor of 5. + if (newDeltaT >= deltaT_) + { + deltaT_ = min(newDeltaT, 2.0*deltaT_); + } + else + { + deltaT_ = max(newDeltaT, 0.2*deltaT_); + } } } } diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.C index 34b2b091de..b26b225690 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.C +++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -30,9 +30,24 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -defineTypeNameAndDebug(Foam::coupledPolyPatch, 0); +namespace Foam +{ + defineTypeNameAndDebug(coupledPolyPatch, 0); -Foam::scalar Foam::coupledPolyPatch::matchTol = 1E-3; + scalar coupledPolyPatch::matchTol = 1E-3; + + template<> + const char* NamedEnum::names[] = + { + "unknown", + "rotational", + "translational", + "noOrdering" + }; + + const NamedEnum + coupledPolyPatch::transformTypeNames; +} // * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // @@ -204,12 +219,14 @@ void Foam::coupledPolyPatch::calcTransformTensors const vectorField& nf, const vectorField& nr, const scalarField& smallDist, - const scalar absTol + const scalar absTol, + const transformType transform ) const { if (debug) { Pout<< "coupledPolyPatch::calcTransformTensors : " << name() << endl + << " transform:" << transformTypeNames[transform] << nl << " (half)size:" << Cf.size() << nl << " absTol:" << absTol << nl << " smallDist min:" << min(smallDist) << nl @@ -242,9 +259,16 @@ void Foam::coupledPolyPatch::calcTransformTensors Pout<< " error:" << error << endl; } - if (sum(mag(nf & nr)) < Cf.size()-error) + if + ( + transform == ROTATIONAL + || ( + transform != TRANSLATIONAL + && (sum(mag(nf & nr)) < Cf.size()-error) + ) + ) { - // Rotation, no separation + // Type is rotation or unknown and normals not aligned // Assume per-face differing transformation, correct later @@ -284,7 +308,7 @@ void Foam::coupledPolyPatch::calcTransformTensors } else { - // No rotation, possible separation + // Translational or (unknown and normals aligned) forwardT_.setSize(0); reverseT_.setSize(0); diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.H b/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.H index 31fc9bcb1b..682e9962b6 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.H +++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,6 +53,20 @@ class coupledPolyPatch : public polyPatch { +public: + + enum transformType + { + UNKNOWN, // unspecified; automatic ordering + ROTATIONAL, // rotation along coordinate axis + TRANSLATIONAL, // translation + NOORDERING // unspecified, no automatic ordering + }; + static const NamedEnum transformTypeNames; + + +private: + // Private data //- offset (distance) vector from one side of the couple to the other @@ -82,6 +96,8 @@ protected: //- Calculate the transformation tensors // smallDist : matching distance per face // absTol : absolute error in normal + // if transformType = unknown it first tries rotational, then + // translational transform void calcTransformTensors ( const vectorField& Cf, @@ -89,7 +105,8 @@ protected: const vectorField& nf, const vectorField& nr, const scalarField& smallDist, - const scalar absTol = matchTol + const scalar absTol = matchTol, + const transformType = UNKNOWN ) const; //- Initialise the calculation of the patch geometry diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C index a5039132f9..03032fbb53 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C +++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.C @@ -44,24 +44,8 @@ namespace Foam addToRunTimeSelectionTable(polyPatch, cyclicPolyPatch, word); addToRunTimeSelectionTable(polyPatch, cyclicPolyPatch, dictionary); - - template<> - const char* Foam::NamedEnum - < - Foam::cyclicPolyPatch::transformType, - 4 - >::names[] = - { - "unknown", - "rotational", - "translational", - "noOrdering" - }; } -const Foam::NamedEnum - Foam::cyclicPolyPatch::transformTypeNames; - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -271,7 +255,9 @@ void Foam::cyclicPolyPatch::calcTransforms static_cast(half1Ctrs), half0Normals, half1Normals, - half0Tols + half0Tols, + matchTol, + transform_ ); if (transform_ == ROTATIONAL && !parallel() && forwardT().size() > 1) diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.H b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.H index dd0d14db86..68a008bded 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.H +++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/cyclic/cyclicPolyPatch.H @@ -64,20 +64,6 @@ class cyclicPolyPatch : public coupledPolyPatch { -public: - - enum transformType - { - UNKNOWN, // unspecified; automatic ordering - ROTATIONAL, // rotation along coordinate axis - TRANSLATIONAL, // translation - NOORDERING // unspecified, no automatic ordering - }; - static const NamedEnum transformTypeNames; - - -private: - // Private data //- Name of other half diff --git a/src/meshTools/directMapped/directMappedPolyPatch/directMappedPatchBase.C b/src/meshTools/directMapped/directMappedPolyPatch/directMappedPatchBase.C index fee6f86ff4..544245faf5 100644 --- a/src/meshTools/directMapped/directMappedPolyPatch/directMappedPatchBase.C +++ b/src/meshTools/directMapped/directMappedPolyPatch/directMappedPatchBase.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -709,16 +709,17 @@ Foam::directMappedPatchBase::directMappedPatchBase } else { - FatalErrorIn + FatalIOErrorIn ( "directMappedPatchBase::directMappedPatchBase\n" "(\n" " const polyPatch& pp,\n" " const dictionary& dict\n" - ")\n" + ")\n", + dict ) << "Please supply the offsetMode as one of " << NamedEnum::words() - << exit(FatalError); + << exit(FatalIOError); } } diff --git a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/radiationCoupledBase/radiationCoupledBase.C b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/radiationCoupledBase/radiationCoupledBase.C index eab4624c29..f8d034ca34 100644 --- a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/radiationCoupledBase/radiationCoupledBase.C +++ b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/radiationCoupledBase/radiationCoupledBase.C @@ -81,17 +81,18 @@ Foam::radiationCoupledBase::radiationCoupledBase { if (!isA(patch_.patch())) { - FatalErrorIn + FatalIOErrorIn ( "radiationCoupledBase::radiationCoupledBase\n" "(\n" " const fvPatch& p,\n" " const dictionary& dict\n" - ")\n" + ")\n", + dict ) << "\n patch type '" << patch_.type() << "' not type '" << directMappedPatchBase::typeName << "'" << "\n for patch " << patch_.name() - << exit(FatalError); + << exit(FatalIOError); } emissivity_ = scalarField(patch_.size(), 0.0); @@ -102,16 +103,17 @@ Foam::radiationCoupledBase::radiationCoupledBase { if(!dict.found("emissivity")) { - FatalErrorIn + FatalIOErrorIn ( "radiationCoupledBase::radiationCoupledBase\n" "(\n" " const fvPatch& p,\n" " const dictionary& dict\n" - ")\n" + ")\n", + dict ) << "\n emissivity key does not exist for patch " << patch_.name() - << exit(FatalError); + << exit(FatalIOError); } else { diff --git a/tutorials/incompressible/simpleSRFFoam/mixer/constant/polyMesh/blockMeshDict b/tutorials/incompressible/simpleSRFFoam/mixer/constant/polyMesh/blockMeshDict index 8decdddd8c..204134e5b4 100644 --- a/tutorials/incompressible/simpleSRFFoam/mixer/constant/polyMesh/blockMeshDict +++ b/tutorials/incompressible/simpleSRFFoam/mixer/constant/polyMesh/blockMeshDict @@ -70,45 +70,80 @@ edges arc 23 19 ( 0.034 0.094 2.000 ) ); -patches +boundary ( - patch inlet - ( + inlet + { + type patch; + faces + ( (13 12 21 16) (14 13 16 18) (15 14 18 20) (17 22 12 13) (23 19 14 15) - ) - patch outlet - ( + ); + } + outlet + { + type patch; + faces + ( (1 4 9 0) (2 6 4 1) (3 8 6 2) (5 1 0 10) (11 3 2 7) - ) - wall innerWall - ( + ); + } + innerWall + { + type wall; + faces + ( (2 1 13 14) (5 10 22 17) (5 17 13 1) (11 7 19 23) (7 2 14 19) - ) - wall outerWall - ( + ); + } + outerWall + { + type wall; + faces + ( (4 16 21 9) (6 18 16 4) (8 20 18 6) - ) - cyclic cyclic - ( + ); + } + cyclic_half0 + { + type cyclic; + neighbourPatch cyclic_half1; + transform rotational; + rotationAxis (0 0 1); + rotationCentre (0 0 0); + faces + ( (0 9 21 12) (10 0 12 22) + ); + } + cyclic_half1 + { + type cyclic; + neighbourPatch cyclic_half0; + transform rotational; + rotationAxis (0 0 1); + rotationCentre (0 0 0); + faces + ( (3 15 20 8) (11 23 15 3) - ) + ); + } ); mergeMatchPairs