ENH: globalIndexAndTransform: Don't generate transforms from coincident-full-match patches

Another exception has been added to globalIndexAndTransform to prevent
transformations being generated from coupled patch pairs marked with
coincident-full-match transformations. Foamy generates such patches, and
the faces on them at intermediate stages of meshing can be degenerate,
making the calculation of transformations unreliable. This change
enforces the definition that coincident-full-match patch pairs are not
transformed.
This commit is contained in:
Will Bainbridge
2017-11-07 09:12:59 +00:00
committed by Andrew Heather
parent 3839f7478a
commit 5688340a05

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -139,15 +139,19 @@ void Foam::globalIndexAndTransform::determineTransforms()
// Note: special check for unordered cyclics. These are in fact
// transform bcs and should probably be split off.
// Note: We don't want to be finding transforms for patches marked as
// coincident full match. These should have no transform by definition.
if
(
isA<coupledPolyPatch>(pp)
&& !(
isA<cyclicPolyPatch>(pp)
&& (
refCast<const cyclicPolyPatch>(pp).transform()
== cyclicPolyPatch::NOORDERING
)
&& refCast<const cyclicPolyPatch>(pp).transform()
== cyclicPolyPatch::NOORDERING
)
&& !(
refCast<const coupledPolyPatch>(pp).transform()
== coupledPolyPatch::COINCIDENTFULLMATCH
)
)
{
@ -319,15 +323,19 @@ void Foam::globalIndexAndTransform::determinePatchTransformSign()
// Note: special check for unordered cyclics. These are in fact
// transform bcs and should probably be split off.
// Note: We don't want to be finding transforms for patches marked as
// coincident full match. These should have no transform by definition.
if
(
isA<coupledPolyPatch>(pp)
&& !(
isA<cyclicPolyPatch>(pp)
&& (
refCast<const cyclicPolyPatch>(pp).transform()
== cyclicPolyPatch::NOORDERING
)
&& refCast<const cyclicPolyPatch>(pp).transform()
== cyclicPolyPatch::NOORDERING
)
&& !(
refCast<const coupledPolyPatch>(pp).transform()
== coupledPolyPatch::COINCIDENTFULLMATCH
)
)
{