Научная статья на тему 'Об использовании свободно распространяемого программного обеспечения для решения задач вычислительной гидроаэродинамики'

Об использовании свободно распространяемого программного обеспечения для решения задач вычислительной гидроаэродинамики Текст научной статьи по специальности «Математика»

CC BY
853
313
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
СВОБОДНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ С ОТКРЫТЫМ ИСХОДНЫМ КОДОМ / ПОСТРОЕНИЕ СЕТОК / ПАРАЛЛЕЛЬНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ АЛГОРИТМЫ

Аннотация научной статьи по математике, автор научной работы — Попов Андрей Юрьевич

Дано описание возможностей свободно распространяемых прикладных пакетов по решению задач вычислительной гидроаэродинамики. Рассмотрена общая схема решения задачи при использовании одного из наиболее известных пакетов такого типа - OpenFOAM. На примере решения модельных задач продемонстрировано его использование совместно с препроцессором SALOME, а также эффективность применения параллельных вычислительных алгоритмов в OpenFOAM.

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

Похожие темы научных работ по математике , автор научной работы — Попов Андрей Юрьевич

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

Текст научной работы на тему «Об использовании свободно распространяемого программного обеспечения для решения задач вычислительной гидроаэродинамики»

УДК 004.4

А. Ю. Попов

ОБ ИСПОЛЬЗОВАНИИ СВОБОДНО РАСПРОСТРАНЯЕМОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ДЛЯ РЕШЕНИЯ ЗАДАЧ ВЫЧИСЛИТЕЛЬНОЙ ГИДРОАЭРОДИНАМИКИ

Дано описание возможностей свободно распространяемых прикладных пакетов по решению задач вычислительной гидроаэродинамики. Рассмотрена общая схема решения задачи при использовании одного из наиболее известных пакетов такого типа — OpenFOAM. На примере решения модельных задач продемонстрировано его использование совместно с препроцессором SALOME, а также эффективность применения параллельных вычислительных алгоритмов в OpenFOAM.

E-mail: otlichnik@inbox.ru

Ключевые слова: свободное программное обеспечение с открытым исходным кодом, построение сеток, параллельные вычислительные алгоритмы.

Для решения практических задач вычислительной гидроаэродинамики (ВГАД) часто используются коммерческие пакеты прикладных программ. К числу таких пакетов относятся ANSYS CFX, ANSYS FLUENT (оба пакета с некоторого времени поставляются вместе — в составе ANSYS CFD), STAR-CD, FlowVision и др. Эти программные средства позволяют решать весьма разнообразные и сложные задачи, которые не ограничиваются лишь моделированием течений жидкости или газа, а зачастую требуют междисциплинарного подхода. Неудивительно, что такое программное обеспечение находит применение в самых разных областях науки и техники и насчитывает огромное количество пользователей. Во многом этому способствует доступный для понимания интерфейс и сравнительная легкость обучения работе с пакетом.

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

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

Указанные причины побуждают искать альтернативные пути решения задач ВГАД. Одним из них является переход к свободно распространяемому программному обеспечению с открытым исходным кодом. Широкие возможности по решению задач ВГАД предоставляют такие свободно распространяемые пакеты, как OpenFOAM (разрабатывается компанией OpenCFD Ltd., Соединенное Королевство), Code_Saturne (компания EDF, Франция) и Elmer (CSC — IT Center for Science, Финляндия). Названные программные пакеты различаются спектром решаемых задач, базовым методом решения дифференциальных уравнений в частных производных (метод контрольных объемов — для OpenFOAM и Code_Saturne, метод конечных элементов — для Elmer), а также языками программирования, на которых написан исходный код (OpenFOAM — C++; Code_Saturne — Fortran77, C99, Python; Elmer — Fortran90). Стоит отметить одну общую черту всех трех пакетов — возможность распараллеливания вычислений на ЭВМ с распределенной памятью (т.е. на кластерах).

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

Далее в работе основное внимание уделено именно пакету OpenFOAM как получившему наиболее широкое распространение из свободно распространяемых пакетов для решения задач ВГАД. На примере использования OpenFOAM рассмотрим методику решения задач ВГАД в прикладных пакетах.

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

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

OpenFOAM по сути представляет собой библиотеку приложений, написанных на языке C++. Все их можно разделить на решатели и утилиты. Последние предназначены для обработки данных и, собственно говоря, могут использоваться в качестве пре- и постпроцессоров. Далее рассмотрены все этапы решения задачи, а также программные средства, которые можно использовать на каждом из этих этапов.

