@@ -62,7 +62,6 @@ void Naive::run(Dim N, Dim saveInterval) {
62
62
63
63
bool divergent = false , repeat = false , noInc = false ;
64
64
int divergentCount = 0 , repeatCount = 0 ;
65
- HyperCoefficients hyper{};
66
65
67
66
bool saved = false ;
68
67
// Manually increment t only if not diverging
@@ -116,16 +115,14 @@ void Naive::run(Dim N, Dim saveInterval) {
116
115
g.for_each_kxky ([&](Dim kx, Dim ky) {
117
116
GM_Nonlinear_K (kx, ky, N_E) =
118
117
nonlinear::N (bracketPhiNE_K (kx, ky), bracketAParUEKPar_K (kx, ky));
119
- GM_K_Star (kx, ky, N_E) =
120
- exp_nu (kx, ky, hyper.nu_2 , dt) * moments_K (kx, ky, N_E) +
121
- dt / 2.0 * (1 + exp_nu (kx, ky, hyper.nu_2 , dt)) * GM_Nonlinear_K (kx, ky, N_E);
118
+ GM_K_Star (kx, ky, N_E) = exp_nu (kx, ky) * moments_K (kx, ky, N_E) +
119
+ dt / 2.0 * (1 + exp_nu (kx, ky)) * GM_Nonlinear_K (kx, ky, N_E);
122
120
123
121
GM_Nonlinear_K (kx, ky, A_PAR) =
124
122
nonlinear::A (bracketAParPhiG2Ne_K (kx, ky), bracketUEParPhi_K (kx, ky), g.kPerp2 (kx, ky));
125
- GM_K_Star (kx, ky, A_PAR) =
126
- exp_eta (kx, ky, hyper.eta2 , dt) * moments_K (kx, ky, A_PAR) +
127
- dt / 2.0 * (1 + exp_eta (kx, ky, hyper.eta2 , dt)) * GM_Nonlinear_K (kx, ky, A_PAR) +
128
- (1.0 - exp_eta (kx, ky, hyper.eta2 , dt)) * aParEq_K (kx, ky);
123
+ GM_K_Star (kx, ky, A_PAR) = exp_eta (kx, ky) * moments_K (kx, ky, A_PAR) +
124
+ dt / 2.0 * (1 + exp_eta (kx, ky)) * GM_Nonlinear_K (kx, ky, A_PAR) +
125
+ (1.0 - exp_eta (kx, ky)) * aParEq_K (kx, ky);
129
126
});
130
127
131
128
if (g.M > 2 ) {
@@ -150,17 +147,14 @@ void Naive::run(Dim N, Dim saveInterval) {
150
147
g.for_each_kxky ([&](Dim kx, Dim ky) {
151
148
GM_Nonlinear_K (kx, ky, G_MIN) = nonlinear::G2 (
152
149
bracketPhiG2_K (kx, ky), bracketAParG3_K (kx, ky), bracketAParUEKPar_K (kx, ky));
153
- GM_K_Star (kx, ky, G_MIN) =
154
- exp_nu (kx, ky, hyper.nu_2 , dt) * moments_K (kx, ky, G_MIN) +
155
- dt / 2.0 * (1 + exp_nu (kx, ky, hyper.nu_2 , dt)) * GM_Nonlinear_K (kx, ky, G_MIN);
150
+ GM_K_Star (kx, ky, G_MIN) = exp_nu (kx, ky) * moments_K (kx, ky, G_MIN) +
151
+ dt / 2.0 * (1 + exp_nu (kx, ky)) * GM_Nonlinear_K (kx, ky, G_MIN);
156
152
157
153
GM_Nonlinear_K (kx, ky, LAST) =
158
154
nonlinear::GLast (bracketPhiGLast_K (kx, ky), bracketTotalGLast_K (kx, ky));
159
155
GM_K_Star (kx, ky, LAST) =
160
- exp_gm (LAST, hyper.nu_ei , dt) * exp_nu (kx, ky, hyper.nu_g , dt) *
161
- moments_K (kx, ky, LAST) +
162
- dt / 2.0 * (1 + exp_gm (LAST, hyper.nu_ei , dt) * exp_nu (kx, ky, hyper.nu_g , dt)) *
163
- GM_Nonlinear_K (kx, ky, LAST);
156
+ exp_gm (LAST) * exp_nu_g (kx, ky) * moments_K (kx, ky, LAST) +
157
+ dt / 2.0 * (1 + exp_gm (LAST) * exp_nu_g (kx, ky)) * GM_Nonlinear_K (kx, ky, LAST);
164
158
});
165
159
166
160
auto dGMinusPlus = g.dBufXY ();
@@ -179,9 +173,8 @@ void Naive::run(Dim N, Dim saveInterval) {
179
173
GM_Nonlinear_K (kx, ky, m) =
180
174
nonlinear::GM (m, bracketPhiGM_K (kx, ky), bracketAParGMMinusPlus_K (kx, ky));
181
175
GM_K_Star (kx, ky, m) =
182
- exp_gm (m, hyper.nu_ei , dt) * exp_nu (kx, ky, hyper.nu_g , dt) * moments_K (kx, ky, m) +
183
- dt / 2.0 * (1 + exp_gm (m, hyper.nu_ei , dt) * exp_nu (kx, ky, hyper.nu_g , dt)) *
184
- GM_Nonlinear_K (kx, ky, m);
176
+ exp_gm (m) * exp_nu_g (kx, ky) * moments_K (kx, ky, m) +
177
+ dt / 2.0 * (1 + exp_gm (m) * exp_nu_g (kx, ky)) * GM_Nonlinear_K (kx, ky, m);
185
178
});
186
179
}
187
180
}
@@ -251,13 +244,12 @@ void Naive::run(Dim N, Dim saveInterval) {
251
244
GM_Nonlinear_K_Loop (kx, ky, A_PAR) = nonlinear::A (
252
245
bracketAParPhiG2Ne_K_Loop (kx, ky), bracketUEParPhi_K_Loop (kx, ky), g.kPerp2 (kx, ky));
253
246
// TODO(OPT) reuse star
254
- momentsNew_K (kx, ky, A_PAR) =
255
- 1.0 / (1.0 + semiImplicitOperator (kx, ky) / 4.0 ) *
256
- (exp_eta (kx, ky, hyper.eta2 , dt) * moments_K (kx, ky, A_PAR) +
257
- dt / 2.0 * exp_eta (kx, ky, hyper.eta2 , dt) * GM_Nonlinear_K (kx, ky, A_PAR) +
258
- dt / 2.0 * GM_Nonlinear_K_Loop (kx, ky, A_PAR) +
259
- (1.0 - exp_eta (kx, ky, hyper.eta2 , dt)) * aParEq_K (kx, ky) +
260
- semiImplicitOperator (kx, ky) / 4.0 * guessAPar_K (kx, ky));
247
+ momentsNew_K (kx, ky, A_PAR) = 1.0 / (1.0 + semiImplicitOperator (kx, ky) / 4.0 ) *
248
+ (exp_eta (kx, ky) * moments_K (kx, ky, A_PAR) +
249
+ dt / 2.0 * exp_eta (kx, ky) * GM_Nonlinear_K (kx, ky, A_PAR) +
250
+ dt / 2.0 * GM_Nonlinear_K_Loop (kx, ky, A_PAR) +
251
+ (1.0 - exp_eta (kx, ky)) * aParEq_K (kx, ky) +
252
+ semiImplicitOperator (kx, ky) / 4.0 * guessAPar_K (kx, ky));
261
253
ueKPar_K_New (kx, ky) = -g.kPerp2 (kx, ky) * momentsNew_K (kx, ky, A_PAR);
262
254
263
255
sumAParRelError += std::norm (momentsNew_K (kx, ky, A_PAR) - moments_K (kx, ky, A_PAR));
@@ -285,10 +277,9 @@ void Naive::run(Dim N, Dim saveInterval) {
285
277
GM_Nonlinear_K_Loop (kx, ky, N_E) =
286
278
nonlinear::N (bracketPhiNE_K_Loop (kx, ky), bracketAParUEKPar_K_Loop (kx, ky));
287
279
// TODO(OPT) reuse star
288
- momentsNew_K (kx, ky, N_E) =
289
- exp_nu (kx, ky, hyper.nu_2 , dt) * moments_K (kx, ky, N_E) +
290
- dt / 2.0 * exp_nu (kx, ky, hyper.nu_2 , dt) * GM_Nonlinear_K (kx, ky, N_E) +
291
- dt / 2.0 * GM_Nonlinear_K_Loop (kx, ky, N_E);
280
+ momentsNew_K (kx, ky, N_E) = exp_nu (kx, ky) * moments_K (kx, ky, N_E) +
281
+ dt / 2.0 * exp_nu (kx, ky) * GM_Nonlinear_K (kx, ky, N_E) +
282
+ dt / 2.0 * GM_Nonlinear_K_Loop (kx, ky, N_E);
292
283
293
284
phi_K_New (kx, ky) =
294
285
(kx | ky) == 0 ? 0 : nonlinear::phi (momentsNew_K (kx, ky, N_E), g.kPerp2 (kx, ky));
@@ -307,10 +298,9 @@ void Naive::run(Dim N, Dim saveInterval) {
307
298
nonlinear::G2 (bracketPhiG2_K_Loop (kx, ky), bracketAParG3_K_Loop (kx, ky),
308
299
bracketAParUEKPar_K_Loop (kx, ky));
309
300
// TODO(OPT) reuse star
310
- momentsNew_K (kx, ky, G_MIN) =
311
- exp_nu (kx, ky, hyper.nu_2 , dt) * moments_K (kx, ky, G_MIN) +
312
- dt / 2.0 * exp_nu (kx, ky, hyper.nu_2 , dt) * GM_Nonlinear_K (kx, ky, G_MIN) +
313
- dt / 2.0 * GM_Nonlinear_K_Loop (kx, ky, G_MIN);
301
+ momentsNew_K (kx, ky, G_MIN) = exp_nu (kx, ky) * moments_K (kx, ky, G_MIN) +
302
+ dt / 2.0 * exp_nu (kx, ky) * GM_Nonlinear_K (kx, ky, G_MIN) +
303
+ dt / 2.0 * GM_Nonlinear_K_Loop (kx, ky, G_MIN);
314
304
});
315
305
DerivateNewMoment (G_MIN);
316
306
@@ -332,9 +322,8 @@ void Naive::run(Dim N, Dim saveInterval) {
332
322
bracketAParGMMinusPlus_K_Loop (kx, ky));
333
323
// TODO(OPT) reuse star
334
324
momentsNew_K (kx, ky, m) =
335
- exp_gm (m, hyper.nu_ei , dt) * exp_nu (kx, ky, hyper.nu_g , dt) * moments_K (kx, ky, m) +
336
- dt / 2.0 * exp_gm (m, hyper.nu_ei , dt) * exp_nu (kx, ky, hyper.nu_g , dt) *
337
- GM_Nonlinear_K (kx, ky, m) +
325
+ exp_gm (m) * exp_nu_g (kx, ky) * moments_K (kx, ky, m) +
326
+ dt / 2.0 * exp_gm (m) * exp_nu_g (kx, ky) * GM_Nonlinear_K (kx, ky, m) +
338
327
dt / 2.0 * GM_Nonlinear_K_Loop (kx, ky, m);
339
328
});
340
329
@@ -363,10 +352,8 @@ void Naive::run(Dim N, Dim saveInterval) {
363
352
nonlinear::GLast (bracketPhiGLast_K_Loop (kx, ky), bracketTotalGLast_K_Loop (kx, ky));
364
353
// TODO(OPT) reuse star
365
354
momentsNew_K (kx, ky, LAST) =
366
- exp_gm (LAST, hyper.nu_ei , dt) * exp_nu (kx, ky, hyper.nu_g , dt) *
367
- moments_K (kx, ky, LAST) +
368
- dt / 2.0 * exp_gm (LAST, hyper.nu_ei , dt) * exp_nu (kx, ky, hyper.nu_g , dt) *
369
- GM_Nonlinear_K (kx, ky, LAST) +
355
+ exp_gm (LAST) * exp_nu_g (kx, ky) * moments_K (kx, ky, LAST) +
356
+ dt / 2.0 * exp_gm (LAST) * exp_nu_g (kx, ky) * GM_Nonlinear_K (kx, ky, LAST) +
370
357
dt / 2.0 * GM_Nonlinear_K_Loop (kx, ky, LAST);
371
358
});
372
359
DerivateNewMoment (LAST);
0 commit comments