changeset 1187:5aa3049a4212 feature/rv

Allow for time dependent data when construcing the ODE RHS
author Vidar Stiernström <vidar.stiernstrom@it.uu.se>
date Mon, 08 Jul 2019 14:48:56 +0200
parents 3364a51f0d9e
children 7173b6fd4063
files +rv/+time/getRvTimestepper.m
diffstat 1 files changed, 17 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/+rv/+time/getRvTimestepper.m	Fri Jul 05 19:08:37 2019 +0200
+++ b/+rv/+time/getRvTimestepper.m	Mon Jul 08 14:48:56 2019 +0200
@@ -15,20 +15,29 @@
     end
 end
 
-function F = stabilizedRhs(D, data)
+function fhData = dataFunctionHandle(data)
     if isa(data, 'function_handle')
-        F = @(v, t, viscosity) D(v, viscosity) + data(v);
+        switch nargin(data)
+            case 1
+                fhData = @(v, t) data(v);
+            case 2
+                fhData = @(v, t) data(v,t);
+            otherwise
+                error('Incorrect number of input arguments');
+        end
     else
-        F = @(v, t, viscosity) D(v, viscosity) + data;
+        fhData = @(v, t) data;
     end
 end
 
+function F = stabilizedRhs(D, data)
+        fhData = dataFunctionHandle(data);
+        F = @(v, t, viscosity) D(v, viscosity) + fhData(v,t);
+end
+
 function F = unstabilizedRhs(D, data)
-    if isa(data, 'function_handle')
-        F = @(v, t) D(v) + data(v);
-    else
-        F = @(v, t) D(v) + data;
-    end
+    fhData = dataFunctionHandle(data);
+    F = @(v, t) D(v) + fhData(v,t);
 end
 
 function ts = rkRvTimestepper(opt, diffOpStruct, residualViscosity, data, t0, v0)