timestep_RKC-25

Module

Description

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

CPARAM logical, parameter :: lcourant_dt = .true.

A second-order timestepping module similar to RKC (Runge-Kutta-Chebyshev). The schemes used here are all second-order (p=2) accurate Runge-Kutta schemes of stage number (number of substeps) s > 2 that trade order for extended stability interval.

For this file, s=25, so we have a 2nd-order, 25-step Runge-Kutta

scheme with a critical Courant number of ~408.125 as compared to 2.513 for any p=s=3 Runge-Kutta scheme (like the Williamson scheme in timestep.f90). Here the Courant number is

Cou = c nu dt / dx^2 ,

where

c = 272/45 = 6.04444

for 6th-order central finite differences in space.

This scheme uses 5N array slots (as opposed to 2N for the Williamson scheme in timestep.f90), irrespective of s. [TODO: it currently uses more, but this should be fixed…]

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/swap [private]

Subroutines and functions

subroutine  timestep/initialize_timestep()
Call to:

pde(), fatal_error()

subroutine  timestep/time_step(f, df, p)

Long-time-step Runge–Kutta–Chebyshev stepping, accurate to second order.

18-aug-08/perl: generated

Parameters:
Use :

mpicomm (mpiallreduce_max(), mpi_comm_pencil())

Call to:

pde(), fatal_error()