Bugfix: error in losortStart calculation for solo cells
This commit is contained in:
parent
b76f64c30a
commit
990affa9ea
1 changed files with 24 additions and 6 deletions
|
@ -124,6 +124,12 @@ void Foam::lduAddressing::calcOwnerStart() const
|
||||||
|
|
||||||
nOwnStart = curOwn;
|
nOwnStart = curOwn;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// No neighbours
|
||||||
|
ownStart[i] = ownStart[i - 1];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,24 +143,30 @@ void Foam::lduAddressing::calcLosortStart() const
|
||||||
<< abort(FatalError);
|
<< abort(FatalError);
|
||||||
}
|
}
|
||||||
|
|
||||||
losortStartPtr_ = new labelList(size() + 1, 0);
|
const labelList& nbr = upperAddr();
|
||||||
|
|
||||||
|
losortStartPtr_ = new labelList(size() + 1, nbr.size());
|
||||||
|
|
||||||
labelList& lsrtStart = *losortStartPtr_;
|
labelList& lsrtStart = *losortStartPtr_;
|
||||||
|
|
||||||
const labelList& nbr = upperAddr();
|
|
||||||
|
|
||||||
const labelList& lsrt = losortAddr();
|
const labelList& lsrt = losortAddr();
|
||||||
|
|
||||||
// Set up first lookup by hand
|
// Set up first lookup by hand
|
||||||
lsrtStart[0] = 0;
|
lsrtStart[0] = 0;
|
||||||
label nLsrtStart = 0;
|
|
||||||
label i = 0;
|
|
||||||
|
|
||||||
|
// Record current neighbour as seen from the (sorted) losort face lookup
|
||||||
|
label nLsrtStart = 0;
|
||||||
|
|
||||||
|
// Start filling losort table form 1
|
||||||
|
label i = 1;
|
||||||
|
|
||||||
|
// Go through losort face ordering
|
||||||
forAll (lsrt, faceI)
|
forAll (lsrt, faceI)
|
||||||
{
|
{
|
||||||
// Get neighbour
|
// Get neighbour: Because of losort, they will come in increasing order
|
||||||
const label curNbr = nbr[lsrt[faceI]];
|
const label curNbr = nbr[lsrt[faceI]];
|
||||||
|
|
||||||
|
// If nbr is greater than the
|
||||||
if (curNbr > nLsrtStart)
|
if (curNbr > nLsrtStart)
|
||||||
{
|
{
|
||||||
while (i <= curNbr)
|
while (i <= curNbr)
|
||||||
|
@ -164,6 +176,12 @@ void Foam::lduAddressing::calcLosortStart() const
|
||||||
|
|
||||||
nLsrtStart = curNbr;
|
nLsrtStart = curNbr;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// No owners
|
||||||
|
lsrtStart[i] = lsrtStart[i - 1];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set up last lookup by hand
|
// Set up last lookup by hand
|
||||||
|
|
Reference in a new issue