@@ -18,10 +18,10 @@ def solve_omega(R):
1818 x = np .linspace (0 ,20 ,Nx + 1 ,endpoint = False )
1919 x = x [0 :Nx ]
2020
21- Nk = 4
21+ Nk = 6
2222 k_vec = np .linspace (0 , np .pi , Nk + 1 , endpoint = False )
2323 k_vec = k_vec [1 :]
24-
24+ k_vec = [ k_vec [ 0 ], k_vec [ 1 ], k_vec [ - 1 ]]
2525 Tend = 16.0
2626 nslices = 16
2727 U_speed = 1.0
@@ -32,6 +32,7 @@ def solve_omega(R):
3232 err = np .zeros ((np .size (k_vec ),nslices ))
3333 err_phase = np .zeros ((np .size (k_vec ),nslices ))
3434 err_amp = np .zeros ((np .size (k_vec ),nslices ))
35+ svds = np .zeros ((np .size (k_vec ),1 ))
3536
3637 for kk in range (0 ,np .size (k_vec )):
3738
@@ -48,6 +49,8 @@ def solve_omega(R):
4849 stab_fine = para .timemesh .slices [0 ].get_fine_update_matrix (u0 )
4950 stab_fine = stab_fine ** nslices
5051
52+ svds [kk ,0 ] = para .get_max_svd ()
53+
5154 if abs (stab_fine [0 ,0 ]- stab_ex )> 1e-14 :
5255 print "WARNING: Fine method is not the exact integrator..."
5356
@@ -77,9 +80,17 @@ def solve_omega(R):
7780 iter_v = range (1 ,nslices )
7881 assert np .max (err [:,- 1 ])< 1e-14 , "For at least one wavenumber, Parareal did not fully converge for niter=nslices"
7982 plt .semilogy (iter_v , err [0 ,0 :- 1 ], 'b-o' , label = (r"$\kappa$=%4.2f" % k_vec [0 ]), markersize = fs / 2 )
83+ plt .semilogy (iter_v , err [0 ,0 ]* np .power (svds [0 ], iter_v ), 'b--' )
84+
8085 plt .semilogy (iter_v , err [1 ,0 :- 1 ], 'r-s' , label = (r"$\kappa$=%4.2f" % k_vec [1 ]), markersize = fs / 2 )
86+ plt .semilogy (iter_v , err [1 ,0 ]* np .power (svds [1 ], iter_v ), 'r--' )
87+
8188 plt .semilogy (iter_v , err [2 ,0 :- 1 ], 'g-x' , label = (r"$\kappa$=%4.2f" % k_vec [2 ]), markersize = fs / 2 )
82- plt .semilogy (iter_v , err [3 ,0 :- 1 ], 'k-d' , label = (r"$\kappa$=%4.2f" % k_vec [3 ]), markersize = fs / 2 )
89+ plt .semilogy (iter_v , err [2 ,0 ]* np .power (svds [2 ], iter_v ), 'g--' )
90+
91+ #plt.semilogy(iter_v, err[3,0:-1], 'k-d', label=(r"$\kappa$=%4.2f" % k_vec[3]), markersize=fs/2)
92+ #plt.semilogy(iter_v, err[3,0]*np.power(svds[3], iter_v), 'k--')
93+
8394 plt .legend (loc = 'lower left' , fontsize = fs , prop = {'size' :fs - 2 }, handlelength = 3 )
8495 plt .xlabel ('Parareal Iteration $k$' , fontsize = fs )
8596 plt .ylabel ('Parareal defect' , fontsize = fs )
0 commit comments