Page 1 of 1

TemperateIce stability issues

Posted: 09 Jun 2015, 16:19
by joeatodd
Hi all,

I'm encountering some strange convergence issues in the temperature solver in a coupled NS/Heat equation + mesh update spinup run.

Although my simulation is transient, I'm attempting to solve the steady state temperature equation by specifying:

Code: Select all

Steady State Condition = Real 1.0 
in the TemperateIce solver section.

Interestingly, this seems to work (though it takes a while to converge) if I switch off the Mesh Update solver, but not if it is on. The strange part is, if I specify in the body force:

Code: Select all

 Mesh Update = Real 0.0 
such that I get a "solution trivially zero" (i.e. Mesh Update solver doing nothing), I still get a breakdown error...

This is really confusing me. It seems as if MeshSolve.F90 is doing something, aside from displacing the mesh, which is messing up the temperature solution on the following timestep.

A final piece of the puzzle: If I turn off:

Code: Select all

 Temp Load = Variable Velocity 1
     Real Procedure  "ElmerIceUSF" "getFrictionLoads"
then it seems to behave, even with the mesh update.

If anyone has any ideas what might be causing this, I'd be very grateful!

Re: TemperateIce stability issues

Posted: 09 Jun 2015, 18:22
by raback

In HeatSolve there is something like:

IF ( ALL(MU==0) ) C1 = 0.0D0

Here MU is the mesh velocity. This is rather dirty test and maybe you have some noise that does not trigger this condition and hence you have still convection accounted i.e. C1=1.0. Now of course this should not affect but it could still introduce some discontinuity in the way the solution is carried out. You could try to see what the value of C1 is and enforce it to zero. If the problem is located then some further anylysis might be needed.


Re: TemperateIce stability issues

Posted: 10 Jun 2015, 13:36
by joeatodd
Hey Peter,

Thanks for getting back to me.

I tried modifying the temperature solver to set

Code: Select all

 MeshVelocity = 0.0 
internally when running in steady state but this didn't make a difference.

I've tracked the problem down to the recomputation (I think) of the stabilization parameters within DisplaceMesh. I modified my local MeshSolve.F90 to pass StabFlag=.FALSE. to DisplaceMesh, and this now the steady state temperature and mesh update solvers play nicely together.

I don't know enough about stabilization methods to know whether this is a bug or expected behaviour, or what the consequences of not recomputing the stabilization parameters in mesh update are.