CyRhmU.jpeg
查看: 1610  |  回复: 11
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

xiaowu787

木虫 (正式写手)

[交流] 【求助】如何根据cell文件写poscar已有3人参与

刚开始学ASP,看论坛上高手说过可以通过MS写OSCAR。从MS 导出cell文件,还是不知道该如何写出基矢?请高手指点一下。原子的个数就是BLOCK POSITIONS_FRAC中的原子个数吗?谢谢!!

Al2O3
PBC    4.7590    4.7590   12.9910   90.0000   90.0000  120.0000 (P1)

cell文件如下:

%BLOCK LATTICE_CART
       2.747609931073429       0.000000000000000       4.330333333333333
      -1.373804965536714       2.379500000000001       4.330333333333333
      -1.373804965536714      -2.379500000000000       4.330333333333333
%ENDBLOCK LATTICE_CART

%BLOCK POSITIONS_FRAC
  O   0.5559999999999998  -0.0559999999999999   0.2500000000000000
  O   0.2500000000000000   0.5559999999999998  -0.0559999999999999
  O  -0.0559999999999999   0.2500000000000000   0.5559999999999998
  O  -0.5559999999999998   0.0559999999999999  -0.2500000000000000
  O  -0.2500000000000000  -0.5559999999999998   0.0559999999999999
  O   0.0559999999999999  -0.2500000000000000  -0.5559999999999998
Al   0.3519999999999999   0.3519999999999999   0.3519999999999999
Al   0.1480000000000001   0.1480000000000001   0.1480000000000001
Al  -0.3519999999999999  -0.3519999999999999  -0.3519999999999999
Al   0.8520000000000000   0.8520000000000000   0.8520000000000000
%ENDBLOCK POSITIONS_FRAC
回复此楼

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiaowu787

木虫 (正式写手)


bingmou(金币+1):感谢交流 2010-11-03 19:54:13
引用回帖:
Originally posted by cenwanglai at 2010-11-03 16:17:16:



呵呵,刚学习linux的时候编写的一个脚本,很久没有检查了。幸苦!你测试后帮修改再发一个吧。

谢谢了,简单修改了一下测试通过,保存后改一下权限就会用了。
CODE:
#!/bin/sh
#Script for Linux. Font Code: UTF-8
#把该文件保存到/usr/bin/目录下,必要时运行dos2unix和chmod
#删除原有poscarfromcell,删除前询问
#*.cell为MS running后立即停止中生成的隐藏文件,显示隐藏文件夹后就可以看到。把该文件放到linux下工作目录内。
#运行本脚本前,需要删除.cell文件%ENDBLOCK POSITIONS_FRAC后面的所有内容,如有必要,运行dos2unix *.cell
#运行时确保当前目录下仅有一个*.cell文件。
#在命令提示符下输入cell2poscar回车,生成文件为poscarfromcell.
#有好的修改建议或脚本请发邮件给:[email]cenwanglai@163.com[/email]

rm -i poscarfromcell

echo "SYSTEM COMMENTS">>poscarfromcell
echo 1 >>poscarfromcell

#查找并输出格矢坐标
cat *.cell | grep -e '^[ ]\+[0-9]\+'>>poscarfromcell

#数氧原子个数
L=$(grep -cw "O" *.cell)

#数铈原子个数
M=$(grep -cw "Ce" *.cell)

#数X原子个数,如果需要,删掉下一行开始的#,并替换“X”
#N=$(grep -cw "X" *.cell)

#输入各类原子个数,如果需要,下行中增加$N
echo $L $M >> poscarfromcell

echo "Selective Dynamic" >>poscarfromcell
echo "Direct" >>poscarfromcell

#找氧原子O坐标。根据实际情况替换"O"
cat *.cell |awk '$1=="O" {printf "%20.16f %20.16f %20.16f %s",$2,$3,$4,"T T T\n"}'>>poscarfromcell
#找Ce原子坐标。根据实际情况替换"Ce"
cat *.cell |awk '$1=="Ce" {printf "%20.16f %20.16f %20.16f %s",$2,$3,$4,"T T T\n"}'>>poscarfromcell

#找X原子坐标,如果需要,删掉下一行开头的#,根据实际情况替换"X"
#cat *.cell | awk '$1=="X" {print $2,$3,$4,"T T T"}'>>poscarfromcell

暂时还有读基失时,负号的读不出来

[ Last edited by xiaowu787 on 2010-11-3 at 19:28 ]
10楼2010-11-03 18:27:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 12 个回答

xiaowu787

木虫 (正式写手)

这是从其他地方查到的信息,请高手指点一下,是不是问题太简单了?可是我没做过这方面的。

•Prototype: αAl2O3
•Pearson Symbol: hR10
•Strukturbericht Designation: D51
•Space Group: R3c (Cartesian and lattice coordinate listings available)
•Number: 167
•Reference: Villars and Calvert, Pearson's Handbook, Vol. I, pp. 970-1
•Primitive Vectors:
A1  =  b X + a Y + a Z
A2  =  a X + b Y + a Z
A3  =  a X + a Y + b Z
2楼2010-11-03 11:07:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bingmou

金虫 (著名写手)

★ ★
xiaowu787(金币+5):谢谢答复! 2010-11-03 11:35:12
cenwanglai(金币+2):谢谢回复! 2010-11-03 13:22:21
示例:
Al2O3
1.0
      2.747609931073429       0.000000000000000       4.330333333333333
      -1.373804965536714       2.379500000000001       4.330333333333333
      -1.373804965536714      -2.379500000000000       4.330333333333333
6 4 !前面为O的个数,后面为Al的个数,这个顺序要和POTCAR对应
Direct !MS的都是Direct
   0.5559999999999998  -0.0559999999999999   0.2500000000000000
   0.2500000000000000   0.5559999999999998  -0.0559999999999999
  -0.0559999999999999   0.2500000000000000   0.5559999999999998
  -0.5559999999999998   0.0559999999999999  -0.2500000000000000
  -0.2500000000000000  -0.5559999999999998   0.0559999999999999
   0.0559999999999999  -0.2500000000000000  -0.5559999999999998
   0.3519999999999999   0.3519999999999999   0.3519999999999999
   0.1480000000000001   0.1480000000000001   0.1480000000000001
  -0.3519999999999999  -0.3519999999999999  -0.3519999999999999
   0.8520000000000000   0.8520000000000000   0.8520000000000000
3楼2010-11-03 11:17:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiaowu787

木虫 (正式写手)

引用回帖:
Originally posted by bingmou at 2010-11-03 11:17:57:
示例:
Al2O3
1.0
      2.747609931073429       0.000000000000000       4.330333333333333
      -1.373804965536714       2.379500000000001       4.330333333333333
      -1.373804965536714       ...

由于基失包含了晶格常数,只需把晶格缩放系数设为1是吧。再问一下,晶格缩放系数设为1和通过转换变成较大的数有区别吗?谢谢!
4楼2010-11-03 11:34:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见