The routine that integrates the quantities on all patches by a specified timestep is advanceHierarchy. It implements Runge-Kutta integration with information passed between hierarchy levels at each Runge-Kutta step. The user can choose the order of time-accuracy of the Runge-Kutta integrator and can supply the necessary array of increments for each sub-step. The timestep is determined through a Courant-Friedrichs-Lewy (CFL) condition. The patch with the minimum timestep based on this condition defines the timestep used for integration of the entire hierarchy.
The method is implemented using the Strategy object-oriented design pattern in which the integrator provides the algorithm and the strategy provides a set of virtual functions that plug into the integrator class. The user can interact with the class by explicitly defining the virtual functions contained in the strategy. See the Convection Diffusion example for a demonstration on use of these classes.