Skip to content

Commit 43f4e87

Browse files
Harsh SinghHarsh Singh
authored andcommitted
runic
1 parent 838f733 commit 43f4e87

3 files changed

Lines changed: 56 additions & 41 deletions

File tree

lib/OrdinaryDiffEqRKN/src/generic_rkn_vd_perform_step.jl

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ function initialize!(integrator, cache::NystromVDCache)
3232
end
3333

3434
@muladd function perform_step!(
35-
integrator, cache::NystromVDConstantCache, repeat_step = false)
35+
integrator, cache::NystromVDConstantCache, repeat_step = false
36+
)
3637
(; t, dt, f, p) = integrator
3738
duprev, uprev = integrator.uprev.x
3839
(; tab) = cache
@@ -91,15 +92,18 @@ end
9192
end
9293
end
9394
utilde = ArrayPartition((duhat, uhat))
94-
atmp = calculate_residuals(utilde, integrator.uprev, integrator.u,
95+
atmp = calculate_residuals(
96+
utilde, integrator.uprev, integrator.u,
9597
integrator.opts.abstol, integrator.opts.reltol,
96-
integrator.opts.internalnorm, t)
98+
integrator.opts.internalnorm, t
99+
)
97100
integrator.EEst = integrator.opts.internalnorm(atmp, t)
98101
end
99102
end
100103

101104
@muladd function perform_step!(
102-
integrator, cache::NystromVDCache, repeat_step = false)
105+
integrator, cache::NystromVDCache, repeat_step = false
106+
)
103107
(; t, dt, f, p) = integrator
104108
du, u = integrator.u.x
105109
duprev, uprev = integrator.uprev.x
@@ -113,35 +117,35 @@ end
113117

114118
# Compute intermediate stages k2..knstages, stored in ks[1..nstages-1]
115119
for i in 2:nstages
116-
@.. broadcast=false ku = uprev + dt * c[i - 1] * duprev
117-
@.. broadcast=false kdu = duprev
120+
@.. broadcast = false ku = uprev + dt * c[i - 1] * duprev
121+
@.. broadcast = false kdu = duprev
118122
for j in 1:(i - 1)
119123
kj = (j == 1) ? k1 : ks[j - 1]
120124
if !iszero(a[i, j])
121-
@.. broadcast=false ku = ku + dtsq * a[i, j] * kj
125+
@.. broadcast = false ku = ku + dtsq * a[i, j] * kj
122126
end
123127
if !iszero(abar[i, j])
124-
@.. broadcast=false kdu = kdu + dt * abar[i, j] * kj
128+
@.. broadcast = false kdu = kdu + dt * abar[i, j] * kj
125129
end
126130
end
127131
f.f1(ks[i - 1], kdu, ku, p, t + dt * c[i - 1])
128132
end
129133

130134
# Position update: u = uprev + dt*duprev + dt^2 * sum(b[i]*ki)
131-
@.. broadcast=false u = uprev + dt * duprev
135+
@.. broadcast = false u = uprev + dt * duprev
132136
for i in 1:nstages
133137
if !iszero(b[i])
134138
ki = (i == 1) ? k1 : ks[i - 1]
135-
@.. broadcast=false u = u + dtsq * b[i] * ki
139+
@.. broadcast = false u = u + dtsq * b[i] * ki
136140
end
137141
end
138142

139143
# Velocity update: du = duprev + dt * sum(bp[i]*ki)
140-
@.. broadcast=false du = duprev
144+
@.. broadcast = false du = duprev
141145
for i in 1:nstages
142146
if !iszero(bp[i])
143147
ki = (i == 1) ? k1 : ks[i - 1]
144-
@.. broadcast=false du = du + dt * bp[i] * ki
148+
@.. broadcast = false du = du + dt * bp[i] * ki
145149
end
146150
end
147151

@@ -152,20 +156,22 @@ end
152156

