24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2126  |  回复: 6

losenq

新虫 (小有名气)

[求助] 用侯博士计算弹性常数的方法,计算NITI B2相的C11和C12出现了问题。求助高手!

我计算的Niti B2结构,用了两种方法来计算弹性常数,一种是通过VASP直接计算,IBRION=6, ISIF=3, NFREE=4

计算出来C11=194GPA,C12=178GPA,C44=53GPA。与其他参考文献对照了一下,发现C11和C12相差稍远,C44倒是有很接近的。

于是又用侯博士的那种方法,具体方法小木虫上面应该有挺多帖子。DELTA变化范围从-0.02到0.02,间隔0.0025。

第一步算C44,E=(0,0,0,DELTA,DELTA,DELTA)
得到的结果是49GPA,这与参考文献相差不多,参考值46GPA。

第二步算C11,C12。
分别用E=(DELTA,DELTA,0,0,0,0)

E=(DELTA,DELTA,DELTA,0,0,0)
计算(E-E0)/V0 ~DELTA,然后进行拟和,联合求解计算C11,C12,发现这两个值居然相当接近!
C11=159GPA
C12=160GPA

这与文献相当不符合阿。文献里面一般是C11-C12〉0

我检查了好几遍觉得程序没什么问题,就用的侯博士的程序~~

现在不知道该怎么办了。。。。求助各位高手阿!!!


请版主代扣金币吧。。。我还不太熟悉怎么弄啊。。。谢谢了。。。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

souledge

专家顾问 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
fzx2008: 金币+3, 专家考核, 谢谢指教! 2012-09-07 16:37:28
losenq: 金币+5, ★★★很有帮助 2012-10-14 20:07:17
对于立方体系,为什么不试试M. J. Mehl的方法?先做EOS拟合,得到体模量,且体模量 B0 = (C11 + 2*C12) / 3。
然后做C11-C12的拟合,拟合方程,DeltaE = (C11-C12)*V0*d^2
其中d表示应变,对应的应变矩阵为:
d  0  0
0  -d  0
0  0  d^2/(1-d^2)
然后联立体模量求解C11和C12。
其实LZ的方法中,
d  0  0
0  d  0
0  0  d
的应变也是求解体模量的应变了,但是拟合的是简单的能量响应,而不是EOS,所以可能结果上会有点出入。

» 本帖已获得的红花(最新10朵)

思想重于技巧,内涵重于表象
2楼2012-09-07 15:07:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

losenq

新虫 (小有名气)

送鲜花一朵
引用回帖:
2楼: Originally posted by souledge at 2012-09-07 15:07:08
对于立方体系,为什么不试试M. J. Mehl的方法?先做EOS拟合,得到体模量,且体模量 B0 = (C11 + 2*C12) / 3。
然后做C11-C12的拟合,拟合方程,DeltaE = (C11-C12)*V0*d^2
其中d表示应变,对应的应变矩阵为:
d  ...

十分感谢!那我现在用这种方法试一试。
3楼2012-09-10 09:24:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

losenq

新虫 (小有名气)

引用回帖:
2楼: Originally posted by souledge at 2012-09-07 15:07:08
对于立方体系,为什么不试试M. J. Mehl的方法?先做EOS拟合,得到体模量,且体模量 B0 = (C11 + 2*C12) / 3。
然后做C11-C12的拟合,拟合方程,DeltaE = (C11-C12)*V0*d^2
其中d表示应变,对应的应变矩阵为:
d  ...

您好,我在做C11-C12的时候,在文件defvect.f中定义strain(3)=delta^2/(1-delta^2)后,在gfortran -o defvect.x defvect.f时遇到问题:

错误:(1)语句无法归类。

请问在defvect.f中是不是不能进行计算运行,还是说语句、符号有错误?

谢谢了~
4楼2012-09-12 15:28:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

souledge

专家顾问 (著名写手)

【答案】应助回帖


sunyang1988: 金币+1, 专家考核, 谢谢交流 2012-09-13 10:39:05
引用回帖:
4楼: Originally posted by losenq at 2012-09-12 15:28:37
您好,我在做C11-C12的时候,在文件defvect.f中定义strain(3)=delta^2/(1-delta^2)后,在gfortran -o defvect.x defvect.f时遇到问题:

错误:(1)语句无法归类。

请问在defvect.f中是不是不能进行计算运行 ...

Fortran中,N次方的计算用x**N表示,而不是常用的^表示。
顺便,如果不是很熟悉Fortran,为了防止在代码中出现自己看不到的问题,强烈建议还是先手动修改晶格进行计算。
不知道哪个defvect.f是个怎样的代码,其实用VASP求解弹性常数,自己写脚本(然后Origin之类的软件拟合),或者直接用VASP提供的直接法求,都是不错的选择。
思想重于技巧,内涵重于表象
5楼2012-09-12 18:48:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

losenq

新虫 (小有名气)

引用回帖:
5楼: Originally posted by souledge at 2012-09-12 18:48:03
Fortran中,N次方的计算用x**N表示,而不是常用的^表示。
顺便,如果不是很熟悉Fortran,为了防止在代码中出现自己看不到的问题,强烈建议还是先手动修改晶格进行计算。
不知道哪个defvect.f是个怎样的代码,其实 ...

用VASP直接算得的弹性常数与参考文献给出值相差较大。。。。所以后来才改用这种方法算的。嗯,发现了,确实是FORTRAN里二次方是**不是^。谢谢啦!
6楼2012-09-13 19:35:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

losenq

新虫 (小有名气)

送鲜花一朵
引用回帖:
2楼: Originally posted by souledge at 2012-09-07 15:07:08
对于立方体系,为什么不试试M. J. Mehl的方法?先做EOS拟合,得到体模量,且体模量 B0 = (C11 + 2*C12) / 3。
然后做C11-C12的拟合,拟合方程,DeltaE = (C11-C12)*V0*d^2
其中d表示应变,对应的应变矩阵为:
d  ...

您好,我使用了您说的这种方法,拟合\delta E=(c11-c12) \delta^2

发现得出的数据很奇怪啊。delta E~\delta^2曲线不是平滑曲线。。。。有震荡起伏。。。。好悲催啊。

已调整过很多参数了,还是无法解决这个问题啊。。。不知道哪里出错了。。侯博士说应变\delta的值不能太过接近,否则计算出的能量有误差,但是我的delta取值就是-0.02,-0.015,-0.01,-0.005,0, 0.005(两边对称)。

现在不知道该用什么招了,求助大侠啊!多谢了!
7楼2012-10-14 20:15:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 losenq 的主题更新
信息提示
请填处理意见