Update to noSuitability DSF and tutorials. Author: Vuko Vukcevic. Merge: Hrvoje Jasak.

This commit is contained in:
Hrvoje Jasak 2018-07-30 19:35:36 +01:00
commit b813e11b75
10 changed files with 137 additions and 95 deletions

View file

@ -864,6 +864,15 @@ bool Foam::adaptiveOverlapFringe::updateIteration
}
}
if (newAcceptors.empty())
{
FatalErrorIn("adaptiveOverlapFringe::updateIteration()")
<< "Did not find any new candidate acceptors."
<< nl
<< "Please review your overlap fringe assembly settings."
<< abort(FatalError);
}
// Transfer back cumulative fringe holes into the fringeHolesPtr_
fringeHolesPtr_->transfer(cumFringeHoles);

View file

@ -211,8 +211,23 @@ public:
const donorAcceptor& daPair
) const
{
// Note: do not check whether a donor is valid (has been found)
// for this acceptor.
// Check whether the donor is valid for this pair
if (!daPair.donorFound())
{
FatalErrorIn
(
"scalar donorSuitability::suitabilityFraction"
"\n("
"\n const donorAcceptor& daPair"
"\n) const"
) << "Acceptor: " << daPair.acceptorCell()
<< " on processor: " << daPair.acceptorProcNo()
<< " did not find donor candidate."
<< nl
<< "Please review your fringe assembly settings"
<< " (or try using adaptiveOverlap fringe algorithm)."
<< abort(FatalError);
}
// Get donor suitability function in acceptor/donor pair
const scalar& dsfAcceptor =

View file

@ -55,8 +55,8 @@ Foam::donorSuitability::noSuitability::noSuitability
const scalarField localDsf(oversetFringeAlgorithm.mesh().nCells(), 0);
this->combineDonorSuitabilityFunction(localDsf);
// Set threshold to dummy large value
this->threshold() = GREAT;
// Set threshold to SMALL such that all the pairs become suitable
this->threshold() = SMALL;
}

View file

@ -846,6 +846,15 @@ bool Foam::overlapFringe::updateIteration
}
}
if (newAcceptors.empty())
{
FatalErrorIn("overlapFringe::updateIteration()")
<< "Did not find any new candidate acceptors."
<< nl
<< "Please review your overlap fringe assembly settings."
<< abort(FatalError);
}
// Transfer back cumulative fringe holes into the fringeHolesPtr_
fringeHolesPtr_->transfer(cumFringeHoles);

View file

@ -40,7 +40,7 @@ regions
donorSuitability
{
type cellVolumes;
threshold 0.99;
threshold 0.2;
}
}
}

View file

@ -40,7 +40,7 @@ regions
donorSuitability
{
type cellVolumes;
threshold 0.99;
threshold 0.2;
}
}
}

View file

@ -49,10 +49,10 @@ regions
donorSuitability
{
// Donor/acceptor pair must have cell volumes that differ not
// more than 60% of the larger cell
// Donor/acceptor pair must have cell volumes that are at least
// 40% within each other
type cellVolumes;
threshold 0.6;
threshold 0.4;
}
}
}
@ -79,10 +79,10 @@ regions
donorSuitability
{
// Donor/acceptor pair must have cell volumes that differ not
// more than 60% of the larger cell
// Donor/acceptor pair must have cell volumes that are at least
// 50% within each other
type cellVolumes;
threshold 0.6;
threshold 0.5;
}
}
}
@ -109,8 +109,8 @@ regions
donorSuitability
{
// Donor/acceptor pair must have cell volumes that differ not
// more than 40% of the larger cell
// Donor/acceptor pair must have cell volumes that are at least
// 40% within each other
type cellVolumes;
threshold 0.4;
}

View file

