|
36 | 36 |
|
37 | 37 | function newRHS = subsref(obj, vs) |
38 | 38 | 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 | + |
41 | 41 | newJac = []; |
42 | 42 | if ~isempty(obj.Jacobian) |
43 | 43 | newJac = @(t, y) subsref(obj.Jacobian(t, y), vs); |
|
67 | 67 |
|
68 | 68 | function newRHS = vertcat(varargin) |
69 | 69 | newF = @(t, y) []; |
| 70 | + newJac = @(t, y) []; |
| 71 | + newJacvp = @(t, y, v) []; |
70 | 72 |
|
71 | 73 | for i = 1:numel(varargin) |
72 | 74 | oldRHS = varargin{i}; |
73 | 75 | oldF = oldRHS.F; |
74 | 76 |
|
75 | 77 | newF = @(t, y) [newF(t, y); oldF(t, y)]; |
76 | 78 |
|
| 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 | + |
77 | 89 | end |
78 | 90 |
|
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); |
80 | 99 | end |
81 | 100 |
|
82 | 101 | function s = size(~) |
|
0 commit comments