// aitken acceleration
// update delta
aitkenDelta.storePrevIter();
aitkenDelta = (U - U.prevIter()) / aitkenInitialRes;
// update relaxation factor
if(iCorr == 0)
{
aitkenTheta = 0.01;
// if(mesh.relax(U.name()))
// {
// aitkenTheta = mesh.relaxationFactor(U.name());
// }
}
else
vectorField b = aitkenDelta.internalField() - aitkenDelta.prevIter().internalField();
// scalar sumMagB = gSum(mag(b));
scalar sumMagB = gSum(magSqr(b));
if(sumMagB < SMALL)
// Warning << "Aitken under-relaxation: denominator less then SMALL"
// << endl;
sumMagB += SMALL;
aitkenTheta = -aitkenTheta*
gSum(aitkenDelta.prevIter().internalField() & b)
/
sumMagB;
// correction to the latest U
U += aitkenTheta*aitkenDelta*aitkenInitialRes;