@ -35,25 +35,26 @@ regions
fringe
{
type overlap;
type adaptiveOverlap;
// Optional list of patches to start the fringe minimisation from
initPatchNames ();
// Fraction of minimum allowable suitable pairs respecting the
// chosen donor suitability criteria
suitablePairFraction 0.8;
// Number of iterations for adaptive overlap search
specifiedIterationsNumber 12; // 5 by default
// Whether to start fringe assembly from the previous set of
// acceptors (for moving mesh cases)
cacheFringe no;
// Whether to try additional iterations
additionalIterations yes; // yes by default
// Orphan suitability
orphanSuitability 0; // 1 by default
donorSuitability
{
// Donor/acceptor pair must have cell volumes that differ not
// more than 60% of the larger cell
// more than 20% of the larger cell
type cellVolumes;
threshold 0.6;
threshold 0.2;
}
}
}
@ -65,23 +66,24 @@ regions
fringe
{
type overlap;
type adaptiveOverlap;
// Optional list of patches to start the fringe minimisation from
initPatchNames (OversetMiddle);
// Fraction of minimum allowable suitable pairs respecting the
// chosen donor suitability criteria
suitablePairFraction 0.9;
// Number of iterations for adaptive overlap search
specifiedIterationsNumber 5; // 5 by default
// Whether to start fringe assembly from the previous set of
// acceptors (for moving mesh cases)
cacheFringe no;
// Whether to try additional iterations
additionalIterations yes; // yes by default
// Orphan suitability
orphanSuitability 0; // 1 by default
donorSuitability
{
// Donor/acceptor pair must have cell volumes that differ not
// more than 60% of the larger cell
// Donor/acceptor pair must have cell volumes that are at least
// 60% within each other
type cellVolumes;
threshold 0.6;
}
@ -95,23 +97,24 @@ regions
fringe
{
type overlap;
type adaptiveOverlap;
// Optional list of patches to start the fringe minimisation from
initPatchNames (OversetFront);
// Fraction of minimum allowable suitable pairs respecting the
// chosen donor suitability criteria
suitablePairFraction 0.8;
// Number of iterations for adaptive overlap search
specifiedIterationsNumber 5; // 5 by default
// Whether to start fringe assembly from the previous set of
// acceptors (for moving mesh cases)
cacheFringe no;
// Whether to try additional iterations
additionalIterations yes; // yes by default
// Orphan suitability
orphanSuitability 0; // 1 by default
donorSuitability
{
// Donor/acceptor pair must have cell volumes that differ not
// more than 40% of the larger cell
// Donor/acceptor pair must have cell volumes that are at least
// 40% within each other
type cellVolumes;
threshold 0.4;
}

View file

@ -35,25 +35,26 @@ regions
fringe
{
type overlap;
type adaptiveOverlap;
// Optional list of patches to start the fringe minimisation from
initPatchNames ();
// Fraction of minimum allowable suitable pairs respecting the
// chosen donor suitability criteria
suitablePairFraction 0.8;
// Number of iterations for adaptive overlap search
specifiedIterationsNumber 12; // 5 by default
// Whether to start fringe assembly from the previous set of
// acceptors (for moving mesh cases)
cacheFringe no;
// Whether to try additional iterations
additionalIterations yes; // yes by default
// Orphan suitability
orphanSuitability 0; // 1 by default
donorSuitability
{
// Donor/acceptor pair must have cell volumes that differ not
// more than 60% of the larger cell
// more than 20% of the larger cell
type cellVolumes;
threshold 0.6;
threshold 0.2;
}
}
}
@ -65,23 +66,24 @@ regions
fringe
{
type overlap;
type adaptiveOverlap;
// Optional list of patches to start the fringe minimisation from
initPatchNames (OversetMiddle);
// Fraction of minimum allowable suitable pairs respecting the
// chosen donor suitability criteria
suitablePairFraction 0.9;
// Number of iterations for adaptive overlap search
specifiedIterationsNumber 5; // 5 by default
// Whether to start fringe assembly from the previous set of
// acceptors (for moving mesh cases)
cacheFringe no;
// Whether to try additional iterations
additionalIterations yes; // yes by default
// Orphan suitability
orphanSuitability 0; // 1 by default
donorSuitability
{
// Donor/acceptor pair must have cell volumes that differ not
// more than 60% of the larger cell
// Donor/acceptor pair must have cell volumes that are at least
// 60% within each other
type cellVolumes;
threshold 0.6;
}
@ -95,23 +97,24 @@ regions
fringe
{
type overlap;
type adaptiveOverlap;
// Optional list of patches to start the fringe minimisation from
initPatchNames (OversetFront);
// Fraction of minimum allowable suitable pairs respecting the
// chosen donor suitability criteria
suitablePairFraction 0.8;
// Number of iterations for adaptive overlap search
specifiedIterationsNumber 5; // 5 by default
// Whether to start fringe assembly from the previous set of
// acceptors (for moving mesh cases)
cacheFringe no;
// Whether to try additional iterations
additionalIterations yes; // yes by default
// Orphan suitability
orphanSuitability 0; // 1 by default
donorSuitability
{
// Donor/acceptor pair must have cell volumes that differ not
// more than 40% of the larger cell
// Donor/acceptor pair must have cell volumes that are at least
// 40% within each other
type cellVolumes;
threshold 0.4;
}

View file

@ -35,25 +35,26 @@ regions
fringe
{
type overlap;
type adaptiveOverlap;
// Optional list of patches to start the fringe minimisation from
initPatchNames ();
// Fraction of minimum allowable suitable pairs respecting the
// chosen donor suitability criteria
suitablePairFraction 0.8;
// Number of iterations for adaptive overlap search
specifiedIterationsNumber 12; // 5 by default
// Whether to start fringe assembly from the previous set of
// acceptors (for moving mesh cases)
cacheFringe no;
// Whether to try additional iterations
additionalIterations yes; // yes by default
// Orphan suitability
orphanSuitability 0; // 1 by default
donorSuitability
{
// Donor/acceptor pair must have cell volumes that differ not
// more than 60% of the larger cell
// more than 20% of the larger cell
type cellVolumes;
threshold 0.6;
threshold 0.2;
}
}
}
@ -65,23 +66,24 @@ regions
fringe
{
type overlap;
type adaptiveOverlap;
// Optional list of patches to start the fringe minimisation from
initPatchNames (OversetMiddle);
// Fraction of minimum allowable suitable pairs respecting the
// chosen donor suitability criteria
suitablePairFraction 0.9;
// Number of iterations for adaptive overlap search
specifiedIterationsNumber 5; // 5 by default
// Whether to start fringe assembly from the previous set of
// acceptors (for moving mesh cases)
cacheFringe no;
// Whether to try additional iterations
additionalIterations yes; // yes by default
// Orphan suitability
orphanSuitability 0; // 1 by default
donorSuitability
{
// Donor/acceptor pair must have cell volumes that differ not
// more than 60% of the larger cell
// Donor/acceptor pair must have cell volumes that are at least
// 60% within each other
type cellVolumes;
threshold 0.6;
}
@ -95,23 +97,24 @@ regions
fringe
{
type overlap;
type adaptiveOverlap;
// Optional list of patches to start the fringe minimisation from
initPatchNames (OversetFront);
// Fraction of minimum allowable suitable pairs respecting the
// chosen donor suitability criteria
suitablePairFraction 0.8;
// Number of iterations for adaptive overlap search
specifiedIterationsNumber 5; // 5 by default
// Whether to start fringe assembly from the previous set of
// acceptors (for moving mesh cases)
cacheFringe no;
// Whether to try additional iterations
additionalIterations yes; // yes by default
// Orphan suitability
orphanSuitability 0; // 1 by default
donorSuitability
{
// Donor/acceptor pair must have cell volumes that differ not
// more than 40% of the larger cell
// Donor/acceptor pair must have cell volumes that are at least
// 40% within each other
type cellVolumes;
threshold 0.4;
}