anchor.diff:      apply_pressure()    // -1/ρ∇p
       printfn "Cleaning up grid."
       Grid.cleanup (fun () ->
  -      printfn "Extrapolating fluid velocities into surroundings."
  +      printfn "  Cleanup: Extrapolating fluid velocities into surroundings."
         extrapolate_velocities ()
  -      printfn "Setting solid cell velocities to zero."
  +      printfn "  Cleanup: Setting solid cell velocities to zero."
         zero_solid_velocities()
       )
       printfn "Moving markers."
  
positive.code:                   set m { c with layer = previous_layer_count }
                  ) nonfluid
  
    let zero_solid_velocities () =
      // set velocities of solid cells to zero.
      let solids = Grid.filter_values Grid.is_solid
      Seq.iter (fun (m: Coord) ->
                let neighbors = m.neighbors ()
                for (_, neighbor) in neighbors do
                  match get neighbor with
                    | Some c when is_not_solid c -> set neighbor { c with velocity = Vector3d() }
                    | _ -> ()
                ) solids
  
  
negative.code:   let advance () =
      printfn "Moving simulation forward with time step %A." Constants.time_step
      Grid.setup (fun () ->
        printfn "  Setup: Updating fluid markers."
        update_fluid_markers ()
        printfn "  Setup: Creating air buffer."
        create_air_buffer ()
      )
      printfn "Applying convection."
  