Препроцессор. Основные задачи препроцессора — задание геометрии расчетной области, построение сетки и постановка граничных условий. Существует множество препроцессоров, совместимых с OpenFOAM. К ним относятся препроцессоры ANSYS CFD, STAR-CD, GAMBIT, Gmsh, Engrid, SALOME. Последние три из перечисленных препроцессоров распространяются свободно. Также возможно использование входящих в состав OpenFOAM приложений blockMesh и snappyHexMesh. Первое наиболее подходит для случая простой геометрии области. Утилита blockMesh позволяет строить структурированные сетки, состоящие из гексаэдров. Основной принцип работы blockMesh — деление всей расчетной области (в OpenFOAM все задачи изначально формулируются в трехмерной постановке) на трехмерные гексаэдральные блоки. Ребрами этих блоков могут быть отрезки прямых либо дуги. Сетка получается разбиением каждого блока на определенное число ячеек в каждом направлении. Вся необходимая для этого информация указывается в одном текстовом файле.

Утилита snappyHexMesh предоставляет возможности для построения сеток в случае более сложной геометрии расчетной области. Если геометрия допускает простое описание, то, как и для blockMesh, можно задать ее в одном текстовом файле. При решении реальных задач ВГАД геометрия области, как правило, очень

сложная. В таких случаях можно построить модель в CAD-системах (например, AutoCAD, SolidWorks, Unigraphics) и экспортировать ее в формате STL (Stereolithography), который поддерживается утилитой snappyHexMesh. Основной принцип ее работы — построение грубой сетки во всей области и последующее итерационное ее уточнение с помощью разбиения ячеек, пересекающихся с границами расположенных в ней областей. Процесс продолжается до тех пор, пока не будет достигнут нужный размер сетки. После этого вершины ячеек сетки, пересекающих границы областей, сносятся на эти границы. Для повышения разрешающей способности snappyHexMesh может добавить несколько слоев структурированной сетки вблизи границы.

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

Часто внешние препроцессоры, не входящие в состав OpenFOAM, имеют значительно более удобный пользовательский интерфейс (по сравнению с blockMesh и snappyHexMesh, которые его, по сути, лишены, поскольку все возможности пользователя повлиять на процесс генерации сетки ограничены редактированием одного текстового файла, содержащего все параметры) и делают процесс построения сетки более продуктивным. Среди тех из них, которые распространяются свободно, в нашей стране наибольшую известность имеет SALOME. В качестве препроцессора SALOME позволяет строить очень подробные структурированные и неструктурированные сетки для областей с весьма сложной геометрией. На первом этапе задается (либо импортируется) геометрия области, причем это делается объектами различной размерности: нульмерными (точки), одномерными (отрезки либо дуги), двумерными (поверхности) и трехмерными (твердые тела). Затем для каждого объекта задаются свои алгоритмы построения сетки на нем с указанием их параметров. На самом верхнем уровне — при построении трехмерных сеток — в SALOME используются в том числе и широко известные алгоритмы NETGEN и Mefisto. Имеется два режима работы в SALOME: графический интерфейс и консольный режим. Во втором случае широко используются скрипты, написанные на языке программирования Python. Для использования в OpenFOAM построенной средствами SALOME сетки необходим ее экспорт в формате

I-DEAS UNV. Конвертацию обеспечивает утилита ideasUnvToFoam, входящая в состав пакета OpenFOAM.

Вне зависимости от использованных средств для построения сетки, по завершении ее генерации требуется задать условия на границе расчетной области. Задание граничных условий выполняется в два этапа. Сначала для каждого отдельного участка границы указывается базовый тип граничного условия. Этот тип определяется исключительно геометрией участка или обменом данными между процессорами (при декомпозиции области для проведения параллельных расчетов). К базовым типам относятся, в частности, patch (участок общего вида), symmetryPlane (плоскость симметрии), wedge (треугольная призма — элемент геометрии осесимметричной задачи), empty (передняя и задняя границы области, перпендикулярно которым решение не меняется — при переходе к решению двумерных или одномерных задач), processor (участок границы между областями, отнесенными к двум разным процессорам).

После указания базового типа участка границы задается конкретный вид граничного условия. Он определятся используемой математической моделью. Вид граничного условия может быть простым или производным. Простых типов достаточно мало. Среди них, в частности, — реализующие граничные условия I или II рода. Производных типов в OpenFOAM значительно больше. К ним относится, например, slip (протекание) — граничное условие, обеспечивающее нулевую нормальную производную для скалярных величин и касательных компонент векторных величин и равенство нулю их нормальных компонент.

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

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

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

