表面计算

  1. 1.固定原子
  2. 2.计算表面能

1.固定原子

from numpy import *
import pandas as pd
import string

with open('POSCAR') as f:
    f.readline()
    f.readline()
    f.readline()
    f.readline()
    f.readline()
    atom_name=f.readline()
    atom_num=f.readline()
    atom_name2=atom_name.split() 
    print(atom_name2)
    atom_num2=[int(x) for x in atom_num.split()]
    print(atom_num2)
    atom_total=sum(atom_num2)
    line_total = 8+atom_total
    line_a=f.readlines()[1:atom_total+1]
A=zeros((atom_total,3))
B=zeros((atom_num2[0],3))
C=zeros((atom_num2[1],3))

A_row=0
for line in line_a:
    list =line.strip(' ').strip('\n').split(' ')
    list=[x for x in list if x !='']
    float_list=[float(x) for x in list]
    A[A_row:]=float_list[0:3]
    A_row +=1
B,C=vsplit(A,[atom_num2[0]])
#A[:,2] +=0.1 #第三列加0.2
#A[:,1] -=0.1
format_string= "{:,.8f}"
with open('POSCAR-2','w') as h:
    for i in range(B.shape[0]):
        if B[i,2] <0.33644:
          for j in range(B.shape[1]):
            h.write(format_string.format(B[i,j]) + ' ')
          h.write('F F F')
          print(B[i])
        else:
          for j in range(B.shape[1]):
            h.write(format_string.format(B[i,j]) + ' ')
          h.write('T T T')
          print(B[i])
        h.write('\n')
with open('POSCAR-2','a') as h:
    for i in range(C.shape[0]):
        if C[i,2] <0.3703:
          for j in range(C.shape[1]):
            h.write(format_string.format(C[i,j]) + ' ')
          h.write('F F F')
        else:
          for j in range(C.shape[1]):
            h.write(format_string.format(C[i,j]) + ' ')
          h.write('T T T')
        h.write('\n')   

2.计算表面能

表面能计算基础及最新进展(PRB连载,计算表面能) - 知乎 (zhihu.com)

https://en.wikipedia.org/wiki/Surface_energy

image-20230604191033411


转载请注明来源 有问题可通过github提交issue