Changes between Version 5 and Version 6 of AstroBearAmr


Ignore:
Timestamp:
05/20/11 11:28:34 (14 years ago)
Author:
Brandon Shroyer
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • AstroBearAmr

    v5 v6  
    9595== Round 2:  Refined Bookkeeping and Elliptic Solvers ==
    9696
    97 Now that we have constructed a simple AMR routine, we will add a few routines to improve MHD calculations and simplify AMR tree management.  We will also add the elliptic solver step to the code, expanding the capabilities of our AMR routine.
     97Now that we have constructed a simple AMR routine, we will add a few routines to improve MHD calculations and simplify AMR tree management.  We will also add sink particles and the elliptic solver step to the code, expanding the capabilities of our AMR routine.
    9898
    9999{{{
     
    138138END SUBROUTINE AMR
    139139}}}
    140 * !ParticleUpdate - If there are sink particles then we update the particles here
    141 * Elliptic - If there are elliptic equations to solve we solve them here
    142 * !PrintAdvance - Just prints the 'Advancing level n ...' line to standard out
    143 * !ProlongationFixups - It is better to complete the prolongation of the aux fields after receiving overlaps.  This guarantees child grids have divergence free fields consistent with both their neighbors and their parents.
    144 * !ChildMaskOverlaps - This sets !ChildMask to 0 for ghost cells that are refined by neighbors
    145 * !UpdateChildMask - This sets !ChildMask to 1 for cells that are refined by children and sets ChildMask to NEIGHBOR_CHILD for cells that are refined by neighbor children
    146 * !RestrictionFixups - This updates cell centered representations of aux fields after receiving restricted data from children
    147 * !AfterFixups - This allows for user defined routines to be applied after a grid has been fully updated.
    148 
    149 
    150 = Dealing with !MaxLevel =
     140* '''{{{ParticleUpdate(n)}}}''' -- If there are sink particles then we update the particles here.
     141* '''{{{Elliptic(n)}}}''' -- If elliptic equations are being used, then the elliptic step is performed here.
     142* '''{{{PrintAdvance(n)}}}''' -- Just prints the 'Advancing level n ...' line to the standard output ({{{stdout}}}).  This routine has two collective communications in it, so it can be a bottleneck on a cluster with slow network connections between its nodes.
     143* '''{{{ProlongationFixups(n)}}}''' -- It is better to complete the prolongation of the aux fields after receiving overlaps.  This guarantees that child grids have divergence-free fields consistent with both their neighbors and their parents.
     144* '''{{{ChildMaskOverlaps(n)}}}''' -- This sets the {{{ChildMask}}} array values to 0 for ghost cells that are refined by neighbors.
     145* '''{{{UpdateChildMask (n)}}}'''-- This sets the {{{ChildMask}}} array values to 1 in  grid cells that are refined by the grid's own children.  This also sets {{{ChildMask}}} to {{{NEIGHBOR_CHILD}}} in grid cells that are refined by a neighbor's children.
     146* '''{{{RestrictionFixups(n)}}}''' -- This updates cell-centered representations of {{{aux}}} fields after receiving restricted data from children.
     147* '''{{{AfterFixups(n)}}}''' -- This allows for user-defined routines to be applied after a grid has been fully updated.  This is not to be confused with the {{{AfterStep()}}} routine, which is executed after the hyperbolic step is completed.
     148
     149[[BR]]
     150== Dealing with !MaxLevel ==
    151151Up to this point we've assumed we are on an intermediate level of the AMR tree. What is different if we are on the highest level !MaxLevel?
    152152