HuangAnqi
理论相关
cp2k
cp2k参数
CP2K输入文件模板
Matlab批量计算CP2K的差分电荷的代码
全波电磁仿真
VESTA:制作差分电荷&导出图片
Oringin制作气泡能带图+DOS图
VASP
vasp+机器学习计算AlN的势函数
vsap机器学习
vasp算微波介电常数
VASP计算参数
vaspkit功能
VASP算bader电荷
计算带格林内森参数投影的高温声子谱
脚本合集
PWmat
用pwmat计算缺陷形成能
Hefei-NAMD
Quantum ESPRESSO
qe算声子谱
CALYPSO结构搜索
Oringin
Yambo
QE+yambo算光吸收虚部
Yambo 光吸收计算后处理
Yambo报错和解决办法
知识点
代码
佛祖保佑
心跳(html)
洛伦兹吸引子
用pandas读取excel 画dos图
用Matplotlib画折线图
蒙特卡洛方法求Π
TensorFlow 代码
罗盘时钟
MATLAB代码
批量重命名图片代码
用Pr将序列帧图片转成视频
蒙特卡洛方法模拟二维平面上的原子沉积和扩散
PyTorch
OVITO
Latex安装与使用
wannier+VASP拟合能带
VASP算有效质量
liuyaoze.com-文档系统
-
+
首页
VASP
## 提取能量,并且画图提取能量,并且画图 用gnuplot(这个要另外下载到服务器)画出来,要显示的话打开Xming提供窗口 提取步数,温度,能量 `grep 'F=' OSZICAR|awk '{print $1, "\t"$3,"\t"$9}' >AIMD.da` 进入gnuplot `gnuplot` 画图 数据文件 哪两列 `plot 'AIMD.dat' u 1:2 w lp` 然后就出来了 这样就不用把数据导出来用Oringin画图了,比较适合简单的数据检查 `grep "T= " OSZICAR|awk '{print $1 " " $3 " " $9}' > T_E.dat`导出来用origin画 ## 寻找对称性 `phonopy --tolerance 0.01 --symmetry -c POSCAR >>out` `cp PPOSCAR POSCAR` ## 固定原子 ``` vaspkit 402 #固定选择原子 1 #POSCAR 3 #Fix Atoms by Heights 0 4 #固定原子的高度范围0-4 2 #笛卡尔坐标 1-3 #固定xyz方向 ``` ## 计算力学常数 新建一个文件夹 放入POSCAR,POTCAR,INCAR,KPOINTS INCAR: ```shell ISTART =1 ISMEAR = 0 SIGMA = 0.02 NELM = 200 EDIFF = 1E-07 NSW = 200 IBRION = 2 EDIFFG = -1E-02 # LVDW=.TRUE. LREAL=F PREC=high LWAVE= F LCHARG= F ALGO=N ``` 写入一个VPKIT.in ```shell 1 ! 1 for prep-rocessing, 2 for post-processing 2D ! 2D for slab, 3D for bulk 9 ! number of strain -0.020 -0.015 -0.010 -0.005 0.000 0.005 0.010 0.015 0.020 ! magnitude of strain ``` vaspkit 201,生成C11,C12文件夹,给出一个批量提交作业脚本 在批量提交作业脚本中,cd 到每一个文件夹后, 添加一个cp ../../vasp.pbs . qsub vasp.pbs 提交作业 计算完成后,把VPKIT.in里面的1改成2,再vaspkit201,屏幕上就会输出C11,C12,C66,杨氏模量,剪切模量,泊松比的最大最小值 ## Linux 自定义命令 bashrc文件是Bash shell的配置文件之一,它位于用户的主目录下(通常是~/.bashrc,前面加.表示隐藏文件)。Bash是一种常见的Unix和Linux操作系统的命令行解释器,bashrc文件用于设置和自定义Bash shell的行为和环境变量。 当用户登录到系统时,Bash shell会读取bashrc文件并执行其中的命令和配置。通过编辑bashrc文件,用户可以定义自己的环境变量、别名、函数以及其他个性化设置。这些设置会在每次打开新的终端窗口时生效,为用户提供更加便捷和个性化的命令行环境。 需要注意的是,bashrc文件只对当前用户生效,每个用户都可以在自己的主目录下编辑和使用自己的bashrc文件。每次改动后需要重新连接或者使用`source ~/.bashrc`来更新设置。 在 ~/.bashrc文件中加入一行,创建一个别名(alias),将"…………"命令简化为"**" #### 1.`alias lp="grep LOOP OUTCAR" ` 在文件OUTCAR中查找包含"LOOP"关键字的行并输出,LOOP表示的是电子步的迭代循环次数,会输出每一次电子步的计算时间,可以用来调参比较运算速度。 #### 2.查看受力收敛情况(曲线图的形式输出) ```shell #!/bin/bash # eliminate forces of fixed atoms fix=$1 if test -z $1; then fix=0 fi # get force form OUTCAR awk -v fix="$fix" '/POSITION/,/drift/{ if($1~/^[0-9.]+$/&&$3>=fix) print $1,$2,$3,sqrt($4*$4+$5*$5+$6*$6i); else if($1=="total") print $0 }' OUTCAR >temp.f awk '{ if($1=="total") {print ++i,a;a=0} else {if(a<$4) a=$4} }' temp.f >force.conv #sed -i '1,9d' force.conv #rm temp.f tail -30 force.conv >temp.f #get dist from XDATCAR touch p1.conv p2.conv; touch dist.conv Num=`awk 'NR==7{for(i=1;i<=NF;i++) a=$i+a;}END{print a}' XDATCAR` Lnum=`wc XDATCAR|awk '{print $1}'` ((n=(Lnum-7)/(Num+1))) head -7 XDATCAR >p1.conv awk -v num="$Num" 'NR==9,NR==(num+1)+7{print $0}' XDATCAR >>p1.conv for((i=1;i<n;i++)) do head -7 XDATCAR >p2.conv ((n1=9+(Num+1)*i)) ((n2=(i+1)*(Num+1)+7)) sed -n ''$n1','$n2'p' XDATCAR >>p2.conv echo -e $i"t"`dist.pl p1.conv p2.conv ` >>dist.conv done #plot gnuplot <<EOF set term dumb set xlabel 'Ion steps' set ylabel 'Dist (Angstrom)' plot 'dist.conv' w l t " Dist " set xlabel 'Ion steps' set ylabel 'Force (eV/Angstrom)' plot 'temp.f' w l t " Force " EOF rm force.conv dist.conv p1.conv p2.conv temp.f ``` ## 把轨迹文件XDATCAR转为xyz文件的python代码 可以放进MS里观察运动,相当于.xtd文件 在服务器里运行 ```python #lipai@mail.ustc.edu.cn #convert XDATCAR to unwraped xyz file import numpy as np from copy import deepcopy xdatcar = open('XDATCAR', 'r') xyz = open('XDATCAR.xyz', 'w') system = xdatcar.readline() scale = float(xdatcar.readline().rstrip('\n')) print(scale) #get lattice vectors a1 = np.array([ float(s)*scale for s in xdatcar.readline().rstrip('\n').split() ]) a2 = np.array([ float(s)*scale for s in xdatcar.readline().rstrip('\n').split() ]) a3 = np.array([ float(s)*scale for s in xdatcar.readline().rstrip('\n').split() ]) comment='Lattice=\"'+str(a1[0])+' '+str(a1[1])+' '+str(a1[2]) comment=comment+str(a2[0])+' '+str(a2[1])+' '+str(a2[2]) comment=comment+str(a3[0])+' '+str(a3[1])+' '+str(a3[2])+'\"' #Read xdatcar element_names = xdatcar.readline().rstrip('\n').split() element_dict = {} element_numbers = xdatcar.readline().rstrip('\n').split() Natom = 0 Ntype = len(element_names) Nname=[] for t in range(Ntype): Natom += int(element_numbers[t]) for i in range(int(element_numbers[t])): Nname.append(element_names[t]) print(Ntype,Natom) f_prev=np.zeros([Natom,3]) f_next=np.zeros([Natom,3]) while True: line = xdatcar.readline() if len(line) == 0: break xyz.write(str(Natom) + "\n"+comment+"\n") for atom in range(Natom): p = xdatcar.readline().rstrip('\n').split() f_next[atom,:] = np.array([ float(s) for s in p ]) for x in range(3): if(f_next[atom,x]-f_prev[atom,x]<-0.5): f_next[atom,x]+=1 elif(f_next[atom,x]-f_prev[atom,x]>0.5): f_next[atom,x]-=1 c_coords=f_next[atom,0]*a1+f_next[atom,1]*a2+f_next[atom,2]*a3 xyz.write(Nname[atom]+" "+str(c_coords[0])+" "+str(c_coords[1])+" "+str(c_coords[2])+"\n") f_prev=deepcopy(f_next) xdatcar.close() xyz.close() ```
huanganqi
2024年3月26日 15:41
96
0 条评论
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
【温馨提示:本站文档可配置可见范围,如登录后可见、对特定群组可见等,看不到就是没权限】
注册码获取邮箱
work@liuyaoze.com
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期