@@ -22,9 +22,7 @@ function step_u!(integrator, cache::IMEXARKCache, ::ARS343)
2222
2323 i:: Int = 1
2424 t_exp = t
25- @. U = u
26- lim! (U, p, t_exp, u)
27- dss! (U, p, t_exp)
25+ @. U = u # TODO : This is unnecessary; we can just pass u to T_exp and T_lim
2826 T_lim! (T_lim[i], U, p, t_exp)
2927 T_exp! (T_exp[i], U, p, t_exp)
3028
@@ -33,38 +31,32 @@ function step_u!(integrator, cache::IMEXARKCache, ::ARS343)
3331 @. U = u + dt * a_exp[i, 1 ] * T_lim[1 ]
3432 lim! (U, p, t_exp, u)
3533 @. U += dt * a_exp[i, 1 ] * T_exp[1 ]
36- post_explicit! (U, p, t_exp)
37-
34+ dss! (U, p, t_exp)
3835 @. temp = U # used in closures
3936 let i = i
4037 t_imp = t + dt * c_imp[i]
38+ post_implicit! (U, p, t_imp)
4139 implicit_equation_residual! = (residual, Ui) -> begin
4240 T_imp! (residual, Ui, p, t_imp)
4341 @. residual = temp + dt * a_imp[i, i] * residual - Ui
4442 end
4543 implicit_equation_jacobian! = (jacobian, Ui) -> begin
4644 T_imp!. Wfact (jacobian, Ui, p, dt * a_imp[i, i], t_imp)
4745 end
48- call_post_implicit! = Ui -> begin
49- post_implicit! (Ui, p, t_imp)
50- end
51- call_post_implicit_last! = Ui -> begin
52- dss! (Ui, p, t_imp)
53- post_implicit! (Ui, p, t_imp)
54- end
46+ call_post_implicit! = Ui -> post_implicit! (Ui, p, t_imp)
5547 solve_newton! (
5648 newtons_method,
5749 newtons_method_cache,
5850 U,
5951 implicit_equation_residual!,
6052 implicit_equation_jacobian!,
6153 call_post_implicit!,
62- call_post_implicit_last! ,
54+ nothing ,
6355 )
56+ @. T_imp[i] = (U - temp) / (dt * a_imp[i, i])
57+ dss! (U, p, t_imp)
58+ post_explicit! (U, p, t_imp)
6459 end
65-
66- @. T_imp[i] = (U - temp) / (dt * a_imp[i, i])
67-
6860 T_lim! (T_lim[i], U, p, t_exp)
6961 T_exp! (T_exp[i], U, p, t_exp)
7062
@@ -73,40 +65,35 @@ function step_u!(integrator, cache::IMEXARKCache, ::ARS343)
7365 @. U = u + dt * a_exp[i, 1 ] * T_lim[1 ] + dt * a_exp[i, 2 ] * T_lim[2 ]
7466 lim! (U, p, t_exp, u)
7567 @. U += dt * a_exp[i, 1 ] * T_exp[1 ] + dt * a_exp[i, 2 ] * T_exp[2 ] + dt * a_imp[i, 2 ] * T_imp[2 ]
76- post_explicit! (U, p, t_exp)
77-
68+ dss! (U, p, t_exp)
7869 @. temp = U # used in closures
7970 let i = i
8071 t_imp = t + dt * c_imp[i]
72+ post_implicit! (U, p, t_imp)
8173 implicit_equation_residual! = (residual, Ui) -> begin
8274 T_imp! (residual, Ui, p, t_imp)
8375 @. residual = temp + dt * a_imp[i, i] * residual - Ui
8476 end
8577 implicit_equation_jacobian! = (jacobian, Ui) -> begin
8678 T_imp!. Wfact (jacobian, Ui, p, dt * a_imp[i, i], t_imp)
8779 end
88- call_post_implicit! = Ui -> begin
89- post_implicit! (Ui, p, t_imp)
90- end
91- call_post_implicit_last! = Ui -> begin
92- dss! (Ui, p, t_imp)
93- post_implicit! (Ui, p, t_imp)
94- end
80+ call_post_implicit! = Ui -> post_implicit! (Ui, p, t_imp)
9581 solve_newton! (
9682 newtons_method,
9783 newtons_method_cache,
9884 U,
9985 implicit_equation_residual!,
10086 implicit_equation_jacobian!,
10187 call_post_implicit!,
102- call_post_implicit_last! ,
88+ nothing ,
10389 )
90+ @. T_imp[i] = (U - temp) / (dt * a_imp[i, i])
91+ dss! (U, p, t_imp)
92+ post_explicit! (U, p, t_imp)
10493 end
105-
106- @. T_imp[i] = (U - temp) / (dt * a_imp[i, i])
107-
10894 T_lim! (T_lim[i], U, p, t_exp)
10995 T_exp! (T_exp[i], U, p, t_exp)
96+
11097 i = 4
11198 t_exp = t + dt
11299 @. U = u + dt * a_exp[i, 1 ] * T_lim[1 ] + dt * a_exp[i, 2 ] * T_lim[2 ] + dt * a_exp[i, 3 ] * T_lim[3 ]
@@ -117,44 +104,35 @@ function step_u!(integrator, cache::IMEXARKCache, ::ARS343)
117104 dt * a_exp[i, 3 ] * T_exp[3 ] +
118105 dt * a_imp[i, 2 ] * T_imp[2 ] +
119106 dt * a_imp[i, 3 ] * T_imp[3 ]
120- post_explicit! (U, p, t_exp)
121-
107+ dss! (U, p, t_exp)
122108 @. temp = U # used in closures
123109 let i = i
124110 t_imp = t + dt * c_imp[i]
111+ post_implicit! (U, p, t_imp)
125112 implicit_equation_residual! = (residual, Ui) -> begin
126113 T_imp! (residual, Ui, p, t_imp)
127114 @. residual = temp + dt * a_imp[i, i] * residual - Ui
128115 end
129116 implicit_equation_jacobian! = (jacobian, Ui) -> begin
130117 T_imp!. Wfact (jacobian, Ui, p, dt * a_imp[i, i], t_imp)
131118 end
132- call_post_implicit! = Ui -> begin
133- post_implicit! (Ui, p, t_imp)
134- end
135- call_post_implicit_last! = Ui -> begin
136- dss! (Ui, p, t_imp)
137- post_implicit! (Ui, p, t_imp)
138- end
119+ call_post_implicit! = Ui -> post_implicit! (Ui, p, t_imp)
139120 solve_newton! (
140121 newtons_method,
141122 newtons_method_cache,
142123 U,
143124 implicit_equation_residual!,
144125 implicit_equation_jacobian!,
145126 call_post_implicit!,
146- call_post_implicit_last! ,
127+ nothing ,
147128 )
129+ @. T_imp[i] = (U - temp) / (dt * a_imp[i, i])
130+ dss! (U, p, t_imp)
131+ post_explicit! (U, p, t_imp)
148132 end
149-
150- @. T_imp[i] = (U - temp) / (dt * a_imp[i, i])
151-
152133 T_lim! (T_lim[i], U, p, t_exp)
153134 T_exp! (T_exp[i], U, p, t_exp)
154135
155- # final
156- i = - 1
157-
158136 t_final = t + dt
159137 @. temp = u + dt * b_exp[2 ] * T_lim[2 ] + dt * b_exp[3 ] * T_lim[3 ] + dt * b_exp[4 ] * T_lim[4 ]
160138 lim! (temp, p, t_final, u)
0 commit comments