Преобразование объекта

В предыдущих статьях цикла было описан переход от аналитической постановки задачи Дирихле к её вычислительному аналогу. В этой статье я начну описывать свои программные изыски для реализации просчётов на кластере. Это всё ещё не код, но уже довольно близко к нему. Самого кода скорее всего не будет, потому что не вижу смысла его выкладывать на сайте, возможно ограничусь какими-то краткими частями и комметрированием почему я сделал так, а не иначе. Об этом позже, а сейчас описание преобразования объекта.

Преобразование объекта

В качестве задачи для параллелизации, было выбрано двухмерное уравнение Лапласа:

с граничным условием первого рода

.

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

Построение матрицы

Рис. 1. Создание маски объекта для метода конечных разностей.

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

Кроме матрицы значений создаётся вторая матрица, которая описывает форму объекта, т.е. она является маской. В реализации это могут быть целочисленная или символьная матрица, содержащая какие-либо числа или символы, где каждое число или символ обозначает определённую область, т.е. для пустой области одно число или символ, для границы второе и для внутренней области объекта третье. Это можно увидеть на рис. 1. где граница обозначена серыми точками, внутренняя область чёрными, а внешняя ничем не обозначена.

Таким образом, входные данные это две матрицы: матрица значений и матрица геометрии объекта (маска). Для параллелизации задачи объект разбивается на подобласти. Все манипуляции в данном случае производятся с маской. Внутренняя область объекта заполняется числами — номерами компьютеров, на которых будет производиться решение (далее решателями). Следует заметить, что компьютер клиента так же является решателем. Разделение осуществляется не произвольным образом, а так, чтобы каждый решатель получил часть матрицы соизмеримую по объему с частями других решателей. Кроме того части матрицы имею прямоугольную форму и, наконец, число соседей следует минимизировать. Поскольку в данном примере вся область является объектом, то нет требования на полное вхождение объекта в ту или иную подматрицу. 

После разделения маски происходит так же и разбиение матрицы значений. Этот процесс напоминает «вырезание» из матрицы подобласти, назначенной определённому решателю, и сохранение это подобласти в отдельный файл. Для каждого решателя будет создан свой файл с подматрицей значений и подмаской.

Comment ( 1 )

  1. Разделение объекта - BioAPI
    […] предыдущей статье было начато описание преобразования объекта, а так же были заданы некоторые условия по разделению […]

Leave a reply

Your email address will not be published.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.