Last active
August 29, 2015 14:01
-
-
Save newmen/5cb453464b6e4df4082b to your computer and use it in GitHub Desktop.
vd-config-description
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Описываем используемые хим. элементы и их валентность | |
elements | |
atom H, valence: 1 | |
atom C, valence: 4 | |
# Описываем используемые крист. решётки и структуры, состоящие из атомов описанных | |
# выше. Поверхностные структуры не могут состоять из одновалентных атомов. Конечное | |
# валентное состояние атомов структур задаваемых в этом разделе, определяется при | |
# описании уравнений реакций кинетической схемы (см. ниже). | |
surface | |
# Задаём температуру подложки | |
temperature 1050, 'K' | |
# Кристаллическая решётка должна быть описана в классе Diamond, что должен лежать в | |
# директории lattices/. Директория с решётками может лежать в другом месте, и тогда | |
# при запуске анализа необходимо указать эту директорию через ключ --lattices=PATH. | |
# Класс кристаллической решётки должен содержать правила вывода для отношей между | |
# атомами. Используемая крист. решётка будет доступна ниже по заданному имени | |
# (буква `d`). | |
lattice :d, class: Diamond | |
# Наименьшая необходимая структура для описания бОльших. Для описания структуры | |
# необходимо задать её название, через которое, затем, к стрктуре можно будет | |
# обратиться. | |
spec :bridge | |
# Состоит из трёх атомов, где у каждого атома есть псевдоним (слева) и то, какой | |
# атом используется под этим псевдонимом (справа). Указывая атом, можно через знак | |
# % задать принадлежность кристаллической решётке, указанной выше. Для определения | |
# используемого атома можно сослаться на какую-либо структуру, и её атом, через | |
# псевдоним. Структура и соответствующий псевдоним должны быть определены ранее | |
# момента использования. | |
atoms ct: C%d, cl: bridge(:ct), cr: bridge(:ct) | |
# Связи между атомами принадлежащими одной крист. решётке должны иметь плоскость | |
# и направление. Порядок атомов для которых определяется связь важен, поскольку | |
# направления симметричны не во всех плоскостях. | |
# Например, запись аналогичная записи ниже, но с другим порядком связываемых | |
# атомов, будет выглядеть так: | |
# bond :cl, :ct, face: 110, dir: :front | |
# т.е. направление связи меняется, в плоскости 110 алмаза. | |
bond :ct, :cl, face: 110, dir: :cross | |
bond :ct, :cr, face: 110, dir: :cross | |
# Промежуточная не менее важная структура. Определяет возможность осаждения на | |
# поверхность кристалла алмаза радикалов газовой фазы. | |
spec :dimer | |
# Каждый раз, когда мы ссылаемся на другую структуру, используя дерективу `atoms` | |
# подразумевается использование новой структуры. Т.е. `dimer` использует 2 разных | |
# `bridge`. Если необходимо сослаться на разные атомы одной и той же структуры, | |
# то этой структуре надо дать псевдоним, через директиву `aliases` (см. ниже). | |
atoms cl: bridge(:ct), cr: bridge(:ct) | |
# В плоскости 100 алмаза связь не меняет своего направления, при изменении порядка | |
# связываемых атомов | |
bond :cl, :cr, face: 100, dir: :front | |
# Метил радикал адсорбированный на димер | |
spec :methyl_on_dimer | |
atoms cb: dimer(:cr), cm: C | |
# Когда связываются атомы, хотя бы один из которых не принадлежит крист. решётке, | |
# то используемая связь не может принадлежать какой-либо плоскости кристалла | |
bond :cb, :cm | |
# Описанная здесь структура не должна иметь аналогов в моделирующем коде, поскольку | |
# необходима только для описания прямой реакции её образования. Т.к. обратной | |
# реакции, её использующей, нет, то следовательно в моделирующем коде она не нужна. | |
spec :cross_bridge_on_dimers | |
# Псевдонимы используются когда необходимо сослаться на атомы одной и той же | |
# структуры несколько раз | |
aliases mod: methyl_on_dimer | |
# Через псевдоним говорим, что methyl_on_dimer - одна и та же структура | |
atoms ct: mod(:cm), cl: mod(:cb), cr: dimer(:cr) | |
bond :ct, :cr | |
# Так же как и связи, положения между атомами могут быть использованы для описания | |
# поверхностной структуры. При описании положений используются те же правила, что | |
# и для связей. Положение между атомами, хотя бы один из которых не принадлежит | |
# крист. решётке задано быть не может. | |
position :cl, :cr, face: 100, dir: :cross | |
# Структура необходимая для реакции разрушения "кривых" структур на поверхности, | |
# которые могут возникать при использовании гораздо больших кинетических схем, нежели | |
# описанная в этом файле. | |
spec :cross_bridge_on_bridges | |
atoms ct: C, cl: bridge(:ct), cr: bridge(:ct) | |
bond :ct, :cl | |
bond :ct, :cr | |
position :cl, :cr, face: 100, dir: :cross | |
# Метил радикал адсорбированный на мост (является частным случаем метила на димере) | |
spec :methyl_on_bridge | |
atoms cb: bridge(:ct), cm: C | |
bond :cb, :cm | |
# В разделе событий описывается кинетическая схема: реакции и локальные окружения | |
# для описания реакций с латеральными взаимодействиями. В данном примере латеральной | |
# реакций нет. | |
# TODO: переименовать `events` в `scheme` | |
events | |
# Реакция миграции атома углерода вдоль димерного ряда. Для описания реакции | |
# необходимо задать её название, что будет в дальнейшем использоваться в результатах | |
# анализа. | |
# В данном случае описывается только прямая реакция. | |
reaction 'migration along dimers row' | |
# Уравнение реакции записывается с использованием структур заданных ранее. | |
# Используя название структуры, круглые скобки и псевдонимы атомов, можно изменять | |
# валентное состояние атомов реагирующих структур. | |
# В данном случае для обозначения активной связи используется символ `*`. Для | |
# обозначения того, что атом должен иметь только одну связь с атомом принадлежащим | |
# кристаллической решётке, используется символ `u`. | |
equation methyl_on_dimer(cm: *, cm: u) + dimer(cr: *) = cross_bridge_on_dimers | |
# Определяя реакцию можно задать тепловой эффект реакции (в настоящий момент не | |
# используется, но вообще интересно было бы учитывать влияние выделяемой теплоты) | |
enthalpy 3.4, 'kcal/mol' | |
# Энергия активации может быть задана как общим значением, так и для прямой и | |
# обратной реакций рездельно. Для прямой реакции используется дирекетива | |
# `forward_activation`, а для обратной `reverse_activation`. | |
activation 30, 'kcal/mol' | |
# Частота соударения реагирующий атомов, или предъэкспоненциальный множитель в | |
# уравнении Аррениуса задаётся директивами `forward_rate` для прямой реакции, и | |
# `reverse_rate` для обратной. Если использовать сразу обе директивы, то на основе | |
# одной будет получено 2 разные реакции. | |
forward_rate 2.4e8, '1/s' | |
# Треугольник серпинского выглядит так же как структура, которая разрушается в данной | |
# реакции. Реакция необходима для разрушения структур, которые могут образоваться | |
# в гораздо больших кинетических схемах, например как: | |
# https://github.com/newmen/versatile-diamond/blob/gen/examples/diamond_cvd.rb | |
# В данном случае описывается только обратная реакция, не смотря на то, что | |
# продукты и исходные вещества в уравнении реакции заданны наоборот. | |
# Всё решается директивной `reverse_rate`. | |
reaction 'sierpinski drop' | |
equation methyl_on_bridge(cm: *, cm: u) + bridge(ct: *) = cross_bridge_on_bridges | |
activation 30, 'kcal/mol' | |
# Здесь определяется, что реакция только обратная | |
reverse_rate 4.4e9, '1/s' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment