-
Notifications
You must be signed in to change notification settings - Fork 0
/
analysed.py
97 lines (87 loc) · 3.42 KB
/
analysed.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import os
import im2gif
import cmath as cm
import numpy as np
from io import BytesIO
from PIL import Image as im
from matplotlib import pyplot as plt
def font(family='serif', color='black', weight='normal', size='16'):
return {'family': family, 'color': color, 'weight': weight, 'size': size}
# relationship with ratio
# ratio = np.linspace(0,5,1e4)
# ratio[ratio==1]=1+1e-10
# k0 = 1e-10
# k1 = np.array([k0*cm.sqrt(r) for r in ratio])
# k2 = np.array([k0*cm.sqrt(r-1) for r in ratio])
# D = 4*np.square(k1)*np.square(k2)/(np.square(np.square(k1)-np.square(k2))*np.square(np.sin(k2))+4*np.square(k1)*np.square(k2))
# R = 1-D
# flg = plt.figure(figsize=(10,45/8))
# plt.xlabel('$E/U_0$', fontdict=font())
# plt.ylabel('$Intensity$', fontdict=font())
# plt.title('Relationship With $E/U_0$')
# plt.hold(True)
# hd, = plt.plot(ratio, np.real(D), color='blue', label='transmission coefficient')
# hr, = plt.plot(ratio, np.real(R), color='red', label='reflection coefficient')
# plt.legend(fontsize=14, frameon=True, fancybox=True, framealpha=0.3)
# plt.hold(False)
# ht= plt.text(2.1,.5,'$k_0=%.2f$' % k0, fontdict=font(size=20))
# # plt.show()
# gif_root = './gif'
# # check gif root dir
# if not os.path.isdir(gif_root):
# os.makedirs(gif_root)
# FN = 50
# images = []
# for k0 in np.linspace(0,50,FN):
# k1 = np.array([k0*cm.sqrt(r) for r in ratio])
# k2 = np.array([k0*cm.sqrt(r-1) for r in ratio])
# D = 4*np.square(k1)*np.square(k2)/(np.square(np.square(k1)-np.square(k2))*np.square(np.sin(k2))+4*np.square(k1)*np.square(k2))
# R = 1-D
# hd.set_ydata(np.real(D))
# hr.set_ydata(np.real(R))
# ht.set_text('$k_0=%.2f$' % k0)
# buf = BytesIO()
# plt.savefig(buf, format='png')
# images.append(im.open(buf))
# gif_path = os.path.join(gif_root, 'analyse_r2e.gif' % ratio)
# im2gif.writeGif(filename=gif_path, images=images, duration=2 / FN)
# print('gif file created at path: %s.' % os.path.abspath(gif_path))
# relationship with k0
ratio = 0.01
ratio = 0.01 if ratio < 0.01 else ratio if ratio != 1 else ratio + 1e-10
k0 = np.linspace(0,20,1e3)
k1 = k0*cm.sqrt(ratio)
k2 = k0*cm.sqrt(ratio-1)
D = 4*np.square(k1)*np.square(k2)/(np.square(np.square(k1)-np.square(k2))*np.square(np.sin(k2))+4*np.square(k1)*np.square(k2))
R = 1-D
flg = plt.figure(figsize=(10,45/8))
plt.xlabel('$k_0$', fontdict=font())
plt.ylabel('$Intensity$', fontdict=font())
plt.title('Relationship With $K0$')
plt.hold(True)
hd, = plt.plot(k0, np.real(D), color='blue', label='transmission coefficient')
hr, = plt.plot(k0, np.real(R), color='red', label='reflection coefficient')
plt.legend(fontsize=14, frameon=True, fancybox=True, framealpha=0.3)
plt.hold(False)
ht = plt.text(8,.5,'$E/U_0=%.2f$' % ratio, fontdict=font(size=20))
# plt.show()
gif_root = './gif'
# check gif root dir
if not os.path.isdir(gif_root):
os.makedirs(gif_root)
FN = 40
images = []
for ratio in np.linspace(0,5,FN):
k1 = k0*cm.sqrt(ratio)
k2 = k0*cm.sqrt(ratio-1)
D = 4*np.square(k1)*np.square(k2)/(np.square(np.square(k1)-np.square(k2))*np.square(np.sin(k2))+4*np.square(k1)*np.square(k2))
R = 1-D
hd.set_ydata(np.real(D))
hr.set_ydata(np.real(R))
ht.set_text('$E/U_0=%.2f$' % ratio)
buf = BytesIO()
plt.savefig(buf, format='png')
images.append(im.open(buf))
gif_path = os.path.join(gif_root, 'analyse_e2r.gif' % ratio)
im2gif.writeGif(filename=gif_path, images=images, duration=2 / FN)
print('gif file created at path: %s.' % os.path.abspath(gif_path))