0
|
1 % Converts a semidiscretized PDE from second order in time to first order in time.
|
|
2 % v_tt = Dv + S
|
|
3 % becomes
|
|
4 % w_t = Mw + C
|
|
5 % where
|
|
6 % w = [ v ; v_t]
|
|
7 % and
|
|
8 % M = [0 I;
|
|
9 % D 0];
|
|
10 % C = [0;
|
|
11 % S];
|
|
12 function [M,C] = tt2t(D,S)
|
|
13 default_arg('S',sparse(size(D)))
|
|
14 time_dependent_bc = isa(S,'function_handle');
|
|
15
|
|
16 I = eye(size(D));
|
|
17 O = zeros(size(D));
|
|
18
|
|
19 M = [O I;
|
|
20 D O];
|
|
21
|
|
22 if ~time_dependent_bc
|
|
23 C = [zeros(size(S)); S];
|
|
24 else
|
|
25 o = zeros(size(S(0)));
|
|
26 C = @(t)([o; S(t)]);
|
|
27 end
|
|
28 end
|