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)
|
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
|
// Determine triangulation
|
||||||
List<vector2D> localVertices2D(localVertices.size());
|
List<vector2D> localVertices2D(localVertices.size());
|
||||||
@ -342,7 +354,7 @@ void timeVaryingMappedFixedValueFvPatchField<Type>::readSamplePoints()
|
|||||||
localVertices2D[i][1] = localVertices[i][1];
|
localVertices2D[i][1] = localVertices[i][1];
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp<pointField> localFaceCentres
|
tmp<pointField> tlocalFaceCentres
|
||||||
(
|
(
|
||||||
referenceCS().localPosition
|
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)
|
if (debug)
|
||||||
{
|
{
|
||||||
OFstream str
|
OFstream str
|
||||||
@ -360,9 +386,9 @@ void timeVaryingMappedFixedValueFvPatchField<Type>::readSamplePoints()
|
|||||||
Pout<< "readSamplePoints :"
|
Pout<< "readSamplePoints :"
|
||||||
<< " Dumping face centres to " << str.name() << endl;
|
<< " 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;
|
str<< "v " << p.x() << ' ' << p.y() << ' ' << p.z() << nl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -380,9 +406,9 @@ void timeVaryingMappedFixedValueFvPatchField<Type>::readSamplePoints()
|
|||||||
Pout<< "readSamplePoints :"
|
Pout<< "readSamplePoints :"
|
||||||
<< " Dumping face centres to " << str.name() << endl;
|
<< " 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;
|
str<< "v " << p.x() << ' ' << p.y() << ' ' << p.z() << nl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user