|
15 | 15 | from matplotlib.ticker import ScalarFormatter |
16 | 16 |
|
17 | 17 | if __name__ == "__main__": |
18 | | - mvals = [3] |
| 18 | + mvals = [2, 3, 4] |
19 | 19 | kvals = np.arange(2,10) |
20 | | - lambdaratio = [1, 5, 10] |
21 | | - stabval = np.zeros((np.size(mvals), np.size(lambdaratio), np.size(kvals))) |
| 20 | + lambda_fast = 15j |
| 21 | + lambda_slow = 3j |
| 22 | + stabval = np.zeros((np.size(mvals), np.size(kvals))) |
22 | 23 |
|
23 | 24 | for i in range(0,np.size(mvals)): |
24 | 25 | pparams = {} |
|
51 | 52 | QI = level.sweep.QI[1:,1:] |
52 | 53 | Q = level.sweep.coll.Qmat[1:,1:] |
53 | 54 |
|
54 | | - for j in range(0,np.size(lambdaratio)): |
55 | | - lambda_slow = 1j |
56 | | - lambda_fast = lambdaratio[j]*lambda_slow |
| 55 | + LHS, RHS = level.sweep.get_scalar_problems_sweeper_mats( lambdas = [ lambda_fast, lambda_slow ] ) |
57 | 56 |
|
58 | | - LHS, RHS = level.sweep.get_scalar_problems_sweeper_mats( lambdas = [ lambda_fast, lambda_slow ] ) |
59 | | - |
60 | | - for k in range(0, np.size(kvals)): |
61 | | - Kmax = kvals[k] |
62 | | - Mat_sweep = level.sweep.get_scalar_problems_manysweep_mat( nsweeps = Kmax, lambdas = [ lambda_fast, lambda_slow ] ) |
63 | | - if do_coll_update: |
64 | | - stab_fh = 1.0 + (lambda_fast + lambda_slow)*level.sweep.coll.weights.dot(Mat_sweep.dot(np.ones(nnodes))) |
65 | | - else: |
66 | | - q = np.zeros(nnodes) |
67 | | - q[nnodes-1] = 1.0 |
68 | | - stab_fh = q.dot(Mat_sweep.dot(np.ones(nnodes))) |
69 | | - stabval[i,j,k] = np.absolute(stab_fh) |
| 57 | + for k in range(0, np.size(kvals)): |
| 58 | + Kmax = kvals[k] |
| 59 | + Mat_sweep = level.sweep.get_scalar_problems_manysweep_mat( nsweeps = Kmax, lambdas = [ lambda_fast, lambda_slow ] ) |
| 60 | + if do_coll_update: |
| 61 | + stab_fh = 1.0 + (lambda_fast + lambda_slow)*level.sweep.coll.weights.dot(Mat_sweep.dot(np.ones(nnodes))) |
| 62 | + else: |
| 63 | + q = np.zeros(nnodes) |
| 64 | + q[nnodes-1] = 1.0 |
| 65 | + stab_fh = q.dot(Mat_sweep.dot(np.ones(nnodes))) |
| 66 | + stabval[i,k] = np.absolute(stab_fh) |
70 | 67 |
|
71 | 68 | rcParams['figure.figsize'] = 2.5, 2.5 |
72 | 69 | fig = plt.figure() |
73 | 70 | fs = 8 |
74 | | - plt.plot(kvals, stabval[0,0,:], 'o-', color='b', label=("$\lambda_{fast}/\lambda_{slow}$=%3.0f" % lambdaratio[0])) |
75 | | - plt.plot(kvals, stabval[0,1,:], 's-', color='r', label=("$\lambda_{fast}/\lambda_{slow}$=%3.0f" % lambdaratio[1])) |
76 | | - plt.plot(kvals, stabval[0,2,:], 'd-', color='g', label=("$\lambda_{fast}/\lambda_{slow}$=%3.0f" % lambdaratio[2])) |
| 71 | + plt.plot(kvals, stabval[0,:], 'o-', color='b', label=("M=%2i" % mvals[0])) |
| 72 | + plt.plot(kvals, stabval[1,:], 's-', color='r', label=("M=%2i" % mvals[1])) |
| 73 | + plt.plot(kvals, stabval[2,:], 'd-', color='g', label=("M=%2i" % mvals[2])) |
77 | 74 | plt.plot(kvals, 1.0+0.0*kvals, '--', color='k') |
78 | 75 | plt.xlabel('Number of iterations K', fontsize=fs) |
79 | 76 | plt.ylabel(r'Modulus of stability function $\left| R \right|$', fontsize=fs) |
80 | 77 | plt.ylim([0.0, 1.2]) |
81 | 78 | plt.legend(loc='lower left', fontsize=fs, prop={'size':fs}) |
82 | 79 | plt.gca().get_xaxis().get_major_formatter().labelOnlyBase = False |
83 | 80 | plt.gca().get_xaxis().set_major_formatter(ScalarFormatter()) |
84 | | - plt.title(("M = %1i" % mvals[0]), fontsize=fs) |
85 | | - #plt.plot(kvals, stabval[1,0,:], '-', color='r') |
86 | | - #plt.plot(kvals, stabval[1,1,:], '--', color='r') |
87 | | - #plt.plot(kvals, stabval[1,2,:], '-.', color='r') |
88 | | - filename = 'stablimit-M'+str(mvals[0])+'.pdf' |
89 | | - fig.savefig(filename, bbox_inches='tight') |
90 | | - call(["pdfcrop", filename, filename]) |
| 81 | + plt.show() |
| 82 | + |
| 83 | +# filename = 'stablimit-M'+str(mvals[0])+'.pdf' |
| 84 | +# fig.savefig(filename, bbox_inches='tight') |
| 85 | +# call(["pdfcrop", filename, filename]) |
0 commit comments