comparison +time/Ode45.m @ 1113:47e86b5270ad feature/timesteppers

Change name of property k to dt in time.Timestepper
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 10 Apr 2019 22:40:55 +0200
parents f5e14e5986b5
children
comparison
equal deleted inserted replaced
1112:835c8fa456ec 1113:47e86b5270ad
1 classdef Ode45 < time.Timestepper 1 classdef Ode45 < time.Timestepper
2 properties 2 properties
3 F 3 F
4 k 4 dt
5 t 5 t
6 w 6 w
7 m 7 m
8 D 8 D
9 E 9 E
13 n 13 n
14 end 14 end
15 15
16 16
17 methods 17 methods
18 function obj = Ode45(D, E, S, k, t0, v0, v0t) 18 function obj = Ode45(D, E, S, dt, t0, v0, v0t)
19 obj.D = D; 19 obj.D = D;
20 obj.E = E; 20 obj.E = E;
21 obj.S = S; 21 obj.S = S;
22 obj.m = length(v0); 22 obj.m = length(v0);
23 23
29 obj.C = zeros(2*obj.m,1); 29 obj.C = zeros(2*obj.m,1);
30 else 30 else
31 obj.C = [zeros(obj.m,1), S]; 31 obj.C = [zeros(obj.m,1), S];
32 end 32 end
33 33
34 obj.k = k; 34 obj.dt = dt;
35 obj.t = t0; 35 obj.t = t0;
36 obj.w = [v0; v0t]; 36 obj.w = [v0; v0t];
37 37
38 obj.F = @(w,t)(obj.M*w + obj.C); 38 obj.F = @(w,t)(obj.M*w + obj.C);
39 end 39 end
47 vt = obj.w(end/2+1:end); 47 vt = obj.w(end/2+1:end);
48 t = obj.t; 48 t = obj.t;
49 end 49 end
50 50
51 function obj = step(obj) 51 function obj = step(obj)
52 [t,w] = ode45(@(t,w)(obj.F(w,t)),[obj.t obj.t+obj.k],obj.w); 52 [t,w] = ode45(@(t,w)(obj.F(w,t)),[obj.t obj.t+obj.dt],obj.w);
53 53
54 obj.t = t(end); 54 obj.t = t(end);
55 obj.w = w(end,:)'; 55 obj.w = w(end,:)';
56 obj.n = obj.n + 1; 56 obj.n = obj.n + 1;
57 end 57 end
58 end 58 end
59 59
60 60
61 methods (Static) 61 methods (Static)
62 function k = getTimeStep(lambda) 62 function dt = getTimeStep(lambda)
63 k = rk4.get_rk4_time_step(lambda); 63 dt = rk4.get_rk4_time_step(lambda);
64 end 64 end
65 end 65 end
66 66
67 end 67 end