Skip to content

Commit 0c12b38

Browse files
author
Daniel Ruprecht
committed
2 parents fd177a9 + 3dee659 commit 0c12b38

File tree

3 files changed

+15
-49
lines changed

3 files changed

+15
-49
lines changed

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@ How can I reproduce Figures from the publication?
2929
- Fig. 7 --> scripts/plot_dispersion.py with artificial_coarse=1 and artifical_coarse=2
3030
- Fig. 8 --> example/run.py with artificial_coarse=2
3131
- Fig. 9 --> scripts/plot_svd_vs_waveno_different_G.py
32-
- Fig. 8 --> scripts/plot_dispersion.py with artifical_fine=1
33-
- Fig. 9 --> example/run.py with artifical_fine=1
34-
- Fig. 10 -> scripts/plot_dispersion.py with ncoarse=2
35-
- Fig. 11 -> scripts/plot_dispersion.py with Tend=64
36-
- Fig. 12 -> scripts/plot_svd_vs_P.py
37-
- Fig. 13 -> scripts/plot_conv_vs_waveno.py
32+
- Fig. 10 -> scripts/plot_dispersion.py with artifical_fine=1
33+
- Fig. 11 -> example/run.py with artifical_fine=1
34+
- Fig. 12 -> scripts/plot_dispersion.py with ncoarse=2
35+
- Fig. 13 -> scripts/plot_dispersion.py with Tend=64 and Nsamples=120
36+
- Fig. 14 -> scripts/plot_svd_vs_P.py
37+
- Fig. 15 -> scripts/plot_conv_vs_waveno.py
3838
- Fig. 14 -> scripts/plot_svd_vs_waveno.py
3939

4040

scripts/plot_conv_vs_waveno.py

Lines changed: 7 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,14 @@ def solve_omega(R):
1414

1515
if __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()

scripts/plot_svd_vs_P.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
para = parareal(0.0, float(nslices_v[i]), nslices_v[i], intexact, impeuler, nfine, ncoarse, 0.0, 1, u0)
5050
svds[j,i] = para.get_max_svd(ucoarse=ucoarse)
5151

52-
rcParams['figure.figsize'] = 2.5, 2.5
52+
rcParams['figure.figsize'] = 3.54, 3.54
5353
fs = 8
5454
fig = plt.figure()
5555
plt.plot(nslices_v, svds[0,:], 'b-o', label=(r"$\kappa$=%4.2f" % waveno_v[0]), markersize=fs/2, markevery=(1,6))
@@ -62,4 +62,4 @@
6262
plt.legend(loc='lower right', fontsize=fs, prop={'size':fs-2}, handlelength=3)
6363
filename = 'parareal-svd-vs-p.pdf'
6464
plt.gcf().savefig(filename, bbox_inches='tight')
65-
call(["pdfcrop", filename, filename])
65+
call(["pdfcrop", filename, filename])

0 commit comments

Comments
 (0)