Skip to content

Commit 9035a30

Browse files
author
Daniel Ruprecht
committed
modified script plotting parareal defect versus iteration to also show convergence behaviour estimated from maximum singular value
1 parent 0bf17f4 commit 9035a30

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

scripts/plot_conv_vs_waveno.py

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)