МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМЕНИ М.В.ЛОМОНОСОВА
ФАКУЛЬТЕТ БИОИНЖЕНЕРИИ И БИОИНФОРМАТИКИ

Домашняя страничка Ильи Курочкина

Главная

I Семестр

II Семестр

III Семестр

IV Семестр

V Семестр

VI Семестр

Проекты

Обратная Связь

Вычисление параметров для молекулярной механики

  1. Нам была предоставлена оптимизированная структура этана в виде 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 скрипт.

  2. Подготовим файл-заготовка для размножения: et.inp. Для этого к координатам добавьте шапку для dft из предыдущего практикума. Только надо изменить информацию о типе входных координат: замените COORD=CART на COORD=ZMT.

  3. Создаём скрипт, который будет генерировать необходимые файлы. В итоге получаем 21 inp файл и в каждом разное значение для переменной сс.

  4. Добавим в скрипт запуск Gamess, а также вызов awk, который будет выводить значения энергии для каждого файла.
    В итоге получили следующий скрипт: make_b.bash

    Запускаем скрипт командой и перенаправляем поток в файл bond.txt:
    bash ./make_b.bash > bond.txt
    

  5. Запускаем 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)
    

    Функция неточно совпадает с точками, так как в этом случае мы наблюдаем участок потенциала Мориса, имеющий более сложную зависимость.

  6. Проделаем аналогичные операции для валентного угла 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

    Хорошая апроксимация, все точки лежат на параболе.

  7. Проделаем аналогичные операции для торсионного угла d3, его значения должны изменяться от -180 до 180 c шагом 12.
    Скрипт: make_t.bash
    Получившийся файл: torsion.txt

    Апроксимируем зависимость косинусом:
    f(x)=a*cos(k*x*pi/180)+b
    
    Значения коэффициентов: par_torsion.txt

    Мы наблюдаем 3 минимума, так как крайние точки совпадают.


© 2008, Илья Курочкин