@@ -1032,7 +1032,7 @@ end
1032
1032
@unpack dw1, ubuff, dw23, dw45, cubuff1, cubuff2 = cache
1033
1033
@unpack k, k2, k3, k4, k5, fw1, fw2, fw3, fw4, fw5 = cache
1034
1034
@unpack J, W1, W2, W3 = cache
1035
- @unpack tmp, tmp2, tmp3, tmp4, tmp5, tmp6, atmp, jac_config, linsolve1, linsolve2, linsolve3, rtol, atol, step_limiter! = cache
1035
+ @unpack tmp, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7, tmp8, tmp9, tmp10, atmp, jac_config, linsolve1, linsolve2, linsolve3, rtol, atol, step_limiter! = cache
1036
1036
@unpack internalnorm, abstol, reltol, adaptive = integrator. opts
1037
1037
alg = unwrap_alg (integrator, true )
1038
1038
@unpack maxiters = alg
@@ -1087,30 +1087,30 @@ end
1087
1087
c2′ = c2 * c5′
1088
1088
c3′ = c3 * c5′
1089
1089
c4′ = c4 * c5′
1090
- z1 = @. . c1′ * (cont1 +
1090
+ @. . z1 = c1′ * (cont1 +
1091
1091
(c1′- c4m1) * (cont2 +
1092
1092
(c1′ - c3m1) * (cont3 +
1093
1093
(c1′ - c2m1) * (cont4 + (c1′ - c1m1) * cont5))))
1094
- z2 = @. . c2′ * (cont1 +
1094
+ @. . z2 = c2′ * (cont1 +
1095
1095
(c2′- c4m1) * (cont2 +
1096
1096
(c2′ - c3m1) * (cont3 +
1097
1097
(c2′ - c2m1) * (cont4 + (c2′ - c1m1) * cont5))))
1098
- z3 = @. . c3′ * (cont1 +
1098
+ @. . z3 = c3′ * (cont1 +
1099
1099
(c3′- c4m1) * (cont2 +
1100
1100
(c3′ - c3m1) * (cont3 +
1101
1101
(c3′ - c2m1) * (cont4 + (c3′ - c1m1) * cont5))))
1102
- z4 = @. . c4′ * (cont1 +
1102
+ @. . z4 = c4′ * (cont1 +
1103
1103
(c4′- c4m1) * (cont2 +
1104
1104
(c4′ - c3m1) * (cont3 +
1105
1105
(c4′ - c2m1) * (cont4 + (c4′ - c1m1) * cont5))))
1106
- z5 = @. . c5′ * (cont1 +
1106
+ @. . z5 = c5′ * (cont1 +
1107
1107
(c5′- c4m1) * (cont2 +
1108
1108
(c5′ - c3m1) * (cont3 + (c5′ - c2m1) * (cont4 + (c5′ - c1m1) * cont5))))
1109
- w1 = @. . broadcast = false TI11* z1+ TI12* z2+ TI13* z3+ TI14* z4+ TI15* z5
1110
- w2 = @. . broadcast = false TI21* z1+ TI22* z2+ TI23* z3+ TI24* z4+ TI25* z5
1111
- w3 = @. . broadcast = false TI31* z1+ TI32* z2+ TI33* z3+ TI34* z4+ TI35* z5
1112
- w4 = @. . broadcast = false TI41* z1+ TI42* z2+ TI43* z3+ TI44* z4+ TI45* z5
1113
- w5 = @. . broadcast = false TI51* z1+ TI52* z2+ TI53* z3+ TI54* z4+ TI55* z5
1109
+ @. . w1 = TI11* z1+ TI12* z2+ TI13* z3+ TI14* z4+ TI15* z5
1110
+ @. . w2 = TI21* z1+ TI22* z2+ TI23* z3+ TI24* z4+ TI25* z5
1111
+ @. . w3 = TI31* z1+ TI32* z2+ TI33* z3+ TI34* z4+ TI35* z5
1112
+ @. . w4 = TI41* z1+ TI42* z2+ TI43* z3+ TI44* z4+ TI45* z5
1113
+ @. . w5 = TI51* z1+ TI52* z2+ TI53* z3+ TI54* z4+ TI55* z5
1114
1114
end
1115
1115
1116
1116
# Newton iteration
@@ -1328,21 +1328,21 @@ end
1328
1328
if integrator. EEst <= oneunit (integrator. EEst)
1329
1329
cache. dtprev = dt
1330
1330
if alg. extrapolant != :constant
1331
- cache. cont1 = @. . (z4 - z5) / c4m1 # first derivative on [c4, 1]
1332
- tmp1 = @. . (z3 - z4) / c3mc4 # first derivative on [c3, c4]
1333
- cache. cont2 = @. . (tmp1 - cache. cont1) / c3m1 # second derivative on [c3, 1]
1334
- tmp2 = @. . (z2 - z3) / c2mc3 # first derivative on [c2, c3]
1335
- tmp3 = @. . (tmp2 - tmp1 ) / c2mc4 # second derivative on [c2, c4]
1336
- cache. cont3 = @. . (tmp3 - cache. cont2) / c2m1 # third derivative on [c2, 1]
1337
- tmp4 = @. . (z1 - z2) / c1mc2 # first derivative on [c1, c2]
1338
- tmp5 = @. . (tmp4 - tmp2) / c1mc3 # second derivative on [c1, c3]
1339
- tmp6 = @. . (tmp5 - tmp3) / c1mc4 # third derivative on [c1, c4]
1340
- cache. cont4 = @. . (tmp6 - cache. cont3) / c1m1 # fourth derivative on [c1, 1]
1341
- tmp7 = @. . z1 / c1 # first derivative on [0, c1]
1342
- tmp8 = @. . (tmp4 - tmp7) / c2 # second derivative on [0, c2]
1343
- tmp9 = @. . (tmp5 - tmp8) / c3 # third derivative on [0, c3]
1344
- tmp10 = @. . (tmp6 - tmp9) / c4 # fourth derivative on [0,c4]
1345
- cache. cont5 = @. . cache. cont4 - tmp10 # fifth derivative on [0,1]
1331
+ @. . cache. cont1 = (z4 - z5) / c4m1 # first derivative on [c4, 1]
1332
+ @. . tmp = (z3 - z4) / c3mc4 # first derivative on [c3, c4]
1333
+ @. . cache. cont2 = (tmp - cache. cont1) / c3m1 # second derivative on [c3, 1]
1334
+ @. . tmp2 = (z2 - z3) / c2mc3 # first derivative on [c2, c3]
1335
+ @. . tmp3 = (tmp2 - tmp ) / c2mc4 # second derivative on [c2, c4]
1336
+ @. . cache. cont3 = (tmp3 - cache. cont2) / c2m1 # third derivative on [c2, 1]
1337
+ @. . tmp4 = (z1 - z2) / c1mc2 # first derivative on [c1, c2]
1338
+ @. . tmp5 = (tmp4 - tmp2) / c1mc3 # second derivative on [c1, c3]
1339
+ @. . tmp6 = (tmp5 - tmp3) / c1mc4 # third derivative on [c1, c4]
1340
+ @. . cache. cont4 = (tmp6 - cache. cont3) / c1m1 # fourth derivative on [c1, 1]
1341
+ @. . tmp7 = z1 / c1 # first derivative on [0, c1]
1342
+ @. . tmp8 = (tmp4 - tmp7) / c2 # second derivative on [0, c2]
1343
+ @. . tmp9 = (tmp5 - tmp8) / c3 # third derivative on [0, c3]
1344
+ @. . tmp10 = (tmp6 - tmp9) / c4 # fourth derivative on [0,c4]
1345
+ @. . cache. cont5 = cache. cont4 - tmp10 # fifth derivative on [0,1]
1346
1346
end
1347
1347
end
1348
1348
@@ -1437,7 +1437,7 @@ end
1437
1437
for i in 1 : num_stages
1438
1438
z[i] = f (uprev + z[i], p, t + c[i] * dt)
1439
1439
end
1440
- OrdinaryDiffEqCore. increment_nf! (integrator. stats, 5 )
1440
+ OrdinaryDiffEqCore. increment_nf! (integrator. stats, num_stages )
1441
1441
1442
1442
# fw = TI * ff
1443
1443
fw = Vector {typeof(u)} (undef, num_stages)
@@ -1619,7 +1619,7 @@ end
1619
1619
if (new_W = do_newW (integrator, alg, new_jac, cache. W_γdt))
1620
1620
@inbounds for II in CartesianIndices (J)
1621
1621
W1[II] = - γdt * mass_matrix[Tuple (II)... ] + J[II]
1622
- for i in 1 :(num_stages - 1 ) ÷ 2
1622
+ for i in 1 : (num_stages - 1 ) ÷ 2
1623
1623
W2[i][II] = - (αdt[i] + βdt[i] * im) * mass_matrix[Tuple (II)... ] + J[II]
1624
1624
end
1625
1625
end
@@ -1673,7 +1673,7 @@ end
1673
1673
@. . tmp = uprev + z[i]
1674
1674
f (ks[i], tmp, p, t + c[i] * dt)
1675
1675
end
1676
- OrdinaryDiffEqCore. increment_nf! (integrator. stats, 5 )
1676
+ OrdinaryDiffEqCore. increment_nf! (integrator. stats, num_stages )
1677
1677
1678
1678
# mul!(fw, TI, ks)
1679
1679
for i in 1 : num_stages
@@ -1700,15 +1700,12 @@ end
1700
1700
@. . ubuff = fw[1 ] - γdt * Mw[1 ]
1701
1701
needfactor = iter == 1 && new_W
1702
1702
1703
- linsolve1 = cache. linsolve1
1704
1703
if needfactor
1705
- linres = dolinsolve (integrator, linsolve1; A = W1, b = _vec (ubuff), linu = _vec (dw1))
1704
+ cache . linsolve1 = dolinsolve (integrator, linsolve1; A = W1, b = _vec (ubuff), linu = _vec (dw1)). cache
1706
1705
else
1707
- linres = dolinsolve (integrator, linsolve1; A = nothing , b = _vec (ubuff), linu = _vec (dw1))
1706
+ cache . linsolve1 = dolinsolve (integrator, linsolve1; A = nothing , b = _vec (ubuff), linu = _vec (dw1)). cache
1708
1707
end
1709
1708
1710
- cache. linsolve1 = linres. cache
1711
-
1712
1709
for i in 1 :(num_stages - 1 ) ÷ 2
1713
1710
@. . cubuff[i]= complex (
1714
1711
fw[2 * i] - αdt[i] * Mw[2 * i] + βdt[i] * Mw[2 * i + 1 ], fw[2 * i + 1 ] - βdt[i] * Mw[2 * i] - αdt[i] * Mw[2 * i + 1 ])
@@ -1801,9 +1798,8 @@ end
1801
1798
@. . broadcast= false ubuff= integrator. fsalfirst + tmp
1802
1799
1803
1800
if alg. smooth_est
1804
- linres = dolinsolve (integrator, linres. cache; b = _vec (ubuff),
1805
- linu = _vec (utilde))
1806
- cache. linsolve1 = linres. cache
1801
+ cache. linsolve1 = dolinsolve (integrator, linsolve1; b = _vec (ubuff),
1802
+ linu = _vec (utilde)). cache
1807
1803
integrator. stats. nsolve += 1
1808
1804
end
1809
1805
@@ -1821,9 +1817,8 @@ end
1821
1817
@. . broadcast= false ubuff= fsallast + tmp
1822
1818
1823
1819
if alg. smooth_est
1824
- linres = dolinsolve (integrator, linres. cache; b = _vec (ubuff),
1825
- linu = _vec (utilde))
1826
- cache. linsolve1 = linres. cache
1820
+ cache. linsolve1 = dolinsolve (integrator, linsolve1; b = _vec (ubuff),
1821
+ linu = _vec (utilde)). cache
1827
1822
integrator. stats. nsolve += 1
1828
1823
end
1829
1824
0 commit comments