Skip to content

Commit b5e9c62

Browse files
committed
Added more jacobian support
1 parent 3f9dcc8 commit b5e9c62

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

src/+otp/RHS.m

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@
3636

3737
function newRHS = subsref(obj, vs)
3838
if strcmp(vs(1).type, '()')
39-
objF = obj.F;
40-
newF = @(t, y) subsref(objF(t, y), vs);
39+
newF = @(t, y) subsref(obj.F(t, y), vs);
40+
4141
newJac = [];
4242
if ~isempty(obj.Jacobian)
4343
newJac = @(t, y) subsref(obj.Jacobian(t, y), vs);
@@ -67,16 +67,35 @@
6767

6868
function newRHS = vertcat(varargin)
6969
newF = @(t, y) [];
70+
newJac = @(t, y) [];
71+
newJacvp = @(t, y, v) [];
7072

7173
for i = 1:numel(varargin)
7274
oldRHS = varargin{i};
7375
oldF = oldRHS.F;
7476

7577
newF = @(t, y) [newF(t, y); oldF(t, y)];
7678

79+
oldJac = oldRHS.Jacbobian;
80+
if ~isempty(oldJac)
81+
newJac = @(t, y) [newJac(t, y); oldJac(t, y)];
82+
end
83+
84+
oldJacvp = oldRHS.JacobianVectorProduct;
85+
if ~isempty(oldJacvp)
86+
newJacvp = @(t, y, v) [newJacvp(t, y, v); oldJacvp(t, y, v)];
87+
end
88+
7789
end
7890

79-
newRHS = otp.RHS(newF);
91+
92+
93+
vectorized = obj.Vectorized;
94+
95+
newRHS = otp.RHS(newF, ...
96+
'Jacobian', newJac, ...
97+
'JacobianVectorProduct', newJacvp, ...
98+
'Vectorized', vectorized);
8099
end
81100

82101
function s = size(~)

0 commit comments

Comments
 (0)