153157
if integrator.opts.adaptive && !isempty(btilde)
154158
duhat, uhat = utilde.x
155-
@.. broadcast=false uhat = zero(uhat)
156-
@.. broadcast=false duhat = zero(duhat)
159+
@.. broadcast = false uhat = zero(uhat)
160+
@.. broadcast = false duhat = zero(duhat)
157161
for i in 1:nstages
158162
ki = (i == 1) ? k1 : ks[i - 1]
159163
if !iszero(btilde[i])
160-
@.. broadcast=false uhat = uhat + dtsq * btilde[i] * ki
164+
@.. broadcast = false uhat = uhat + dtsq * btilde[i] * ki
161165
end
162166
if !isempty(bptilde) && !iszero(bptilde[i])
163-
@.. broadcast=false duhat = duhat + dt * bptilde[i] * ki
167+
@.. broadcast = false duhat = duhat + dt * bptilde[i] * ki
164168
end
165169
end
166-
calculate_residuals!(atmp, utilde, integrator.uprev, integrator.u,
170+
calculate_residuals!(
171+
atmp, utilde, integrator.uprev, integrator.u,
167172
integrator.opts.abstol, integrator.opts.reltol,
168-
integrator.opts.internalnorm, t)
173+
integrator.opts.internalnorm, t
174+
)
169175
integrator.EEst = integrator.opts.internalnorm(atmp, t)
170176
end
171177
end

lib/OrdinaryDiffEqRKN/src/generic_rkn_vi_perform_step.jl

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ function initialize!(integrator, cache::NystromVICache)
3232
end
3333

3434
@muladd function perform_step!(
35-
integrator, cache::NystromVIConstantCache, repeat_step = false)
35+
integrator, cache::NystromVIConstantCache, repeat_step = false
36+
)
3637
(; t, dt, f, p) = integrator
3738
duprev, uprev = integrator.uprev.x
3839
(; tab) = cache
@@ -83,9 +84,11 @@ end
8384
end
8485
end
8586
if pos_only_error
86-
atmp = calculate_residuals(uhat, integrator.uprev.x[2], integrator.u.x[2],
87+
atmp = calculate_residuals(
88+
uhat, integrator.uprev.x[2], integrator.u.x[2],
8789
integrator.opts.abstol, integrator.opts.reltol,
88-
integrator.opts.internalnorm, t)
90+
integrator.opts.internalnorm, t
91+
)
8992
integrator.EEst = integrator.opts.internalnorm(atmp, t)
9093
else
9194
duhat = zero(duprev)
@@ -95,16 +98,19 @@ end
9598
end
9699
end
97100
utilde = ArrayPartition((duhat, uhat))
98-
atmp = calculate_residuals(utilde, integrator.uprev, integrator.u,
101+
atmp = calculate_residuals(
102+
utilde, integrator.uprev, integrator.u,
99103
integrator.opts.abstol, integrator.opts.reltol,
100-
integrator.opts.internalnorm, t)
104+
integrator.opts.internalnorm, t
105+
)
101106
integrator.EEst = integrator.opts.internalnorm(atmp, t)
102107
end
103108
end
104109
end
105110

106111
@muladd function perform_step!(
107-
integrator, cache::NystromVICache, repeat_step = false)
112+
integrator, cache::NystromVICache, repeat_step = false
113+
)
108114
(; t, dt, f, p) = integrator
109115
du, u = integrator.u.x
110116
duprev, uprev = integrator.uprev.x
@@ -117,31 +123,31 @@ end
117123

118124
# Compute intermediate stages k2..knstages, stored in ks[1..nstages-1]
119125
for i in 2:nstages
120-
@.. broadcast=false ku = uprev + dt * c[i - 1] * duprev
126+
@.. broadcast = false ku = uprev + dt * c[i - 1] * duprev
121127
for j in 1:(i - 1)
122128
if !iszero(a[i, j])
123129
kj = (j == 1) ? k1 : ks[j - 1]
124-
@.. broadcast=false ku = ku + dtsq * a[i, j] * kj
130+
@.. broadcast = false ku = ku + dtsq * a[i, j] * kj
125131
end
126132
end
127133
f.f1(ks[i - 1], duprev, ku, p, t + dt * c[i - 1])
128134
end
129135

