# [solids4Foam] problem in Aitken and IQILNS algorithm

 Register Blogs Members List Search Today's Posts Mark Forums Read

January 10, 2020, 00:55
problem in Aitken and IQILNS algorithm
#1
Senior Member

Hojatollah Gholami
Join Date: Jan 2019
Posts: 140
Rep Power: 4
Dear Foamer
In solids4Foam, in Aitken and IQILNS algorithm, after three iteration, we have
Quote:
 forAll(fluid().globalPatches(), i) { aitkenRelaxationFactors_[i] = -aitkenRelaxationFactors_[i] *( sum ( residualsPrev()[i] & (residuals()[i] - residualsPrev()[i]) ) /( sum ( (residuals()[i] - residualsPrev()[i]) & (residuals()[i] - residualsPrev()[i]) ) ) );
In multi Interfaces case, I have problem after three iteration. the solver give floating point that seen due to above part of code. As the solver try to divide to
Quote:
 sum ( (residuals()[i] - residualsPrev()[i]) & (residuals()[i] - residualsPrev()[i]) )
the floating point occurs. Why we sure this part is always nonZero?
may need to add "VSmall" to this part to avoid floating point?

January 12, 2020, 09:17
#2
Senior Member

Hojatollah Gholami
Join Date: Jan 2019
Posts: 140
Rep Power: 4
I add VSMALL in AitkenCouplingInterface as:
Quote:
 forAll(fluid().globalPatches(), i) { aitkenRelaxationFactors_[i] = -aitkenRelaxationFactors_[i] *( sum ( residualsPrev()[i] & (residuals()[i] - residualsPrev()[i]) ) /( VSMALL + sum ( (residuals()[i] - residualsPrev()[i]) & (residuals()[i] - residualsPrev()[i]) ) ) );