Главная
I Семестр
II Семестр
III Семестр
IV Семестр
V Семестр
VI Семестр
Проекты
Обратная Связь
|
Вычисление параметров для молекулярной механики
-
Нам была предоставлена оптимизированная структура этана в виде z-matrix :
$DATA
eth
C1
C
C 1 cc
H 2 ch 1 cchv
H 2 ch 1 cch 3 d1 0
H 2 ch 1 cch 3 d2 0
H 1 ch 2 cch 3 d3 0
H 1 ch 2 cch 5 d3 0
H 1 chv 2 cch 4 d3 0
cc=1.52986
ch=1.08439
chv=1.08439
cch=111.200
cchv=111.200
d1=120
d2=-120
d3=180
$END
Наша цель состоит в том, что бы создать порядка 20 разных файлов для расчета энергии в
Gamess с разными значениями по длине одной из связей. Автоматизируем этот процесс,
написав bash скрипт.
Подготовим файл-заготовка для размножения: et.inp.
Для этого к координатам добавьте шапку для dft из предыдущего практикума.
Только надо изменить информацию о типе входных координат: замените COORD=CART на COORD=ZMT.
Создаем скрипт, который будет генерировать необходимые файлы. В итоге получаем 21 inp файл и в каждом разное значение для переменной сс.
Добавим в скрипт запуск Gamess, а также вызов awk,
который будет выводить значения энергии для каждого файла.
В итоге получили следующий скрипт: make_b.bash
Запускаем скрипт командой и перенаправляем поток в файл bond.txt:
bash ./make_b.bash > bond.txt
-
Запускаем Xming->XLaunch и присоединяемся к kodomo. Переходим в рабочую директорию и
запускаем Gnuplot:
gnuplot
Построим зависимость энергии от длины связи: plot "./bond.txt".
Появился график с точками похожими на параболу. Теперь нам надо найти коэффициенты в
функции f(x)=a+k(x-b)^2, которые бы позволили наиболее близко описать наблюдаемую зависимость.
Для этого воспользуемся возможностями Gnuplot. Сначала зададим функцию в развернутом виде,
в строке gnuplot введем:
f(x)=a + k*x*x - 2*k*x*b + k*b*b
И зададим стартовые значения коэффициентов:
a=-80
k=1
b=1.5
Проведем подгонку коэффициентов под имеющиеся точки в файле bond.txt:
fit f(x) "./bond.txt" via a,k,b
Сохраним значения коэффициентов в файл: par_bond.txt. Построим
графики функции и значений энергии из Gamess.
set term 'png'
set output 'gnu_bond.png'
plot "./bond.txt", f(x)
Функция неточно совпадает с точками, так как в этом случае мы наблюдаем участок потенциала Мориса,
имеющий более сложную зависимость.
-
Проделаем аналогичные операции для валентного угла CCH, его значения должны изменяться от 109.2 до 113.2.
Скрипт: make_v.bash
Получившийся файл: valent.txt
Апроксимируем зависимость так же параболой:
f(x)=a + k*x*x - 2*k*x*b + k*b*b
Значения коэффициентов: par_valent.txt
Хорошая апроксимация, все точки лежат на параболе.
-
Проделаем аналогичные операции для торсионного угла d3, его значения должны изменяться
от -180 до 180 c шагом 12.
Скрипт: make_t.bash
Получившийся файл: torsion.txt
Апроксимируем зависимость косинусом:
f(x)=a*cos(k*x*pi/180)+b
Значения коэффициентов: par_torsion.txt
Мы наблюдаем 3 минимума, так как крайние точки совпадают.
|