changeset 983:b89379fb0814 feature/timesteppers

Convert Rungekutta4 to take F(t,y) instead of a matrix
author Jonatan Werpers <jonatan@werpers.com>
date Tue, 08 Jan 2019 12:07:57 +0100
parents 7a5e770974ed
children 0585a2ee7ee7
files +time/Rungekutta4.m
diffstat 1 files changed, 11 insertions(+), 26 deletions(-) [+]
line wrap: on
line diff
diff -r 7a5e770974ed -r b89379fb0814 +time/Rungekutta4.m
--- a/+time/Rungekutta4.m	Mon Jan 07 16:26:00 2019 +0100
+++ b/+time/Rungekutta4.m	Tue Jan 08 12:07:57 2019 +0100
@@ -1,36 +1,23 @@
 classdef Rungekutta4 < time.Timestepper
     properties
-        D
-        S
         F
-        k
+        dt
         t
         v
-        m
         n
     end
 
 
     methods
-        function obj = Rungekutta4(D, S, k, t0, v0)
-            obj.D = D;
-            obj.k = k;
+        % Create a time stepper for
+        %   v_t = F(t,v),  v(t0) = v0
+        % with step size dt.
+        function obj = Rungekutta4(F, dt, t0, v0)
+            obj.F = F;
+            obj.dt = dt;
             obj.t = t0;
             obj.v = v0;
-            obj.m = length(v0);
             obj.n = 0;
-
-            if S == 0
-                obj.S = zeros(obj.m,1);
-            else
-                obj.S = S;
-            end
-
-            if S == 0
-                obj.F = @(v,t)(obj.D*v);
-            else
-                obj.F = @(v,t)(obj.D*v + obj.S);
-            end
         end
 
         function [v,t] = getV(obj)
@@ -39,17 +26,15 @@
         end
 
         function obj = step(obj)
-            obj.v = time.rk.rungekutta_4(obj.v, obj.t, obj.k, obj.F);
-            obj.t = obj.t + obj.k;
+            obj.v = time.rk.rungekutta_4(obj.v, obj.t, obj.dt, obj.F);
+            obj.t = obj.t + obj.dt;
             obj.n = obj.n + 1;
         end
     end
 
-
     methods (Static)
-        function k = getTimeStep(lambda)
-            k = rk4.get_rk4_time_step(lambda);
+        function dt = getTimeStep(lambda)
+            dt = rk4.get_rk4_time_step(lambda);
         end
     end
-
 end
\ No newline at end of file