[FLASH-BUGS] more FLASH issues
Sean Matt
matt at physics.mcmaster.ca
Mon Jan 27 16:32:43 CST 2003
Hello again,
Since the release of FLASH2.2, we have noted a few relatively
minor issues. I'm guessing that you are already aware of at least some of
them, but I'll list here the ones we've noticed. Please let us know if we
can help in any way, or if you would like further information.
-Sean
1) For 3D data (e.g., 3d briowu), the fidlr2 IDL routines (called by
xflash) have a few problems:
a) xflash doesn't show blocks properly for 3d data. This would
be useful, and we think it could be done using the existing tree
informaion. We've gotten a partial fix going:
In "xplot3d_amr_new.pro" (line 772) we've added:
if options.blocks then draw_blocks, color('ltblue'), $
TREE = tree, PARAMETERS= params, $
ORIENTATION = problem.orientation
instead of the originally commented out line (which crashes xflash
if simply uncommented):
; if options.blocks then draw_blocks, ltblue
our fix, at least, allows some blocks to be drawn on the 2d slice
of 3d data in the xflash plot window. But, it apparently draws
the maximum refinement level blocks, or something. Whatever it is
drawing is useful, but it doesn't change when a different 2d slice
is plotted or a slice in a different plane.
We assume that you are aware of this issue. Is it being worked
on? Should we try to get it working ourselves?
b) xflash also doesn't allow a "1-d slice" to be plotted. Again, his
would be useful (as it is in 2d), and we think it could be done
relatively easily.
2) The criterion for outputting plot files (and checkpoint files) works
most of the time, but it can produce undesired (by us) effects in general.
In source/io/output.F90 (around line 338), the output criterion is
if ((mod(time,tplot) < mod(time-2*dt,tplot)) .or. &
(redshift <= zpnext)) then
This doesn't work properly if the timestep (dt) is comparable to the
output time interval (tplot). In that case, plot file outputs can be
skipped completely. In our own source tree, we've replaced that criterion
with
if ((time >= tplot*float(PTNumber)) .or. &
(redshift <= zpnext)) then
This way, even if dt >= tplot, a plot file will be written for each dt.
Assuming the dt later becomes less than tplot, the correct number of plot
files will always be written.
A similar argument can be made for the checkpoint file output criterion
(near line 269).
3) In the logfile ("<problem>.log"), we noticed that, for each timestep,
the total simulation time equals the time from the previous timestep plus
TWO times the previous dt. We are confused about this factor of TWO.
In the users guide (p. 48), it states that "the default time update method
is to call each physics module's update routine for two equal
timesteps..." This (plus an inspection of
/source/driver/time_dep/evolve.F90) explains the logfile output.
However, we don't understand the justification for this. Why not compute
the optimal dt for each timestep? It seems that using the same dt twice
each time could potentially result in numerical instabilities. Are we
missing something?
More information about the flash-bugs
mailing list