Advection solvers ================= The linear advection equation: .. math:: a_t + u a_x + v a_y = 0 provides a good basis for understanding the methods used for compressible hydrodynamics. Chapter 4 of the notes summarizes the numerical methods for advection that we implement in pyro. pyro has several solvers for linear advection, which solve the equation with different spatial and temporal integration schemes. ``advection`` solver -------------------- :py:mod:`pyro.advection` implements the directionally unsplit corner transport upwind algorithm :cite:`colella:1990` with piecewise linear reconstruction. This is an overall second-order accurate method, with timesteps restricted by .. math:: \Delta t < \min \left \{ \frac{\Delta x}{|u|}, \frac{\Delta y}{|v|} \right \} The parameters for this solver are: .. include:: advection_defaults.inc ``advection_fv4`` solver ------------------------ :py:mod:`pyro.advection_fv4` uses a fourth-order accurate finite-volume method with RK4 time integration, following the ideas in :cite:`mccorquodalecolella`. It can be thought of as a method-of-lines integration, and as such has a slightly more restrictive timestep: .. math:: \Delta t \lesssim \left [ \frac{|u|}{\Delta x} + \frac{|v|}{\Delta y} \right ]^{-1} The main complexity comes from needing to average the flux over the faces of the zones to achieve 4th order accuracy spatially. The parameters for this solver are: .. include:: advection_fv4_defaults.inc ``advection_nonuniform`` solver ------------------------------- :py:mod:`pyro.advection_nonuniform` models advection with a non-uniform velocity field. This is used to implement the slotted disk problem from :cite:`ZALESAK1979335`. The basic method is similar to the algorithm used by the main ``advection`` solver. The parameters for this solver are: .. include:: advection_nonuniform_defaults.inc ``advection_rk`` solver ----------------------- :py:mod:`pyro.advection_rk` uses a method of lines time-integration approach with piecewise linear spatial reconstruction for linear advection. This is overall second-order accurate, so it represents a simpler algorithm than the ``advection_fv4`` method (in particular, we can treat cell-centers and cell-averages as the same, to second order). The parameter for this solver are: .. include:: advection_rk_defaults.inc ``advection_weno`` solver ------------------------- :py:mod:`pyro.advection_weno` uses a WENO reconstruction and method of lines time-integration The main parameters that affect this solver are: .. include:: advection_weno_defaults.inc General ideas ------------- The main use for the advection solver is to understand how Godunov techniques work for hyperbolic problems. These same ideas will be used in the compressible and incompressible solvers. This video shows graphically how the basic advection algorithm works, consisting of reconstruction, evolution, and averaging steps: .. this comes from https://github.com/rtfd/readthedocs.org/issues/879 .. raw:: html