mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: AMI - added option to control area normailisation mode
The optional areaNormalisationMode entry determines how the area normalisation
is performed. Options are:
- `project`: tri face area dotted with patch face normal; same as v2212 (default)
- `mag`: tri face area magnitude (v2206 and earlier)
Example usage:
AMI1
{
type cyclicAMI;
...
areaNormalisationMode mag;
//areaNormalisationMode project;
}
This commit is contained in:
@ -40,6 +40,14 @@ namespace Foam
|
|||||||
defineTypeNameAndDebug(advancingFrontAMI, 0);
|
defineTypeNameAndDebug(advancingFrontAMI, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const Foam::Enum<Foam::advancingFrontAMI::areaNormalisationMode>
|
||||||
|
Foam::advancingFrontAMI::areaNormalisationModeNames_
|
||||||
|
{
|
||||||
|
{ areaNormalisationMode::project, "project" },
|
||||||
|
{ areaNormalisationMode::mag, "mag" },
|
||||||
|
};
|
||||||
|
|
||||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||||
|
|
||||||
void Foam::advancingFrontAMI::checkPatches() const
|
void Foam::advancingFrontAMI::checkPatches() const
|
||||||
@ -384,6 +392,11 @@ void Foam::advancingFrontAMI::triangulatePatch
|
|||||||
|
|
||||||
const DynamicList<face>& triFaces = tris[facei];
|
const DynamicList<face>& triFaces = tris[facei];
|
||||||
magSf[facei] = 0;
|
magSf[facei] = 0;
|
||||||
|
|
||||||
|
switch (areaNormalisationMode_)
|
||||||
|
{
|
||||||
|
case areaNormalisationMode::project:
|
||||||
|
{
|
||||||
for (const face& f : triFaces)
|
for (const face& f : triFaces)
|
||||||
{
|
{
|
||||||
magSf[facei] +=
|
magSf[facei] +=
|
||||||
@ -395,6 +408,23 @@ void Foam::advancingFrontAMI::triangulatePatch
|
|||||||
).areaNormal()
|
).areaNormal()
|
||||||
& faceNormals[facei];
|
& faceNormals[facei];
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case areaNormalisationMode::mag:
|
||||||
|
{
|
||||||
|
for (const face& f : triFaces)
|
||||||
|
{
|
||||||
|
magSf[facei] +=
|
||||||
|
triPointRef
|
||||||
|
(
|
||||||
|
points[f[0]],
|
||||||
|
points[f[1]],
|
||||||
|
points[f[2]]
|
||||||
|
).mag();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -447,8 +477,25 @@ Foam::advancingFrontAMI::advancingFrontAMI
|
|||||||
dict,
|
dict,
|
||||||
faceAreaIntersect::tmMesh
|
faceAreaIntersect::tmMesh
|
||||||
)
|
)
|
||||||
|
),
|
||||||
|
areaNormalisationMode_
|
||||||
|
(
|
||||||
|
areaNormalisationModeNames_.getOrDefault
|
||||||
|
(
|
||||||
|
"areaNormalisationMode",
|
||||||
|
dict,
|
||||||
|
areaNormalisationMode::project
|
||||||
)
|
)
|
||||||
{}
|
)
|
||||||
|
{
|
||||||
|
DebugInfo
|
||||||
|
<< "AMI: maxDistance2:" << maxDistance2_
|
||||||
|
<< " minCosAngle:" << minCosAngle_
|
||||||
|
<< " triMode:" << faceAreaIntersect::triangulationModeNames_[triMode_]
|
||||||
|
<< " areaNormalisationMode:"
|
||||||
|
<< areaNormalisationModeNames_[areaNormalisationMode_]
|
||||||
|
<< endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Foam::advancingFrontAMI::advancingFrontAMI
|
Foam::advancingFrontAMI::advancingFrontAMI
|
||||||
@ -470,7 +517,8 @@ Foam::advancingFrontAMI::advancingFrontAMI
|
|||||||
extendedTgtFaceIDs_(),
|
extendedTgtFaceIDs_(),
|
||||||
extendedTgtMapPtr_(nullptr),
|
extendedTgtMapPtr_(nullptr),
|
||||||
srcNonOverlap_(),
|
srcNonOverlap_(),
|
||||||
triMode_(triMode)
|
triMode_(triMode),
|
||||||
|
areaNormalisationMode_(areaNormalisationMode::project)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -487,7 +535,8 @@ Foam::advancingFrontAMI::advancingFrontAMI(const advancingFrontAMI& ami)
|
|||||||
extendedTgtFaceIDs_(),
|
extendedTgtFaceIDs_(),
|
||||||
extendedTgtMapPtr_(nullptr),
|
extendedTgtMapPtr_(nullptr),
|
||||||
srcNonOverlap_(),
|
srcNonOverlap_(),
|
||||||
triMode_(ami.triMode_)
|
triMode_(ami.triMode_),
|
||||||
|
areaNormalisationMode_(ami.areaNormalisationMode_)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -57,6 +57,17 @@ class advancingFrontAMI
|
|||||||
:
|
:
|
||||||
public AMIInterpolation
|
public AMIInterpolation
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Area normalisation mode
|
||||||
|
enum class areaNormalisationMode
|
||||||
|
{
|
||||||
|
project,
|
||||||
|
mag
|
||||||
|
};
|
||||||
|
|
||||||
|
static const Enum<areaNormalisationMode> areaNormalisationModeNames_;
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -143,6 +154,9 @@ protected:
|
|||||||
//- Face triangulation mode
|
//- Face triangulation mode
|
||||||
const faceAreaIntersect::triangulationMode triMode_;
|
const faceAreaIntersect::triangulationMode triMode_;
|
||||||
|
|
||||||
|
//- Area normalisation mode; default = project
|
||||||
|
areaNormalisationMode areaNormalisationMode_;
|
||||||
|
|
||||||
|
|
||||||
// Protected Member Functions
|
// Protected Member Functions
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user