pyro.compressible_rk package#

A method-of-lines compressible hydrodynamics solver. Piecewise constant reconstruction is done in space and a Runge-Kutta time integration is used to advance the solutiion.

Subpackages#

Submodules#

pyro.compressible_rk.fluxes module#

This is a 2nd-order PLM method for a method-of-lines integration (i.e., no characteristic tracing).

We wish to solve

\[U_t + F^x_x + F^y_y = H\]

we want U_{i+1/2} – the interface values that are input to the Riemann problem through the faces for each zone.

Taylor expanding in space only yields:

                           dU
U          = U   + 0.5 dx  --
 i+1/2,j,L    i,j          dx
pyro.compressible_rk.fluxes.fluxes(my_data, rp, ivars, solid, tc)[source]#

unsplitFluxes returns the fluxes through the x and y interfaces by doing an unsplit reconstruction of the interface values and then solving the Riemann problem through all the interfaces at once

currently we assume a gamma-law EOS

Parameters:
my_dataCellCenterData2d object

The data object containing the grid and advective scalar that we are advecting.

rpRuntimeParameters object

The runtime parameters for the simulation

varsVariables object

The Variables object that tells us which indices refer to which variables

tcTimerCollection object

The timers we are using to profile

Returns:
outndarray, ndarray

The fluxes on the x- and y-interfaces

pyro.compressible_rk.simulation module#

class pyro.compressible_rk.simulation.Simulation(solver_name, problem_name, problem_func, rp, *, problem_finalize_func=None, problem_source_func=None, timers=None, data_class=<class 'pyro.mesh.patch.CellCenterData2d'>)[source]#

Bases: Simulation

The main simulation class for the method of lines compressible hydrodynamics solver

evolve()[source]#

Evolve the equations of compressible hydrodynamics through a timestep dt.

method_compute_timestep()[source]#

The timestep function computes the advective timestep (CFL) constraint. The CFL constraint says that information cannot propagate further than one zone per timestep.

We use the driver.cfl parameter to control what fraction of the CFL step we actually take.

substep(myd)[source]#

take a single substep in the RK timestepping starting with the conservative state defined as part of myd