24小时热门版块排行榜    

查看: 703  |  回复: 2

龙山狮崖

铁杆木虫 (正式写手)

[求助] 晶体坐标变换问题

有一个晶体,晶胞三个方向的晶格长度分别为a,b,c,我想将晶体的前两个方向变一下,也就是晶格长度变为b,a,c,请问晶体内的各个原子坐标该如何变化?用那些软件能办到?谢谢!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

独在异乡为异客
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

龙山狮崖

铁杆木虫 (正式写手)

自顶!
独在异乡为异客
2楼2013-05-12 13:36:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liqizuiyang

木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
龙山狮崖: 金币+10, ★★★★★最佳答案, 谢谢! 2013-05-12 20:38:32
用线性代数里的坐标变换方法。

写出新的基矢在旧基矢下面的转换矩阵,然后用每个原子对应的位置矢量乘以这个矩阵。这样虽然麻烦点,但是却是万能的。这个脚本可以用matlab来写。

设原来的基矢是v1,v2,v3,新基矢是u1,u2,u3,某个原子在旧基矢下的分量表示成[v|a],对应的新基矢下的分量是[u|a],这个转换关系写成矩阵式就是[u|a] = [u|v]*[v|a]。[u|v]就是基组v在基组u下的表示矩阵。

例如v1 = 1 * u1 + 2 * u2 + 3 * u3,转换矩阵的第一列就是transpose([1,2,3])。注意这里是列矢量而不是行矢量,转换的时候原子坐标也是列矢量。
3楼2013-05-12 19:17:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 龙山狮崖 的主题更新
信息提示
请填处理意见