Главная страница проекта                         

 

 

 

 

 

 

 

 

 

 

 

 

Программа CARTESIUS

 

 

Данная программа представляет собой компилируемый текст, написанный на языке С++, содержащий все основные типы данных необходимые для хранения входного потока в легкодоступном виде, что облегчает его последующую обработку. Создание таких типов данных было бы весьма затруднительным, если бы не одна важная особенность языка C++: его объектная ориентированность. Объектно-ориентированным называется язык, обладающий механизмами, поддерживающими так называемый стиль объектно-ориентированного программирования. При этом определяется, что язык поддерживает некоторый стиль, если он располагает средствами сделать удобным его использование. Язык С++ предоставляет возможность пользователям определять некоторые абстрактные типы данных, которые ведут себя почти таким же образом, как встроенные типы. В C++ встроенными типами являются real (вещественный тип), int (целочисленный тип), bool (логический тип, который имеет только два значения: true - истина и false - лож) и другие типы, которые являются обобщением и расширением предыдущих (complex, long int, double, float и т.д.). Понятию "абстрактный тип данных" можно дать четкое определение: это математическая модель плюс различные операторы, определенные в рамках этой модели. Для представления абстрактных типов данных используют структуры данных, которые представляют собой набор переменных, возможно, различных типов данных, объединенных определенным образом. В данном случае под типом данных понимается некоторый встроенный тип. Язык программирования, обладающий конструкциями, которые позволяют формировать различные абстракные типы данных и проводить над ними какие-то операции, поддерживает объектно-ориентированное программирование. Таковым является язык C++.

Программа Cartesius содержит следующие абстрактные типы данных:

•   render (представление) - тип, созданный для представления каждого элемента без привязки к физике;

•   element (элемент) - тип, включающий в себя физические параметры каждого элемента плюс тип render;

•   point (точка) - тип для представления всего набора точек в трехмерном пространстве достаточного для описания данной молекулярной системы;

•   node (вершина) - вершины молекулярного графа. Граф - множество точек, называемых вершинами, плюс совокупность линий (ребер), соединяющих эти точки. Следуя этому определению, химическая формула, изображенная с помощью ломаных линий, обозначающих связи с атомами в вершинах, является графом;

•   atom (атом) - собственно атомы молекулярной системы. Тип включает в себя понятия элемент, точка и вершина;

•   arc (дуга) - линии, соединяющие вершины в молекулярном графе.

Содержит понятие вершина для обозначения своих концов;

•   ао    атомные орбитали (atomic orbitals) молекулярной системы;

•   сао - центрированные атомные орбитали (centered anomic orbitals),то есть атомные орбитали с привязкой к определенному атому.

Включает в себя типы atom и ао;

•   oes - тип для представления одноэлектронных состояний (one-electron states) в терминах ЛКАО (Линейной комбинации атомных орбиталей). Представляется в виде вектора элементов типа сао. Сам тип вектор (vector) является стандартным в языке C++. Он позволяет строить упорядоченные наборы из элементов других типов, в том числе нестандартных;

•   group (группа) - тип групп электронов, на которые можно разбить совокупность всех электронов молекулярной системы. Некоторые методы квантовой химии позволяют считать такие группы отдельно на фоне остальных групп. Это значительно увеличивает скорость счета, если его проводить с использованием полуэмпирических методов. При этом точность получаемых результатов не уступает неэмпирическим (ab initio) методам. Тип включает в себя вектор одноэлектронных состояний;

•   composition (состав) - определяет состав молекулярной системы по набору атомов. Определяется вектором атомов и способом добавления атомов в состав (функция AddAtomQ);

•   geometry (геметрия) - определяет геометрию молекулярной системы по набору точек. Определяется вектором точек системы и способом их добавления (функция AddPoint());

•   molgraph - тип представления молекулярной формулы с помощью совокупности вершин и дуг (molecular graph - молекулярный граф).

 

Представляется с помощью векторов вершин и дуг и способов их добавления (функции AddNode() и AddArc());

•   structure (структура) - представление структуры молекулярной системы через совокупность ее электронов. Включает в себя вектора типов групп электронов и центрированных атомных орбиталей и способы их добавления и вывода (функции AddGroupQ, AddAtomBasis(), AddShell(), AddSubshell() и GetpCAO());

•   molecule (молекула) - вершина описания молекулярной системы.Включает в себя типы composition, geometry, molgraph, structure и множество операций над этими типами.