timestep_rkf_lowsto

Module

Description

$Id$

Runge-Kutta-Fehlberg Low-Storage method Christopher A. Kennedy, Mark H. Carpenter, R.Michael Lewis, Low-storage, explicit Runge-Kutta schemes for the compressible Navier-Stokes equations, Applied Numerical Mathematics, Volume 35, Issue 3, 2000, Pages 177-219, ISSN 0168-9274, https://doi.org/10.1016/S0168-9274(99)00141-5.

** AUTOMATIC CPARAM.INC GENERATION ************************

CPARAM logical, parameter :: lcourant_dt = .false.


Quick access

Variables:

a21, a31, a32, advance_substeps, after_substep_sum_time, b1, b2, b3, b4, beta_hat, c21, c31, c32, c41, c42, c43, calc_pencils_sub_cycle, dt_alpha_ts, dt_beta_hat, dt_decrease, dt_increase, dt_major, e1, e2, e3, e4, errcon, errdf, errmax, errmaxs, f1, farr, farraymin, gam, grow, itter, maxtry, ode, ode_timestep_first, ode_timestep_second, pde_energy_only, rk3, rkck, rkck3, rkl_coeff, safety, shrnk, split_update, stiff, substeps, swap, update_after_substep

Routines:

initialize_timestep(), time_step()

Needed modules

Variables

  • timestep/after_substep_sum_time [real,public/optional/default=0.0]
  • timestep/beta_hat (5) [real,private]
  • timestep/dt_alpha_ts (5) [real,private]
  • timestep/dt_beta_hat (5) [real,private]
  • timestep/dt_decrease [real,private]
  • timestep/dt_increase [real,private]
  • timestep/errdf (*,*,*,*) [real,private/allocatable]
  • timestep/errmax [real,private]
  • timestep/errmaxs [real,private]
  • timestep/f1 (*,*,*,*) [real,private/target/allocatable]
  • timestep/farr (*,*,*,*) [real,private/pointer/contiguous]
  • timestep/farraymin (mvar) [real,private]
  • timestep/itter [integer,private]
  • timestep/ode [private]
  • timestep/ode_timestep_first [private]
  • timestep/ode_timestep_second [private]
  • timestep/safety [real,private/optional/default=0.95]
  • timestep/split_update [private]
  • timestep/update_after_substep [private]

Subroutines and functions

subroutine  timestep/initialize_timestep()

Coefficients for up to order 4(3). 14-oct-24/fred: adapted from timestep.f90 using low storage adaptive

Runge-Kutta-Fehlberg derived scheme. Unlike timestep_rkf.f90 intermediate substep df are not retained but overwritten inside two farray size registers which alternate for f and df at each substep. 5th order and above require more than 5 substeps and would require replacing alpha and beta din cdata.f90 so are not yet implemented. Current tests using interstellar sample yield much lower timesteps and therefore longer integration times than RKFded, but this implementation can be more easily integrated into the GPU coupled code.

Use :

messages (not_implemented(), warning()), general (itoa(), rtoa())

Call to:

warning(), not_implemented(), particles_timestep_first(), pointmasses_timestep_first(), solid_cells_timestep_first(), pde(), border_quenching(), pointmasses_timestep_second(), particles_timestep_second(), solid_cells_timestep_second(), impose_floors_ceilings(), update_ghosts(), advance_shear(), split_update_density(), split_update_energy(), split_update_magnetic(), split_update_viscosity(), split_update_particles(), hydro_after_timestep(), magnetic_after_timestep(), energy_after_timestep(), special_after_timestep(), particles_special_after_dtsub(), particles_write_rmv(), dspecial_dt_ode()

subroutine  timestep/time_step(f, df, p)

14-oct-24/fred: coded

Parameters:
  • f (,,*,*) [real,target/contiguous]

  • df (,,*,*) [real,contiguous]

  • p [pencil_case]

Use :

boundcond (update_ghosts()), borderprofiles (border_quenching()), equ (pde(), impose_floors_ceilings()), mpicomm (mpiallreduce_max(), mpi_comm_pencil()), messages (warning()), particles_main (particles_timestep_first(), particles_timestep_second()), pointmasses (pointmasses_timestep_first(), pointmasses_timestep_second()), solid_cells (solid_cells_timestep_first(), solid_cells_timestep_second()), shear (advance_shear())

Call to:

particles_timestep_first(), pointmasses_timestep_first(), solid_cells_timestep_first(), pde(), border_quenching(), pointmasses_timestep_second(), particles_timestep_second(), solid_cells_timestep_second(), impose_floors_ceilings(), update_ghosts(), advance_shear(), warning(), split_update_density(), split_update_energy(), split_update_magnetic(), split_update_viscosity(), split_update_particles(), hydro_after_timestep(), magnetic_after_timestep(), energy_after_timestep(), special_after_timestep(), particles_special_after_dtsub(), particles_write_rmv(), dspecial_dt_ode()