view +time/+rk/get_rk4_time_step.m @ 1012:1e437c9e5132 feature/advectionRV

Create residual viscosity package +rv and generalize the ResidualViscosity class - Generalize residual viscosity, by passing user-defined flux and calculating the time derivative outside of the update. - Create separate RungekuttaRV specifically using interior RV updates - Separate the artifical dissipation operator from the scheme AdvectionRV1D so that the same scheme can be reused for creating the diff op used by the ResidualViscosity class
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Wed, 05 Dec 2018 13:44:10 +0100
parents c6fcee3fcf1b
children 1a265a376b36
line wrap: on
line source

% Calculate the size of the largest time step given the largest evalue for a operator with pure imaginary e.values.
function k = get_rk4_time_step(lambda,l_type)
    default_arg('l_type','complex')

    rad = abs(lambda);
    if strcmp(l_type,'real')
        % Real eigenvalue
        % kl > -2.7852
        k = 2.7852/rad;

    elseif strcmp(l_type,'imag')
        % Imaginary eigenvalue
        % |kl| < 2.8284
        k = 2.8284/rad;
    elseif strcmp(l_type,'complex')
        % |kl| < 2.5
        k = 2.5/rad;
    else
        error('l_type must be one of ''real'',''imag'' or ''complex''.')
    end
end