-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathopt_h2s.py
53 lines (45 loc) · 1.79 KB
/
opt_h2s.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
import numpy as np
import pytest
import ase.units as units
from ase import Atoms, io
from ase.constraints import FixInternals
import os
from ase.optimize.minimahopping import MinimaHopping
from ase.optimize.basin_mul import BasinHoppingm
from ase.calculators.lj import LennardJones
#from ase.optimize.basin_mul import BasinHoppingm
from ase.io import read
from ase.units import kB
from ase.calculators.tip4p import TIP4P, epsilon0, sigma0, rOH, angleHOH
from math import cos, sin, pi
from ase.calculators.qmmm import (SimpleQMMM, EIQMMM, LJInteractions,
LJInteractionsGeneral)
from matplotlib import pyplot as plt
from tools.h2s_cluster import h2scluster
from tools.h2s_cluster import add_const
import argparse
parser = argparse.ArgumentParser(description='input optimization para')
parser.add_argument('--dr', type=float, default=0.2, help='the `traj` for Local minima')
parser.add_argument('--nmol', type=int, default=15, help='the `traj` for Local minima')
parser.add_argument('--nstep', type=int, default=30, help='the `traj` for Local minima')
args = parser.parse_args()
######## local minima #########
dr = args.dr
nmol=args.nmol
#np.random.seed(2030)
outputdir='h2s_' + str(nmol)
try:
os.mkdir(outputdir)
except:
print(outputdir, ' FOLDER EXISTS')
ftraj = outputdir + '/lowest_basinm' + str(nmol) +"_" +str(dr)[2:] +'.traj'
print(ftraj)
for i in range(args.nstep):
ftraj = outputdir + '/lowest_basinm' + str(nmol) +"_" +str(dr)[2:] + str(i) +'.traj'
w5=h2scluster(nmol, 2.5).water()
BH = BasinHoppingm(w5,temperature=300 * kB,
dr=dr,
trajectory=ftraj, logfile= outputdir + '/basin' + str(dr)[2:] + str(i)+ '.log')
BH.run(200)
Emin, smin = BH.get_minimum()
print(Emin)