Научная статья на тему 'Расчет поля системы заряженных тел в вакууме с использованием GPU'

Расчет поля системы заряженных тел в вакууме с использованием GPU Текст научной статьи по специальности «Физика»

CC BY
117
37
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПОЛЕ КВАДРУПОЛЯ / ЗАРЯЖЕННАЯ ЧАСТИЦА / GPU / ВИДЕОКАРТА / ТОЧЕЧНЫЙ ЗАРЯД

Аннотация научной статьи по физике, автор научной работы — Ширяев Михаил Вадимович, Марценюк Михаил Андреевич

Описан программный комплекс для проведения виртуальных лабораторных работ по электростатике. Показан способ использования видеокарты при расчете поля системы точечных зарядов в вакууме. Продемонстрированы возможности на примере расчета поля квадруполя, тонкой квадратной заряженной пластинки и тонкой квадратной заряженной пластинки и иглы.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по физике , автор научной работы — Ширяев Михаил Вадимович, Марценюк Михаил Андреевич

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Расчет поля системы заряженных тел в вакууме с использованием GPU»

Ширяев М.В.1, Марценюк М.А.2

1 Пермский государственный национальный исследовательский университет, аспирант,

hekto 2006@yandex. ru

2 Пермский государственный национальный исследовательский университет, профессор,

mrcn @psu.ru

Расчет поля системы заряженных тел в вакууме с

использованием GPU

КЛЮЧЕВЫЕ СЛОВА:

Поле квадруполя, заряженная частица, GPU, видеокарта, точечный заряд.

АННОТАЦИЯ:

Описан программный комплекс для проведения виртуальных лабораторных работ по электростатике. Показан способ использования видеокарты при расчете поля системы точечных зарядов в вакууме. Продемонстрированы возможности на примере расчета поля квадруполя, тонкой квадратной заряженной пластинки и тонкой квадратной заряженной пластинки и иглы.

Введение

В настоящее время, широко распространено использование компьютерных моделей в образовании, науке и технике. С ростом сложности моделей возникают проблемы, связанные с нехваткой вычислительных мощностей, что приводит к покупке дорогостоящего оборудования и программного обеспечения.

Обычно, главное место в проведении расчетов занимает центральный процессор (CPU). На нем производятся все операции, относящиеся к выполняемым расчетам, обработке пользовательского интерфейса, работе с сетевыми интерфейсами и т.д. Одним из способов разгрузить CPU является передача части вычислений на графический процессор видеокарты (GPU). CPU состоят из нескольких ядер, оптимизированных для последовательной обработки данных, в то время как GPU состоят из десятков или сотен ядер, созданных для параллельной обработки данных. Последовательные части кода обрабатываются на CPU, а параллельные части - на GPU.

Целью данной работы является разработка компонента для программного комплекса, предназначенного для проведения виртуальных лабораторных работ. Компонент должен решать задачу, расчета поля создаваемого распределением зарядов. Эта задача хорошо поддается распараллеливанию, что дает возможность вычислить поле с помощью видеокарты, значительно сокращая затраты времени на проведение расчетов. К компоненту предъявляются следующие требования:

1. Высокая производительность

2. Загрузка геометрических моделей в STL формате для задания распределения зарядов.

3. Визуализация поля потенциала в виде эквипотенциальных поверхностей

4. Независимость от аппаратной части Структура программного комплекса

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

Программный комплекс реализован на основе Microsoft C++ .NET - это диалект языка C++ от Microsoft, предназначенный для разработки приложении с использованием .NET. Среда разработка Visual Studio. Основные технологии, используемые при разработке:

[5] Direct3D - набор API функций для взаимодействия с видеокартой, использовался для создания 3D сцены

[6] .NET Framework - использовался для создания пользовательского интерфейса, реализации пользовательских событий и добавления пользовательских модулей, подгружаемых в процессе выполнения

[7] OpenCL - библиотека, позволяющая использовать возможности видеокарты или центрального процессора для параллельных вычислений.

[8] CGAL - библиотека, для работы с геометрическими моделями [3]. Использовался, в основном, для построения сетки поверхности геометрических тел.

