Task5

Version 2 (Andrey Golovin, 04.10.2021 17:27)

1 1 Andrey Golovin
h1.  Вычисление параметров для молекулярной механики 
2 1 Andrey Golovin
3 1 Andrey Golovin
4 2 Andrey Golovin
-Необходимые сведения о работе с ORCA http://kodomo.fbb.msu.ru/~golovin/pdf/OrcaManual_2_9.pdf  или https://sites.google.com/site/orcainputlibrary/home- 
5 1 Andrey Golovin
6 2 Andrey Golovin
7 1 Andrey Golovin
Суть задания состоит в определении констант ковалентных взаимодействий для молекулярной механики на основе квантово-химических расчётов. Пример подобной работы представлен в  http://ambermd.org/antechamber/gaff.pdf это статье о разработке поля gaff.
8 1 Andrey Golovin
9 1 Andrey Golovin
10 1 Andrey Golovin
* Вам предоставлена оптимизированная структура этана в виде z-matrix :
11 1 Andrey Golovin
12 1 Andrey Golovin
<pre>
13 1 Andrey Golovin
inp = '''!HF RHF 6-31G
14 1 Andrey Golovin
* int 0 1
15 1 Andrey Golovin
C 0 0 0 0 0 0 
16 1 Andrey Golovin
C 1 0 0 1.52986 0 0 
17 1 Andrey Golovin
H 1 2 0 1.08439 111.200 0
18 1 Andrey Golovin
H 1 2 3 1.08439 111.200 120
19 1 Andrey Golovin
H 1 2 3 1.08439 111.200 -120
20 1 Andrey Golovin
H 2 1 3 1.08439 111.200 180
21 1 Andrey Golovin
H 2 1 5 1.08439 111.200 120
22 1 Andrey Golovin
H 2 1 5 1.08439 111.200 -120
23 1 Andrey Golovin
*
24 1 Andrey Golovin
'''
25 1 Andrey Golovin
</pre>
26 1 Andrey Golovin
27 2 Andrey Golovin
Как вы видите, вместо значений длин и углов связей можно вставить значение. Наша цель состоит в том, что бы рассчитать 20 разных длинн связи с шагом 0.02 ангстрема для расчёта энергии в -ORCA- Psi4 с разными значениями по длине '''одной''' из связей (C-C).
28 1 Andrey Golovin
29 1 Andrey Golovin
30 1 Andrey Golovin
* Конечно можно сделать эти файлы вручную, но ожидается, что вы сделаете это средствами  '''python''' . 
31 2 Andrey Golovin
* Предлагаю следующую функцию по запуску -ORCA- Psi4
32 1 Andrey Golovin
33 1 Andrey Golovin
<pre>
34 2 Andrey Golovin
def run_psi4(inp):
35 2 Andrey Golovin
    m = psi4.geometry(g)
36 2 Andrey Golovin
    psi4.set_options({"maxiter": 200, "fail_on_maxiter" :  True})
37 2 Andrey Golovin
    psi4.energy('scf/cc-pvtz', molecule = m )
38 1 Andrey Golovin
    
39 1 Andrey Golovin
    return ....
40 1 Andrey Golovin
</pre>
41 1 Andrey Golovin
42 1 Andrey Golovin
43 1 Andrey Golovin
44 1 Andrey Golovin
* У вас есть зависимость энергии молекулы от длины одной связи. Эту зависимость можно построить в Excel (...). Вам предлагается сделать это в  matplotlib в Jupyter Notebook. 
45 1 Andrey Golovin
46 1 Andrey Golovin
Для matplotlib:
47 1 Andrey Golovin
48 1 Andrey Golovin
<pre>
49 1 Andrey Golovin
%matplotlib inline
50 1 Andrey Golovin
import numpy as np
51 1 Andrey Golovin
import matplotlib.pyplot as plt
52 1 Andrey Golovin
from scipy import optimize 
53 1 Andrey Golovin
</pre>
54 1 Andrey Golovin
55 1 Andrey Golovin
<pre>
56 1 Andrey Golovin
# fake x array , replace with real one
57 1 Andrey Golovin
x_o=np.arange(1,2,0.1)
58 1 Andrey Golovin
# fake y array, replace with energies
59 1 Andrey Golovin
y_o=-70+2*(x_o -1.58)**2 
60 1 Andrey Golovin
61 1 Andrey Golovin
#function is  f(x)=k(b-x)^2 + a
62 1 Andrey Golovin
fitfunc = lambda p, x: p[0]*pow(p[1]-x,2) + p[2] # Target function
63 1 Andrey Golovin
errfunc = lambda p, x, y: fitfunc(p, x) - y # Error function
64 1 Andrey Golovin
65 1 Andrey Golovin
p0 = [1,1, -79] # Initial guess for the parameters
66 1 Andrey Golovin
p1, success = optimize.leastsq(errfunc, p0[:], args=(x_o, y_o))
67 1 Andrey Golovin
print "Optimized params:", p1
68 1 Andrey Golovin
69 1 Andrey Golovin
#Plot it
70 1 Andrey Golovin
plt.plot(x_o, y_o, "ro", x_o,fitfunc(p1,x_o),"r-",c='blue',alpha=0.5)
71 1 Andrey Golovin
plt.xlim(1,2)
72 1 Andrey Golovin
plt.show()
73 1 Andrey Golovin
</pre>
74 1 Andrey Golovin
75 1 Andrey Golovin
76 1 Andrey Golovin
77 1 Andrey Golovin
* Проделайте аналогичные операции для валентного угла HCС, его значения должны изменяться от 109.2 до 113.2. Сохраните полученные коэффициенты в отчёт. Примечание: не перезаписывайте файл со значениями энергий они Вам нужны для отчёта. Сравните полученные константы с данными из статьи о GAFF. Укажите возможные причины расхождений ваших результатов и публикацией.
78 1 Andrey Golovin
79 1 Andrey Golovin
* Проделайте аналогичные операции для торсионного угла CC, его значения должны изменяться от -180 до 180 c шагом 12. Сохраните изображение и укажите в отчёте количество минимумов функции.
80 1 Andrey Golovin
81 1 Andrey Golovin
* Увеличьте шаг до 0.1 ангстрема при расчёте связи. Постройте зависимость. Укажите какой функцией можно было бы аппроксимировать наблюдаемую зависимость.