Решение дифференциальных уравнений в частных производных — КиберПедия 

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Решение дифференциальных уравнений в частных производных

2019-12-19 221
Решение дифференциальных уравнений в частных производных 0.00 из 5.00 0 оценок
Заказать работу

Решение дифференциальных уравнений в частных производных

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

Рассмотрим в качестве примера проблему численного решения задачи Дирихле для уравнения Пуассона, где находим функцию , удовлетворяющую в области определения уравнению

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

В качестве области задания функции далее используется единичный квадрат

.

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

Сеточные методы характеризуются значительной вычислительной трудоемкостью

,

где есть кол-во узлов по каждой из координат области ,

- число операций, которые выполнены методом для одного узла сетки,

- кол-во итераций метода до выполнения остановки.

Проблема взаимоблокировки

Возможный подход для получения однозначных результатов (уход от состязания потоков) может состоять в ограничении доступа к узлам сетки, которые обрабатываются в параллельных потоках программы. Для этого можно ввести набор семафоров row_lock[N], который позволит потокам закрывать доступ к "своим" строкам сетки:

// поток обрабатывает i строку сетки omp_set_lock(row_lock[i]); omp_set_lock(row_lock[i+1]); omp_set_lock(row_lock[i-1]); // <обработка i строки сетки> omp_unset_lock(row_lock[i]); omp_unset_lock(row_lock[i+1]); omp_unset_lock(row_lock[i-1]);

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

Данный подход демонстрирует еще одну проблему, которая может возникать в ходе параллельных вычислений. Эта проблема состоит в том, что при организации доступа к множественным общим переменным может возникать конфликт между параллельными потоками и этот конфликт не может быть разрешен успешно. Так, в приведенном фрагменте программного кода при обработке потоками двух последовательных строк (например, строк 1 и 2) может сложиться ситуация, когда потоки блокируют сначала строки 1 и 2 и только затем переходят к блокировке оставшихся строк (рис. 6.6). В этом случае доступ к необходимым строкам не может быть обеспечен ни для одного потока – возникает неразрешимая ситуация, обычно именуемая тупиком. Как отмечалось в главе 5 пособия, необходимым условием тупика является наличие цикла в графе распределения и запросов ресурсов. В данном примере уход от цикла может состоять в последовательной схеме блокировки строк потока

// поток обрабатывает i строку сетки omp_set_lock(row_lock[i+1]); omp_set_lock(row_lock[i]); omp_set_lock(row_lock[i-1]); // <обработка i строки сетки> omp_unset_lock(row_lock[i+1]); omp_unset_lock(row_lock[i]); omp_unset_lock(row_lock[i-1]);

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

Рис. 6.6. Ситуация тупика при доступе к строкам сетки (поток 1 владеет строкой 1 и запрашивает строку 2, поток 2 владеет строкой 2 и запрашивает строку 1)

Разделение данных

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

Рис. 6.10. Ленточное разделение области расчетов между процессорами (кружки представляют граничные узлы сетки)

 

В данной задаче по решению задачи Дирихле есть два различных способа разделения данных – одномерная или ленточная схема (рис. 6.10) или двухмерное или блочное разбиение (рис. 6.9) вычислительной сетки. Дальнейшее изложение учебного материала будет проводиться на примере первого подхода; блочная схема будет рассмотрена позднее в более кратком виде.

Основной момент при организации вычислений с подобным разделением данных состоит в том, что на процессор, выполняющий обработку какой-либо полосы, должны быть продублированы граничные строки предшествующей и следующей полос вычислительной сетки (получаемые в результате расширенные полосы показаны на рис. 6.10 справа пунктирными рамками). Продублированные граничные строки полос используются только при проведении расчетов, пересчет же этих строк происходит в полосах своего исходного месторасположения. Тем самым дублирование граничных строк должно осуществляться перед началом выполнения каждой очередной итерации метода сеток.

Решение дифференциальных уравнений в частных производных

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

Рассмотрим в качестве примера проблему численного решения задачи Дирихле для уравнения Пуассона, где находим функцию , удовлетворяющую в области определения уравнению

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

В качестве области задания функции далее используется единичный квадрат

.


Поделиться с друзьями:

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.01 с.