Пользователь имеет два пути влияния на способ решения задачи. Первый — более сложный — возможность редактирования исходного кода. Исходный код всех решателей полностью открыт, поэтому можно очень гибко настроить решатель под свою задачу, а также создать новый, обладающий возможностями, еще не реализованными в пакете. Для этого наиболее важно глубокое знание математических моделей, методов и алгоритмов решения задач, но также необходимо иметь и базовые знания синтаксиса языка Си и объектно-ориентированного программирования. Другой путь — настройка параметров решателя. К ней относится задание различных схем аппроксимации операторов дифференциальной задачи (оператора градиента, дивергенции, оператора Лапласа, первых и вторых производных по времени) и схем интерполяции. Среди реализованных в OpenFOAM вариантов — схемы различного порядка точности, схемы с наличием или отсутствием коррекции неортогональности сетки (когда вектор, соединяющий центры двух соседних ячеек, и нормаль к их общей грани не параллельны), наличие или отсутствие ограничителей при вычислении разностных производных и т. п. Помимо схем аппроксимации, пользователь имеет возможность выбора метода решения системы линейных алгебраических уравнений, а также необходимой точности. Наиболее часто используются метод сопряженных градиентов (для симметричных матриц) и метод бисопряженных градиентов (для несимметричных матриц). При этом обычно целесообразно использовать тот или иной предобусловливатель. Наконец, OpenFOAM позволяет настраивать сам алгоритм решения (PISO или SIMPLE), выбирая число шагов коррекции и т. д.

Постпроцессор. Результатом работы решателя является набор файлов, каждый из которых содержит данные о поле исследуемой величины в конкретный момент времени. Задача постпроцессора состоит в обработке, анализе и визуализации этих данных. Как и препроцессоры, постпроцессоры могут быть как свободно распространяемыми, так и коммерческими. К коммерческим относятся Tecplot, постпроцессор Fluent, Ensight и FieldView. Совместимость OpenFOAM с ними обеспечивается соответствующими утилитами конвертации (textttfoamDataToFluent, textttfoamToTecplot360 и др.).

К свободно распространяемым постпроцессорам относится, в частности, постпроцессор ParaView, который поставляется в одном комплекте с OpenFOAM, причем вместе со встроенным модулем чтения

данных из OpenFOAM. Также ParaView можно запускать отдельно, поскольку он использует стандартный формат данных VTK (Visualization Toolkit), а преобразование результатов работы решателей OpenFOAM в этот формат выполняется утилитой textttfoamToVTK. Помимо VTK, ParaView поддерживает чтение файлов других форматов. Среди них файлы других прикладных пакетов (Fluent, LSDyna), постпроцессоров (EnSight, PLOT3D, Tecplot), изображения, а также модели в формате STL. ParaView обладает широкими возможностями: позволяет визули-зировать скалярные и векторные поля, линии тока, изоповерхности, получать информацию о нужном поле в точке или вдоль некоторой линии и т.д. Важной особенностью ParaView является поддержка параллельной обработки данных на высокопроизводительных вычислительных системах как с общей, так и распределенной памятью. При этом используется интерфейс MPI.

Свободно распространяемым постпроцессором является также вышеупомянутое приложение SALOME. Его работа основывается на обработке MED-файлов, которые содержат информацию о сетке и значениях величин, рассматриваемых в задаче, в узлах сетки. Как и ParaView, SALOME позволяет строить изоповерхности, линии тока, выполнять разрезы, создавать анимацию и т. п. При этом также могут применяются параллельные вычислительные алгоритмы.

Помимо постпроцессоров, обрабатывающих результаты работы OpenFOAM уже после завершения его работы, вместе с пакетом поставляется набор средств, выполняющих функции постпроцессоров непосредственно во время счета. Работа таких программных средств ускоряется за счет более эффективного обращения к файлам данных, создаваемых решателями. Более того, эти приложения могут выполняться на многопроцессорной системе в параллельном режиме, как и решатель. Поскольку основная вычислительная сложность обработки данных приходится на выполнение этих постпроцессинговых утилит, последующая визуализация полученных результатов, сравнительно компактных, уже возможна в последовательном режиме на одном компьютере. Постпроцессоры одновременно с процессом счета выдают на выходе как числовые данные (минимальные/максимальные значения величин, средние и суммарные значения для некоторой поверхности; вычисление силы давления, подъемной силы, коэффициентов трения, сопротивления и т.д.), так и графические в стандартных форматах типа VTK (построение изоповерхностей, линий тока, разрезов).

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

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

