The pyro diffusion solver. This implements second-order implicit diffusion using Crank-Nicolson time-differencing. The resulting system is solved using multigrid.
The general flow is:
- compute the RHS given the current state
- set up the MG
- solve the system using MG for updated phi
The timestep is computed as:
Simulation(solver_name, problem_name, rp, timers=None, data_class=<class 'mesh.patch.CellCenterData2d'>)¶
Do runtime visualization.
Diffusion through dt using C-N implicit solve with multigrid
Initialize the grid and variables for diffusion and set the initial conditions for the chosen problem.
The diffusion timestep() function computes the timestep using the explicit timestep constraint as the starting point. We then multiply by the CFL number to get the timestep. Since we are doing an implicit discretization, we do not require CFL < 1.