Task4

Version 1 (Andrey Golovin, 06.10.2022 11:37)

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