[FLASH-USERS] MHD (8wave & USM): Refinement region boundaries - spurious waves when B field is oblique to jumps in refinement.

Klaus Weide klaus at flash.uchicago.edu
Thu May 12 13:59:04 EDT 2016


On Thu, 12 May 2016, Jonathan Thurgood wrote:

> 2)      Changing the prol_method.
> 
> This makes no difference as far as I can tell (not even a slight change in the current amplitudes). I wondered if that in of itself was not strange?
> 
> Is it possible that the that special prolongation is only being applied 
> when a block is refined to a lower level, but not when blocks of 
> different levels of refinement compute guard cell data, but rather only 
> some simple interpolation?

Hi Jonathan,

Your suspicion is correct that face variable interpolation may use
different methods between the two situations:
 (a) filling cells (here: cell faces) that have been newly created with data;
 (b) computing values for guard cell faces at refinement boundaries.
in particular, the runtime parameter 'prol_method' appears to affect only 
case (a).

This can be seen in the code:
 * Case (a) involves routine amr_prolong(mpi_amr_prolong.F90); the code 
   path for handling "BALSARA" prolongation looks like this:

   If ( prol_fc_dbz) Then
     .....
     Call amr_1blk_fc_prol_dbz(.....)
   .....

 * Case (b) involves routine mpi_amr_1blk_guardcell_c_to_f. Here, the 
   corresponding calls to amr_1blk_fc_prol_dbz() are commented out.
   (See also 1-line comments in that file if your are curious.)

I can't speak about reasons for this different treatment, but it is no
doubt based on experience (not mine) with applications.



> I did wonder if it might be worth changing NGUARD (thus, how many cells 
> the coarse side of the boundary needs to be interpolated into) but for 
> the life of me I couldn’t figure out where you actually change this in 
> the code (is it a setup argument? Flash.par didn’t seem to accept it). 
> Can someone please let me know how to do this?

NGUARD can be changed by putting a line like

  GUARDCELLS 6

in a Config file. Note that the file

  source/physics/Hydro/HydroMain/unsplit/Config

already contains such a line, and you have to avoid putting a
conflicting line in your own Config. See the following close to the
end of that Config:

  # Number of guard cells at each boundary
  USESETUPVARS SupportPpmUpwind
  IF SupportPpmUpwind
     GUARDCELLS 6 # the Unsplit Hydro/MHD solver requires 6 guard cells to support PPM Upwind!
  ELSE
     GUARDCELLS 4 # the Unsplit Hydro/MHD solver requires 4 guard cell layers!
  ENDIF

So to get 6 instead of 4 leayers of guard cells (and also enable the upwind variant of PPM),
add SupportPpmUpwind=True to your setup command.

Klaus


More information about the flash-users mailing list