動機
寫這篇推文,本意是介紹matplotlib的polar plot, 順便重復一篇文章里的圖給讀者看一下,有需要的讀者可以復制代碼用于繪圖。
彈性常數(shù)計算方法 見下面推文
計算2D彈性常數(shù)(楊氏模量)的兩種方法對比[直接法|Vs|vaspkit]
楊氏模量和泊松比的計算公式 參照Phys. Rev. B 82, 235414里面的公式:
簡化參數(shù) 楊氏模量 泊松比 對于二維材料這里 對應的應該是我們計算得到的 , 這篇文章就是這么處理的 (Nanoscale Horiz., 2020, 5, 1386-1393) (這個地方我還不確定是不是對的,至少這篇文章是這么做的,這里如果有問題,我后續(xù)推文會更正)
Nanoscale Horiz., 2020, 5, 1386-1393 效果圖 先展示文獻中的效果圖
楊氏模量 Nanoscale Horiz., 2020, 5, 1386-1393 泊松比 Nanoscale Horiz., 2020, 5, 1386-1393 繪圖代碼 數(shù)據(jù)取自這篇Nanoscale Horiz.的數(shù)據(jù),代碼如下 楊氏模量 import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from matplotlib import rc import matplotlib.colors as colors rc('text' , usetex=True) plt.rc('font' ,family='Times New Roman' ,size=11) d = np.arange(0, 1, 0.001) theta = 2 * np.pi * d C11 = 36.2 C22 = 6.65 C12 = 5.3 C44 = 7.61 delta = C11*C22 - C12**2 c = np.cos(theta) s = np.sin(theta) Y = delta/(C11*s**4 + C22*c**4 + (delta/C44 -2*C12) *c**2*s**2) fig, ax = plt.subplots(subplot_kw={'projection' : 'polar' })#fig, ax = plt.subplots() po=ax.scatter(theta, Y,c=Y,cmap=cm.coolwarm)#ax.set_rmax(2) #ax.set_rticks([0.5, 1, 1.5, 2]) # Less radial ticks #ax.set_rlabel_position(-22.5) # Move radial labels away from plotted line ax.grid(True) cbar = plt.colorbar(po, ax=ax, pad=0.15)#cbar.ax.set_title('Young\'s modulus' + r'$N/m^2', pad=20) cbar.set_label('Young\'s modulus ' + r'$(N/m)$' )#cbar.ax.title.set_rotation(90) #ax.set_title('Young\'s modulus') plt.savefig('Young.pdf' )
泊松比 v_a = (C11+C22-delta/C44)*c**2*s**2-C12*(c**4+s**4) v_b = C11*s**4 + C22 * c**4 + (delta/C44 - 2*C12)*c**2 * s**2 v = -v_a/v_b fig, ax = plt.subplots(subplot_kw={'projection' : 'polar' })#fig, ax = plt.subplots() po=ax.scatter(theta, v,c=Y,cmap=cm.coolwarm)#ax.set_rmax(2) #ax.set_rticks([0.5, 1, 1.5, 2]) # Less radial ticks #ax.set_rlabel_position(-22.5) # Move radial labels away from plotted line ax.grid(True) cbar = plt.colorbar(po, ax=ax, pad=0.15)#cbar.ax.set_title('Poisson ratio', pad=20) cbar.set_label('Poisson ratio' )#cbar.ax.title.set_rotation(90) #ax.set_title('Young\'s modulus') plt.savefig('Poisson.pdf' )