Исходные данные. Для расчёта сил, действующих между ионами, необходимы исходные данные трёх типов:
Для расчёта сил, действующих между ионами, необходимы исходные данные трёх типов: · Координаты всех ионов, представляющие собой трёхкомпонентные векторы из чисел с плавающей точкой: ; · Сорта каждой из частиц (ион кислорода, урана, примесь), которые могут быть представлены скалярными числами. Здесь естественным было бы использование целочисленных типов, но графические процессоры работают только с числами с плавающей точкой. Фактически, в нашем алгоритме ионам кислорода будет соответствовать число 0, 5, а ионам урана – число 1, 5. В случае наличия примесей либо ионов с нестехиометрическими зарядами они кодировались бы числами 2, 5, 3, 5 и т.д. Важно отметить, что при таком представлении каждая частица полностью характеризуется 4-компонентным вектором (в дальнейшем 4-векторы): ; · Наборы параметров потенциалов взаимодействия – констант для подстановки в формулы типа -. Фактически, в рассматриваемом примере мы пользовались потенциалами Букингема, так что каждой паре сортов частиц соответствовал набор из 4-х параметров потенциала: . Эти параметры являются числами с плавающей точкой, а наборы параметров для каждой пары сортов можно рассматривать как 4-векторы. Видно, что все исходные данные в нашей реализации молекулярной динамики могут быть представлены как 4-векторы, описывающие либо каждую из частиц, либо потенциалы взаимодействия пары сортов частиц. Современные графические процессоры поддерживают параллельную обработку данных в форме 4-векторов, а язык HLSL имеет встроенный тип данных для обработки 4-векторов с плавающей точкой – float4. Именно такой тип имеют данные, записываемые графическим процессором в рендер-цель. Входные данные мы тоже будем представлять в форме 4-векторов.
|