zoukankan      html  css  js  c++  java
  • Create Bonds and Angles for LAMMPS's input

    kkk

     1 #!/usr/bin/python
     2 #python 2.7
     3 text_all = []
     4 xatom_tmp = []
     5 xatom = []
     6 bond = []
     7 double_bond = []
     8 i = 0
     9 j = 0
    10 dd = 0.0
    11 #lattice constant
    12 a = 10.86
    13 b = 10.86
    14 c = 10.86
    15 
    16 def isBond(list1, list2):
    17 #i = -1 0 1,  j = -1 0 1
    18     for i in range(-1,2):
    19         for j in range(-1,2):
    20             for k in range(-1,2):
    21                 dd_tmp = 0.0
    22                 dd_tmp += (list1[0] - list2[0] + a * i) ** 2
    23                 dd_tmp += (list1[1] - list2[1] + b * j) ** 2
    24                 dd_tmp += (list1[2] - list2[2] + c * k) ** 2
    25                 dd_tmp = dd_tmp ** 0.5
    26                 if dd_tmp < 3.0:
    27                     return 1
    28 
    29     return 0
    30 
    31 def contain_same_point(list1, list2):
    32     list3 = [0, 0.0, 0.0, 0.0]
    33     for i in range(0,2):
    34         for j in range(0,2):            
    35             if(list1[i] == list2[j]):
    36                 list3[0] = 1
    37                 list3[1] = list1[1-i]
    38                 list3[2] = list1[i]
    39                 list3[3] = list2[1-j]
    40     return list3
    41                 
    42 
    43 file_in = open('data.lammps')
    44 text_all = file_in.readlines()
    45 file_in.close()
    46 
    47 num_lines = len(text_all)
    48 #(0:5) means a[0], a[1], a[2], a[3], a[4], a[5], totally 5 elements
    49 for i in range(19,83):
    50     xatom_tmp.append(text_all[i].split())
    51     xatom.append([xatom_tmp[i-19][2], xatom_tmp[i-19][3], xatom_tmp[i-19][4]])
    52 
    53 #initialize xatom_f as a 5x3 float matrix
    54 xatom_f = [[0.0 for col in range(3)] for row in range(num_lines)] 
    55 
    56 for i in range(0,64):
    57     xatom_f[i][0] = float(xatom[i][0])
    58     xatom_f[i][1] = float(xatom[i][1])
    59     xatom_f[i][2] = float(xatom[i][2])
    60 
    61 #bonds, A-B and B-A, same bond, count 1.
    62 for i in range(0,64):
    63     for j in range(i+1,64):
    64         if (isBond(xatom_f[i], xatom_f[j]) == 1):
    65             bond.append([i,j])
    66 k = 0
    67 print "Bonds: "
    68 print "
    "
    69 for i in bond:
    70     k += 1
    71     print k, 1, i[0], i[1]
    72 
    73 top = bond[0][0]
    74 angle = []
    75 print "Angles: "
    76 print "
    "
    77 for i in range(0,len(bond)):
    78     for j in range(i+1,len(bond)):
    79         tmp = contain_same_point(bond[i],bond[j])
    80         if (tmp[0] == 1):
    81             print tmp[1],tmp[2],tmp[3]
  • 相关阅读:
    Nginx之常用操作
    linux之信息查看
    KPI VS OKR
    python之jupyter安装与使用
    python进阶资源
    python之排序(sort/sorted)
    python之文件操作
    远程连接工具
    docker之本地连接
    Windows服务器连接
  • 原文地址:https://www.cnblogs.com/HuaNeedsPills/p/6697482.html
Copyright © 2011-2022 走看看