mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: Adition of shear to points to avoid Delaunry2D degeneration
This commit is contained in:
@ -332,7 +332,19 @@ void timeVaryingMappedFixedValueFvPatchField<Type>::readSamplePoints()
|
||||
(
|
||||
referenceCS().localPosition(samplePoints)
|
||||
);
|
||||
const vectorField& localVertices = tlocalVertices();
|
||||
vectorField& localVertices = tlocalVertices();
|
||||
|
||||
// Shear to avoid degenerate cases
|
||||
forAll(localVertices, i)
|
||||
{
|
||||
point& pt = localVertices[i];
|
||||
const scalar magPt = mag(pt);
|
||||
const point nptDir = pt/magPt;
|
||||
if (magPt > ROOTVSMALL)
|
||||
{
|
||||
pt += pow(magPt, 1.1 + Foam::sqrt(SMALL))*nptDir;
|
||||
}
|
||||
}
|
||||
|
||||
// Determine triangulation
|
||||
List<vector2D> localVertices2D(localVertices.size());
|
||||
@ -342,7 +354,7 @@ void timeVaryingMappedFixedValueFvPatchField<Type>::readSamplePoints()
|
||||
localVertices2D[i][1] = localVertices[i][1];
|
||||
}
|
||||
|
||||
tmp<pointField> localFaceCentres
|
||||
tmp<pointField> tlocalFaceCentres
|
||||
(
|
||||
referenceCS().localPosition
|
||||
(
|
||||
@ -350,6 +362,20 @@ void timeVaryingMappedFixedValueFvPatchField<Type>::readSamplePoints()
|
||||
)
|
||||
);
|
||||
|
||||
pointField& localFaceCentres = tlocalFaceCentres();
|
||||
|
||||
// Shear to avoid degenerate cases
|
||||
forAll(localFaceCentres, i)
|
||||
{
|
||||
point& pt = localFaceCentres[i];
|
||||
const scalar magPt = mag(pt);
|
||||
const point nptDir = pt/magPt;
|
||||
if (magPt > ROOTVSMALL)
|
||||
{
|
||||
pt += pow(magPt, 1.1 + Foam::sqrt(SMALL))*nptDir;
|
||||
}
|
||||
}
|
||||
|
||||
if (debug)
|
||||
{
|
||||
OFstream str
|
||||
@ -360,9 +386,9 @@ void timeVaryingMappedFixedValueFvPatchField<Type>::readSamplePoints()
|
||||
Pout<< "readSamplePoints :"
|
||||
<< " Dumping face centres to " << str.name() << endl;
|
||||
|
||||
forAll(localFaceCentres(), i)
|
||||
forAll(localFaceCentres, i)
|
||||
{
|
||||
const point& p = localFaceCentres()[i];
|
||||
const point& p = localFaceCentres[i];
|
||||
str<< "v " << p.x() << ' ' << p.y() << ' ' << p.z() << nl;
|
||||
}
|
||||
}
|
||||
@ -380,9 +406,9 @@ void timeVaryingMappedFixedValueFvPatchField<Type>::readSamplePoints()
|
||||
Pout<< "readSamplePoints :"
|
||||
<< " Dumping face centres to " << str.name() << endl;
|
||||
|
||||
forAll(localFaceCentres(), i)
|
||||
forAll(localFaceCentres, i)
|
||||
{
|
||||
const point& p = localFaceCentres()[i];
|
||||
const point& p = localFaceCentres[i];
|
||||
str<< "v " << p.x() << ' ' << p.y() << ' ' << p.z() << nl;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user