@@ -14,18 +14,14 @@ def solve_omega(R):
1414
1515if __name__ == "__main__" :
1616
17- Nx = 200
18- x = np .linspace (0 ,20 ,Nx + 1 ,endpoint = False )
19- x = x [0 :Nx ]
20-
2117 Nk = 6
2218 k_vec = np .linspace (0 , np .pi , Nk + 1 , endpoint = False )
2319 k_vec = k_vec [1 :]
2420 k_vec = [k_vec [0 ], k_vec [1 ], k_vec [- 1 ]]
2521 Tend = 16.0
2622 nslices = 16
2723 U_speed = 1.0
28- nu = 0.1
24+ nu = 0.0
2925 ncoarse = 1
3026 nfine = 1
3127
@@ -54,64 +50,34 @@ def solve_omega(R):
5450 if abs (stab_fine [0 ,0 ]- stab_ex )> 1e-14 :
5551 print "WARNING: Fine method is not the exact integrator..."
5652
57- y_start = np .exp (1j * k_vec [kk ]* x )
58- y_ex = stab_ex * y_start
59-
60- y_coarse = stab_coarse [0 ,0 ]* y_start
61- y_fine = stab_fine [0 ,0 ]* y_start
62-
6353 omega_fine = solve_omega (stab_fine [0 ,0 ])
6454 phase_fine = omega_fine .real / k_vec [kk ]
6555 amp_fine = np .exp (omega_fine .imag )
6656
6757 for n in range (1 ,nslices + 1 ):
6858 stab_para = para .get_parareal_stab_function (n )
69- y_para = stab_para [0 ,0 ]* y_start
70- err [kk ,n - 1 ] = np .linalg .norm (y_para - y_fine , np .inf )/ np .linalg .norm (y_fine , np .inf )
71- omega_para = solve_omega (stab_para [0 ,0 ])
72- phase_para = omega_para .real / k_vec [kk ]
73- amp_para = np .exp (omega_para .imag )
74- err_phase [kk ,n - 1 ] = abs (phase_para - phase_fine )/ abs (phase_fine )
75- err_amp [kk ,n - 1 ] = abs (amp_para - amp_fine )/ abs (amp_fine )
59+ err [kk ,n - 1 ] = abs (stab_para [0 ,0 ] - stab_fine [0 ,0 ])
7660
7761 fs = 8
78- rcParams ['figure.figsize' ] = 2.5 , 2.5
62+ rcParams ['figure.figsize' ] = 3.54 , 3.54
7963 fig = plt .figure ()
8064 iter_v = range (1 ,nslices )
8165 assert np .max (err [:,- 1 ])< 1e-10 , ("For at least one wavenumber, Parareal did not fully converge for niter=nslices. Error: %5.3e" % np .max (err [:,- 1 ]))
8266 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--' )
67+ # plt.semilogy(iter_v, err[0,0]*np.power(svds[0], iter_v), 'b--')
8468
8569 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--' )
70+ # plt.semilogy(iter_v, err[1,0]*np.power(svds[1], iter_v), 'r--')
8771
8872 plt .semilogy (iter_v , err [2 ,0 :- 1 ], 'g-x' , label = (r"$\kappa$=%4.2f" % k_vec [2 ]), 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--')
73+ #plt.semilogy(iter_v, err[2,0]*np.power(svds[2], iter_v), 'g--')
9374
9475 plt .legend (loc = 'lower left' , fontsize = fs , prop = {'size' :fs - 2 }, handlelength = 3 )
9576 plt .xlabel ('Parareal Iteration $k$' , fontsize = fs )
9677 plt .ylabel ('Parareal defect' , fontsize = fs )
97- plt .xticks (np .arange (iter_v [0 ], iter_v [ - 1 ] , 2 ), fontsize = fs )
78+ plt .xticks (np .arange (iter_v [0 ], nslices , 2 ), fontsize = fs )
9879 plt .yticks ([1e-14 , 1e-12 , 1e-10 , 1e-8 , 1e-6 , 1e-4 , 1e-2 , 1e0 , 1e2 ], fontsize = fs )
9980 filename = 'parareal-conv-waveno.pdf'
10081 plt .gcf ().savefig (filename , bbox_inches = 'tight' )
10182 call (["pdfcrop" , filename , filename ])
102-
103- #fig = plt.figure()
104- #plt.semilogy(iter_v, err_phase[0,0:-1], 'b-o', label=(r"$\kappa$=%4.2f" % k_vec[0]), markersize=fs/2)
105- #plt.semilogy(iter_v, err_phase[1,0:-1], 'r-s', label=(r"$\kappa$=%4.2f" % k_vec[1]), markersize=fs/2)
106- #plt.semilogy(iter_v, err_phase[2,0:-1], 'g-x', label=(r"$\kappa$=%4.2f" % k_vec[2]), markersize=fs/2)
107- #plt.semilogy(iter_v, err_phase[3,0:-1], 'k-d', label=(r"$\kappa$=%4.2f" % k_vec[3]), markersize=fs/2)
108- #plt.legend(loc='lower left', fontsize=fs, prop={'size':fs}, handlelength=3)
109-
110- #fig = plt.figure()
111- #plt.semilogy(iter_v, err_amp[0,0:-1], 'b-o', label=(r"$\kappa$=%4.2f" % k_vec[0]), markersize=fs/2)
112- #plt.semilogy(iter_v, err_amp[1,0:-1], 'r-s', label=(r"$\kappa$=%4.2f" % k_vec[1]), markersize=fs/2)
113- #plt.semilogy(iter_v, err_amp[2,0:-1], 'g-x', label=(r"$\kappa$=%4.2f" % k_vec[2]), markersize=fs/2)
114- #plt.semilogy(iter_v, err_amp[3,0:-1], 'k-d', label=(r"$\kappa$=%4.2f" % k_vec[3]), markersize=fs/2)
115- #plt.legend(loc='lower left', fontsize=fs, prop={'size':fs}, handlelength=3)
116-
11783 #plt.show()
0 commit comments