jjjü)

iwL'w^.^ib.

ilf "FIÉ fl T ■ VJ

i уж ■

Рис.1. Структура пользовательского интерфейса

Пользовательский интерфейс создан на основе класса окна .NET Framework с помощью конструктора окон Microsoft Visual Studio. Главное

окно программы состоит из нескольких элементов (рис. 1):

1. Окно с 3D моделью системы

2. Список доступных для добавления в систему объектов. Добавление объектов осуществляется с помощью перетаскивания элементов списка на модель или дерево построения. Элемент будет позиционирован в точку, куда смотрит камера.

3. Дерево построения, которое содержит иерархию объектов системы

4. Меню для управления загрузкой и сохранением моделей Кроме главного окна есть вспомогательные окна:

• Окно редактирования атрибутов - позволяет просматривать и изменять значения атрибутов, изменяя поведение системы (Рис. 2)

• Окно редактирования связей - предназначено для установки связей между атрибутами (Рис. 3)

• Контекстное меню объекта - позволяет получить доступ к функциям, характерным для данного объекта (Рис. 4). Открывается по правому клику на объект или выбору объекта на дереве построения.

В начале работы модель можно загрузить из файла нажав кнопку "Загрузить".

После окончания работы, модель можно сохранить в файл нажатием на кнопку "Сохранить".

Добавить Переименовать Отражение гю оси X Отражение гга оси ¥ Отражение гга оси Z Повернуть по осян X, ¥Р Z Удалить

Поле: Запуск расчета врущую Способ обновлений; Полуав -

OpenCL: Устройся

Object 875234453

Рис.2. Контекстное меню Рис.3. Редактор связей Рис.4. Редактор атрибутов

Алгоритм решения задачи вычисления электрического поля, создаваемого распределением зарядов

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

Объем представим в виде прямоугольного параллелепипеда, ограниченного плоскостями X=min X , X=max X, Y = min Y , Y =max Y , Z = min Z , Z = max Z . Разобьем его на ячейки с размерами А X, A Y , A Z .

В результате получим три вектора

I max X - mill X)

X, J = 0. Lzdel = ---,

AX

I max J - mm J I

Y, „j = 0 J, где J =-,

J AJ

