Mercurial > repos > public > sbplib
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)