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_ // Transfer back cumulative fringe holes into the fringeHolesPtr_
fringeHolesPtr_->transfer(cumFringeHoles); fringeHolesPtr_->transfer(cumFringeHoles);

View file

@ -211,8 +211,23 @@ public:
const donorAcceptor& daPair const donorAcceptor& daPair
) const ) const
{ {
// Note: do not check whether a donor is valid (has been found) // Check whether the donor is valid for this pair
// for this acceptor. 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 // Get donor suitability function in acceptor/donor pair
const scalar& dsfAcceptor = const scalar& dsfAcceptor =

View file

@ -55,8 +55,8 @@ Foam::donorSuitability::noSuitability::noSuitability
const scalarField localDsf(oversetFringeAlgorithm.mesh().nCells(), 0); const scalarField localDsf(oversetFringeAlgorithm.mesh().nCells(), 0);
this->combineDonorSuitabilityFunction(localDsf); this->combineDonorSuitabilityFunction(localDsf);
// Set threshold to dummy large value // Set threshold to SMALL such that all the pairs become suitable
this->threshold() = GREAT; 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_ // Transfer back cumulative fringe holes into the fringeHolesPtr_
fringeHolesPtr_->transfer(cumFringeHoles); fringeHolesPtr_->transfer(cumFringeHoles);

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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