view +util/tt2t.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 48b6fb693025
children
line wrap: on
line source

% Converts a semidiscretized PDE from second order in time to first order in time.
%   v_tt = Dv + S
% becomes
%   w_t = Mw + C
% where
%   w = [ v ; v_t]
% and
%   M = [0 I;
%        D 0];
%   C = [0;
%        S];
function [M,C] = tt2t(D,S)
    default_arg('S',sparse(size(D)))
    time_dependent_bc = isa(S,'function_handle');

    I = eye(size(D));
    O = zeros(size(D));

    M = [O I;
         D O];

    if ~time_dependent_bc
        C = [zeros(size(S)); S];
    else
        o = zeros(size(S(0)));
        C = @(t)([o; S(t)]);
    end
end