130136
# Position update: u = uprev + dt*duprev + dt^2 * sum(b[i]*ki)
131-
@.. broadcast=false u = uprev + dt * duprev
137+
@.. broadcast = false u = uprev + dt * duprev
132138
for i in 1:nstages
133139
if !iszero(b[i])
134140
ki = (i == 1) ? k1 : ks[i - 1]
135-
@.. broadcast=false u = u + dtsq * b[i] * ki
141+
@.. broadcast = false u = u + dtsq * b[i] * ki
136142
end
137143
end
138144

139145
# Velocity update: du = duprev + dt * sum(bp[i]*ki)
140-
@.. broadcast=false du = duprev
146+
@.. broadcast = false du = duprev
141147
for i in 1:nstages
142148
if !iszero(bp[i])
143149
ki = (i == 1) ? k1 : ks[i - 1]
144-
@.. broadcast=false du = du + dt * bp[i] * ki
150+
@.. broadcast = false du = du + dt * bp[i] * ki
145151
end
146152
end
147153

@@ -153,33 +159,37 @@ end
153159
if integrator.opts.adaptive && !isempty(btilde)
154160
if pos_only_error
155161
uhat = utilde.x[2]
156-
@.. broadcast=false uhat = zero(uhat)
162+
@.. broadcast = false uhat = zero(uhat)
157163
for i in 1:nstages
158164
if !iszero(btilde[i])
159165
ki = (i == 1) ? k1 : ks[i - 1]
160-
@.. broadcast=false uhat = uhat + dtsq * btilde[i] * ki
166+
@.. broadcast = false uhat = uhat + dtsq * btilde[i] * ki
161167
end
162168
end
163-
calculate_residuals!(atmp.x[2], uhat, integrator.uprev.x[2], integrator.u.x[2],
169+
calculate_residuals!(
170+
atmp.x[2], uhat, integrator.uprev.x[2], integrator.u.x[2],
164171
integrator.opts.abstol, integrator.opts.reltol,
165-
integrator.opts.internalnorm, t)
172+
integrator.opts.internalnorm, t
173+
)
166174
integrator.EEst = integrator.opts.internalnorm(atmp.x[2], t)
167175
else
168176
duhat, uhat = utilde.x
169-
@.. broadcast=false uhat = zero(uhat)
170-
@.. broadcast=false duhat = zero(duhat)
177+
@.. broadcast = false uhat = zero(uhat)
178+
@.. broadcast = false duhat = zero(duhat)
171179
for i in 1:nstages
172180
ki = (i == 1) ? k1 : ks[i - 1]
173181
if !iszero(btilde[i])
174-
@.. broadcast=false uhat = uhat + dtsq * btilde[i] * ki
182+
@.. broadcast = false uhat = uhat + dtsq * btilde[i] * ki
175183
end
176184
if !isempty(bptilde) && !iszero(bptilde[i])
177-
@.. broadcast=false duhat = duhat + dt * bptilde[i] * ki
185+
@.. broadcast = false duhat = duhat + dt * bptilde[i] * ki
178186
end
179187
end
180-
calculate_residuals!(atmp, utilde, integrator.uprev, integrator.u,
188+
calculate_residuals!(
189+
atmp, utilde, integrator.uprev, integrator.u,
181190
integrator.opts.abstol, integrator.opts.reltol,
182-
integrator.opts.internalnorm, t)
191+
integrator.opts.internalnorm, t
192+
)
183193
integrator.EEst = integrator.opts.internalnorm(atmp, t)
184194
end
185195
end

lib/OrdinaryDiffEqRKN/src/rkn_perform_step.jl

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,4 +382,3 @@ end
382382
integrator.EEst = integrator.opts.internalnorm(atmp, t)
383383
end
384384
end
385-

0 commit comments

Comments
 (0)