Skip to content

Commit 479caf0

Browse files
author
Daniel Ruprecht
committed
plot_svd_vs_dt now also generates a plot showing projected speedup
1 parent 6f34126 commit 479caf0

File tree

1 file changed

+23
-5
lines changed

1 file changed

+23
-5
lines changed

scripts/plot_svd_vs_dt.py

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
Tend = 16.0
2424
nslices = int(Tend) # Make sure each time slice has length 1
2525
U_speed = 1.0
26-
nu = 0.0
27-
ncoarse_v = [1, 2, 4, 5, 10, 15, 20]
26+
nu = 0.1
27+
ncoarse_v = [1, 2, 5, 10, 15, 20]
2828
nfine = 20
2929
dx = 1.0
3030
u0_val = np.array([[1.0]], dtype='complex')
@@ -37,6 +37,9 @@
3737

3838
svds = np.zeros((3,np.size(ncoarse_v)))
3939
dt_v = np.zeros((3,np.size(ncoarse_v)))
40+
speedup = np.zeros((3,np.size(ncoarse_v)-1))
41+
tolerance = 1e-2
42+
nproc = 16
4043

4144
for k in range(3):
4245
if k==0:
@@ -54,11 +57,15 @@
5457
ucoarse = solution_linear(u0_val, np.array([[symb_coarse]],dtype='complex'))
5558

5659
for i in range(0,np.size(ncoarse_v)):
57-
para = parareal(0.0, Tend, nslices, intexact, impeuler, nfine, ncoarse_v[i], 0.0, 1, u0)
60+
para = parareal(0.0, Tend, nslices, impeuler, impeuler, nfine, ncoarse_v[i], 0.0, 1, u0)
5861
dt_v[k,i] = Tend/float(ncoarse_v[i]*nslices)
5962
svds[k,i] = para.get_max_svd(ucoarse=ucoarse)
60-
61-
rcParams['figure.figsize'] = 2.5, 2.5
63+
if i<np.size(ncoarse_v)-1:
64+
kiter = np.floor( np.log(tolerance)/np.log(svds[k,i]) )
65+
coarse_to_fine = float(ncoarse_v[i])/float(nfine)
66+
speedup[k,i] = 1.0/( (1 + kiter/nproc)*coarse_to_fine + kiter/nproc )
67+
68+
rcParams['figure.figsize'] = 3.54, 3.54
6269
fs = 8
6370
fig = plt.figure()
6471
plt.plot(dt_v[0,:], svds[0,:], 'b-o', label=(r"$\kappa$=%4.2f" % k_vec[0]), markersize=fs/2)
@@ -70,4 +77,15 @@
7077
filename = 'parareal-sigma-vs-dt.pdf'
7178
plt.gcf().savefig(filename, bbox_inches='tight')
7279
call(["pdfcrop", filename, filename])
80+
81+
fig = plt.figure()
82+
plt.plot(dt_v[0,0:np.size(ncoarse_v)-1], speedup[0,:], 'b-o', label=(r"$\kappa$=%4.2f" % k_vec[0]), markersize=fs/2)
83+
plt.plot(dt_v[1,0:np.size(ncoarse_v)-1], speedup[1,:], 'r-s', label=(r"$\kappa$=%4.2f" % k_vec[1]), markersize=fs/2)
84+
plt.plot(dt_v[2,0:np.size(ncoarse_v)-1], speedup[2,:], 'g-x', label=(r"$\kappa$=%4.2f" % k_vec[2]), markersize=fs/2)
85+
plt.legend(loc='upper right', fontsize=fs, prop={'size':fs-2}, handlelength=3)
86+
plt.xlabel(r'Coarse time step $\Delta t$', fontsize=fs)
87+
plt.ylabel(r'Project speedup', fontsize=fs)
88+
filename = 'parareal-speedup-vs-dt.pdf'
89+
plt.gcf().savefig(filename, bbox_inches='tight')
90+
call(["pdfcrop", filename, filename])
7391
plt.show()

0 commit comments

Comments
 (0)