Interpolation Verification

After seeing strange behavior - especially wrt pressure I decided to check that the interpolation methods used in prolongation were accurate. It is a little difficult to visualize this but it is possible.

  • Start a run in fixed grid.
  • Select the frame you want to see interpolated.
  • Set the restart_frame to be that frame in global.data
  • Set the final frame to be 1 frame later.
  • Now the trick is to get the time between those two frames to be very small, so that there is no temporal development. To do this…
    • Get the time stamp of the restart frame (restart_time = restart_frame/final_frame*final_time) assuming start_time was originally 0
    • Set the start_time to be restart_time-(restart_frame*epsilon)
    • Set the final_time to be restart_time+epsilon
  • Then increase maxlevel to whatever desired level and set qtolerances to trigger refinement.
  • Then restart the simulation
  • It should take one root level step and then output a single frame. When viewed it should show the interpolated values.

Here are images from an example where 4 levels of refinement were added to a BE sphere profile.

Constant (0) MinMod (1) SuperBee (2)
VanLeer (3) Monotone Centered (4) Parabolic* (5)
Linear (6)

The "plateaus" in all but the linear and the parabolic are due to the slope being limited so as not to introduce any new extrema. The Parabolic does not conserve the total quantity and is only used for the gas potential (and time deriv). The 'linear' was just added but could likely have issues near shocks since it is not limited. But all seem to be working 'correctly'. There is a shortcoming in that each limiter is considered in each direction independently. A more multidimensional reconstruction that used a multidimensional limiter would ease the plateaus from persisting along the coordinate directions.

Attachments (7)

Download all attachments as: .zip

Comments

No comments.