CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Running, Solving & CFD (
-   -   FOAM FATAL ERROR Maximum number of iterations exceeded (

liugx212 July 5, 2006 10:04

Hi all, I met the error as
Hi all,

I met the error as follows when I run buoyantFoam case after I add the Sp() function as my source term in rhoEn. Could anybody help me this matter?

Thanks so much.

The error is:
--> FOAM FATAL ERROR : Maximum number of iterations exceeded

From function specieThermo<thermo>::T(scalar f, scalar T0, scalar (specieThermo<thermo>::*F)(const scalar) const, scalar (specieThermo<thermo>::*dFdT)(const scalar) const) const
in file /home/liu/OpenFOAM/OpenFOAM-1.2/src/thermophysicalModels/specie/lnInclude/specie ThermoI.H at line 83.

FOAM aborting

mss February 13, 2007 04:11

Hi Guoxiang, I have the sam
Hi Guoxiang,

I have the same problem, how did u solve it?


dmoroian February 13, 2007 05:55

My guess, is that your source
My guess, is that your source term is triggering a divergent solution, which increases continuously the temperature. Once your T0 goes too high (I am not sure, but something like 5000K is the limit of the implemented thermodynamic properties) you get the error. What you can do very fast, is to modify the maxIter_ from 100 to something larger. Another thing is to modify the tolerance tol_ from 1.0e-4 to something higher (1.0e-3 or so), but this is not a good advice.

If you really need such high temperatures, like Rita, then I think you have to implement yourself the polynomials for the thermodynamic properties of your fluid.


cesarbz February 13, 2007 15:48

Dragos, In which file is th

In which file is the maxIter_ value ?... sometimes I think it's necessary increase the maximum of iteration number.

dmoroian February 14, 2007 04:46

Hi Cesar, grep -r maxIter_
Hi Cesar,

grep -r maxIter_ OpenFOAM/OpenFOAM-1.3/src/thermophysicalModels/specie

lnInclude/specieThermo.C:const int specieThermo<thermo>::maxIter_ = 100;
lnInclude/specieThermo.H: static const int maxIter_;
lnInclude/specieThermoI.H: if (iter++ > maxIter_)
thermo/specieThermo/specieThermo.C:const int specieThermo<thermo>::maxIter_ = 100;
thermo/specieThermo/specieThermo.H: static const int maxIter_;
thermo/specieThermo/specieThermoI.H: if (iter++ > maxIter_)

So, you can change the value in: specieThermo.C
It might be a bit different in version 1.2, as you have, but it should be simmilar.
But I suggest to have a check for the residuals first. If they grow, than you have a divergent solution, and increasing the maxIter_ will not help.


mss February 20, 2007 08:28

Hej Dragos, Could u give me
Hej Dragos,

Could u give me some hint about implemention the polynomials for the thermodynamic properties of my fluid?

I'm using Buoyancy case for Argon gas with teperature from 300 K upto 20 000K:
Name Argon
nMoles 1.0
molecularWeight 39.948
deltaH 1.0499e+05
viscosity 3.4079e-5
Pr 0.65

Thank u so much,

dmoroian February 20, 2007 11:17

Hi Rita, I'm not too much of
Hi Rita,
I'm not too much of help here. You can take a look in the OpenFOAM/OpenFOAM-1.3/src/thermophysicalModels for details.
Though, one sugestion I can make: try to use janafThermo instead of hConstThermo, if you have access to janaf tables.


mss February 20, 2007 11:39

Hi Dragos, I have looked in
Hi Dragos,

I have looked in it before. It didn't help to much. I'm not familiar with programming in OpenFOAM.
I can't understand where here is introduced the limit of temperature.

Do you have any suggestions?

thank u,

Shoonya January 17, 2010 11:35

Maximum number of iterations exceeded
Hi same thing I came across too.....

This problem came when I was using the number of interval more than 150 or so, in gambit, the exported mesh to OpenFoam was showing that error message i. e ..Maximum number of iterations exceeded..bla bla.......
before this it was running upto clock time 5 or 6 and than the error message. If I change the mesh intervals, the clock time of getting that massage had been changing accordingly. When I change the mesh intervals in gambit in 100 it worked i.e upto requried time ( ..which I had set in controlDict .....

Conclusion : change (decrease) the mess interval count in gambit. the exported mesh shall let u find the way....


srahul July 16, 2013 07:30

I was able to solve this problem by using 1st order scheme for temporal discretization

yash.aesi August 25, 2013 08:17

error of maximum no of iteration exceeded ..
helo ,
i got the same error of maximum no of iteration exceeded as posted above by many . i tried to solve it by changing residuel, time step etc whatever is suggested above but still m getting the same error . can anybody plz suggust me whr i am wrong ??? thanks in advance .(i am doin my simulation in rhopimple solver )

srahul August 25, 2013 10:48


I suppose you might be using second order schemes for temporal discretization, I had this error with 2nd order. When I switched to 1st order (euler) the error never popped up.

prameelar March 4, 2014 11:11

Hello Rahul,

I am using chtMultiRegionSimpleFoam and facing the same issue. I have tried changing ddtScheme to "Euler" which is first order implicit scheme. Could you please guide me if I need to change anything else?

srahul March 5, 2014 01:37


For me it worked fine only by changing to euler, however I recently changed newton solver to brent solver for temperature calculation and now it works completely fine.


michu July 7, 2015 21:03

2 Attachment(s)

I am also currently having that problem, picture attached below. I have changed the script in thermo.C for the max iterations to a much larger number. I cannot find the specieThermo.C script though. I also have increased the tolerance in the thermo.C script. I believe my script is in Euler form, as it states in the fvSchemes folder. (Is that where I need to change it to Euler or is there another thing I'm missing?) I am also using the function: sonicFoam. As a side note, even when I changed the max iterations and tolerance numbers in the thermo.C script, the program still ended at the exact same time: 2.67835e-05 and produced the same error message. Can anyone help me fix my error?

Thank you so much,

srahul July 8, 2015 05:34

Hi Michu,

You can find the the script in here

In this file Newton solver (Line no. 41 - 88) is utilized to calculate the T. I implemented brent solver and now that problem is solved.

michu July 8, 2015 06:32

Hello srahul,

Thank you for responding and helping. I am still a little confused.

Previously I changed the ThermoI.H script through the thermophysical Models/specie/lnInclude but when I changed the script in that directory, somehow the script ThermoI.H in the thermophysicalModels/specie/thermo/thermo directory also changed. (Just something weird I noticed).

When I changed line 64: if (iter++ > maxIter_) to this: if (iter++ > 100000000000000000000)
the program still provided the problem shown in my image above.

My coding is a little rusty so sorry if this seems simple, but I thought the problem is the maximum iterations. Do I also have to change line 80: } while (mag(Tnew - Test) > Ttol); in order to fix this problem? Is there something else I should also change?

Thank you for your help,

michu August 7, 2015 03:22

Hi all,

When you make a change in the scripts, do you have to re-load openfoam or something for the changes in the script to take place?

Like if I changed the max temperature from 100 to 100000 in the script. Will that automatically change the way sonicFoam works, or will I have to do something like click a button that says apply update?

Thank you,

afrotimy October 28, 2015 16:09

Response to Max Iterations Exceeded
I had this problem also using RhoCentralFoam and this were my remedial options:-

1. Switched ON adjustableTimeStep in the controlDict and choose maxCo as preferred.

2. Reduced the time-Step more with adjustableTImeStep =OFF;

The problem was resolved..

henryk42 November 27, 2015 22:15


I've been chasing the same problem for a while and found it popping up with different solvers, different circumstances.
I get the "maximum number of iteration exceeded" error when running constant transport model. When I switch to Suderland, I get a different error but also called from thermo::calculate.
The function that triggers the "maximum number of iteration exceeded" error calculates the temperature field given the value of a thermodynamic function and its derivative vrt temperature using Newton formula.
The thing is, I'm using epsiThermo model with a perfect gas, that means the internal energy, e, is temperature times Cv, the function is linear and the Newton algorithm should get it in one iteration.

Something is wrong here,

All times are GMT -4. The time now is 17:10.