1- export AbstractIMEXARKTableau
21export ARS111, ARS121, ARS122, ARS233, ARS232, ARS222, ARS343, ARS443
32export IMKG232a, IMKG232b, IMKG242a, IMKG242b, IMKG252a, IMKG252b
43export IMKG253a, IMKG253b, IMKG254a, IMKG254b, IMKG254c, IMKG342a, IMKG343a
230229imkg_exp (i, j, α, β) = i == j + 1 ? α[j] : (i > 2 && j == 1 ? β[i - 2 ] : 0 )
231230imkg_imp (i, j, α̂, β, δ̂) =
232231 i == j + 1 ? α̂[j] : (i > 2 && j == 1 ? β[i - 2 ] : (1 < i <= length (α̂) && i == j ? δ̂[i - 1 ] : 0 ))
233- function make_IMKGAlgorithm (α, α̂, δ̂, β = ntuple (_ -> 0 , length (δ̂)))
232+ function make_IMKGTableau (α, α̂, δ̂, β = ntuple (_ -> 0 , length (δ̂)))
234233 s = length (α̂) + 1
235234 type = SMatrix{s, s}
236235 return IMEXARKTableau (;
@@ -241,48 +240,44 @@ end
241240
242241struct IMKG232a <: AbstractIMEXARKTableau end
243242function tableau (:: IMKG232a )
244- make_IMKGAlgorithm ((1 / 2 , 1 / 2 , 1 ), (0 , - 1 / 2 + √ 2 / 2 , 1 ), (1 - √ 2 / 2 , 1 - √ 2 / 2 ))
243+ make_IMKGTableau ((1 / 2 , 1 / 2 , 1 ), (0 , - 1 / 2 + √ 2 / 2 , 1 ), (1 - √ 2 / 2 , 1 - √ 2 / 2 ))
245244end
246245
247246struct IMKG232b <: AbstractIMEXARKTableau end
248247function tableau (:: IMKG232b )
249- make_IMKGAlgorithm ((1 / 2 , 1 / 2 , 1 ), (0 , - 1 / 2 - √ 2 / 2 , 1 ), (1 + √ 2 / 2 , 1 + √ 2 / 2 ))
248+ make_IMKGTableau ((1 / 2 , 1 / 2 , 1 ), (0 , - 1 / 2 - √ 2 / 2 , 1 ), (1 + √ 2 / 2 , 1 + √ 2 / 2 ))
250249end
251250
252251struct IMKG242a <: AbstractIMEXARKTableau end
253252function tableau (:: IMKG242a )
254- make_IMKGAlgorithm ((1 / 4 , 1 / 3 , 1 / 2 , 1 ), (0 , 0 , - 1 / 2 + √ 2 / 2 , 1 ), (0 , 1 - √ 2 / 2 , 1 - √ 2 / 2 ))
253+ make_IMKGTableau ((1 / 4 , 1 / 3 , 1 / 2 , 1 ), (0 , 0 , - 1 / 2 + √ 2 / 2 , 1 ), (0 , 1 - √ 2 / 2 , 1 - √ 2 / 2 ))
255254end
256255
257256struct IMKG242b <: AbstractIMEXARKTableau end
258257function tableau (:: IMKG242b )
259- make_IMKGAlgorithm ((1 / 4 , 1 / 3 , 1 / 2 , 1 ), (0 , 0 , - 1 / 2 - √ 2 / 2 , 1 ), (0 , 1 + √ 2 / 2 , 1 + √ 2 / 2 ))
258+ make_IMKGTableau ((1 / 4 , 1 / 3 , 1 / 2 , 1 ), (0 , 0 , - 1 / 2 - √ 2 / 2 , 1 ), (0 , 1 + √ 2 / 2 , 1 + √ 2 / 2 ))
260259end
261260
262261# The paper uses √3/6 for α̂[3], which also seems to work.
263262struct IMKG243a <: AbstractIMEXARKTableau end
264263function tableau (:: IMKG243a )
265- make_IMKGAlgorithm (
266- (1 / 4 , 1 / 3 , 1 / 2 , 1 ),
267- (0 , 1 / 6 , -√ 3 / 6 , 1 ),
268- (1 / 2 + √ 3 / 6 , 1 / 2 + √ 3 / 6 , 1 / 2 + √ 3 / 6 ),
269- )
264+ make_IMKGTableau ((1 / 4 , 1 / 3 , 1 / 2 , 1 ), (0 , 1 / 6 , -√ 3 / 6 , 1 ), (1 / 2 + √ 3 / 6 , 1 / 2 + √ 3 / 6 , 1 / 2 + √ 3 / 6 ))
270265end
271266
272267struct IMKG252a <: AbstractIMEXARKTableau end
273268function tableau (:: IMKG252a )
274- make_IMKGAlgorithm ((1 / 4 , 1 / 6 , 3 / 8 , 1 / 2 , 1 ), (0 , 0 , 0 , - 1 / 2 + √ 2 / 2 , 1 ), (0 , 0 , 1 - √ 2 / 2 , 1 - √ 2 / 2 ))
269+ make_IMKGTableau ((1 / 4 , 1 / 6 , 3 / 8 , 1 / 2 , 1 ), (0 , 0 , 0 , - 1 / 2 + √ 2 / 2 , 1 ), (0 , 0 , 1 - √ 2 / 2 , 1 - √ 2 / 2 ))
275270end
276271
277272struct IMKG252b <: AbstractIMEXARKTableau end
278273function tableau (:: IMKG252b )
279- make_IMKGAlgorithm ((1 / 4 , 1 / 6 , 3 / 8 , 1 / 2 , 1 ), (0 , 0 , 0 , - 1 / 2 - √ 2 / 2 , 1 ), (0 , 0 , 1 + √ 2 / 2 , 1 + √ 2 / 2 ))
274+ make_IMKGTableau ((1 / 4 , 1 / 6 , 3 / 8 , 1 / 2 , 1 ), (0 , 0 , 0 , - 1 / 2 - √ 2 / 2 , 1 ), (0 , 0 , 1 + √ 2 / 2 , 1 + √ 2 / 2 ))
280275end
281276
282277# The paper uses 0.08931639747704086 for α̂[3], which also seems to work.
283278struct IMKG253a <: AbstractIMEXARKTableau end
284279function tableau (:: IMKG253a )
285- make_IMKGAlgorithm (
280+ make_IMKGTableau (
286281 (1 / 4 , 1 / 6 , 3 / 8 , 1 / 2 , 1 ),
287282 (0 , 0 , √ 3 / 4 * (1 - √ 3 / 3 ) * ((1 + √ 3 / 3 )^ 2 - 2 ), √ 3 / 6 , 1 ),
288283 (0 , 1 / 2 - √ 3 / 6 , 1 / 2 - √ 3 / 6 , 1 / 2 - √ 3 / 6 ),
292287# The paper uses 1.2440169358562922 for α̂[3], which also seems to work.
293288struct IMKG253b <: AbstractIMEXARKTableau end
294289function tableau (:: IMKG253b )
295- make_IMKGAlgorithm (
290+ make_IMKGTableau (
296291 (1 / 4 , 1 / 6 , 3 / 8 , 1 / 2 , 1 ),
297292 (0 , 0 , √ 3 / 4 * (1 + √ 3 / 3 ) * ((1 - √ 3 / 3 )^ 2 - 2 ), -√ 3 / 6 , 1 ),
298293 (0 , 1 / 2 + √ 3 / 6 , 1 / 2 + √ 3 / 6 , 1 / 2 + √ 3 / 6 ),
@@ -301,31 +296,31 @@ end
301296
302297struct IMKG254a <: AbstractIMEXARKTableau end
303298function tableau (:: IMKG254a )
304- make_IMKGAlgorithm ((1 / 4 , 1 / 6 , 3 / 8 , 1 / 2 , 1 ), (0 , - 3 / 10 , 5 / 6 , - 3 / 2 , 1 ), (- 1 / 2 , 1 , 1 , 2 ))
299+ make_IMKGTableau ((1 / 4 , 1 / 6 , 3 / 8 , 1 / 2 , 1 ), (0 , - 3 / 10 , 5 / 6 , - 3 / 2 , 1 ), (- 1 / 2 , 1 , 1 , 2 ))
305300end
306301
307302struct IMKG254b <: AbstractIMEXARKTableau end
308303function tableau (:: IMKG254b )
309- make_IMKGAlgorithm ((1 / 4 , 1 / 6 , 3 / 8 , 1 / 2 , 1 ), (0 , - 1 / 20 , 5 / 4 , - 1 / 2 , 1 ), (- 1 / 2 , 1 , 1 , 1 ))
304+ make_IMKGTableau ((1 / 4 , 1 / 6 , 3 / 8 , 1 / 2 , 1 ), (0 , - 1 / 20 , 5 / 4 , - 1 / 2 , 1 ), (- 1 / 2 , 1 , 1 , 1 ))
310305end
311306
312307struct IMKG254c <: AbstractIMEXARKTableau end
313308function tableau (:: IMKG254c )
314- make_IMKGAlgorithm ((1 / 4 , 1 / 6 , 3 / 8 , 1 / 2 , 1 ), (0 , 1 / 20 , 5 / 36 , 1 / 3 , 1 ), (1 / 6 , 1 / 6 , 1 / 6 , 1 / 6 ))
309+ make_IMKGTableau ((1 / 4 , 1 / 6 , 3 / 8 , 1 / 2 , 1 ), (0 , 1 / 20 , 5 / 36 , 1 / 3 , 1 ), (1 / 6 , 1 / 6 , 1 / 6 , 1 / 6 ))
315310end
316311
317312# The paper and HOMME completely disagree on this algorithm. Since the version
318313# in the paper is not "342" (it appears to be "332"), the version from HOMME is
319314# used here.
320- # const IMKG342a = make_IMKGAlgorithm (
315+ # const IMKG342a = make_IMKGTableau (
321316# (0, 1/3, 1/3, 3/4),
322317# (0, -1/6 - √3/6, -1/6 - √3/6, 3/4),
323318# (0, 1/2 + √3/6, 1/2 + √3/6),
324319# (1/3, 1/3, 1/4),
325320# )
326321struct IMKG342a <: AbstractIMEXARKTableau end
327322function tableau (:: IMKG342a )
328- make_IMKGAlgorithm (
323+ make_IMKGTableau (
329324 (1 / 4 , 2 / 3 , 1 / 3 , 3 / 4 ),
330325 (0 , 1 / 6 - √ 3 / 6 , - 1 / 6 - √ 3 / 6 , 3 / 4 ),
331326 (0 , 1 / 2 + √ 3 / 6 , 1 / 2 + √ 3 / 6 ),
@@ -335,14 +330,14 @@ end
335330
336331struct IMKG343a <: AbstractIMEXARKTableau end
337332function tableau (:: IMKG343a )
338- make_IMKGAlgorithm ((1 / 4 , 2 / 3 , 1 / 3 , 3 / 4 ), (0 , - 1 / 3 , - 2 / 3 , 3 / 4 ), (- 1 / 3 , 1 , 1 ), (0 , 1 / 3 , 1 / 4 ))
333+ make_IMKGTableau ((1 / 4 , 2 / 3 , 1 / 3 , 3 / 4 ), (0 , - 1 / 3 , - 2 / 3 , 3 / 4 ), (- 1 / 3 , 1 , 1 ), (0 , 1 / 3 , 1 / 4 ))
339334end
340335
341336# The paper and HOMME completely disagree on this algorithm, but neither version
342337# is "353" (they appear to be "343" and "354", respectively).
343338# struct IMKG353a <: AbstractIMEXARKTableau end
344339# function tableau(::IMKG353a)
345- # make_IMKGAlgorithm (
340+ # make_IMKGTableau (
346341# (1/4, 2/3, 1/3, 3/4),
347342# (0, -359/600, -559/600, 3/4),
348343# (-1.1678009811335388, 253/200, 253/200),
351346# end
352347# struct IMKG353a <: AbstractIMEXARKTableau end
353348# function tableau(::IMKG353a)
354- # make_IMKGAlgorithm (
349+ # make_IMKGTableau (
355350# (-0.017391304347826087, -23/25, 5/3, 1/3, 3/4),
356351# (0.3075640504095504, -1.2990164859879263, 751/600, -49/60, 3/4),
357352# (-0.2981612530370581, 83/200, 83/200, 23/20),
365360# for IMKG354a is not specified).
366361# struct IMKG354a <: AbstractIMEXARKTableau end
367362# function tableau(::IMKG354a)
368- # make_IMKGAlgorithm (
363+ # make_IMKGTableau (
369364# (1/5, 1/5, 2/3, 1/3, 3/4),
370365# (0, 0, 11/30, -2/3, 3/4),
371366# (0, 2/4, 2/5, 1),
0 commit comments