PLUTO
4.4-patch2
|
Super Time Stepping driver for integration of diffusion terms. More...
#include "pluto.h"
Macros | |
#define | STS_NU 0.01 |
Functions | |
static void | STS_ComputeSubSteps (double, double tau[], int) |
static double | STS_FindRoot (double, double) |
void | STS (const Data *d, double dt, timeStep *Dts, Grid *grid) |
Take one step in the solution of the diffusion equation where R is a nonlinear right hand side involving second derivatives. The super step is taken to be equal to the current time step
dt
and the number of substeps Nsts is given by solving the following nonlinear equation:
where is set by the macro STS_NU (default equal to 0.01). The previous relation is given by Eq. [2.10] of Alexiades et al. with the explicit parabolic time step
being computed from
where is the parabolic Courant number,
is the number of spatial dimensions and the maximum of the square bracket is computed during the call to ParabolicRHS.
This function is called in an operator-split way before/after advection has been carried out.
References
#define STS_NU 0.01 |
Sets the nu parameter used in STS.
|
static |
Compute the single sub-step sequence (Eq. [2.9]). N must be an integer by now.
|
static |
Find the number of sub-steps N by solving Eq. (2.10) of AAG using a Newton-Raphson scheme. Input to the function are:
[in] | dt_exp | the explicit time step |
[in] | dt | the super-step. |