(max К - mill К I

Z,.k = 0 К,гдеК = ---

к А К

Пусть Qon - величина, X0n, Y0 n, Z0n - координаты n-того заряда. Тогда потенциал поля от n-того заряда в узле с индексами i, j, к будет

vn= 1---—---7

lJ J(JT -X)2+(Y -V)2+(Z -z,r Y On i 'On j' ■ On k

Поле, создаваемое системой зарядов в точке (Xi, Yj,Zk), находится по принципу суперпозиции как сумма полей отдельных зарядов:

а?

n-X^HYon-Yj^HZon-Zj,)1

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

Реализация класса поля системы точечных зарядов

Для представления поля выбрана прямоугольная сетка, так как она является одной из самых простых для реализации. Расчет скалярного поля производится на основе готового класса программного комплекса, реализующего в себе методы для работы со скалярными полями, такие как:

1.Рисование эквипотенциальных поверхностей

2.Получение градиента поля в точке

3.Интерполяция значения поля внутри ячейки расчетной сетки

Решение задачи с помощью центрального процессора не дает

производительности, достаточной для проведения лабораторных работ, так как расчет поля системы может занимать значительное время, а время выполнения лабораторных работ ограничено. Перенос задачи расчета поля на видеокарту позволяет сократить время расчетов почти на два порядка[2]. Это возможно, так как каждая ячейка поля вычисляется независимо от остальных.

Загрузка систем зарядов сложной формы производится с помощью геометрических моделей в формате STL и сеткопостроителя, взятого из CGAL.

Существует множество библиотек, реализующих вычисления общего назначения на видеокартах: C++AMP, CUDA, OpenCL, Microsoft Accelerator и другие. В связи с тем, что решаемая нами задача будет выполняться на самых разных компьютерах и нежелательно привязываться к конкретному производителю оборудования, то было принято решение использовать библиотеку OpenCL. Ядро OpenCL компилируется в процессе выполнения,

ljk п J(Xb

для того оборудования, на котором будут производить расчеты. Если драйвер видеокарты не поддерживает OpenCL, то ядро будет откомпилировано для выполнения на центральном процессоре.

Для обхода проблемы, связанной с нехваткой видеопамяти, данные на видеокарту загружаются порциями, размер которых можно варьировать.

Характеристики тестового компьютера

• Операционная система: Windows 7

• Процессор: Intel® Core™ i5-2500 CPU @ 3.3ГГц, ядер 4

• Оперативная память: DDR3, 4ГБ

• Видеокарта: NVIDIA Quadro 600

Пример: расчет электростатического поля плоской тонкой квадратной заряженной пластинки

Рис. 5. Цилиндрическая система координат

Пример взят из учебника Жирнова[1]. На бесконечно тонкой квадратной пластинке равномерно распределен заряд q. Нужно определить поле заряженной пластинки на перпендикуляре, проходящем через её центр. Написать приближенные формулы для расчета напряженности поля пластинки на малых расстояниях от центра (7<<а) с точностью для членов

порядка (а) и на больших расстояниях (7 >> а) с точностью до членов

порядка (—) включительно.

щш ifäillf! ЩШЩ: шШМШ

• -г:

'^¡г^.ЩШф,

I Mesh3DSimple_System.S S-Csys Object 10248762 • AitowxAMS

i Mesh3DTriangular_Simuli • ChargedVolume Objec fCsys Object 1255909E : PointCharge Object 1С PointCharge Object 1< PointCharge Object Ii ! PointCharge Object 5;

Рис. 6. Поле тонкой квадратной пластинки

Используя цилиндрическую систему координат г, , z (Рис. 5) и применяя принцип суперпозиции находим для потенциала в точке Л следующее выражение:

<р =

(7Z 2(7

---1--

и

-da

^ Object 100500903 : Распределение полл

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

JnjjsJ

З.БбЭЕ+002^-

3.369E+0Q2

3.169Е+002

2.969Е---002

2.769E+0Q2

2.569E+0Q2

2.369Е+002

2.169E+0Q2

1.969E+0Q2

1.769Е+002

1.569Е+Ш2

1.369E+0Q2

1.169Е+002

9.691Е+001

X

0,000Е+000 2.000Е+001

1.000Е+002

X

(1)

Рис. 7. Распределение потенциала вдоль центра пластинки

В формуле (1) интегрирование ведется по одной восьмой части поверхности пластинки. Из рисунка 8 видно, что верхним пределом интегрирования по г является уравнение прямой ВС, которое в полярных

r = ■

a

координатах имеет вид

cos а

Очевидно также, что потенциал в точку A зависит только от z, поэтому вектор напряженности в этой точке направлен вдоль оси z и численно равен:

Е =

II .■¿11-| п С С/ (2)

Если точка наблюдения Л находится на малых (по сравнению с размерами пластинки) расстояниях от её центра, т.е. если z << а, то в разложении подынтегрального выражения в ряд по степеням малого

отношения

z2 cos2 а

2

а Г

-2 ,

мы можем ограничиться первыми двумя членами.

а

1

Va

cos сс

COS (X

ci

1-

2 2 "N Z COS СС

Подставляем (3) в (2) и выполняя интегрирование получим:

(3)

Е =

(7

2 Sr.

К

' 2V2 5-Jl

1--^н--j

71 а бтга

(z « а)-

)

(4)

Аналогично поступаем при вычислении поля на больших расстояниях ^>>а) от центра пластинки. Оно оказывается равным:

( 2\

Б = --- 1-— . (г« а).

Полученные формулы (4-5) показывают, что поле равномерно заряженной пластинки можно отождествлять с полем бесконечно заряженной плоскости лишь на малых расстояниях от неё. С другой стороны, поле конечной заряженной пластинки на больших расстояниях оказывается эквивалентным полю точечного заряда, чего нельзя сказать о поле бесконечно заряженной плоскости, так как её поле всюду однородно.

Как видно из выкладок, взятых из задачника Жирнова[1], поле квадратной заряженной пластинки можно рассчитать аналитически лишь приближенно и только вдоль перпендикуляра проходящего через центр. Численные методы позволяют решить эту задачу для тонкой пластинки произвольной формы и в любой точек пространства. С помощью сеткопостроителя поверхность квадратной пластинки разбивается на треугольные сектора и предполагается, что в центре каждого сектора находится точечный заряд, величина, которого пропорциональна площади сектора и поверхностной плотности заряда.

Численно решив задачу, можно продемонстрировать поле произвольной тонкой заряженной пластинки, что позволяет наглядно представить показанные результаты и показать студенту приближенность аналитического решения.

На рисунке 6 представлен результат расчета поля для плоской прямоугольной тонкой пластинки. График распределения потенциала вдоль центра пластинки показан на рисунке 7. Число зарядов в системе -5840, узлов сетки - 1000000, время расчетов:

• Генерация сетки - 10296мс

• Время расчета - 608мс

Пример: расчет электростатического поля квадруполя

Результат расчет поля квадруполя демонстрируется на рисунке (рис.8). Число узлов сетки - 8000000, время расчета — 254мс.

Пример: расчет электростатического поля тонкой конечной квадратной пластинки и иглы

Расчет поля тонкой конечной квадратной пластинки и иглы представлен на рисунке (рис. 9). Общее число зарядов - 10176, число узлов в сетке - 1000000, время вычисления:

• Генерация сеток - 22901мс

• Расчет поля - 1154мс

Заключение

Разработан компонент для программного комплекса, предназначенный для расчета поля системы точечных зарядов в вакууме.

Использование этого компонента, позволяет "на лету" изменять конфигурацию системы зарядов и получать картину эквипотенциальных поверхностей. В будущем, на основе проделанной работы будет

сформирована одна из лабораторных работ для раздела "Электричество и Магнетизм".

_!_Закрыть_j Сохранить

F Показ ат

Интервал выборки, мс [30~~

Т

•»I Г Показать окно связей

OpenCLBuffer OpenCLKemel Pipe Plane

Potencial Reíd RCGrcuit

RCQrcuilCalculalion

RCOrcuilFull

Rectangle

Reservior

Résistance

SourceVoltage

Sphere

Switcher

System

Text

VolumeBement Wlre

5

z]

I» System Object 1975733489 i- CameraControl Емкая каме[

шадши

Mesh3DSImple_System.S B-Csys Object 43536573 Amwv xAris Amwv yAos Атои zAtis Plane Object 1130' Line Object 10050C PointChange Object PointChange Object PointChange Object PointChange Object OpenCLKemel Object 1£T

Рис. 8. Поле квадруполя

_I_Закрыть_I Сохранил

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Интервал выборки, мс

К

_| Р Показать окно атрибутов I-

Г Показать окно связей

CameraControl Capacity Сара city Fl at Charged Vol urne

I::: :

Ground

Induction

Mesh3DSimple_System.Single_Sim Mesh3DTriangular_SimulationSyste *

System Object 20Ш7Э2Э4 CameraControl Пикая камера

ES

î Mesh3DSimple_System Singl É-Csys Object 1770068260

■ Arrow xPtàs •• Arrow yAqs

■ Airow 2 Axis

•Line Object 18608339 В Mesh3DTriangular_Simulatior S Mesh3DTiiangular_Simulatioi OpenCLKemel Object 71238 ■■OpenCLBuffer Object 18640! ••OpenCLBuffer Object 15317! - OpenCLBuffer Object 5132&

Рис. 9. Поле системы из тонкой конечной квадратной пластинки и иглы

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

Литература

1. Жирнов Н.И. Задачник-практикум по электродинамике.- Москва: Из-во "Просвящение" 1970

2. Ширяев М.В. Использование GPU для расчета электростатических полей // Вестн. Перм. унта. Сер. Информационные системы и технологии. 2012 Вып. 13(40)

3. Computational Geometry Algorithms Library http://www.cgal.org/

i Надоели баннеры? Вы всегда можете отключить рекламу.