Основная вычислительная нагрузка приходится на решатель, поэтому качество его распараллеливания наиболее существенно. В OpenFOAM распараллеливание осуществляется за счет декомпозиции расчетной области [1]. Этот алгоритм уже реализован в пакете и не требует от пользователя написания дополнительного кода. Более того, параллельное выполнение обеспечивается специальными библиотеками, поэтому имеется лишь одна универсальная версия каждого решателя.

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

Распараллеливание вычислений, выполняемых решателем, позволяет существенно сократить затрачиваемое время. Однако в некоторых работах [2] предлагаются методы дальнейшего увеличения ускорения. Один из таких методов — добавление еще одного уровня параллелизма с использованием библиотек потокового программирования OpenMP. Получается так называемая гибридная модель, в которой взаимодействие крупных многоядерных вычислительных узлов обеспечивается библиотекой MPI, а внутри каждого узла для наиболее трудоемких операций (в частности, при наличии циклов с большим числом итераций) применяется OpenMP. Как результат, полученная модель параллелизма работает быстрее, чем лишь с применением MPI.

Примеры решения задач в OpenFOAM. Проиллюстрируем возможности пакета OpenFOAM и препроцессора SALOME, а также подходы к модификации некоторых средств OpenFOAM на примере решения двух модельных задач.

Обтекание сечения провода ЛЭП. Рассмотрим плоскую задачу обтекания круглого сечения провода ЛЭП, находящегося в воздухе при отсутствии ветра. Провод находится в поле тяготения, по нему течет

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

Математическая модель включает в себя уравнение неразрывности (сжимаемостью воздуха в силу малых скоростей течения пренебрегаем), уравнение Навье-Стокса и уравнение теплопереноса [3]:

V- V = 0,

^ + V ■ (V ® V) = VД V - — Vp + ^д, (1)

дЬ ро ро

дТ

— + (V -V) Т = а2ДТ,

где V — поле скоростей воздуха, р — поле давления, р(Т) — плотность воздуха при температуре Т, р0 = р(Т0), V — коэффициент кинематической вязкости, д — вектор ускорения свободного падения, а2 = Л/(р0ср) — коэффициент температуропроводности, Л — коэффициент теплопроводности, ср — теплоемкость воздуха, V — оператор Гамильтона, Д — оператор Лапласа.

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

