-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgenerate_fpParat.py
66 lines (62 loc) · 2.22 KB
/
generate_fpParat.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
File Name: generate_fpParat
Description :
Author : DrZ
date: 2023/2/5
-------------------------------------------------
Change Activity:
2023/2/5:
-------------------------------------------------
"""
import numpy as np
import itertools
def generate_fpParas(elements,
g1_eta,
delta_rs,
g2_eta,
g2_zeta,
delta_theta,
lambda_=1,
rcut=6.0):
g1_list = []
for i in elements:
for j in elements:
g1_list.append([i, j])
rs_list = np.arange(1.5, 6.005, delta_rs)
theta_list = np.arange(0, np.pi+0.005, delta_theta)
n = len(elements)
g1_number = len(rs_list) * len(g1_list)
g2_number = n * len(theta_list) * len(g1_list)
file = open('fpParas.dat', 'w')
file.write('# FP type\n')
file.write('BP\n')
file.write('# Elements\n')
file.write(' '.join(elements) + '\n')
cohesive = '0.0 ' * n + '\n'
file.write(cohesive)
file.write('# nG1s nG2s\n')
file.write('{} {}\n'.format(g1_number, g2_number))
file.write('#type center neighbor eta Rs Rcut\n')
for ele in g1_list:
for rs in rs_list:
file.write('G1 {} {} {} {:.3f} {}\n'.format(ele[0], ele[1], g1_eta, rs, rcut))
file.write('#type center neighbor1 neighbor2 eta zeta lambda thetas rcut\n')
for e in elements:
for ele in g1_list:
for theta in theta_list:
file.write(
'G2 {} {} {} {} {} {} {:.3f} {}\n'.format(e, ele[0], ele[1], g2_eta,
g2_zeta, lambda_, theta,
rcut))
generate_fpParas(
elements=['Mo', 'Ni'],
g1_eta=100,
delta_rs=0.08,
g2_eta=0.001,
g2_zeta=90,
delta_theta=0.2,
lambda_=1,
rcut=6.0
)