打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
力学性质绘图代码:杨氏模量 泊松比
userphoto

2023.07.19 北京

关注

动机

写这篇推文,本意是介绍matplotlib的polar plot, 顺便重复一篇文章里的图给读者看一下,有需要的读者可以复制代码用于绘图。

弹性常数计算方法

见下面推文

计算2D弹性常数(杨氏模量)的两种方法对比[直接法|Vs|vaspkit]

杨氏模量和泊松比的计算公式

参照Phys. Rev. B 82, 235414里面的公式:

简化参数
杨氏模量
泊松比

对于二维材料这里对应的应该是我们计算得到的, 这篇文章就是这么处理的 (Nanoscale Horiz., 2020, 5, 1386-1393) (这个地方我还不确定是不是对的,至少这篇文章是这么做的,这里如果有问题,我后续推文会更正)

Nanoscale Horiz., 2020, 5, 1386-1393

效果图

先展示文献中的效果图

杨氏模量 Nanoscale Horiz., 2020, 5, 1386-1393
泊松比 Nanoscale Horiz., 2020, 5, 1386-1393

绘图代码

  • 数据取自这篇Nanoscale Horiz.的数据,代码如下

杨氏模量

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')
  • 结果

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
matplotlib-绘制精美的图表
搭建自己的回测系统(八)数据可视化初探
geopandas-python中地理信息绘图利器
Python中的Matplotlib绘图
使用Matplotlib创建动画
无意发现了 Matplotlib 美化器
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服