(гр\

Буссинеска слагаемым -д в уравнении (1). При этом плотность

р0

полагается зависящей от температуры линейно:

р(Т)= ро(1 - в(Т - То)).

Здесь в — коэффициент объемного расширения.

Уравнения дополняются следующими граничными условиями. На поверхности провода 7 задается условие прилипания V = 0 и граничное условие конвективного теплообмена

хдт

дп

= (Т - Тг)|7 , (2)

7

где а^ — коэффициент конвективного теплообмена между воздухом и материалом провода, Tf — температура поверхности провода. На бесконечности задается условие затухания возмущений. Требуется найти установившееся поле скоростей воздуха.

Условие конвективного теплообмена отсутствует в библиотеке стандартных типов граничных условий пакета ОрепБОАМ, поэтому для решения задачи потребовалось создание дополнительной библиотеки, отвечающей за его реализацию. Ее работоспособность была проверена на тестовом примере с известным аналитическим решением.

Рассмотрим решение задачи в указанной постановке в пакете OpenFOAM поэтапно. В качестве расчетной области было выбрано кольцо, внутренний радиус которого равен радиусу провода, а внешний радиус в 10 раз больше внутреннего. На внутренней границе кольца задаются указанные выше условия на поверхности провода. Для моделирования условия затухания возмущений на внешней границе кольца температура полагается постоянной и равной температуре среды; для поля скоростей задается граничное условие специального типа inletOutlet, позволяющее возмущениям поля скоростей выходить из расчетной области. Для давления используется сложное (в смысле OpenFOAM) граничное условие типа buoyantPressure, которое автоматически учитывает гидростатическую составляющую давления. В начальный момент времени воздух считается покоящимся, его температура — постоянной.

Задание геометрии и построение сетки выполнялось в препроцессоре SALOME. Сравнительно простая геометрия позволяет построить структурированную сетку из призм. Размер сетки — около 30 тысяч ячеек. Фрагмент расчетной сетки вблизи провода представлен на рис. 1.

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

При решении задачи использовались следующие значения параме-Вт Вт

тров: aW = 10 -, Tf = 250,5 K, T0 = 250 K, Л = 0,0223 -,

м2 ■ K м ■ K

ß = 3,67 ■ 10-3 1/K, v = 1,15 ■ 10-5 м2/с, а2 = 1,6 ■ 10-5 м2/с. Результат

решения задачи в виде линий тока в окрестности провода представлен на рис. 2.

Рис. 1. Фрагмент расчетной сетки для решения задачи обтекания провода ЛЭП (показана 1/4 часть)

Рис. 2. Линии тока в задаче обтекания провода ЛЭП

Рис. 3. Линии тока в задаче обтекания провода ЛЭП при наличии ветра

Результат решения той же задачи при наличии малой горизонтальной скорости набегающего потока V = 1 м/с представлен на рис. 3.

Время решения данной задачи на одном вычислительном ядре учебно-экспериментального кластера кафедры "Прикладная математика" МГТУ им. Н.Э. Баумана [4] составляет 606 с. (Задача является модельной, поэтому никаких специальных мер по подбору оптимальных параметров расчетной схемы с целью ускорить расчет не предпринималось.) Время решения задачи можно уменьшить за счет использования реализованных в ОрепБОАМ параллельных вычислительных алгоритмов. Время решения задачи на нескольких вычислительных ядрах и получаемые значения ускорения приведены в таблице.

Время решения задачи обтекания провода ЛЭП и получаемые при различном числе процессоров значения ускорения

Число ядер 1 2 4

Время счета, с 606 238 140

Ускорение, раз — 2.55 4.33

Полученный результат убедительно показывает целесообразность использования параллельных алгоритмов, поскольку при правильной конфигурации пакета ОрепБОАМ и соответствующей настройке кластерной системы их использование не требует никаких дополнительных операций. Требуется лишь запуск утилиты декомпозиции расчетной области decomposePar, работа которой занимает несколько секунд. В рассмотренном примере наблюдается даже сверхлинейное ускорение расчета в параллельном режиме.

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

Рис. 4. Расчетная сетка для задачи о нахождении температурного поля в сечении провода ЛЭП

Распределение температуры описывается уравнением теплопроводности с источником:

Ж = а2ДТ + Q,

где Q = Q0/(pc), Q0 = 12R — вычисляемая по закону Джоуля-Ленца объемная плотность источников тепловыделения, I — сила тока, R — сопротивление провода в расчете на единицу длины.

На поверхности провода задается граничное условие конвективного теплообмена (2), в котором теперь Tf — температура воздуха.

Расчетная сетка так же, как и для предыдущей задачи, строилась с помощью SALOME. В сечении провода с помощью алгоритма Mefisto была построена неструктурированная сетка из треугольников (рис. 4). В случае равенства Q нулю можно было бы воспользоваться решателем laplacianFoam, однако наличие ненулевого источникового члена потребовало несложной доработки этого стандартного решателя. При решении задачи использовались следующие значения параме-

Вт Вт

тров: aW = 10 —-, Tf = 250 K, Л = 240 -, а2 = 10-4 м2/с,

м2 ■ K м ■ K

Q = 3,46 ■ 10-7 K/с, что соответствует алюминиевому проводу диаметром 25,2 мм, по которому протекает ток силой I = 100 А. Стационарное распределение температуры определялось как результат решения нестационарной задачи методом счета на установление. Начальное распределение температуры в сечении провода принималось равномерным, T0 = Tf = 250 K.

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

Результаты расчетов показывают, что зависимость температуры провода от силы тока имеет вид T = Tf + kl2, что согласуется с законом Джоуля-Ленца.

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

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

СПИСОК ЛИТЕРАТУРЫ

1. T o s e 11 i A., W i d l u n d O. Domain Decomposition Methods - Algorithms and Theory // Springer Series in Computational Mathematics. - 2004. - Vol. 34. - 350 p.

2. Liu Y. Hybrid Parallel Computation of OpenFOAM solver on Multi-Core C luster Systems // Master of Science Thesis. - Stockholm, 2011. - 90 p.

3.КочинН. Е., К и б е л ь И. А., Р о з е Н. В. Теоретическая гидромеханика. - М.: Физматгиз, 1963. - Ч. 2. - 728 с.

4. Лукин В. В., М а р ч е в с к и й И. К. Учебно-экспериментальный вычислительный кластер. Ч. 1. Инструментарий и возможности // Вестник МГТУ им. Н.Э. Баумана. Сер. Естественные науки. - 2011. - № 4. - С. 28-43.

Статья поступила в редакцию 25.10.2011

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