Внутренние координаты ===================== В GAMESS (US) существует два способа задачи внутренних координат: * В группе ``$DATA`` – весьма ограниченный, но полезный для задачи начальных координат системы. * В группе ``$ZMAT`` – более гибкий и функциональный, но неподходящий для задачи начальных координат. .. important:: *Использование внутренних координат в расчёте определяется параметром* ``NZVAR`` *в группе* ``$CONTRL`` *Данный параметр задаёт число используемых внутренних координат. Для линейных молекул оно равно* :math:`3N-5`, *а для нелинейных –* :math:`3N-6`, *где* :math:`N` *– число атомов молекулы.* **При использовании декартовых координат оно равно нулю.** Задача внутренних координат в группе $DATA ------------------------------------------ При выборе значения ``COORD=ZMT`` или ``COORD=ZMTMPC`` в группе ``$CONTRL`` начальные координаты системы вводятся через внутренние координаты, записанные в форме **Z-матрицы**. *Z-матрица* представляет собой набор внутренних координат системы. Её вид для значений ``COORD=ZMT`` и ``COORD=ZMTMPC`` несколько отличается; ниже приведено описание её построения для значения ``COORD=ZMT``, после которого рассмотрены отличия ``COORD=ZMTMPC`` от неё. Рассмотрим Z-матрицу на примере молекулы этилового спирта:: $DATA Ethanol C1 C C 1 1.5000000000 O 1 1.5000000000 2 109.5000000000 H 3 1.0000000000 1 109.5000000000 2 180.0000000000 0 H 1 1.0000000000 3 109.5000000000 2 120.0000000000 0 H 1 1.0000000000 3 109.5000000000 2 -120.0000000000 0 H 2 1.0000000000 1 109.5000000000 3 180.0000000000 0 H 2 1.0000000000 1 109.5000000000 7 109.5000000000 1 H 2 1.0000000000 1 109.5000000000 7 109.5000000000 -1 $END .. attention:: *Ввод начальных координат системы с помощью значений* ``COORD=ZMT`` *и* ``COORD=ZMTMPC`` *возможен только для* *точечной группы симметрии* :math:`C_{1}`. `Ввод `_ `базисного набора `_ *после каждого атома или в виде отдельных групп также недоступен.* Первые три атома являются реперными (опорными): * Первый атом задаёт *начало координат*. * Второй атом вместе с первым задаёт *ось*. * Третий атом вместе с предыдущими двумя задаёт *плоскость*. Таким образом, возникает *сферическая система координат*, которая однозначно определяет местоположение всех остальных атомов системы. Задача их осуществляется следующим образом: Первый атом автоматически помещается в начало координат, для его задачи достаточно указать **символ атома**:: C .. note:: *Символ атома можно сопровождать натуральным числом (например, порядковым номером), записанным к нему вплотную:* :: C1 .. image:: images/1atom.png :align: center :width: 120 Второй атом задаёт ось, для его задачи необходимо ввести значения в следующем порядке: * **Символ задаваемого атома**. * **Порядковый номер атома**, до которого указывается расстояние. * **Расстояние до этого атома**. В итоге получаем:: C 1 1.5000000000 Или:: C2 C1 1.5000000000 .. image:: images/2atom.png :align: center :width: 500 .. note:: *Третий атом задаёт плоскость, поэтому он* **обязятельно** *не должен лежать на одной прямой с другими реперными атомами.* Три задаче третьего атома значения указываются в следующем порядке: * **Символ задаваемого атома**. * **Номер атома до которого указывается расстояние**. * **Расстояние до этого атома**. * **Номер атома, задающего ось**. * **Величина плоского угла**, образованного двумя указанными ранее атомами и задаваемым атомом при вершине. В итоговая запись выглядит следующим образом:: O 1 1.5000000000 2 109.5000000000 Или:: O3 C1 1.5000000000 C2 109.5000000000 .. image:: images/3atom.png :align: center :width: 800 При задаче последующих атомов значения записываются в следующем порядке: * **Символ задаваемого атома**. * **Номер атома, до которого задаётся расстояние**. * **Расстояние до этого атома**. * **Номер атома, задающего ось**. * **Величина плоского угла**, образованного двумя указанными ранее атомами и задаваемым атомом при вершине. * **Номер атома, задающего плоскость или вторую ось**. * **Величина второго угла** (двугранного или плоского). * **Тип второго угла**. Последнее значение определяет геометрический смысл второго угла: * если оно равно ``0``, то данный угол считается двугранным (изменяется от :math:`-180^{∘}` до :math:`180^{∘}`), тогда мы получаем классическую сферическую систему координат. * если оно равно ``1`` или ``-1``, то этот угол считается вторым плоским углом (изменяется от :math:`0^{∘}` до :math:`180^{∘}`). Данная система координат однозначно определяет местоположение атома вплоть до перемены знака, поэтому существует два значения: ``1`` и ``-1``, определяющие с какой стороны находится атом: .. image:: images/5atom.png :align: center :width: 600 Здесь восьмой и девятый атомы заданы следующим образом:: H8 C2 1.0000000000 C1 109.5000000000 H7 109.5000000000 1 H9 C2 1.0000000000 C1 109.5000000000 H7 109.5000000000 -1 Запись же остальных атомов производится в виде:: H 3 1.0000000000 1 109.5000000000 2 180.0000000000 0 Или:: H4 O3 1.0000000000 C1 109.5000000000 C2 180.0000000000 0 .. image:: images/4atom.png :align: center :width: 800 .. note:: *В последнем столбце значение* ``0`` *установлено по умолчанию, так что его запись можно опустить.* .. warning:: *Так как в группе* ``$DATA`` *Z-матрица используется для задачи координат системы,* *то при задаче нового атома допустимо ссылаться только на атомы, уже заданные в матрице выше.* .. important:: *В Z-матрице вместо длин и величин углов можно использовать переменные, после всех координат через пустую строку указав их значения:* :: $DATA Ethanol C1 C C 1 BL1 O 1 BL1 2 VA1 H 3 BL2 1 VA1 2 DA1 0 H 1 BL2 3 VA1 2 DA2 0 H 1 BL2 3 VA1 2 DA3 0 H 2 BL2 1 VA1 3 DA1 0 H 2 BL2 1 VA1 7 VA1 1 H 2 BL2 1 VA1 7 VA1 -1 BL1=1.500000 BL2=1.000000 VA1=109.5000 DA1=180.0000 DA2=120.0000 DA3=-120.0000 $END .. note:: *При указании значений переменных можно опустить знак "=", заменив его пробелом.* Помимо символов элементов, по которым определяются сорта атомов, существует ещё два равноправных *специальных символа* ``X`` и ``BQ``, задающих фиктивные атомы, которые участвуют только при построении геометрии системы. .. hint:: `В приложении `_ *собрана более подробная информация о фиктивных атомах.* **Отличия ввода при** ``COORD=ZMTMPC`` **в группе $CONTRL:** Рассмотрим вид Z-матрицы на примере молекулы этанола:: $DATA Ethanol C1 C 0.0000000000 0 0.0000000000 0 0.0000000000 0 0 0 0 C 1.5000000000 1 0.0000000000 0 0.0000000000 0 1 0 0 O 1.5000000000 1 109.5000000000 1 0.0000000000 0 1 2 0 H 1.0000000000 1 109.5000000000 1 180.0000000000 1 3 1 2 H 1.0000000000 1 109.5000000000 1 120.0000000000 1 1 3 2 H 1.0000000000 1 109.5000000000 1 -120.0000000000 1 1 3 2 H 1.0000000000 1 109.5000000000 1 180.0000000000 1 2 1 3 H 1.0000000000 1 109.5000000000 1 60.0000000000 1 2 1 3 H 1.0000000000 1 109.5000000000 1 -60.0000000000 1 2 1 3 $END Значения записываются в следующем порядке: * **Символ задаваемого атома**. * **Расстояние**. * **Флаг оптимизации расстояния**. * **Величина плоского угла**. * **Флаг оптимизации плоского угла**. * **Величина двугранного угла**. * **Флаг оптимизации двугранного угла**. * **Номер атома, до которого задаётся расстояние**. * **Номер атома, задающего ось**. * **Номер атома, задающего плоскость**. Флаг оптимизации, вообще говоря, определяет, является ли при оптимизации величина постоянной (когда равен ``0``), изменяемой (когда равен ``1``) или используется при расчёте внутренней координаты реакции (когда равен ``-1``). Однако в GAMESS (US) **данные функции не поддерживаются**. Это вызвано тем, что формат ввода ``COORD=ZMTMPC`` был внедрён в GAMESS (US) из программы `MOPAC `_, чтобы можно было легко переносить оттуда координаты атомов частиц. Но вышеперечисленные возможности не были реализованы в группе $DATA (они присутствуют в GAMESS (US) и гибко настраиваются в группах ``$ZMAT``, ``$STATPT``, ``$IRC`` и ``$OPTFMO``). *Поэтому данным флагам может быть установлено любое (но обязательно целое) значение.* .. attention:: *В отличие от Z-матрицы при значении* ``COORD=ZMT`` *в группе* ``$CONTRL`` *здесь отсутствует возможность использования* *второго плоского угла вместо двугранного.* У реперных атомов из-за недостатка координат на место координат ставятся нули, однако их запись можно опустить. .. important:: *Формат ввода* ``COORD=ZMTMPC`` *используется только для задачи координат, далее по ходу расчёта он переводится в* ``COORD=ZMT`` (*или* ``COORD=UNIQUE``, *если* ``NZVAR=0`` *в группе* ``$CONTRL``). .. hint:: *Помимо форматов ввода* ``COORD=ZMT`` *и* ``COORD=ZMTMPC``, *внутренние координаты также использует формат ввода* ``COORD=HINT``. *Сводная информация по нему* `собрана в приложении `_. Задача внутренних координат в группе $ZMAT ------------------------------------------ Задача вручную .............. Группа ``$ZMAT`` позволяет задавать внутреннюю систему координат, отличную от системы координат, которая вводится в группе ``$DATA`` при значениях ``COORD=ZMT`` или ``COORD=ZMTMPC`` в группе ``$CONTRL``. В таком случае данные из группы ``$DATA`` используются только для построения молекулы вне зависимости от значения параметра ``COORD`` в группе ``$CONTRL``. Также данная группа позволяет использовать другие виды внутренних координат помимо межъядерных расстояний, плоских и двугранных углов. Для работы внутренней системы координат число координат должно быть равно значению параметра ``NZVAR`` в группе ``$CONTRL``. Данные координаты задаются в виде неупорядоченного массива (Z-матрицы) с помощью параметра ``IZMAT``. Координаты вводятся следующим способом: сначала записывается значение, определяющее тип координаты, а затем – номера атомов, задающих эту координату. После этого записывается следующая координата и так далее. **Ниже перечислены все доступные типы внутренних координат порядок их задачи.** .. note:: *Ниже в описаниях и на диаграммах атомы, определяющие координату, обозначены по порядку символами:* :math:`I`, :math:`J`, :math:`K`, :math:`L`, :math:`M` *и* :math:`N`. *Фиктивные атомы обозначены как* :math:`A` *и* :math:`B`. *Сами координаты обозначены как* :math:`x` *и* :math:`y`. *Горизонтальная плоскость изображена синим цветом, две вертикальные плоскости – чёрным. Остальные плоскости изображены красным.* *Атомы, отрезки и углы изображены в цветах плоскостей, в которых (или параллельно которым) они лежат.* *Если они лежат на пересечении плоскостей, то они изображены чёрным цветом. Если же они не лежат ни в* *одной из изображённых плоскостей – то зелёным.* *Длина отрезка* :math:`IJ`: * Значение ``1``. * Номер атома :math:`I`. * Номер атома :math:`J`. .. image:: images/internal1.png :align: center :width: 800 *Плоский угол* :math:`IJK`: * Значение ``2``. * Номер атома :math:`I`. * Номер атома :math:`J`. * Номер атома :math:`K`. .. image:: images/internal2.png :align: center :width: 800 *Угол между плоскостями* :math:`IJK` и :math:`JKL`: * Значение ``3``. * Номер атома :math:`I`. * Номер атома :math:`J`. * Номер атома :math:`K`. * Номер атома :math:`L`. .. image:: images/internal3.png :align: center :width: 800 *Угол между отрезком* :math:`IJ` *и плоскостью* :math:`JKL`: * Значение ``4``. * Номер атома :math:`I`. * Номер атома :math:`J`. * Номер атома :math:`K`. * Номер атома :math:`L`. .. image:: images/internal4.png :align: center :width: 800 *"Линейный изгиб"* :math:`IJK`: * Значение ``5``. * Номер атома :math:`I`. * Номер атома :math:`J`. * Номер атома :math:`K`. Также необходимо в группе ``$LIBE`` определить значения параметра ``APTS``. Данный параметр задаёт массив декартовых координат фиктивных атомов (``APTS(1)=`` :math:`x_{1}`, :math:`y_{1}`, :math:`z_{1}`, :math:`x_{2}`, :math:`y_{2}`, :math:`z_{2}`, :math:`...`), которые используются для этого типа координат. На каждый линейный изгиб приходится один фиктивный атом :math:`A`, он определяет две плоскости (:math:`IJA` и перпендикулярную ей, проходящую через отрезок :math:`IJ`), на которые будет проецироваться угол :math:`IJK`. .. attention:: *Каждый линейный изгиб считается за две внутренние координаты и, как следствие, уменьшает требуемое значение параметра* ``NZVAR`` *в группе* ``$CONTRL`` *на единицу.* .. image:: images/internal5.png :align: center :width: 800 *Угол между плоскостями* :math:`IJK` *и* :math:`KLM`: * Значение ``6``. * Номер атома :math:`I`. * Номер атома :math:`J`. * Номер атома :math:`K`. * Номер атома :math:`L`. * Номер атома :math:`M`. .. image:: images/internal6.png :align: center :width: 800 *Угол между плоскостями* :math:`AKL` *и* :math:`KLB`, *где* :math:`A` – *это середина отрезка* :math:`IJ`, *а* :math:`B` – *середина отрезка* :math:`MN`: * Значение ``7``. * Номер атома :math:`I`. * Номер атома :math:`J`. * Номер атома :math:`K`. * Номер атома :math:`L`. * Номер атома :math:`M`. * Номер атома :math:`N`. .. image:: images/internal7.png :align: center :width: 800 Таким образом, например, внутренние координаты молекулы этанола, приведённые при рассмотрении формата ввода ``COORD=ZMT`` в группе ``$CONTRL``, могут быть представлены следующим образом:: $ZMAT IZMAT(1)= 1,1,2, 1,1,3, 2,1,3,2, 1,3,4, 2,3,4,1, 3,3,4,1,2, 1,1,5, 2,1,5,3, 3,1,5,3,2, 1,1,6, 2,1,6,3, 3,1,6,3,2, 1,2,7, 2,2,7,1, 3,2,7,1,3, 1,2,8, 2,2,8,1, 2,2,8,7, 1,2,9, 2,2,9,1, 2,2,9,7 $END .. note:: *Порядок записи внутренних координат не имеет значения.* Задача автоматически и полуавтоматически ........................................ Стоит отметить, что от выбора внутренних координат сильно зависит затратность расчёта. Например, при неудачно выбранной системе внутренних координат оптимизация геометрии системы может быть затруднительной. Наиболее это заметно на циклических и полициклических молекулах, где использование внутренних координат может приводить к разрыву циклов, "вылету" атомов из молекулы и тому подобному. Такое поведение системы определяется **связностью** координат, то есть тем, как сильно изменение одной координаты влияет на величины других. Чем ниже связность координат, тем быстрее и проще расчёт. Наименее связанными координатами являются **ортогональные** координаты: такие координаты которые меняются независимо друг от друга. Декартовые координаты, в частности, являются ортогональными, однако они имеют другие недостатки, усложняющие расчёт. Во-первых, их больше, чем внутренних (в общем случае, :math:`3N` против :math:`3N-6`), а во-вторых, зависимость многих параметров системы от декартовых координат часто сложнее, чем от внутренних. Снизить связность внутренних координат можно с помощью линейных преобразований. Более того, в результате линейных преобразований можно получить систему ортогональных координат. Частными случаями таких координат являются **естественные** и **делокализованные** внутренние координаты. **Естественные внутренние координаты** – это координаты, полученные с помощью линейных преобразований внутренних координат 1, 2 и 3 типов (для последних двух выбор линейных комбинаций основывается на точечных группах симметрии в *локальном* приближении). **Делокализованные внутренние координаты** – это координаты, полученные с помощью линейных преобразований внутренних координат 1, 2 и 3 типов, в том числе *избыточных* (то есть, тех, что выходят за число, определённое параметром ``NZVAR`` в группе ``$CONTRL``). .. note:: *Вообще говоря, делокализованные координаты могут содержать и координаты других типов, но в GAMESS (US)* *они строятся только из координат 1, 2 и 3 типов.* И естественные, и делокализованные координаты являются ортогональными, и как следствие, использование их одинаково эффективно. В GAMESS (US) присутствует возможность "ручного" ввода естественных координат (если точнее, то с помощью параметров ``IJS`` и ``SIJ`` можно задать матрицу отображения, размерностью :math:`X×M`, где :math:`X` и :math:`M` – это, соответственно, количество исходных внутренних координат и количество конечных естесственных координат), однако существует **гораздо** более удобный автоматический способ ввода делокализованных координат. Флаг ``DLC`` при установке значения ``DLC=.TRUE.`` запрашивает набор внутренних координат 1, 2 и 3 типов (в том числе избыточных) для построения распределённых внутренних координат (**по умолчанию** ``DLC=.FALSE.``). Флаг ``AUTO`` при установке значения ``AUTO=.TRUE.`` автоматически генерирует набор внутренних координат 1, 2 и 3 типов (в том числе избыточных). **По умолчанию** ``AUTO=.FALSE.``. Таким образом, для подключения делокализованных внутренних координат достаточно во входной файл вставить строку:: $ZMAT DLC=.TRUE. AUTO=.TRUE. $END Иногда при автоматической генерации может нехватить нескольких внутренних координат до :math:`3N-6`, в таком случае их можно добавить параметром ``NONVDW``. Данный параметр задаёт массив пар атомов, которые должны быть принудительно соединены. Таким образом, к набору координат добавляется расстояние между атомами, а также соответствующие ему плоские и двугранные углы. Если сгенерилось :math:`3N-12` координат, то это означает, что не была учтена одна связь, соединяющая две части системы; если же их сгенерилось :math:`3N-9`, то это означает, что одна из несоединённых частей системы – это одинокий атом, (симметричен и не имеет вращательных степеней свободы, поэтому теряется только 3, а не 6 координат). Генерацию делокализованных координат можно настроить c помошью следующих параметров: Параметр ``IXZMAT`` задаёт массив дополнительных координат, которые добавляются в набор, созданный флагом ``AUTO``. Параметр ``IRZMAT`` задаёт массив координат, которые вычёркиваются из набора, созданного флагом ``AUTO``. Параметр ``IFZMAT`` задаёт массив координат, которые *«замораживаются»*, то есть фиксируются и не изменяются в процессе расчёта. Параметр ``IFZMAT`` используется для «заморозки» только для координат 1, 2 и 3 типов, заданных через параметр ``IZMAT`` или сгенерированных флагом ``AUTO``. Для «заморозки» координат, заданных в группе ``$DATA`` или естественных внутренних координат используется параметр ``IFREEZ`` в группе ``$STATPT``. Структура значений данных аналогична структуре значений параметра ``IZMAT``. .. note:: *Для функционирования параметра* ``IFZMAT`` *обязательна установка параметра* ``FVALUE``. *Данный параметр задаёт* *массив величин, к которым привязываются значения координат, заданных параметром* ``IFZMAT``.