[FLASH-USERS] Problem with Diffuse module

Klaus Weide klaus at flash.uchicago.edu
Tue Nov 28 17:18:38 EST 2017


On Tue, 28 Nov 2017, ascenzi wrote:

> Nevertheless at a certain point the simulation stops after many warning
> messages like this
> 
> [gr_hypreSolve]: Nonconv./failure ierr=0, component=0, converged=F, |initial
> RHS|^2=1.5905+100, num_iterations=500, final_res_norm=5.58312351294
> 
> (similar to those of the older post Ernesto linked me)

You should make a plot at this point, to see what is going on.
> 
> then I had the following error message
> 
>  DRIVER_ABORT: [Diffuse]: computed dt is not positive! Aborting!
> 
>  Driver_abort called. See log file for details.
>  Error message is [Diffuse]: computed dt is not positive! Aborting!
>  Calling MPI_Abort() for shutdown in   2 seconds!
> 
> due to the fact that dt_diffuse dropped very fast (despite the fact that
> dt_diff_factor = 1.E30).

I would expect that you also see extremely small dt_hydro timesteps
at this point.

> Is it possibile that this is due to the fact that the temperature becomes too
> high (about 10^12 K)?

Yes, quite possible - is that a physically meaningful value?

It seems you are combining several tricky elements in your simulation:

1. user-defined boundary conditions (lots can go wrong here if not careful),
2. diffusion solve, with extreme values at a boundary,
3. user-defined conductivity,
4. spherical coordinates.

In your grid boundary condition, you should make sure that the guard cells
are filled in a thermodynamically consistent manner. Call Eos if
necessary.

How are you setting the boundary conditions for the diffusion solver?
Are they consistent with the grid boundary conditions used by Hydro etc.?

> Moreover a further question: is there a simple way to switch on the diffusion
> only after a user-defined time or switch it off in a specific region of the
> domain regardless to the value of the density in that region ?

As a function of time, yes. I assume you have already written a modified 
"Conductivity.F90" (and maybe "Conductivity_fullState.F90"). You can 
get the current simulation time (maybe by calling Driver_getSimTime),
and set the returned conductivity and/or diffusivity to 0 (or close)
to turn off conduction.

Klaus



More information about the flash-users mailing list