203 71 6MB
Russian Pages 93
Учебно-методическое пособие Численное моделирование процессов магнитной гидродинамики на базе открытого программного обеспечения (OpenFOAM/EOF/Elmer)
Министерство науки и высшего образования Российской Федерации Сибирский федеральный университет
ЧИСЛЕННОЕ МОДЕЛИРОВАНИЕ ПРОЦЕССОВ МАГНИТНОЙ ГИДРОДИНАМИКИ НА БАЗЕ ОТКРЫТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ (OPENFOAM/EOF/ELMER) Учебно-методическое пособие
Красноярск СФУ 2021
УДК 004.4:537.84(07) ББК 24.4я73 Ч671 Р е ц е н з е н т ы: А. Якович, доктор физики, ведущий научный сотрудник, заведующий лабораторией мультифизичного моделирования института численного моделирования Латвийского университета; Ф. В. Чмиленко, доктор технических наук, профессор кафедры электротехнологической и преобразовательной техники Санкт-Петербургского электротехнического университета (ЛЭТИ)
Ч671 Численное моделирование процессов магнитной гидродинамики на базе открытого программного обеспечения (OpenFOAM/EOF/ Elmer) : учеб.-метод. пособие / сост. Н. В. Сизганов, М. Ю. Хацаюк, В. Н. Тимофеев. – Красноярск: Сиб. федер. ун-т, 2021. – 92 с. Рассмотрены основы и подходы моделирования процессов магнитной гидродинамики в электротехнологическом оборудовании.Содержат подробное описание принципа работы с МГД-задачами численного моделирования в электротехнологическом оборудовании с помощью программного обеспечения с открытым исходным кодом. Предназначено для студентов бакалавриата и магистратуры. Может быть полезно для аспирантов и преподавателей вузов. УДК 004.4:537.84(07) ББК 24.4я73
Электронный вариант издания см.: http://catalog.sfu-kras.ru © Сибирский федеральный университет, 2021
ОГЛАВЛЕНИЕ Введение ............................................................................................................... 4 1. Теоретические основы и подходы к моделированию МГД-процессов в электротехнологическом оборудовании ........................................................ 5 1.1 МГД-процессы в электротехнологическом оборудовании ....................... 5 1.2 Математическое моделирование МГД-процессов..................................... 7 1.2.1 Методы моделирования МГД-процессов .............................................. 13 1.2.2 Программные комплексы численного моделирования физических процессов в электротехнологическом оборудовании ................................... 15 1.2.3 Подходы к сопряжению электромагнитной и гидродинамической задач для моделирования МГД-процессов ..................................................... 15 2. Математеческое моделирование МГД-процессов в электротехнологическом оборудовании с помощью EOF-Libraray .......... 20 2.1 Пошаговая установка некоммерческого ПО на Windows 10 .................. 21 2.1 Знакомство с OpenFOAM ........................................................................... 24 2.2 Построение геометрии и создание сетки .................................................. 30 2.3 Настройка решателей .................................................................................. 48 2.4 Просмотр результатов................................................................................. 60 2.5 Расчет электромагнитной задачи ............................................................... 67 2.6 Подключение электромагнитной задачи к расчету гидродинамики. .... 76 Библиографический список.............................................................................. 86 Приложение А ................................................................................................... 89
3
ВВЕДЕНИЕ Проектирование электротехнологического оборудования в основном связанно с решением задач теплотехники. Однако, часть этого оборудования, ориентированного на плавильно-литейное производство в металлургии, основано на прямом электромагнитном воздействии на жидкий металл. В этом случае, задача выбора параметров оборудования становится также сопряжена с решением задач массопереноса, которые не всегда возможно решить аналитическими методами. Задача принимает многодисциплинарный вид и направлена на изучение магнитогидродинамических явлений. В настоящее время, моделирование данных явлений, для решения инженерных задач, сопряжено со значительными трудностями и требует совместного применения различных программных средств, ориентированных на численное решение электромагнитных и термогидродинамических задач. В общем случае основной задачей становится их корректное сопряжение. В данном учебно-методическом пособии представлены физико-математические основы явлений магнитной гидродинамики, для случая их протекания в электротехнологическом оборудовании, показаны подходы к их сопряжению и разобрана последовательность построения упрощенной численной модели магнитогидродинамических процессов в индукционной тигельной печи. В качестве основных выбраны некоммерческие решатели с открытым исходным кодом OpenFOAM и Elmer, при этом их программное сопряжение осуществляется библиотекой EOF, разработанной учеными университета Латвии. Для построения модели применяется приложение Salome, для обработки результатов – приложение ParaView. Все программное обеспечение (ПО) относится к классу OpenSource, что делает его незаменимым для проведения исследований в ВУЗах и небольших инжиниринговых компаниях.
4
1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ И ПОДХОДЫ К МОДЕЛИРОВАНИЮ МГД-ПРОЦЕССОВ В ЭЛЕКТРОТЕХНОЛОГИЧЕСКОМ ОБОРУДОВАНИИ В наиболее общем виде явления магнитной гидродинамики (распространённое сокращение МГД) основаны на взаимодействии электропроводящих жидкостей, газов или плазмы с магнитным полем. В отличие от фундаментальной магнитной гидродинамики, изучающей данное явление при его естественном проявлении в природе и характерном для объектов космических масштабов (жидкие ядра планет, солнечные вспышки и пятна, влияние галактического магнитного поля на образование звезд и т. д.), прикладная магнитная гидродинамика основана на особенностях и допущениях при искусственном происхождении явления, характерном техническим объектам [1]. Как правило, такими техническими объектами являются металлургическое электротехнологическое оборудование [2], индукционные устройства и специальные электрические машины [3–5]. При этом рабочим телом или ротором является жидкий металл в переменном электромагнитном поле, и процессы рассматриваются с точки зрения действия на него электродинамических усилий. С точки зрения возникновения явлений МГД в электротехнологическом оборудовании, можно выделить устройства, где МГД-процессы являются вторичными (различное индукционное плавильно-литейное оборудование) и основными (индукционные машины различной конфигурации, в т. ч. основанные на базе индукционных плавильных установок). 1.1 МГД-процессы в электротехнологическом оборудовании Одним из наиболее распространенных и классических примеров электротехнологического оборудования, в котором происходит выраженное проявление МГД-процессов, являются индукционные тигельные печи (ИТП) прямого или комбинированного нагрева (рис. 1.1–а) [6]. В данных печах тигель 1 выполнен из диэлектрических керамических материалов и с электромагнитным полем взаимодействует непосредственно загрузка – твердая шихта и далее расплав 2. Технологический эффект в таких печах достигается за счет теплового действия вихревых токов δ 2 в загрузке, возникающих, по закону электромагнитной индукции, в переменном магнитном поле B индуктора 3. При образовании расплава, в процессе нагрева, вследствие силового воздействия f em , возникающего при взаимодействии вихревых токов с магнитным полем (рис. 1.1–б), неизбежно начинают проявляться МГД-явления, которое заключается, в первую очередь, в возникновении, так называемой, двухконтурной тороидальной циркуляции расплава со скоростью v. В некоторых случаях, при достаточном электромагнитном давлении, на свободной поверхности расплава в тигле возникает выраженный мениск. 5
б)
2 3
1 а)
в) Рис. 1.1. МГД-процессы в индукционной тигельной печи
Описанный пример является одним из наиболее простых, когда практически отсутствует индуцированная движением составляющая тока в расплаве, т. е. отсутствует обратное влияние поля скоростей, возникающего в расплаве, на результирующее магнитное поле. Это объясняется тем, что в расплаве силовые линии магнитного потока преимущественно параллельны оси и, вместе с тем, в данной зоне оси параллелен и гидродинамический поток расплава. Следовательно, векторное произведение мгновенных значений дифференциальных характеристик данных потоков (коллинеарных векторов магнитной индукции и скорости), которое является слагаемым в результирующем векторе плотности тока, стремится к нулю (рис. 1.1–в). Это условие нарушается только в зоне стыка и разворота гидродинамического потока, где появляется радиальная составляющая скорости и синус угла в плоскости ρ – z между соответствующими векторами возрастает. Следовательно, максимальное взаимное влияние достигается при их перпендикулярности, которая увеличивается при смещении к оси симметрии. Однако, как известно, величина магнитного поля интенсивно затухает по глубине проводящей среды, следовательно, затухает и абсолютная величина индуцированной составляющей. Данный тип МГД-явлений характерен для большинства технических систем и электротехнологических установок, где воздействие на расплав осуществляется пульсирую6
щим магнитным полем. В большинстве случаев, такие задачи достаточно точно решаются в безындукционном приближении, что значительно упрощает алгоритм расчета, объем задачи и анализ процессов. 1.2 Математическое моделирование МГД-процессов Математическое описание магнитогидродинамических процессов основано на применении законов гидромеханики в условиях электромагнитного взаимодействия. Данное взаимодействие принято характеризовать через силовое действие электромагнитного поля на проводящие жидкости и газы с учетом формирующегося массопереноса. С учетом такого взаимодействия система уравнений Максвелла, описывающих электромагнитное поле в медленно движущихся изотропных средах и, пренебрегая токами смещения из-за относительно высокой проводимости, в дифференциальной форме имеет вид [7, 8]: rotH δ , rotE
B , t
(1.1) (1.2)
δ γ E v B ,
(1.3)
B μH ,
(1.4)
divB 0 ,
(1.5)
где H, δ , E, B – соответственно векторы напряженности магнитного поля, плотности тока, напряженности электрического поля и магнитной индукции; t – время; v – вектор скорости. Особенностью такой записи уравнений Максвелла является то, что плотность тока представлена двумя составляющими результирующей напряженности электрического поля: ЭДС трансформации и ЭДС движения. Силовое воздействие электромагнитного поля называется силой Лоренца и в объеме жидкости возникает при взаимодействии векторов плотности тока и магнитной индукции следующим образом (объемная электромагнитная сила): fem δ B
(1.6)
Наличие данной объемной силы в жидкости, помимо остальных, является главным фактором, который отличает магнитную гидродинамику от классической [9].
7
С учетом этого система уравнений, описывающих гидродинамические процессы в несжимаемой жидкости, записывается следующим образом [10, 1]: divv 0 , v v grad v gradp 2 v fem , t
(1.7) (1.8)
где p – давление в среде. Уравнение 1.8 является дифференциальной формой записи основного закона динамики, устанавливающего, что изменение количества движения некоторого объема происходит за счет сил, приложенных к этому объему. В данном случае объемной плотности этих сил. Левая часть уравнения представляет собой силу инерции, правая часть – сумму сил давления, вязкого трения и электромагнитной силы. Таким образом образуется уравнение Навье-Стокса применительно к магнитной гидродинамике. Система уравнений 1.1–1.8 в наиболее общем виде дает представление о процессах и взаимосвязях основных физических величин в магнитной гидродинамике. Найти решение удобнее, если систему электромагнитного поля (1.3–1.7) привести к одному из векторов поля путем исключения какихлибо трех неизвестных, в зависимости от того, какая из этих величин представляет наибольший интерес. Остальные неизвестные, после нахождения решения для выбранного вектора, могут быть обратно определены из соответствующих уравнений как аналитически, так и численно. В некоторых случаях, для последующего анализа, вводят в рассмотрение векторный потенциал магнитного поля А [11]: B rotA,
E
A , t
divA 0.
(1.9) (1.10) (1.11)
Величина А является более универсальной. При ее известном решении, посредством достаточно простых математических операций с помощью представленных выше выражений, могут быть найдены основные характеристики электромагнитного поля. В настоящее время, большинство известных численных решателей, в качестве искомой принимают данную величину. Для краткости записи, вместо векторных операторов воспользуемся дифференциальными операторами Гамильтона и Лапласа [12]. 8
Подставив в (1.1) выражения (1.3), (1.4), (1.9) и (1.10) получим выражение с одной неизвестной. После преобразований и с учетном (1.11) получим следующее выражение: A A μγ v A . t
(1.14)
Поскольку в МГД-устройствах металлургического назначения, являющихся разновидностью электрических машин, в основном применяется синусоидальный ток, все основные характеристики электромагнитного поля в каждой точке пространства изменяются во времени так же синусоидально. В этом случае для упрощения, вместо нахождения мгновенных значений, вводятся комплексные амплитуды векторов поля:
A t Am cos ωt ψ Am Re ei ωt ψ Re Aeiωt ,
(1.15)
где A m и ψ – амплитуда и начальная фаза соответствующего вектора поля в некоторой точке пространства; ω – циклическая частота; i – мнимая единица. Подставив (1.15) в (1.14), выполнив дифференцирование по t и соответствующие упрощения, получим:
A μγ iωA v A .
(1.16)
Данное выражение зачастую является основным для применения к нему методов численного моделирования для расчета электромагнитного поля. Для последующего нахождения аналитического решения, из данного уравнения может быть легко получено уравнение на напряженность электрического поля путем подстановки подставив (1.15) в (1.10) при известном комплексом векторном потенциале магнитного поля: E iωA.
(1.17)
По результатам решения в комплексной форме через выражение (1.15), путем подстановки вместо A любой величины, характеризующей поле, могут быть обратно найдены мгновенные значения соответствующих векторов поля. В случае решения электромагнитной (ЭМ) задачи в комплексной форме принято рассчитывать среднее значение объемной электромагнитной силы: fem
1 Re δ B* , 2 9
(1.20)
где δ – комплексный вектор плотности тока; B* – комплексно сопряженный вектор магнитной индукции. Систему уравнений магнитной гидродинамики можно представить в нестационарной и комбинированной форме. Для получения системы в нестационарной форме в уравнение (1.8) подставляется (1.6) с учетом (1.1) и (1.4) и условий неразрывности (1.5) и (1.7) [1, 2]: B μγ v B B μγ B v, t
B2 v v v p v B B. 2 t
(1.21)
(1.22)
В такой форме записи, первое слагаемое в правой части уравнения (1.22) представляет собой полное давление, состоящее из суммы гидродинамического и электромагнитного давлений. Именно эта сумма определяет характер транзитного массопереноса в жидком металле. Градиент электромагнитного давления называют потенциальной составляющей электромагнитных сил. Второе и третье слагаемые участвуют в вихреобразовании в формирующемся потоке жидкости. Соответственно, третье слагаемое характеризует вихревую (нестационарную) составляющую электромагнитных сил. Обычно на практике, применительно к техническим задачам, пользуются решением на основе комбинированной системы уравнений, принимая в качестве источника возмущений потока жидкости (источника движения) осредненное значение электромагнитных сил (1.20), определяемое из уравнений электромагнитного поля в комплексной (квазистационарной) форме (1.16), (1.18) или (1.19). В этом случае рациональным, для нахождения результирующего решения МГД-задачи, является нахождение стационарного поля скоростей. Однако, в большинстве практических задач, режим течений является турбулентным, т. е. какого-либо стационарного решения уравнений не существует [13]. Вместе с тем, данная задача усложняется возможным отсутствием существования и гладкости решения уравнений Навье–Стокса с вытекающими из этого проблемами аналитических подходов [14]. Чтобы несколько упростить решение практических задач гидродинамики был разработан ряд различных подходов и полуэмпирических моделей турбулентности [15]. Применение таких моделей позволяет находить численные решения как нестационарных, так и неких стационарных задач. Например, в так называемый тензор вязких напряжений (второе слагаемое в правой части уравнения (1.08)) вводится дополнительное слагаемое – тензор напряжений Рейнольдса, учитывающий влияние турбулентных пульсаций скорости. При этом непосредственно поле скоростей рассчитывается, как осреднённое или частично осреднённое, в зависимо10
сти от применяемого подхода. Поскольку универсального метода моделирования гидродинамических задач, учитывающих турбулентность, не существует, а количество подходов и методов ее учета достаточно велико и разнообразно применительно к каждой отдельной задаче, то, для сохранения математического описания задачи магнитной гидродинамики, описание моделей турбулентности в данном разделе не рассматривается. С учетом этого, комбинированная форма записи системы уравнений магнитной гидродинамики имеет вид: μγ iωB v B B μγ B v,
(1.23)
1 v ρ v v p τ Re B B* , 2μ t
(1.24)
где τ η v ρ v ' v ' – тензор вязких напряжений; v – осредненный во времени вектор скорости; v ' – пульсационная составляющая вектора скорости; ρ v ' v ' – турбулентные напряжения Рейнольдса. Такая форма описания МГД-процессов позволяет выполнять численное моделирование с достаточной точностью и применяется при проведении исследований и инженерного проектирования большинства технических систем. Применительно к электротехнологическому оборудованию, функционал моделей может быть значительно расширен за счет дополнения системы (1.23–1.24) уравнением переноса тепла. В свою очередь, тепловые процессы в жидком металле в электромагнитном поле связаны как с гидродинамическими процессами, вследствие массопереноса металла, так и с электромагнитными, вследствие теплового действия наводимых вихревых токов. Электромагнитные источники тепла описываются согласно закону Джоуля–Ленца (объемная плотность тепловой мощности): 1 pem δ2 . γ
(1.25)
Соответственно, при синусоидальной форме токов, выражение (1.25) для эквивалентного среднего значения объемной тепловой мощности записывается как: pem
1 2 δ . 2γ
(1.26)
Таким образом, уравнение конвективного теплопереноса с учетом источников тепла электромагнитной природы будет иметь вид:
11
2 1 h , ρ hv eff T B 2γμ 2 t
(1.27)
где h cT – удельное теплосодержание (энтальпия); T – температура; λeff λ λt – эффективная теплопроводность; λ t – турбулентная теплопроводность. Следует отметить, что турбулентная часть эффективной теплопроводности, входящей в уравнение (1.27), зависит от турбулентной вязкости, которая в свою очередь входит в рейнольдсовую часть тензора вязких напряжений уравнения (1.24), и, соответственно, зависит от выбранного метода моделирования турбулентности. Форма записи уравнения теплопереноса (1.27) относительно энтальпии, выбрана не случайно, поскольку охватывает большее число возможных вариантов протекания процессов в металлах и расплавах. Таким образом, полученная система уравнений (1.23), (1.24) и (1.27) в наиболее общем виде описывает МГД-процессы в электротехнологическом оборудовании и может быть использована для анализа большинства реальных технических систем. Система уравнений, в каждом отдельном случае, зависит от видов связанных технологических процессов и может быть дополнена за счет различных методов описания соответствующих отдельных физических процессов и явлений. Так, например, для моделирования процессов кристаллизации и плавления в машине непрерывного литья заготовок (МНЛЗ) с магнитогидродинамический перемешиватель (МГДП) может применяться метод Enthalpy porosity [16–20], в котором в соответствующие части системы уравнений вводятся скрытая теплота плавления и демпфирующие источники движения. Для моделирования многофазных потоков применяются лагранжевы или эйлеровы методы, в которых происходит непосредственно перенос границы раздела (LINC метод [14]) или решение дополнительно уравнения переноса концентрации (VOF метод [21], Level set метод [22]) с учетом локального действия сил поверхностного натяжения, соответственно. Для учета действия гравитационных сил в правой части уравнения (1.24) добавляется дополнительный источник движения – объёмная сила тяжести. В однородной жидкости постоянной температуры данное силовое воздействие скомпенсировано и не вызывает движения. Однако, в неравномерно прогретой жидкости происходит изменение плотности и, соответственно, распределения векторного поля сил тяжести, вследствие чего формируются свободно конвективные течения. Учесть данное явление, с минимальными изменениями в системе уравнений, позволяет приближение Буссинеска–Обербека [23–25], в котором зависимость плотности от температуры линеаризуется и учитывается лишь при массовых силах за счет коэффициента теплового расширения жидкости. В остальных частях уравнений используется опорная плотность. Для учета теплообмена излучением, в качестве наиболее распространённого при проектировании металлургических печей, используется метод Sur12
face to surface (S2S) [26], являющийся разновидностью решения задачи лучистого теплообмена серых тел [6]. В качестве более сложных моделей теплообмена излучением, например, когда необходимо учесть оптическое поглощение части энергии, можно использовать модель Россланда [26] или метод P-1 [27]. Это лишь небольшая часть моделей, наиболее распространённых и применяемых при моделировании процессов в электротехнологическом оборудовании. Вместе с тем, в настоящее время создано огромное количество методов и подходов, описывающих совершенно различные явления, которые используются или могут потребоваться в будущем при изучении тех или иных процессов, связанных с МГД-оборудованием. Однако в рамках данного учебно-методического пособия рассмотреть каждое не представляется возможным. При этом одной из основных задач является формирование взаимосвязи методов, позволяющих моделировать технологические процессы, и моделей МГД-явлений. Данные задачи должны решаться с учетом последних разработок в области математического моделирования и особенностей современных программных платформ и возможностей вычислительной техники. 1.2.1 Методы моделирования МГД-процессов В настоящее время, можно выделить два основных метода: метод конечных элементов (МКЭ / FEM) и метод конечных объемов (МКО / FVM). Проведем сравнительный анализ областей применения данных методов, их достоинств и недостатков. Основная идея МКЭ состоит в том, что любую непрерывную величину можно аппроксимировать дискретной моделью, которая строится на множестве кусочно-непрерывных функций, определенных на конечном числе подобластей (элементов) [28]. Элементы, в свою очередь, образованы узлами расчетной сетки (конечно-элементной сетки). Вне своего элемента аппроксимирующая функция равна 0, а ее коэффициенты ищутся из условия равенства функций соседних элементов в узлах. В простейшем случае, в качестве аппроксимирующей кусочно-непрерывных функции, может быть полином первой степени. Полученная таким образом система линейных алгебраических уравнений (СЛАУ) имеет разряженный вид, что с одной стороны упрощает решение, с другой, для ее рационального хранения и компьютерной обработки, требует специальной структуры данных. Это легко достигается за счет хранения и работы только с ненулевыми элементами полученной матрицы. Полученная, с учетом граничных условий система, решается одним из известных численных методов. Для эффективного использования МКЭ требуется значительно более сложная программная реализация. В основном, с учетом современного уровня систем автоматического проектирования (в отношении CADсистем), это выражено в создании алгоритмов и программ автоматической генерации конечно-элементной сетки в криволинейной геометрии любой 13
сложности. Без существования таких алгоритмов МКЭ не представлял бы большого интереса. В некоторой степени, эта особенность предопределила дальнейшее направление развития метода и средств на его основе. В настоящее время данные алгоритмы получили широкое развитие в рамках крупных коммерческих проектов и применяются инженерами при решении задач теплообмена, механики деформируемого твердого тела, гидродинамики и электродинамики. Достигается это за счет заполнения расчетной геометрии элементами в форме трех- и четырехугольников в 2D и их объемных представлений в 3D постановке. Точность решения при этом определяется их близостью к равносторонней форме. Треугольная форма элементов является более универсальной и рациональной при сложной форме исходной геометрии, однако генерирует несколько большее общее количество элементов и, соответственно, большую итоговую вычислительную нагрузку. Важной особенностью автоматической генерации нерегулярной расчетной сетки является возможность ее адаптивного улучшения в ходе решения по градиентам искомой величины. Таким образом, это определяет универсальность и основное достоинство применения МКЭ для тех задач моделирования, где возможности геометрической идеализации и связанных с этим допущений ограничены. Для решения задач переноса, с точки зрения вычислительных затрат, наиболее рациональным является МКО [15]. Он опирается на вариационную задачу о минимуме ошибки аппроксимации искомого решения базисными функциями, а не непосредственно на исходные уравнения. Именно эта дополнительная математическая нагрузка, делающая МКЭ более сложным для понимания и внесения, порой, требующихся модификаций, наряду с отсутствием явных преимуществ по сравнению с МКО и трудностями обеспечения необходимой точности описания тонких пограничных слоев, является причиной относительно низкой популярности метода конечных элементов в вычислительной гидродинамике. Отправной точкой метода конечных объемов является интегральная формулировка законов сохранения массы, импульса, энергии и др. Балансовые соотношения записываются для небольшого контрольного объема (элемента). Их дискретный аналог получается суммированием по всем граням выделенного объема потоков массы, импульса и т. д. Поскольку интегральная формулировка законов сохранения не накладывает ограничений на форму контрольного объема, МКО пригоден для дискретизации уравнений гидродинамики как на структурированных, так и на неструктурированных сетках с различной формой элементов, что, в принципе, полностью решает проблему сложной геометрии расчетной области и аппроксимации пограничных слоев течения [29]. Описанные универсальные методы, с учетом их особенностей, определили область их применения. МКЭ и МКО не имеют ограничений, связанных со сложностью геометрии исследуемой системы, но сложность программной реализации алгоритмов автоматической и полуавтоматической генерации сетки делает рациональным применение уже разработан14
ного программного обеспечения. В свою очередь МКО, вследствие особенностей формулировки, позволяет обеспечить требуемую точность решения гидродинамических задач с относительно меньшими затратами вычислительных ресурсов, аналогично МКЭ для электромагнитных задач. 1.2.2 Программные комплексы численного моделирования физических процессов в электротехнологическом оборудовании Для численного моделирования задач механики сплошных сред рассмотрим применение платформы OpenFOAM. Основное преимущество платформы – использование ею универсальной общедоступной лицензии «GNU GPL», которая предоставляет пользователю права копировать, модифицировать и распространять программу, а также гарантирует, что и пользователи всех производных программ получат вышеперечисленные права [30]. Таким образом, OpenFOAM является активно распространяющейся, некоммерческой (свободной), непрерывно совершенствующейся самими пользователями, за счет доступа к исходным кодам, программной платформой. В результате многолетнего непрерывного развития, на сегодняшний день, программа позволяет на базе МКО выполнять гидродинамические расчеты, в том числе сжимаемых и неньютоновских жидкостей, расчеты турбулентных течений с использованием передовых моделей турбулентности, решать сверхзвуковые задачи, задачи теплопроводности, многофазные задачи, задачи, связанные с деформацией расчетной сетки. Рабочим языком кода программы является объектно-ориентированный C++ (CPP). Вместе с кодом поставляется набор «решателей», в которых реализованы различные математические модели механики сплошных сред и программа обработки результатов [31]. В отношении свободного ПО на базе МКЭ с открытым исходным кодом, позволяющего выполнять электромагнитные расчеты, рассматривается решатель Elmer [32]. Для его сопряжения с OpenFOAM используется библиотека EOF-library (Elmer FEM & OpenFOAM coupler) [33]. 1.2.3 Подходы к сопряжению электромагнитной и гидродинамической задач для моделирования МГД-процессов Математическое моделирование магнитогидродинамических процессов является разновидностью задач так называемого класса Coupled Problems [34, 35] (или в разной литературе – кроссдисциплинарной, многодисциплинарной, мультифизичной задачей). Особенностью этого класса задач является то, что они находятся на стыке различных областей науки, а именно методов и средств математической физики описания соответствующих процессов. Из-за узкой научно-технической направленности, данные задачи, в большинстве случаев, не имеют развитых программных средств моделирования и поддерживаются ограниченным кругом специалистов. Так, область магнитной гидродинамики, занимающаяся изучением 15
поведения проводящей жидкости или газа в магнитном поле, находясь на стыке задач электромагнетизма и гидродинамики, требует соответствующего синтеза или сопряжения (рис. 1.2). Наиболее общими признаками сопряжения, в этом случае, являются силовое и тепловое действие электромагнитного поля на проводящую среду и обратное влияние движения среды через индуцирование собственного магнитного поля. Применительно к процессам, протекающим в электротехнологическом оборудовании, задача взаимодействия расширяется, в некоторых случаях, сильно нелинейным или дискретным распределением электрофизических свойств в зоне электромагнитного поля, возникающего при осуществлении соответствующего технологического процесса, связанного, как правило, с термодинамикой.
Рис. 1.2. Схема данных МГД-задачи
Можно выделить несколько основных подходов к решению задач магнитной гидродинамики при анализе режимов работы индукционных устройств и технологических процессов. Численное решение электромагнитной и гидродинамической задач без обратной связи является наиболее простым и широко применяется при решении большинства прикладных МГД-задач [36, 37–40], где процессы тепломассопереноса не оказывают влияния на электромагнитное поле. Таким образом, задачу можно разбить на два этапа. На первом этапе выполняется численный электромагнитный расчет системы, анализ энергетических характеристик и режимов работы устройства. В большинстве случаев достаточно решения квазистационарной задачи, что позволяет значительно уменьшить вычислительную нагрузку 16
и итоговый объем данных и упростить передачу и анализ результатов. Вместе с тем, электромагнитный расчет позволяет получить распределения в рабочем теле таких источниковых членов, необходимых для решения задач тепломассопереноса, как объемные электромагнитные силы (силы Лоренца) и мощность (Джоулево тепло). Происходит передача матрицы распределения источниковых членов и переход ко второму этапу решения задачи (рис. 1.3). На втором этапе выполняется гидродинамический расчет (включая решение задачи теплопереноса и других связанных задач вычислительной гидродинамики) с целью анализа технологических режимов работы устройства. Решение таких задач может выполняться как в стационарной, так и нестационарной постановках, с учетом корректности в условиях отсутствия обратной связи. Помимо основных настроек таких задач (начальные и граничные условия, физические характеристики исследуемых областей и т. д.), выполняется загрузка внешних данных из первого этапа и их использование в качестве источниковых членов.
Рис. 1.3 Численный подход без обратной связи
Очевидно, что из-за отсутствия единой программной платформы решения МГД-задач, требуется дополнительная реализация сопряжения электромагнитной и гидродинамической задач. Исключение обратной связи, при использовании данного подхода, значительно упрощает процедуру такого сопряжения и, как правило, реализуется через внешний файл, содержащий в каком-либо виде распределение источниковых членов. Объем разработки дополнительных программных средств (плагины, апплеты и т. п.) определяется возможностями вычислительных комплексов, на стороне обеих задач, по обработке результатов решения и взаимодействию с внешними (пользовательскими) данными. Поскольку, при решении большинства прикладных МГД-задач, характеры распределения градиентов основных дифференциальных характеристик на стороне электромагнитной и гидродинамической задач различны, требуются и различные расчетные сетки. В свою очередь, это требует применения процедуры интерполяции источниковых членов при загрузке данных и соответственно усложняет процедуру сопряжения. Один из примеров такого алгоритма сопряжения, его реализация и примеры использования, при решении МГД-задач для анализа процессов в электротехнологическом оборудовании, представлены в работе [41]. 17
Применение численного решения электромагнитной и гидродинамической задач с обратной связью значительно увеличивает возможности и точность математического моделирования МГД-процессов и расширяет спектр решаемых прикладных задач в электротехнологическом оборудовании. Среди таких задач можно отметить моделирование процессов при высоком значении магнитного числа Рейнольдса, задачи при значительной величине индуцированного электрического тока [42], задачи с изменением электрофизических характеристик в условиях тепломассопереноса в области концентрации электромагнитного поля (процессы кристаллизации и плавления, задачи со свободной поверхностью, расчеты многокомпонентных систем и т. д.). Самостоятельное численное моделирование таких процессов основано на решении уравнений переноса и реализовано в рамках методов вычислительной гидродинамики (CFD). Однако собственных возможностей CFD становится недостаточно при взаимном влиянии данных процессов на электромагнитное поле. На сегодняшний день наиболее востребованной задачей является обеспечение полного сопряжения электромагнитного и гидродинамического решателей. В данном случае сохраняются преимущества методов в скорости и точности вычислений для каждой задачи в соответствующем решателе. Особенно актуальным решение данной задачи становится вследствие возрастания потребности анализа нестационарных технологических процессов в МГД-оборудовании. Одной из осИСМИМИМИММИновных задач при реализации данного подхода является автоматизация процесса обмена данными между расчетными комплексами (рис. 1.4).
Рис. 1.4. Численный подход с обратной связью
В данном случае электромагнитная и гидродинамическая задачи решаются последовательно и непрерывно в рамках общего итерационного цикла, определяемого, как правило, временной дискретизацией задачи тепломассопереноса. Во-первых, обеспечение такого сопряжения требует развитых средств внутреннего программирования на стороне каждого решателя для автоматизации процесса работы с внешними данными. Во-вторых, требуется создание программы-посредника, обеспечивающей обработку, подготовку и слежение за внешними данными, а также осуществляющую автоматизированное управление обоими решателями. При этом должна минимизироваться нагрузка на вычислительные ресурсы со стороны вспомогательных интерфейсов расчетных комплексов. Как правило, 18
реализуется это за счет их работы в терминальном режиме. В отличие от подхода к моделированию без обратной связи, помимо матрицы источниковых членов, формируемой на стороне электромагнитной задачи, формируется матрица данных обратной связи на основе распределений, полученных в гидродинамической задаче (поля температур, скоростей, концентрации и т. д.). Аналогично, расчетные сетки на стороне каждой задачи различны, но в данном случае требуется интерполяция данных в обе стороны. Поскольку интерполяция так же является ресурсозатратной операцией и выполняется на каждой итерации расчетного цикла, рациональным является оптимизация алгоритма интерполяции. Применение данного подхода позволяет применять постановки задач в различных комбинациях. Наиболее востребованными, при анализе МГД-процессов в электротехнологическом оборудовании, являются сочетания квазистационарной или нестационарной электромагнитной задачи с нестационарной гидродинамической задачей.
19
2. МАТЕМАТЕЧЕСКОЕ МОДЕЛИРОВАНИЕ МГД-ПРОЦЕССОВ В ЭЛЕКТРОТЕХНОЛОГИЧЕСКОМ ОБОРУДОВАНИИ С ПОМОЩЬЮ EOF-LIBRARAY Прежде чем приступить к ознакомлению с практической частью учебно-методического пособия, необходимо понимать, что все некоммерческое ПО имеет большую опциональность в использовании. Например, для расчетов CFD задач можно воспользоваться любым выпуском OpenFOAM (https://openfoam.com / https://openfoam.org) или версиями (от v1 до v8 или от v3.0+ до v2012 и т. д.). Но для использования библиотеки EOF-Library необходимо пользоваться именно версией OpenFOAM v5-7 (выпуск от https://openfoam.org) в зависимости от того какую задачу необходимо решить. Математическое моделирование в решении задачи осуществляется в три этапа: 1. Pre-processing – подготовка численной модели, включает в себя создание геометрии, построение сетки, определение граничных условий, настройку решателей; 2. Solving – вычисление основных результатов с помощью выбранных методов расчета; 3. Post-processing – обработка полученных результатов. Все описанное в главе 1 относиться к этапу Solving, именно это находиться «под капотом» выбранного вами решателя. Выбор инструментов для реализации этапов численного моделирования достаточно широкий: любой построитель геометрии от продвинутых CAD-систем до программ 3D моделирования типа Blender, главное – возможность сохранения геометрии в *.STL формат; любой построитель сетки с сохранением в форматы: - для Elmer – *.grd/mesh/msh/ansys и др. [31]; - для OpenFOAM – *.msh/fluent/cfx/ansys [30]; средство обработки полученных результатов – ParaView, CFX; настройка решателей – текстовый редактор. Из всего вышеперечисленного сложно самостоятельно сделать выбор в пользу чего-то одного. В рамках настоящего учебно-методического пособия будет рассмотрено использование следующего бесплатного ПО: SALOME – для построения геометрии, и создания сетки; Notepad++ – для настройки решателей; ParaView – пост процессор. Корректная работа всех инструментов, описанных в учебно-методическом пособии, гарантируется при использовании операционной системы Windows 10 и Linux с командной строкой (bash) от Ubuntu 18.04.
20
2.1 Пошаговая установка некоммерческого ПО на Windows 10 При установке стоит обратить внимание на то, что необходимо обязательное подключение к интернету на всем протяжении установки, время установки в зависимости от персонального компьютера (ПК) и интернетсоединения может занимать от пары часов до суток. Кроме того, перед установкой Ubuntu настоятельно рекомендуется: 1. Убедиться, что имя пользователя на рабочем компьютере на английском языке; 2. Создать рабочую папку на жестком диске (путь к рабочей папке не должен содержать русских букв, например, C:\MHD); 3. Скачать и установить Notepad++ [43], SALOME [44], ParaView [45] и Microsoft MPI [46]; Установка Ubuntu, OpenFOAM, Elmer, EOF-Library 4. В Панели управления\Программы\Включение и отключение компонентов Windows включить «Подсистема Windows для Linux» (рис. 2.1);
Рис. 2.1. Диалоговое окно «Включение и отключение компонентов Windows»
5. Перезагрузить ПК; 6. Запустить Microsoft Store через пуск или поиск в Windows 10; 7. С помощью поиска в Microsoft Store найти и установить Ubuntu 18.04 (рис. 2.2);
21
Рис. 2.2. Панель поиска в Microsoft Store
8. После установки появится возможность использования командной строки Linux (bash) в Windows 10, для этого необходимо запустить Ubuntu 18.04 через пуск; 9. При первом запуске система попросит создать нового пользователя, введите логин (для примера student) и пароль, система попросит его написать дважды для подтверждения. 10. Перезагрузить ПК; 11. После перезагрузки, для создания пустого файла install_script без расширения в корневом каталоге подсистемы Linux, вновь запустить bash (см. п. 8) и написать следующую строчку: > install_script
и нажать Enter; 12. Для того чтобы найти созданный файл, и весь каталог Linux, необходимо в папке текущего пользователя на Windows 10 (C:\Users\{имя_пользователя}\AppData) запустить поиск с именем созданного файла. В результатах поиска кликнуть правой кнопкой мыши (ПКМ) на файле с размером 0 байт и выбрать «Расположения файла» (рис. 2.3);
Рис. 2.3. Расположение файла install_script
13. Открыть найденный файл с помощью Notepad++. В строке меню выбирать Правка\Формат конца строк\Преобразовать в Unix (рис. 2.4); 22
Рис. 2.4. Интерфейс меню приложения Notepad++
14. Скопировать код установки (см. прил. А) Elmer, OpenFOAM и EOF-library в данный файл и сохранить его; 15. Ввести в bash команду: bash -i install_script
16. После чего ввести пароль (см п. 9) и через некоторое время, во всплывающем окне для подтверждения, выбрать «yes». Далее вся установка продолжится автоматически; 17. Ввести в bash команду (возможно снова потребуется пароль и подтверждение): sudo apt install mc
18. На этом установка всех необходимых компонентов завершена, перезагрузите компьютер; Проверка корректной установки 19. Ввести в bash команду для открытия Midnight Commander (MC): mc
20. В левом окне MC перейти в каталог /EOF-Library; 21. В правом окне MC перейти в каталог с рабочей папкой /../../mnt/{путь к рабочей папке (см. п. 2)}; 22. В левом окне MC с помощью ПКМ выбрать /solvers и /tests (надписи станут желтыми) в строке меню выбрать File/Copy, после чего нажать [OK] (рис. 2.5);
23
Рис. 2.5. Интерфейс копирования приложения Midnight Commander
23. В правом окне MC перейти в каталог interpolationTestFoam и нажать сочетание клавиш Ctrl+O; 24. Ввести в bash команду для компиляции:
/solvers/
wclean && wmake
25. Нажать сочетание клавиш Ctrl+O, и в правом окне MC перейти в каталог /../tests/interpolationTest и запустить файл runTravisTest.sh (двойным нажатием мыши или enter); 26. В правом окне MC выбрать, появившийся файл TEST.PASSED_2 и нажать F3; 27. Если стоит 1, значит установка прошла успешно. Еще раз нажмите F3 и затем F10 что бы закрыть MC и вернуться в bash. 2.1 Знакомство с OpenFOAM В связи с отсутствием у OpenFOAM графического пользовательского интерфейса, создание проекта включает в себя редактирование файлов задачи с информацией/определениями и управление ими через консольный интерфейс Ubuntu. Рассмотрим стандартную файловую структуру кейса: 1. Для одной задачи отводится одна папка, названная произвольно на английском языке. 2. В папке задачи обязательно содержится три подпапки, в которых, в свою очередь, могут содержаться свои подпапки и файлы в зависимости от того, какую задачу вы решаете: 0 – содержит все поля/величины, которые необходимы решателю в 0-ой момент времени; Constant – содержит сетку и индивидуальные свойства необходимые для используемого решателя; 24
System – настройки решателя и дополнительные настройки для стандартных утилит встроенных в OpenFOAM. В начале работы над задачей нужно подобрать подходящий решатель из полного списка [47] решателей, т. к. их существует несколько для одного типа задач. Настроить собственную задачу возможно опытному пользователю, посмотрев исходный код решателя для определения не только величин и полей, используемых в решателе, но и методов численного моделирования. Исключая данный способ, лучше обратиться к примерам используемого решателя (они есть как минимум по одному на решатель) и изменить его под текущую геометрию и постановку задачи. Пример 1. Расчет гидродинамики с учетом тепла Откройте Midnight Commander через командную строку Linux. В левом окне MC прейдите в каталог openfoam/OpenFOAM6/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/hotRoom. В правом окне MC перейти в рабочую папку и нажав на F7 создайте папку для задачи с именем tutorial_case. Перейдите в созданную папку. В левом окне MC выберите все элементы и скопируйте в правое окно.
Рис. 2.6. Копирование задачи из примеров решателя с помощью приложения Midnight Commander
Для ознакомления и редактирования файлов задачи: Откройте Notepad++ в меню Вид выберите Папка как проект, в появившемся окне слева через контекстное меню ПКМ добавьте папку tutorial_case из рабочей папки (C:\MHD). Теперь имеем 2 открытых окна – Notepad++ и командная строка Ubuntu с запущенным MC. В таком режиме происходит настройка и отладка файлов задачи и решателей. Развернув проект задачи и его подпапки 25
в окне Папка как проект Notepad++, ознакомьтесь с базовыми файлами необходимыми для расчета. Обратите внимание, что в данной задаче сетка пока отсутствует (в папке constant нет папки polyMesh). Все указания для стандартной утилиты построения сетки прописаны в файле system\blockMeshDict (здесь можно посмотреть, как строить геометрию по точкам). Нестандартные конфигурации полей для начального времени указаны в system\setFieldsDict. Для запуска на расчет указанного примера можно воспользоваться файлом Allrun. Откройте его (рис. 2.7). В последних строчках указаны стандартные утилиты (1), используемые перед запуском решателя (2). #!/bin/sh cd ${0%/*} || exit 1
# Run from this directory
# Source tutorial run functions . $WM_PROJECT_DIR/bin/tools/RunFunctions application=$(getApplication)
1
runApplication blockMesh runApplication setFields runApplication $application
2
#------------------------------------------------------------------
Рис. 2.7. Содержимое файла Allrun
Построение сетки в данном примере выполняется стандартной утилитой построения сетки, встроенной в OpenFOAM. Для вызова данной утилиты необходимо в правом окне MC нажать сочетание клавиш ctrl+O и ввести команду: blockMesh
После этого в командной строке появится отчет (лог) о проделанных действиях программы, в данном случае построителя сетки. Если выполнение команды прошло без ошибок (ошибки пишутся в лог), то в папке constant появится новая папка, содержащая информацию о сетке – polyMesh . У данной задачи кроме граничных условий для начального времени расчета так же есть нестандартное распределение температурного поля. Для его активации необходимо ввести команду: setFields
После ее выполнения в файле, отвечающем за температуру в 0-ой момент времени, изменится распределение температурного поля. Изменения можно увидеть, сравнив файлы 0/T.orig и 0/T. Запустите расчет данного примера c помощью команды (ее можно увидеть в файле system/controlDict): 26
buoyantBoussinesqPimpleFoam
В окно консоли теперь выводится лог расчета, т. к. это нестационарная задача. Время, указанное в логе, это расчетное время, а не количество итераций. В начале каждого временного шага высчитывается число Куранта и затем считается шаг, в конце выводится информация о методе расчета и количестве итераций, потраченных на вычисления одного из параметров модели. ExecutionTime – общее время, потраченное на вычисления CPU, ClockTime – время, потраченное на вычисления вместе с чтением и записью файлов на диск, Initial и Final residual – невязка (величина ошибки), соответственно, в начале и после расчета простых итераций. Для записи всего лога в файл используется команда: buoyantBoussinesqPimpleFoam > имя файла.log
Как правило, имя файла – это команда, которую вызывали (чтобы не запутаться, если логов будет много). При повторном вызове этой же команды старый лог будет перезаписан. Поэтому, будьте внимательны, если предыдущий лог вам нужен для отладки, то добавьте в конце имени цифры. Итак, после решения задачи в папке проекта появились новые папки, названные цифрами – это сохраненные шаги расчета. Теперь необходимо создать файл для открытия результатов. Для этого используйте команду: > case.foam
Просмотр результатов происходит в программе постпроцессоре ParaView. С помощью сочетания клавиш Ctrl+O (1) открыть из рабочей папки созданный файл case.foam (рис. 2.8). В левом нижнем окне убрать выделение с пункта Skip Zero Time (2) и включить опцию Add dimensional units to array names (3), в выпадающем списке Case Type выбрать Reconstructed Case (4). После чего принять свойства, нажав на кнопку Apply (5).
27
1
5
2 4
3 Рис. 2.8. Интерфейс открытия проекта в приложении ParaView
2
8
1
3 4
5 6 7 Рис. 2.9. Включение отображения потоков воздуха
В рассматриваемом примере рассчитано движение воздуха в объеме, в центре которого расположен нагретый квадрат. Чтобы увидеть потоки воздуха, необходимо перейти на последний шаг расчета (рис. 2.9), нажав на панели инструментов времени иконку перехода к последней итерации (1). Затем вызвать с панели инструментов инструмент Glyph (2), на панели свойств нажать на иконку шестеренки (3) и указать следующие свойства: Glyph Type: Arrow (4), OrientationArray: U [m/s] (5), ScaleArray: U [m/s] (6). 28
Ниже сбросить Scale Factor клавишей Reset (7) и применить данные параметры (8). Далее выключить отображение объема комнаты (рис. 2.10), нажав на глаз рядом с case.foam в дереве построения (1). И перекрасить векторы скорости в соответствии с температурой (2), выбрав Glyph1 в дереве построения и указав в отображаемой переменной T [K].
3
1 2
Рис. 2.10. Настройка отображения результатов расчета
На получившемся трехмерном отображении результатов (рис. 2.11) можно увидеть, что поток воздуха циркулирует вверх от горячего центра к углам комнаты и замыкается к центру по полу.
Рис. 2.11. Отображение результатов расчета 29
На этом знакомство с OpenFOAM закончено, пройден весь цикл от создания сетки до обработки результатов. Перед тем как использовать примеры из OpenFOAM для решения своих задач, необходимо научиться правильно создавать собственную геометрию для проектов. 2.2 Построение геометрии и создание сетки В качестве примера рассмотрим исследование электромагнитных процессов в ИТП, рассматривается система «индуктор–загрузка». Индуктор, в зависимости от энергетических параметров системы, может быть выполнен в виде многовитковой катушки переменного тока с естественным воздушным охлаждением или в виде массивной трубки с принудительным водяным охлаждением. Загрузкой, в случае применения непроводящего тигля или тигля прозрачного для электромагнитного поля на данных частотах, является только расплав. Для численного решения были приняты следующие допущения: витки реального индуктора заменяются одним витком с соответствующей магнитодвижущей силой (МДС); непроводящие и незначительные геометрические элементы конструкции не учитываются; задача решается в двухмерной осесимметричной постановке; поле в электромагнитной задаче изменяется по гармоническому закону. Допущения являются стандартными для данного класса задач и не приводят к значительному увеличению отклонения результатов, однако позволяют значительно сэкономить вычислительные ресурсы. Упрощение от реальной ИТП до схематичного представления геометрии расчетной области показано на рис. 2.12, где 1 – расплав, 2 – индуктор.
30
ось симметрии 2 1
Рис. 2.12. Геометрия ИТП с учетом допущений
Создание геометрии для ЭМ задачи Построитель геометрии и сетки SALOME запускается с помощью исполняемого файла run_salome.bat, который находится в месте установки программы (например, C:\{MHD}\SALOME-9.3.0\run_salome.bat). SALOME содержит несколько встроенных программ (в том числе и ParaView с меньшим функционалом), которые, в основном имеют всегда общий графический пользовательский интерфейс (GUI) представленный на рис. 2.13.
31
строка меню панели инструментов дерево построения область графического отображения консоль
Рис. 2.13. Графический пользовательский интерфейс SALOME
Для построения эскиза геометрии, в появившемся после запуска окне, необходимо выбрать «Shaper» (рис. 2.14) на панели инструментов из выпадающего списка, либо нажав на иконку правее (1). Затем необходимо добавить деталь в проект, для этого выбрать в строке меню Part\New Part (2). 1
2
Рис. 2.14. Включение подпрограммы Shaper
Обозначение основных размеров описанной системы как параметров, происходит в диалоговом окне настройки параметров (1) (рис. 2.15). Добавление параметров происходит по одному с помощью кнопки Add (2). 32
Для построения примера необходимо внести все параметры в таблицу (3) (табл. 2.1.). 1
3
2
Рис. 2.15. Диалоговое окно настройки параметров
Таблица 2.1 Параметры геометрии melt_height ind_height melt_width ind_width clearance
180 20 100 20 5
высота расплава расстояние между индуктором и расплавом радиус расплава ширина индуктора величина зазора
После того как таблица заполнена необходимо создать эскиз – Sketch (1) (рис. 2.16). Для создания двухмерной осесимметричной задачи в OpenFOAM за ось симметрии принимается ось Y. Поэтому из предложенных плоскостей для эскиза выбрать X0Y (2).
33
1
2
Рис. 2.16. Включение инструмента Sketch
Переключите вид на выбранную плоскость (рис. 2.17). Для этого на панели видов (1) выберите вид – OZ (2), ориентация плоскости изменится в соответствии с рисунком.
1 2
Рис. 2.17. Панель управления видами
Для перемещения по рабочему пространству используйте нажатое колесико мыши, + Ctrl. Масштабирование происходит колесиком мыши. Выбрав инструмент прямоугольник – Rectangle (1) создайте эскиз расплава произвольного размера, один конец совместив с началом координат, второй – правее и выше, чтобы высота была больше ширины (2). 34
Свойства выбранного инструмента отображаются слева (3), в окне свойств (рис. 2.18). Проверьте, что первая точка совпадает с началом координат (Start point X: 0; Y: 0). После чего подтвердите создание прямоугольника, нажав зеленую галочку (4) в окне свойств.
1
3
4
2
Рис. 2.18. Свойства инструмента Rectangle
Задайте размеры для созданного прямоугольника (рис. 2.19). По умолчанию все размеры указаны в метрах. Чтобы изменить единицы измерения, необходимо в меню выбрать File\Properties (1) в строке Length unit выбрать – мм (2).
1
2
Рис. 2.19. Диалоговое окно настроек проекта
Используя инструмент длина – length (1) задать размеры прямоугольника (рис. 2.20). Выбрав левой кнопкой мыши сначала вертикальную линию (2), затем, отведя указатель размера в свободную область (3), ука35
зать размер как параметр (4). Аналогично повторить действия для горизонтальной линии и подтвердить заданные размеры в окне свойств (5).
1
5
5 2
4
3
Рис. 2.. Свойства инструмента Length
После того, как размеры установлены, эскиз считается полностью определенным и меняет цвет с красного на зеленый. Создайте эскиз индуктора, добавив еще один прямоугольник правее (с учетом заданной геометрии рис. 2.12), и обозначьте взаимосвязи между двумя объектами. Укажите высоту индуктора (рис. 2.21), а также величину зазора между расплавом и индуктором, используя инструменты горизонтального (horizontal distance) и вертикального (vertical distance) расстояния (1). При указании значений также используйте параметры clearance и ind_height, соответственно.
36
1
Рис. 2.21. Расположение инструментов размера эскиза
Укажите ширину индуктора так же как задавали размеры загрузки/расплава. Создайте условие коллинеарности нижних граней прямоугольников (рис. 2.22). Для этого потребуется удалить горизонтальную взаимосвязь у нижней линии, выбрав букву H (1) с помощью мыши и нажав клавишу delete на клавиатуре, либо с помощью диалогового окна ПКМ. Затем с помощью инструмента коллинеарность – collinear (2) присвойте общую ось для нижней грани правого и левого прямоугольников (3–5). 2
1
5
3
4
Рис. 2.22. Применение инструмента Collinear 37
Нанесите на чертеж область, обозначающую воздух (рис. 2.23). С помощью инструмента линия – line (1), произвольно добавьте две отдельные линии, начинающиеся из двух крайних левых углов расплава. После чего задайте их коллинеарность с левой вертикальной границей расплава. Создайте новую зависимость – равенство – equal (2), для нарисованных линий и левой вертикальной границы расплава. 1
2
Рис. 2.23. Создание взаимосвязей эскиза
Нанести границу, которая будет отвечать за бесконечно удаленные граничные условия воздуха (рис. 2.24). Выберите инструмент дуга – arc (1), в свойствах инструмента выберите способ нанесения – через 3 точки на дуге (2). Две крайних точки нарисованных линий совместите с началом и концом дуги (2.1–2.2), а третью точку установите на произвольном расстоянии справа от индуктора (2.3). Последнее, что необходимо сделать, – это указать взаимосвязь совпадения – coincident между центром окружности дуги (3.1) и осью симметрии (3.2) (левой вертикальной границы расплава).
38
1 3 2
2.1 3.1
3.3
2.3
3.2
2.2
Рис. 2.24. Применение инструмента Arc
Все линии эскиза должны иметь зеленый цвет, что говорит о полной определённости геометрии. Завершите создание эскиза нажатием Apply в свойствах эскиза. Сохраните промежуточную геометрию через иконку дискеты на панели инструментов или сочетание клавиш Ctrl + S. Из нарисованного эскиза необходимо создать плоскости, обозначить всю геометрию, которая будет передана в построитель сетки, и указать наименования линий для задания точности сетки и граничных условий математических модели: 1. Перейдите (рис. 2.25) в меню в Build/Face (1). С зажатой клавишей Shift выберите все замкнутые области на эскизе (2–3).
39
1
3
2 Рис. 2.25. Создание плоскостей
2. С помощью инструмента Fuse (рис. 2.26) объедините созданные плоскости, чтобы потом это все одним объектом перенести в построитель сетки.
Рис. 2.26. Объединение плоскостей
3. Перед тем как начать перенос необходимо промаркировать границы и плоскости (рис. 2.27). Выберите инструмент Group (1) и после40
довательно задайте имена (2) сначала плоскостям (3), затем всем границам (4) кроме оси симметрии. Наименования: Faces: melt, coil, air Edges: edge_melt, edge_coil, edge_air_out. 1
2 3
4
Рис. 2.27. Создание групп
4. Для проверки, что все сделано правильно, обратим внимание на дерево построения (рис. 2.28). В дереве построения раскройте деталь Part_1 (1), которую создали в самом начале. В ней должно быть четыре подкаталога: Параметры (Parameters), Конструкции (Constructions), Результаты (Results) и Группы (Groups). Раскройте их все (2) и, если все сделано правильно, каждый из обозначенных подкаталогов будет заполнен как на рис. 2.28, либо в соответствии с вашими уникальными названиями. В случае если что-то не совпадает или если необходимо внести изменения в геометрию, не связанную с размерами (параметрами), существует легенда построения (3), которая позволяет с легкостью перейти на нужный шаг и внести изменения в чертеж. Для этого двойным щелчком мыши у правого края строки (4) выберите необходимый вам шаг в легенде, а затем, с помощью контекстного меню, выберите Изменить – Edit (5).
41
8
9
7 6
1 4 3
5 2
Рис. 2.28. Дерево построения Shaper
После чего экспортируйте формы в модуль геометрии (6). Перейдите в модуль геометрии (7) и переименуйте экспортированные результаты из Fuse_1_1 в elmerGeometry (8). Затем перейдите в построитель сетки (9) и сохраните промежуточную геометрию с новым именем (например, geom2). При сохранении имена предыдущего и текущего сохраняемого файлов не должны совпадать, так как перезапись файла может не работать. Создание сетки для электромагнитной задачи Поэтапная настройка сетки в Mesher представлена на рис. 2.29. Выбрав в дереве элементов созданный ранее elmerGeometry (1), выберите в меню mesh\create mesh или нажмите иконку быстрого доступа (2). В появившемся окне в поле Name укажите: forElmer (3), тип сетки оставьте по умолчанию, алгоритм выберите Free faces/NETGEN 1D-2D (4). Установите параметры построения сетки (5): качество – Very fine (6). Далее выберите в дереве построения все грани (8) и нажав на второй вкладке (7) окна параметров на On edge (9) вызовите таблицу размеров элементов сетки на гранях. В соответствии с размерами геометрии укажите средний размер ячеек (10) и примените все указанные параметры клавишами OK (11) и Apply and Close (12).
42
2
1
8 9
5 3 7
10 4
6
12 11
Рис. 2.29. Поэтапное построение сетки в Mesher
Осталось построить и посмотреть на сетку. В дереве построения появился элемент Mesh (рис. 2.30). Разверните его. Вы увидите созданную сетку forElmer. В контекстном меню ПКМ выберите Compute (1). Начнется процесс построения сетки и, если он пройдет без ошибок, откроется диалоговые окно с информацией о полученной сетке (2). После этого измените вид на – OZ и вы увидите построенную сетку (3). Так как будет выполняться расчет не электромагнитной задачи, а магнитной гидродинамики, т.е. взаимосвязь гидродинамики и электромагнетизма, то в обеих задачах имеется одно общее тело – расплав, поэтому в указанной области, сетка в обеих этих задачах должна быть одинаковой. Создадим подсетку (рис. 2.31) в уже существующей сетке (1). В ячейке Mesh укажите уже существующую сетку forElmer, выбрав нужный элемент в дереве построения. В ячейке Geometry укажите melt из дерева построения. Выберите алгоритм построения сетки Triangle: Mefisto (2). Примените настройки, после чего кусок сетки с расплавом исчезнет (3), его необходимо пересчитать (4), итоговый результат будет с регулярной треугольной сеткой в расплаве, остальная сетка останется как в предыдущем шаге (5).
43
1
2 3 Рис. 2.30. Построение и отображение сетки в Mesher
4 5
1
3 2
Рис. 2.31. Поэтапное построение подсетки в Mesher
Экспортируя сетку из Salome в Elmer необходимо указать наименования тел/поверхностей/граней, которые затем потребуются для определения граничных условий задачи. Сделать это можно автоматически (рис. 2.32) с помощью инструмента Create Groups from Geometry (1). В появившемся окне в поле Mesh укажите уже созданную сетку forElmer. В поле Elements, с помощью выбора в дереве построения, укажите поверхности расплава, катушки, воз44
духа и грань, отвечающую за бесконечно удаленный воздух (2). Примените внесенные изменения. Сетка готова, осталось экспортировать ее в формат, совместимый с Elmer, в данном примере используется *.unv. Сохраните проект Salome еще раз уже с третьим именем geom3. С помощью контекстного меню ПКМ на созданной сетке forElmer выберите Export/ UNV File (4) {Все сохраняем и экспортируем в рабочую папку}.
1
2 3
Рис. 2.32. Экспорт сетки в UNV файл
Геометрия и сетка для гидродинамической задачи Как уже было сказано ранее, МГД-задача имеет одну общую расчетную область для сопряжения – расплав. Создадим геометрию и сетку расплава с учетом особенностей решателя OpenFOAM. Откройте (если закрывали после сохранения) предыдущий проект, перейдите в Shaper и активируйте в нем Part_1 (щелкнуть ПКМ в дереве построения и выбрать Activate). После чего с помощью глаза слева в дереве построения скройте отображение всех результатов (Results) и групп (Groups), оставив включенным отображение только Sketch_1. Создайте новый эскиз в той же плоскости, где рисовали предыдущий эскиз (если его не видно в дереве построения нажмите на глаз рядом с эскизом 1). С помощью инструментов эскиза, с привязкой по точкам, обведите контур расплава (если все сделано правильно он сразу будет полностью определенным [зеленым]). Скройте отображение Sketch_1. Создайте из контура плоскость, выделите грани расплава и отправьте в построитель геометрии. В построителе геометрии переименуйте получившуюся плос45
кость в «forOFOAM». Повторы, которые могут передаться, из геометрии для Elmer удалите. Особенность решателя OpenFOAM в том, что это решатель конечных объёмов, а значит обойтись просто плоскостью, как в Elmer, не получиться. Для решения двумерных осесимметричных задач в OpenFOAM предусмотрено использование клиновидной геометрии толщиной в 1 элемент сетки, и минимум 5°. Для начала нужно повернуть существующую геометрию на 5 / 2 по оси Y, потому что центр клина должен находится в плоскости X0Y. Для этого создайте (рис. 2.33) центр координат и векторы XYZ с помощью Create an origin and base Vectors (1). Затем поверните геометрию, используя инструмент Rotate (2). Поле Name оставьте без изменений, в поле Objects в дереве построения укажите на плоскость forOFOAM, аналогично выберите в поле Axis из дерева построения OY и укажите угол Angle: –2.5 (3), а также уберите галочку Create a copy в чекбоксе ниже. Переходим к построению сетки, это будет та же сетка, что у задачи для Elmer в расплаве, выдавленная на 5° (рис. 2.34). Создайте новую сетку «forOFOAM» из геометрии «Rotation_1» с 2D Algorithm: Quadrangle: Mapping (1) и 1D Algorithm: Wire Discretization, Hypothesis: Local Length: 2.5 (2). Укажите наименования элементов из геометрии (3).
2
1 4 3
5 6
7
8 9
Рис. 2.33. Изменение геометрии для задачи гидродинамики
Инструментом Revolution (4) выдавите получившуюся двухмерную сетку (5), со всеми узлами, гранями и плоскостями (6), вокруг оси OY (7) на 5° (8) ровно на один элемент (9). В результате должна получиться сетка (10).
46
1 4
6 7
2 8 9
5
10
3 Рис. 2.34. Поэтапное построение сетки для задачи гидродинамики
Обратите внимание, что в дереве построения (рис. 2.35) сетки появилась группа объемов и новые плоскости (1), полученные в результате выдавливания граней. Удалите наименования граней, и переименуйте плоскости в соответствии с необходимыми граничными условиями (2). Осталось сохранить проект и экспортировать получившуюся сетку в *.unv формат.
3
1 2
Рис. 2.35. Экспорт сетки
47
2.3 Настройка решателей В данном разделе рассмотрено изменение задачи из раздела 2.1 «Знакомство с OpenFOAM» под геометрию, созданную в разделе 2.2 «Построение геометрии и создание сетки». Скопируйте проект из примеров openfoam/OpenFOAM6/tutorials/heatTransfer/buoyantBoussinesqPimpleFoam/hotRoom, но теперь в папку case (рис. 2.36).
Рис. 2.36. Копирование задачи из примеров решателя в рабочую папку
Скопируйте в эту же папку геометрию forOFOAM.unv через проводник Windows или через MC. После этого из правого окна MC перейдите в командную строку нажатием клавиш Ctrl+O и вызовите стандартные утилиты для экспорта сетки формата *.unv в проект OpenFOAM и для перевода единиц измерения геометрии из мм в м: ideasUnvToFoam forOFOAM.unv && transformPoints –scale ‘(0.001 0.001 0.001)’
Что бы убедиться, что геометрия экспортировалась правильно, необходимо создать файл постобработки командой: >case.foam
Запустите ParaView (рис. 2.37), в панели свойств (левом нижнем окне) установите галочку напротив Axes Grid (1). Затем откройте (2) case.foam, в панели свойств измените Case Type на Reconstructed Case (3) и нажмите Apply (4), после чего появится геометрия. На панели отображе48
ния выберите Surface With Edges (5) в результате отобразиться сетка и геометрия с размерами в метрах (6).
2 5
6
4 1
3 Рис. 2.37. Отображение сетки в ParaView
Теперь следует изменить граничные условия задачи из существующего примера на импортированную геометрию, включить осесимметричность и удалить ненужные файлы. С помощью Notepad++ откройте файл constant\polyMesh\boundary (рис. 2.38) и измените типы границ геометрии для wall – wall, front и back – wedge (граница, обозначающая циклическую симметрию). Обязательно сохраните файлы после изменений. Измените поля/величины находящиеся в папке 0. Сначала следует ознакомится с файлом Т (температура). Понимание каждой строчки данного файла даст общее представление о структуре любого файла с граничными и начальными условиями в OpenFOAM. Данные файлы имеют синтаксис языка C++ и в начале по умолчанию имеют шапку, без которой ничего не будет работать (рис. 2.39).
49
front { type nFaces startFace } wall { type nFaces startFace } back { type nFaces startFace }
front { type nFaces startFace } wall { type nFaces startFace } back { type nFaces startFace }
patch; 2880; 5648;
patch; 152; 8528;
patch; 2880; 8680;
wedge; 2880; 5648;
wall; 152; 8528;
wedge; 2880; 8680;
Рис. 2.38. Содержимое файла boundary /*---------------------------*- C++ -*----------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org \\ / A nd | Version: 6 \\/ M anipulation | \*----------------------------------------------------------------*/
Рис. 2.39. Шапка файлов OpenFOAM
Описание файла представлено на рис. 2.40: версия, формат, класс и объект. Класс может быть двух видов в зависимости от того, какой переменной оперирует решатель, либо скаляр – volScalarField, либо вектор – volVectorField. Объект – это переменная, которой оперирует решатель, используя этот файл. Название объекта всегда совпадает с названием используемого файла, в данном случае – температура T. FoamFile { version 2.0; format ascii; class volScalarField; object T; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Рис. 2.40. Описание файлов OpenFOAM
После описания указываются единицы измерения используемой величины (рис. 2.41) в международной системе СИ, где значение соответствующего элемента матрицы – это показатель степени соответствующей единицы измерения в их произведении.
50
dimensions
[0 0 0 1 0 0 0];
[кг
м
с
К
кг/моль
А
Кд]
[Масса | Длинна | Время | Температура | Количество вещества | Электрический ток | Интенсивность света]
например: Тл
кг с
1
0
-2
кг м с К
0
кг 0 моль
-1
А Кд
0
[1 0 -2 0 0 1 0]
Рис. 2.41. Расшифровка единиц измерения OpenFOAM
Далее указывается значение переменной (рис. 2.42), которое применяется к каждой точке сетки (кроме граничных условий) в нулевой момент времени (начальные условия). internalField
uniform 300;
Рис. 2.42. Значение переменной в нулевой момент времени
Ниже перечисляются граничные условия (рис. 2.43) для каждой границы с указанием типа и их особенностей (постоянные значения или вычисляемые и прочее). название границы, которое указывалось при маркировке при создании геометрии boundaryField { floor { type value } ceiling { type value } fixedWalls { type } }
фиксированное значение величины
fixedValue; uniform 300;
численное значение фиксированной величины, при использовании вектора величина пишется в круглых скобках по компонентам вектора (yx yy yz)
fixedValue; uniform 300;
zeroGradient;
//******************************** //
предполагается, что градиент на границе равен нулю и соответствующим образом корректирует граничные значения. Не требует дополнительных параметров.
Рис. 2.43. Задание граничных условий в OpenFOAM
Измените названия границ в граничных условиях файла T (рис. 2.44) на те, что указаны в импортированной сетке, а также измените их тип и значения. Не забывайте сохранять файлы после каждого изменения. 51
boundaryField { floor { type value } ceiling { type value } fixedWalls { type } }
boundaryField { wall { type value } front { type } back { type } }
fixedValue; uniform 300;
fixedValue; uniform 300;
zeroGradient;
fixedValue; uniform 500;
wedge;
wedge;
Рис. 2.44. Содержимое файла T
Теперь необходимо изменить все остальные граничные условия, находящиеся в папке 0. Начнем с файла U (рис. 2.45). Для границ с прилипанием используется граничное условие – noSlip, что означает на границе устанавливается значение скорости, равное нулю. Оно работает аналогично fixedValue со значением (0 0 0), но не нуждается в дополнительных параметрах. boundaryField { floor { type } ceiling { type } fixedWalls { type } }
boundaryField { wall { type } front { type } back { type } }
noSlip;
noSlip;
noSlip;
noSlip;
wedge;
wedge;
Рис. 2.45. Содержимое файла U
В файле давления p стоит изменить только названия границ (рис. 2.46), типы не трогаем, т. к. они вычисляются (calculated) от другого внешнего поля ($internalField).
52
boundaryField { floor { type value } ceiling { type value } fixedWalls { type value } }
boundaryField { wall { type value } front { type } back { type } }
calculated; $internalField;
calculated; $internalField;
calculated; $internalField;
calculated; $internalField;
wedge;
wedge;
Рис. 2.46. Содержимое файла p
Давление с гидростатической коррекцией – p_rgh ( p _ rgh p rho * gh ) тип граничного условия fixedFluxPressure со значением 0 устанавливает градиент давления на заданное значение таким образом, чтобы поток на границе соответствовал граничному условию скорости (рис. 2.47). Дополнительный параметр rhok – распределение плотности, используемый для расчета силы плавучести, отвечающей за движение жидкости при естественной конвекции. boundaryField { floor { type fixedFluxPressure; rho rhok; value uniform 0; } ceiling { type fixedFluxPressure; rho rhok; value uniform 0; } fixedWalls { type fixedFluxPressure; rho rhok; value uniform 0; } }
boundaryField { wall { type fixedFluxPressure; rho rhok; value uniform 0; } front { type wedge; } back { type wedge; } }
Рис. 2.47. Содержимое файла p_rgh
Теперь переходим к файлам, отвечающим за турбулентность, k – кинетическая энергия в k-e SST модели турбулентности (рис. 2.48). Тип 53
kqRWallFunction – пристеночная функция кинетической энергии в k-e SST модели турбулентности со значениями близкими к нулю. boundaryField { floor { type kqRWallFunction; value uniform 0.1; } ceiling { type kqRWallFunction; value uniform 0.1; } fixedWalls { type kqRWallFunction; value uniform 0.1; } }
boundaryField { wall { type kqRWallFunction; value uniform 0.1; } front { type wedge; } back { type wedge; } }
Рис. 2.48. Содержимое файла k
Турбулентная вязкость nut с типом граничного условия nutkWallFunction – пристеночная функция турбулентной вязкости в k-e SST модели турбулентности со значениями равными нулю (рис. 2.49). boundaryField { floor { type nutkWallFunction; value uniform 0; } ceiling { type nutkWallFunction; value uniform 0; } fixedWalls { type nutkWallFunction; value uniform 0 } }
boundaryField { wall { type nutkWallFunction; value uniform 0; } front { type wedge; } back { type wedge; } }
Рис. 2.49. Содержимое файла nut
Турбулентное рассеяние/турбулентная диссипация epsilon c типом граничного условия epsilonWallFunction – пристеночная функция турбулентного рассеяния в k-e SST модели турбулентности со значениями близкими к нулю (рис. 2.50).
54
boundaryField { floor { type epsilonWallFunction; value uniform 0; } ceiling { type epsilonWallFunction; value uniform 0; } fixedWalls { type epsilonWallFunction; value uniform 0; } }
boundaryField { wall { type epsilonWallFunction; value uniform 0; } front { type wedge; } back { type wedge; } }
Рис. 2.50. Содержимое файла epsilon
И последнее alphat турбулентная температуропроводность (рис. 2.51), с типом граничного условия alphatJayatillekeWallFunction – тепловая пристеночная функция турбулентной температуропроводности основанная на модели Джаятиллеке т. к. у нас задача с низким числом Рейнольдса (alphatWallFunction для высоких Re). В качестве дополнительных параметров указывается Prt – турбулентное число Прандтля (по умолчанию 0.85); kappa – постоянная фон Кармана (по умолчанию 0.41); E – коэффициент модели (по умолчанию 9.8). boundaryField { floor { Type alphatJayatillekeWallFunction; Prt 0.85; value uniform 0; } ceiling { Type alphatJayatillekeWallFunction; Prt 0.85; value uniform 0; } fixedWalls { Type alphatJayatillekeWallFunction; Prt 0.85; value uniform 0; } }
boundaryField { wall { Type alphatJayatillekeWallFunction; Prt 0.85; Kappa 0.41; E 9.8; value uniform 0; } front { type wedge; } back { type wedge; } }
Рис. 2.51. Содержимое файла aphat 55
Все начальные и граничные условия подкорректированы под импортированную сетку (папка 0). Теперь ознакомимся с параметрами в папке Constant. Файл g – отвечает за гравитационную постоянную (рис. 2.52), а именно величину и направление, которые задаются вектором (по координатам) в строке: value
(0 -9.81 0);
Рис. 2.52. Содержимое файла g
В файле transportProperties указывается модель жидкости (Ньютоновская) и ее свойства необходимые для конкретного решателя, используемого в текущей задаче. В нашем случае указываются Ламинарная вязкость (nu), Коэффициент теплового расширения (beta), Опорная температура (TRef), Ламинарное число Прандтля (Pr), Турбулентное число Прандтля (Prt). В файле turbulenceProperties выбирается модель решения гидродинамических процессов (laminar, Reynolds Averaged Simulation (RAS), Detached Eddy Simulation (DES), или Large Eddy Simulation (LES)), и ниже свойства для выбранного решателя (конкретная модель турб. k-e, k-w и пр). Пока изменять параметры в вышеописанных файлах не стоит. Ознакомимся с содержимым папки System. Из нее необходимо удалить файлы blockMeshDict и setFieldsDict. В файле fvSchemes содержится информация о схемах – числовые схемы для выражений, таких как производные в уравнениях, которые вычисляются во время моделирования. В файле fvSolution содержится информация о решателях уравнений, допусках и алгоритмах, использующихся при моделировании. Файл настройки решателя – controlDict содержит следующую информацию: 1. Управление временем: startFrom: управляет временем начала симуляции: - firstTime: самый ранний временной шаг из набора временных каталогов; - startTime: время, указывается в записи ключевого слова startTime; - latestTime: самый последний шаг по времени из набора временных каталогов; startTime: время начала симуляции с startFrom startTime; stopAt: управляет временем окончания симуляции: - endTime: время, указывается в записи ключевого слова endTime; - writeNow: останавливает симуляцию по завершении текущего временного шага и записывает данные; - noWriteNow: останавливает симуляцию по завершении текущего временного шага и не записывает данные;
56
- nextWrite: останавливает симуляцию по завершении следующего запланированного времени записи, указанного в writeControl; endTime: время окончания симуляции, когда указаны параметры stopAt endTime; deltaT: шаг по времени симуляции. 2. Запись данных: writeControl: управляет временем записи вывода в файл: - timeStep: пишет данные каждый writeInterval временной шаг; - runTime: пишет данные каждую writeInterval секунду моделируемого времени; - adjustableRunTime: пишет данные каждую writeInterval секунду моделируемого времени, корректирующие временные шаги, чтобы при необходимости совпадать с writeInterval – используется в случаях с автоматической настройкой временного шага; - cpuTime: пишет данные каждую writeInterval секунду времени потраченного процессором на обработку данных; - clockTime: пишет данные каждую writeInterval секунду реального времени; writeInterval: скаляр используется в сочетании с writeControl, описанным выше; purgeWrite: целое число, представляющее ограничение на количество временных каталогов, которые хранятся путем циклической перезаписи временных каталогов. Например, если моделирование начинается при t = 5 с и t 1 с, то с помощью purgeWrite 2; данные сначала записываются в 2 каталога, 6 и 7, затем при записи 8, 6 удаляются и т. д., Так что только 2 каталога результатов существуют в любое время. Чтобы отключить очистку, укажите purgeWrite 0; (по умолчанию); writeFormat: определяет формат данных у создаваемых файлов; - ascii (по умолчанию): ASCII формат, указывается в writePrecision количество цифр после запятой; - binary: двоичный формат; writePrecision: целое число, используемое вместе с writeFormat, описанным выше, 6 по умолчанию; writeCompression: переключите, чтобы указать, будут ли файлы сжаты с помощью gzip при записи: on/off (yes/no, true/false); timeFormat: выбор формата наименования временных каталогов: - fixed: m.dddddd , где количество d устанавливается в timePrecision; - scientific: m.dddddde xx , где количество d устанавливается в timePrecision; - general (по умолчанию): указывает научный формат, если показатель степени меньше –4 или больше или равен значению, указанному в timePrecision;
57
timePrecision: целое число, используемое вместе с timeFormat, описанным выше, 6 по умолчанию; graphFormat: формат для графических данных, написанных приложением: - raw (по умолчанию): необработанный формат ASCII в столбцах; - gnuplot: данные в формате gnuplot; - xmgr: данные в формате Grace / xmgr; - jplot: данные в формате jPlot. 3. Другие настройки: adjustTimeStep: переключатель, используемый некоторыми решателями для настройки временного шага во время моделирования, обычно в соответствии с maxCo; maxCo: максимальное число Куранта, например 0,5; runTimeModifiable: переключиться на словари, которые например, перечитывают controlDict во время симуляции в начале каждого временного шага, что позволяет пользователю изменять параметры во время симуляции; Libs: список дополнительных библиотек (в $ LD_LIBRARY_PATH) для загрузки во время выполнения, например, («libNew1.so», «libNew2.so»); Functions: словарь функций, например датчики в модели, которые можно отслеживать во время выполнения расчета; см. примеры в $ FOAM_TUTORIALS.
В файле настройки решателя (рис. 2.53) необходимо изменить время конечного шага с 2 000 на 200, шаг по времени с 2 на 0.1, интервал записи результатов с 200 на 10 и формат файла с ascii на binary. application buoyantBoussinesqPimpleFoam;
application buoyantBoussinesqPimpleFoam;
startFrom
startTime;
startFrom
startTime;
startTime
0;
startTime
0;
stopAt
endTime;
stopAt
endTime;
endTime
2000;
endTime
200;
deltaT
2;
deltaT
0.1;
writeControl
timeStep;
writeControl
timeStep;
writeInterval
200;
writeInterval
10;
purgeWrite
0;
purgeWrite
0;
writeFormat
ascii;
writeFormat
binary;
Рис. 2.53. Содержимое файла controlDict
58
Для запуска расчета гидродинамической задачи в MC перейдите в папку с проектом (например: cd /mnt/c/MHD/case/) и с помощью консольной строки (Ctrl+O) запустите решатель с записью хода решения в лог (рис. 2.54):
Рис. 2.54. Запуск расчета задачи
Если все вышеописанное проделано правильно, то в папке с проектом начнут появляться новые папки с результатами расчета и появиться лог файл (рис. 2.55), который будет постоянно обновляться, пока не закончится расчет. Каждая новая папка соответствует настроенному в ControlDict времени сохранения расчета (1 сек), при этом сохраняется не каждая итерация, а каждая десятая, без изменения шага по времени расчета.
59
Рис. 2.55. Пример удачного расчета задачи
2.4 Просмотр результатов Просмотр и обработка результатов расчета OpenFOAM, в большинстве случаев, происходит в мульти платформенном приложении для анализа и визуализации данных с открытым исходным кодом – ParaView. При использовании данной программы на ноутбуке пред запуском убедитесь, что используется дискретная видеокарта и обновлены драйвера на все видеокарты. При первом запуске ParaView появляется окно с примерами использования пост процессора (ознакомитесь самостоятельно).
60
В первую очередь следует рассмотреть основные области в появившемся окне. Расположение элементов, является стандартным при первом запуске ParaView. GUI включает в себя следующие компоненты (рис. 2.56).
панели инструментов
строка меню
дерево построения
область графического отображения
панель свойств строка состояния Рис. 2.56. GUI ParaView
В верхнем левом углу располагается Строка меню / Menu Bar – как и в любой другой программе, строка меню позволяет получить доступ к большинству функций. Ниже расположены Панели инструментов / Toolbars – Панели инструментов обеспечивают быстрый доступ к наиболее часто используемым функциям в ParaView. Левая часть окна делится на два элемента Дерево построения / Pipeline Browser и Панель свойств / Properties Panel. ParaView управляет чтением и фильтрацией данных с помощью дерева. Браузер дерева построения позволяет просматривать структуру проекта и выбирать объекты в дереве. Браузер дерева построения предоставляет удобный список объектов проекта со стилем отступа, который показывает структуру проекта. Панель свойств позволяет просматривать и изменять параметры текущего объекта дерева построения. На панели свойств есть переключатель для расширенных свойств, который показывает и скрывает расширенные элементы управления. По умолчанию свойства связаны с вкладкой «Информация», на которой показана основная сводка данных, полученная из объекта дерева построения. Справа расположена область графического отображения / 3D View, которая используется для представления данных, чтобы просматривать, взаимодействовать и исследовать данные. Эта область изначально запол61
няется трехмерным видом, который обеспечивает геометрическое представление данных. В правом нижнем углу находится строка состояния с возможностью отмены текущей операции (крестик). После знакомства с интерфейсом программы загрузите в нее результаты расчета для дальнейшей работы (рис. 2.57), в окне свойств установите галочку напротив Axes Grid (1), после чего отобразиться кубическая линейка размерами 1:1:1 метров, откройте (2) файл case.foam, с помощью иконки на панели быстрого запуска или сочетания клавиш ctrl+O, в дереве построения появиться case.foam. Свойства, отображаемые в окне свойств, изменяются в зависимости от выбранного элемента в дереве построения. В окне свойств измените Case Type на Reconstructed Case (3) (задача, которая решалась на одном процессоре). Уберите галочку с параметра Skip Zero Time (4). Примените указанные свойства, нажатием Apply (5). В области графического отображения появится клин, созданный во время построения геометрии и создания сетки, линейка станет соразмерной отображаемому элементу и загрузятся результаты каждого сохраненного шага расчета (1 сек).
2
1
5
4 3 Рис. 2.57. Загрузка результатов расчета в ParaView
Прежде чем продолжить обрабатывать данные, кратко рассмотрим некоторые способы как их отобразить (рис. 2.58). Наиболее распространенные параметры для отображения данных находятся на панели инструментов (их также можно найти в группе «Отображение» / Display панели свойств.)
62
Редактировать цвета Вкл/выкл цветную легенду
Отображаемая переменная
Компонент вектора
Представление
Диапазон значений в соответствии с отображаемой областью Сброс диапазона значений
Пользовательский диапазон значений
Временной диапазон значений
Рис. 2.58. Способы отображения в ParaView
Для отображения результатов необходимой величины, в дереве построения выберите case.foam. Используйте средство выбора переменных, чтобы закрасить поверхность переменной T (рис. 2.59). Чтобы увидеть структуру сетки, измените представление на Поверхность с краями/Surface With Edges. ParaView позволяет просмотреть как структуру ячейки, так и внутреннюю часть сетки в каркасном/Wireframe представлении (получившаяся у вас палитра может не совпадать с тем что на изображении). В данном случае отображается распределение температуры в объекте в момент времени равный 1 секунде.
Рис. 2.59. Распределение температурного поля
Чтобы увидеть начальные и грачиные условия, заданные во время настройки решателя, необходимо обратить внимание на еще один элемент 63
интерфейса – управление временем, полученным в результате расчета. Для этого существует панель инструментов времени (рис. 2.60). Текущее время
Воспроизведение/ пауза
Текущий временной шаг
Зациклить анимацию Первая итерация
Предыдущая итерация
Следующая итерация
Последняя итерация
Рис. 2.60. Панель инструментов времени
Для воспроизведения посекундной анимации произведённого расчета нужно выбрать Нулевую итерацию расчета используя панель инструментов (Time: 0). Видно, что стенки цилиндра (клина) имеют температуру 500°K, а все тело 300°K, как и задано в файле 0/Т (рис. 2.61).
t=0
t=2
t=4
t=6
t=8
t = 10
Рис. 2.61. Несколько итераций расчета
Далее нажмите на воспроизведение для анимации расчета. Визуально можно наблюдать, что выравнивание температуры происходит на 15-ой секунде расчета. Теперь обратим внимание на распределение скоростей и познакомимся с применением фильтров в ParaView. Некоторые часто используемые фильтры представлены на панели инструментов, более обширный список находится в Строке меню\ Filters(Фильтры). Полный список фильтров содержится в ParaView help, бóльшая часть из которого есть в Filters\Alphabetical. Что бы быстро найти необходимый вам фильтр можно воспользоваться поиском (быстрый вызов – Crtl+пробел) Filters\Search. 64
Для отображения поля скоростей (рис. 2.62) выберите отображаемую переменную U (скорость) (1), перейдите в нулевой момент времени(2), выберите диапазон значений шкалы, распределенный во времени(3), и представление – поверхность\Surface (4). В результате должно получиться изображение как на рисунке (5).
2 5
1 4
3 Рис. 2.62. Изменение отображаемого поля
Далее на панели инструментов выберите фильтр Slice (1) (рис. 2.63), в свойствах фильтра укажите по нормали к Z (2) и примените получившиеся настройки (3). После чего перейдите к двухмерному отображению, для этого выберите 2D на панели инструментов просмотра (4) и поверните вид камеры на – Z (5). В результате должно получиться изображение как на рисунке (6).
65
5
4
6
1 3
2
Рис. 2.63. Переход к 2D отображению
Проверьте, что бы в дереве построения был выбран Slice1, а отображаемая переменная U (скорость). Примените к Slice фильтр (рис. 2.64) Stream tracer (1). Измените параметры фильтра Maximum Streamline Length на 0.4 (2) и Resolution на 10 (3) и примените изменения. Далее используйте на StreamTracer1 фильтр Glyph (4) со свойствами: Glyph Type Orientation Array Scale Array Vector Scale Mode Scale Factor Glyph Mode Stride
2D Glyph U U Scale by Magnitude 0.05 Every Nth Point 20
В окне свойств вызовите дополнительные свойства, нажав на шестеренку (5) и во втором Glyph Type выбрать Edge Arrow, после чего скройте дополнительные свойства. Примените выбранные настройки фильтра. В дереве построения включите отображение компонентов (глаз справа от названия 6) Slice1, StreamTracer1 и Glyph1. Измените отображаемую переменную у StreamTracer1 и Glyph1 на Solid color. Если все проделано без ошибок, появиться (7) распределение скорости в объеме и контуры замыкания потоков с направлением (стрелки в масштабе от скорости). Нажмите воспроизведение и увидите анимацию рассчитанных гидродинамических процессов.
66
4
5
1
6
7
2
3
Рис. 2.64. Применение фильтров отображения
2.5 Расчет электромагнитной задачи Решение моделей уравнений в частных производных с помощью решателя Elmer требует, чтобы точное описание проблемы было дано с использованием так называемого входного файла решателя solver input file, кратко называемого файлом sif. Этот файл содержит подготовленные пользователем входные данные, которые определяют местоположение файлов сетки и управляют выбором физических моделей, параметров материала, граничных условий, начальных условий, допусков остановки для итерационных решателей и т. д. Опишем общую структуру файла, объясним, как входные данные организованы в различные разделы, и опишем общий синтаксис ключевых слов, который используется в этих разделах для определения значений различных параметров модели и управления процедурами решения. Для ознакомления с данным файлом создайте с помощью MC в рабочей папке новую директорию (рис. 2.65) case_EM в нее скопируйте файл с сеткой forElmer.unv и case.sif из директории $HOME/EOFLibrary/tests/levitation2D.
67
Рис. 2.65. Создание нового кейса ЭМ задачи
Затем откройте скопированный файл case.sif в Notepad++ выберите синтаксис Fortran (free form) для более удобного визуального восприятия кода. Разделы входного файла решателя Материал входного файла решателя организован в различные разделы. Каждый раздел, как правило, начинается со строки, содержащей имя раздела, за которым следует ряд ключевых команд, и заканчивается строкой, содержащей слово End. Имена для начала новых разделов: Header Simulation Constants Body n Material n Body Force n Equation n Solver n Boundary Condition n Initial Condition n Component n Здесь n, связанный с именем
раздела, представляет целочисленный идентификатор, необходимый для различения разделов одного типа. Рассмотрим, как в основном устроены разделы, не объясняя все возможности подробно. Для более детального изучения материала и конкретных вопросов самостоятельно ознакомьтесь с Elmer Models Manual[48], Elmer Solver Manual [49] и Elmer Tutorials [50]. 1. Раздел заголовка Header. 68
Расположение файлов сетки обычно указывается в разделе заголовка. Часто это также единственное объявление, указанное в разделе заголовка. Если файлы сетки Elmer находятся в каталоге ./mymesh, заголовочный раздел может быть просто как на рис. 2.66. Header Mesh DB "." "mymesh" End
Рис. 2.66. Раздел заголовка Header
Обратите внимание, что отдельные уравнения, тем не менее, могут быть дискретизированы с использованием разных сеток, если расположение файлов сетки указано в разделе решателя, описанном ниже. 2. Раздел моделирования Simulation. Раздел используется для предоставления общей информации, которая не является специфической для конкретной модели дифференциальных уравнений в частных производных (УЧП), участвующей в симуляции. Эта информация описывает используемую систему координат, указывает, является ли проблема стационарной или нестационарной, определяет имена файлов для вывода и т. д. Не пытаясь описать многие возможности и детали команд, приведем только простой пример изображенный на рис. 2.67. Simulation Coordinate System = "Cartesian 2D" Coordinate Mapping(3) = 1 2 3 Coordinate Scaling = 0.001 Simulation Type = Steady State Steady State Max Iterations = 1 Output Intervals(1) = 1 Post File = "case.ep" Output File = "case.dat" End
Рис. 2.67. Раздел моделирования Simulation
3. Раздел констант Constants. Раздел используется для задания определенных физических констант. Например (рис. 2.68), вектор гравитации и постоянная Стефана– Больцмана могут быть заданы с помощью команд. Constants Gravity(4) = 0 -1 0 9.82 Stefan Boltzmann = 5.67e-08 End
Рис. 2.68. Раздел констант Constants
Если константы на самом деле не нужны в симуляции, этот раздел можно оставить пустым. 69
4. Разделы тела Body, материала Material, объемная сила Body Force, уравнений Equation и начальных условий Initial Condition. Файлы сетки Elmer содержат информацию о том, как вычислительная область делится на части, называемые телами. Раздел тела связывает каждое тело с набором уравнений, свойствами материала, силами тела и начальными условиями, ссылаясь на определения, приведенные в соответствующих разделах (рис. 2.70). Чтобы сделать это, различные разделы одного типа отличаются целочисленными идентификаторами, которые являются частями имен разделов. Обратите внимание, что целое число в имени раздела тела является идентификатором самого тела. Например (рис. 2.69), можно определить: Body 1 Material = 1 Body Force = 1 Equation = 1 Initial Condition = 2 End
Рис. 2.69. Раздел тела Body
Свойства материала, силы тела, набор уравнений и начальные условия определяются после. Material 1 ... End Body Force 1 ... End Equation 1 ... End Initial Condition 1 ... End
Рис. 2.70. Разделы материала, объемные силы, уравнений и начальных условий
Какие свойства материала и силы тела должны быть указаны, зависит от математических моделей, участвующих в моделировании, а раздел начальных условий, используемый для задания начальных значений, имеет отношение только к решению нестационарных задач. Здесь опускается обсуждение этих очень модельно-зависимых вопросов; после изучения этого раздела учебно-методического пособия читатель сможет понять соответствующую документацию, приведенную в Elmer Models Manual, в котором основное внимание уделяется описанию различных математических моделей, а содержание раздела уравнений будет описано ниже. 70
5. Разделы уравнения Equation и решателя Solver. Раздел уравнения предоставляет способ связать каждое тело с набором решателей, где каждый решатель обычно связан со способностью решать определенную физическую модель. Т. е., если определенный набор состоит из более чем одного решателя, можно считать, что несколько физических явлений происходят одновременно в одной и той же области пространства. Фактические определения решателей приведены в разделах решателей, причем содержимое раздела уравнения представляет собой список целочисленных идентификаторов для поиска указанных разделов решателей. Команды ключевых слов, приведенные в разделах решателей, затем управляют выбором физических моделей, процедурами линеаризации нелинейных моделей, выбором методов решения для получающихся линейных уравнений, допусками сходимости и т. д. Например, если нужны только два решателя, можно просто определить список из двух идентификаторов решателя (рис. 2.71): Equation 1 Active Solvers(2) = 1 2 End
Рис. 2.71. Раздел уравнений
Затем определения решателя читаются из разделов решателя (рис. 2.72). Solver 1 ... End
и
Solver 2 ... End
Рис. 2.72. Раздел решателя
Наконец, представим пример определений решателя (рис. 2.73), не пытаясь объяснить команды на этом этапе: Solver 1 Equation = "Poisson" Variable = "Potential" Variable DOFs = 1 Procedure = "Poisson" "PoissonSolver" Linear System Solver = "Direct" Steady State Convergence Tolerance = 1e-06 End
Рис. 2.73. Полностью определённый раздел решателя
6. Раздел граничных условий Boundary condition. Файлы сетки Elmer содержат информацию о том, как границы тел делятся на части, отличающиеся своими собственными граничными числами. Ключевое слово Target Boundaries используется для перечисления 71
граничных чисел, которые образуют домен для наложения граничного условия. Например, объявление (рис. 2.74) означает, что следующие определения граничных условий относятся к двум частям, имеющим граничные числа 1 и 2. Boundary Condition 1 Target Boundaries(2) = 1 2 ... End
Рис. 2.74. Раздел граничных условий
7. Раздел компонентов Component. Компонент – это физическая сущность, которая не связана с сеткой. Это может быть представление 0D-объекта, такого как электрический компонент, уравнение состояния, химическая реакция, жесткий объект и т. д. Компонент может быть независимым, или он может быть целью уменьшения модели в деталях более высокого размера. Ниже приведен пример компонента, который используется в качестве цели сокращения для двух тел (рис. 2.75). Component 1 Name = "MyComponent" Master Bodies(2) = 1 2 ... End
Рис. 2.75. Раздел компонента
Этот раздел, был добавлен намного позже, чем другие разделы, и все еще довольно мало используется. 8. Текст вне разделов. Наконец, отметим, что некоторые команды, такие как комментарии, начинаются с символа ! и выражения MATC, описанные ниже, также могут быть размещены вне определения разделов. Исключением этого типа является также команда, представленная на рис. 2.76, которая обычно помещается в начало входного файла. Check Keywords "Warn"
Рис. 2.76. Раздел компонента
Когда эта команда задана, решатель выводит предупреждающие сообщения, если входной файл содержит ключевые слова, которые не перечислены в файле известных ключевых слов. Если вводятся новые ключевые слова, можно избежать вводящих в заблуждение предупреждающих сообщений, добавив новые ключевые слова в файл ключевых слов SOLVER.KEYWORDS, расположенный в каталоге файлов общей библиотеки ElmerSolver. Другие варианты включают ignore, abort, silent. 72
Также есть команды echo on и echo off, которые можно использовать для управления выводом парсера (синтаксический анализатор). Это в основном предназначено для целей отладки. По умолчанию off. После ознакомления с разделами входного файла решателя необходимо изменить скопированный ранее файл case.sif под сетку созданную в разделе 2.2. Создание геометрии и сетки. Для этого импортируйте сетку с помощью команды, запущенной в командной строке из директории с проектом case_EM: ElmerGrid 8 2 forElmer.unv -scale 0.001[1 0.001 0.001]
Откройте файл с именами тел и границ case_EM\forElmer\mesh.names для того что бы знать нумерацию тел и границ после импорта (рис. 2.77). ! $ $ $ ! $ $
----- names for bodies ----melt = 1 coil = 2 air = 3 ----- names for boundaries ----edge_air_out = 4 bnry5 = 5
Рис. 2.77. Содержимое файла mesh.names
Измените раздел Header, указав новую папку с сеткой (рис. 2.78). Header CHECK KEYWORDS Warn Mesh DB "." "meshElmer" Include Path "" Results Directory "" End
Header CHECK KEYWORDS Warn Mesh DB "." "forElmer" Include Path "" Results Directory "" End
Рис. 2.78. Изменение раздела заголовка
В разделе (рис. 2.79).
Simulation
измените минимальное количество итераций
Simulation ... Steady State Max Iterations = 10000000 Steady State Min Iterations = 20 ... End
Simulation ... Steady State Max Iterations = 10000000 Steady State Min Iterations = 10000000 ... End
Рис. 2.79. Изменение раздела моделирования
Затем измените разделы Body в соответствии с файлом mesh.names., удалите радел Body 4, т. к. в задаче только 3 тела (рис. 2.80). 73
Отредактируйте разделы решателей (рис. 2.81). Удалите первый и четвертый решатель и пронумеруйте оставшиеся два по порядку. В поле Variable первого решателя измените название. Закомментируйте две последние строчки. Во втором решателе также измените название переменной с AV на A. И добавьте в конце строчку для вычисления Джоулевого нагрева Calculate Joule Heating = Logical True В разделе Equation, измените порядок вызова решателей (рис. 2.82). Обратите внимание, что в скобках указывается количество элементов массива, оставьте только первые два решателя. Body 1 Target Bodies(1) = 3 Name = "inductorsTop" Equation = 1 Material = 1 Body Force = 1 End
Body 1 Target Bodies(1) = 2 Name = "coil" Equation = 1 Material = 1 Body Force = 1 End Body 2 Target Bodies(1) = 1 Name = "melt" Equation = 1 Material = 3 End
Body 2 Target Bodies(1) = 4 Name = "inductorsBtm" Equation = 1 Material = 1 Body Force = 2 End
Body 3 Target Bodies(1) = 3 Name = "air" Equation = 1 Material = 2 End
Body 3 Target Bodies(1) = 1 Name = "melt" Equation = 1 Material = 3 End Body 4 Target Bodies(1) = 2 Name = "air" Equation = 1 Material = 2 End
Рис. 2.80. Изменение раздела тела
74
Solver 1 ... End
Solver 1 Equation = "MDynamics" Variable = A[A re:1 A im:1] ... !Exported Variable 1 = -dg "OF conductivity" !Exported Variable 1 Mask = String "material: mapping" End
Solver 2 Equation = "MDynamics" Variable = AV[AV re:1 AV im:1] ... Exported Variable 1 = -dg "OF conductivity" Exported Variable 1 Mask = String "material: mapping" End
Solver 2 Equation = "Postprocess" Potential Variable = String "A" ... Calculate JxB = Logical True Calculate Joule Heating = Logical True End
Solver 3 Equation = "Postprocess" Potential Variable = String "AV" ... Calculate JxB = Logical True End Solver 4 ... End
Рис. 2.81. Изменение раздела решателей Equation 1 Name = "MGDyn" Active Solvers(2) = 1 2 End
Equation 1 Name = "MGDyn" Active Solvers(4) = 1 2 3 4 End
Рис. 2.82. Изменение раздела уравнений
Измените раздел Material 3 (рис. 2.83). Укажите реальную проводимость GaInSt и закомментируйте последнюю строчку. Material 3 Name = "Melt" Electric Conductivity = Equals "OF conductivity" Relative Permittivity = 1 Relative Permeability = 1 mapping = Logical True End
Material 3 Name = "Melt" Electric Conductivity = 3850000 Relative Permittivity = 1 Relative Permeability = 1 !mapping = Logical True End
Рис. 2.83. Изменение раздела материала
Осталось удалить раздел Body Force 2 и сохранить получившийся код. Для запуска расчета гидродинамической задачи в MC перейдите в папку с проектом (например: cd /mnt/c/MHD/case_EM/) и с помощью консольной строки (Ctrl+O) запустите решатель командой (рис. 2.84) ElmerSolver case.sif: 75
Рис. 2.84. Запуск расчета ЭМ задачи
По окончании расчета откройте файл case_t0020.vtu из папки forElmer с помощью ParaView. Самостоятельно ознакомьтесь с результатами произведенного расчета. 2.6 Подключение электромагнитной задачи к расчету гидродинамики Для объединения решателей OpenOFAM & Elmer существует библиотека с открытым исходным кодом EOF-library, её установка описана в разделе 2.1. Пошаговая установка некоммерческого ПО на Windows 10. Теперь следует выполнить раздельную компиляцию библиотечного программного модуля (решателя), который позволяет передавать матрицы значений (например, силы Лоренца) из Elmer в OpenOFAM и наоборот (например, вектор скорости) из OpenOFAM в Elmer. Создайте папку solvers для компиляции решателей в своей рабочей папке (рис. 2.85) и скопируйте в него решатель через MC из $HOME/EOF-Library/solvers/mhdVx BPimpleFoam5.
Рис. 2.85. Создание нового кейса МГД задачи 76
После чего из рабочей папки solvers/mhdVxBPimpleFoam5 запустите консольную строку (Ctrl+O) и запустите компилятор командой wclean&&wmake (рис. 2.86).
Рис. 2.86. Запуск компиляции решателя
Для проверки компиляции решателя, не выходя из консольной строки напишите mhd и затем нажмите Tab, если все прошло без ошибок, строка автоматически заполнится именем откомпилированного решателя (рис. 2.87).
Рис. 2.87. Проверка компиляции решателя
После успешной компиляции необходимо объединить в одну папку case_mhd кейсы с гидродинамической и электромагнитной задачами. С помощью MC скопируйте: 1. В case_mhd все из папки $HOME/openfoam/openfoam6/tutorials/incompressible/pimplefoam/RAS/pitzdaily. 2. В case_mhd/system файл decomposepardict из папки $HOME/EOFLibrary/tests/levitation2d/system. 3. В case_mhd/constant/polymesh все из рабочей папки case/constant/polymesh (из главы Настройка решателей). 4. В case_mhd файл case.sif из папки $HOME/EOF-Library/tests/levitation2d/. 5. В case_mhd файл с геометрией электромагнитной задачи forelmer.unv. Далее изменить настройки решателя гидродинамической задачи следующим образом (рис. 2.88): в transportProperties измените кинематическую вязкость на вязкость GaInSt, добавьте значение плотности rho и па77
раметр отвечающий за пересчет электромагнитной задачи во время расчета гидродинамики maxRelDiff когда относительная разница, в данной задаче вектора скорости, (предыдущей и текущей итерации/вр.шага) в любой ячейке превышает заданное значение (1 – единожды, 0 – каждую). Не забывайте сохранять файлы после изменения. transportModel nu
Newtonian;
[0 2 -1 0 0 0 0] 1e-05;
transportModel
Newtonian;
nu
2.6315e-07;
rho
6080;
maxRelDiff
0.5;
Рис. 2.88. Изменение содержимого файла transportProperties
Данная задача будет решаться параллельно на нескольких процессорах их количество необходимо указать в файле system/decomposeParDict соответствии с возможностями персонального компьютера (если у вас одноядерный процессор пропустите этот шаг). В качестве примера изменим число ядер процессора с 2 на 4 (рис. 2.89). numberOfSubdomains
2;
numberOfSubdomains
4;
method
scotch;
method
scotch;
Рис. 2.89. Изменение содержимого файла decomposeParDict
Далее в controlDict измените время начала симуляции, время вычисления и формат записи (рис. 2.90). application
pimpleFoam;
application
pimpleFoam;
startFrom
latestTime;
startFrom
startTime;
... endTime
... 0.3;
endTime
... writeFormat
1;
... ascii;
writeFormat
binary;
Рис. 2.90. Изменение содержимого файла controlDict
После чего добавьте схемы интерполяции для передаваемых величин в fvSchemes (рис. 2.91) и укажите опорное значение давления для решателя в fvSolutions (рис. 2.92).
78
interpolationSchemes { default linear; }
interpolationSchemes { default linear; U cellPoint linear; JxB cellPoint linear; }
Рис. 2.91. Изменение содержимого файла fvSchemes PIMPLE { nNonOrthogonalCorrectors 0; nCorrectors 2; }
PIMPLE { nNonOrthogonalCorrectors nCorrectors pRefCell pRefValue }
0; 2; 0; 0;
Рис. 2.92. Изменение содержимого файла fvSolutions
Теперь необходимо создать файл с полем сил Лоренца для связки МГД задачи. Из рабочей папки case_MHD/0 запустите консольную строку (Ctrl+O) в MC, создайте файл JxB с помощью оператора «>» (> JxB) и укажите в нем (рис. 2.93): /*шапка*/ FoamFile { version 2.0; format ascii; class volVectorField; location "0"; object JxB; } // * * * * * * * * * * * * * * * * * * * * * * // dimensions [1 -2 -2 0 0 0 0]; означает все остальные internalField uniform (0 0 0); граничные условия, которые boundaryField не указаны в файле { wall { type zeroGradient; } ".*" { type wedge; } } //********************************************//
Рис. 2.93. Cодержимое файла JxB
Далее измените файлы с граничными и начальными условиями как показано на рис. 2.94.
79
U
p
internalField boundaryField { ".*" { type }
uniform (0 0 0);
internalField boundaryField { ".*" { type }
wedge;
wall {
uniform 0;
wedge;
wall { type
noSlip;
type
} }
}
epsilon
k
internalField boundaryField { ".*" { type } wall { type value }
internalField boundaryField { ".*" { type }
uniform 1e-5;
wedge;
wall { type value }
epsilonWallFunction; uniform 0;
}
}
nut
nuTilda
internalField boundaryField { ".*" { type } wall { type value }
zeroGradient;
}
wedge;
wall { type }
nutkWallFunction; uniform 0;
wedge;
kqRWallFunction; uniform 0;
internalField boundaryField { ".*" { type }
uniform 0;
uniform 1e-5;
uniform 0;
wedge;
zeroGradient;
} }
Рис. 2.94. Cодержимое файлов с граничными условиями
Перейдем к настройкам электромагнитной задачи. Сначала создайте новый файл с именем ELMERSOLVER_STARTINFO в папке с МГД задачей с помощью оператора «>» и пропишите в нем строчки, указанные на рис. 2.95. 80
case.sif 4
указывает файл с настройками электромагнитного решателя указывает кол-во используемых процессоров Рис. 2.95. Cодержимое файла ELMERSOLVER_STARTINFO
В файле case.sif измените имя папки с сеткой, частоту и плотность тока. В разделе Simulation закомментируйте input и сохранение результатов в файл т. к. в нестационарной задаче они будут занимать слишком много ресурсов (рис. 2.96). Header CHECK KEYWORDS Warn Mesh DB "." "meshElmer" Include Path "" Results Directory "" End
Header CHECK KEYWORDS Warn Mesh DB "." "forElmer" Include Path "" Results Directory "" End
$frequency = 5000.0 $current = 4e7
$frequency = 50 $current = sqrt(2)*10e6/3
Simulation ... Solver Input File = case.sif Post File = case.vtu Output Intervals = 2 End
Simulation ... !Solver Input File = case.sif !Post File = case.vtu Output Intervals = 2 End
Рис. 2.96. Изменение содержимого файла case.sif
Затем аналогично предыдущей электромагнитной задаче правильно определите тела. После чего в разделе Solver 1 измените переменную, принимаемую Elmer из OpenOFAM со скалярной электропроводности на вектор скоростей (рис. 2.97). Solver 1 Equation = OpenFOAM2Elmer Procedure = "OpenFOAM2Elmer" "OpenFOAM2ElmerSolver"
Solver 1 Equation = OpenFOAM2Elmer Procedure = "OpenFOAM2Elmer" "OpenFOAM2ElmerSolver"
Target Variable 1 = String "OF conductivity" End
Target Variable 1 = String "OF U1" Target Variable 2 = String "OF U2" Target Variable 3 = String "OF U3" End
Рис. 2.97. Изменение содержимого раздела Solver 1 файла case.sif
В разделе Solver 2 последние строчки замените на импорт вектора скоростей с интерполяцией (рис. 2.98).
81
Solver 2 ... Exported Variable 1 = -dg "OF conductivity" Exported Variable 1 Mask = String "material:mapping" End
Solver 2 ... Exported Variable -dg "OF U1" Exported Variable String "material: Exported Variable Exported Variable "material: mapping" Exported Variable Exported Variable "material: mapping" End
1 = 1 Mask = mapping" 2 = -dg "OF U2" 2 Mask = String 3 = -dg "OF U3" 3 Mask = String
Рис. 2.98. Изменение содержимого раздела Solver 2 файла case.sif
Затем, аналогично предыдущей ЭМ задаче, задайте свойства материалов. Переходим к разделам Body Force, первый переименуйте в velocities и укажите переданные скорости из OpenOFAM. Второй назовите current и укажите значение real current (рис. 2.99). Body Force 1 Name = "Current pos" Current Density = Real $current End Body Force 2 Name = "Current neg" Current Density = -Real $current End
Body Force 1 Name = "velocities" Lorentz velocity 1 = Equals "OF U1" Lorentz velocity 2 = Equals "OF U2" Lorentz velocity 3 = Equals "OF U3" End Body Force 2 Name = "Current" Current Density = Real $current End
Рис. 2.99. Изменение содержимого раздела Body Force
Измените раздел Material 3. Укажите реальную проводимость GaInSt и закомментируйте последнюю строчку (рис. 2.100). Material 3 Name = "Melt" Electric Conductivity = Equals "OF conductivity" Relative Permittivity = 1 Relative Permeability = 1 mapping = Logical True End
Material 3 Name = "Melt" Electric Conductivity = 3850000 Relative Permittivity = 1 Relative Permeability = 1 !mapping = Logical True End
Рис. 2.100. Изменение содержимого раздела Material 3
Теперь вернемся вверх, к разделам Body (рис. 2.101) и в теле melt добавим нагрузку Body Foce 1, а в теле coil изменим нагрузку на Body Foce 2.
82
Body 1 Target Bodies(1) = 2 Name = "coil" Equation = 1 Material = 1 Body Force = 1 End
Body 1 Target Bodies(1) = 2 Name = "coil" Equation = 1 Material = 1 Body Force = 2 End
Body 2 Target Bodies(1) = 1 Name = "melt" Equation = 1 Material = 3 End
Body 2 Target Bodies(1) = 1 Name = "melt" Equation = 1 Material = 3 Body Force = 1 End
Рис. 2.101. Изменение содержимого разделов Body
Сохраните файл настроек. Теперь необходимо разбить сетку на 4 участка, для каждого процессора, методом метис http://glaros.dtc.umn.edu/gkhome/views/metis [51] для электромагнитной задачи и подобным ему методом scotch для гидродинамической задачи. Из папки case_MHD с помощью MC вызовите консольную строку (Ctrl+O) и последовательно укажите команды: ElmerGrid 8 2 forElmer.unv -scale 0.001[1 0.001 0.001] -metis 4
и decomposePar
Затем запустите параллельные вычисления на всех ядрах ПК командой: mpirun -quiet -np 4 mhdVxBPimpleFoam -parallel : -np 4 ElmerSolver_mpi > JxB.log &
или для вычисления на одноядерном процессоре командой: mpirun -quiet -np 1 mhdVxBPimpleFoam -parallel : -np 1 ElmerSolver_mpi > JxB.log &
Обработка полученных данных Просмотр полученных результатов осуществляется в ParaView; для этого создайте и откройте файл case.foam в папки case_mhd. В свойствах загружаемого файла выберите Case type – decomposed и ниже выберите свойство Add dimensional units to array names. После этого при выборе отображаемой величины рядом автоматически будет указываться единицы измерения в формате OpenOFAM.
83
Далее примените фильтр Transform (ctrl+space = tr) с параметром Rotate (90 0 0). Геометрия перевернется так что осевой линией в пространстве координат постпроцессора станет Z. Сделайте Slice по нормали к Y. На нем добавьте Glyph с отображаемой переменной Solid Color и следующими свойствами: Glyph Type Orientation Array Scale Array Vector Scale Mode Scale Factor Glyph Mode Stride
Arrow U U Scale by Magnitude 0.01 Every Nth Point 2
После чего в дереве построения выберите Slice1 и примените к нему RotationalExtrusion (ctrl+space=ro) со свойствами resolution – 180 и angle – 180. Затем снова выберите Slice1 и примените к нему фильтр Transform с параметром Rotate (0 0 180). Вновь используйте RotationalExtrusion уже со свойствами resolution – 90 и angle – 90. Теперь для RotationalExtrusion1 отображаемой переменной укажите скорость U, а для RotationalExtrusion2 силы Лоренца JxB. Для изменения палитры (рис. 2.102) выберите редактирование цвета в панели инструментов (1). Откроется новое окно справа от области графического отображения. На нем выберите пользовательский диапазон значений (2) и введите значения от 0 до 8 000 (3). Затем, ниже, откройте выбор предустановленной цветовой палитры (4). Отобразите все цветовые пресеты (5). Прокрутите вниз и выберите erdc_red2yellow_BW (6).
84
2 1
3
5
4
6
Рис. 2.102. Изменение палитры
Если все было проделано правильно, то при сравнении первого расчетного шага и последнего вы увидите незначительное искажение сил Лоренца в расплаве (рис. 2.103), это обратное влияние гидродинамических процессов на электромагнитные.
Рис. 2.103. Сравнение результатов расчета
85
БИБЛИОГРАФИЧЕСКИЙ СПИСОК 1. Davidson, P. A. An Introduction to Magnetohydrodynamics / P. A. Davidson. – Cambridge : Cambridge university press, 2016. – 431 p. 2. Бааке, Э. МГД технологии в металлургии. Интенсивный курс Специализация IV / Э. Бааке, Д. Барглик, С. Лупи, А. Никаноров, Е. Павлов, С. Павлов, М. Первухин, В. Тимофеев, С. Тимофеев, М. Хацаюк, А. Якович. – СПб. : Изд-во СПбГЭТУ «ЛЭТИ», 2013. – 250 с. 3. Вольдек, А. И. Электрические машины: учебник для студентов высш. техн. учебн. заведений / А. И. Вольдек. – 3-е изд. – Л.: Энергия, 1978. – 832 с. 4. Верте, Л. А. МГД технология в производстве черных металлов / Л. А. Верте. – М.: Металлургия, 1990. – 120 с. 5. Верте, Л. А. Магнитная гидродинамика в металлургии / Л. А. Верте. – М.: Металлургия, 1975. – 287 с. 6. Альтгаузен, А. П. Электротермическое оборудование: справочник / А. П. Альтгаузен. – М.: Энергия, 1980. – 416 с. 7. Нейман, Л. Р. Теоретические основы электротехники: в 2-х т. Учебник для вузов. Том 2 / Л. Р. Нейман, К. С. Демирчян. – 3-е изд., перераб. и доп. – Л.: Энегоиздат, 1981. – 416 с. 8. Вольдек, А. И. Индукционные МГД-машины с жидкометаллическим рабочим телом / А. И. Вольдек. – Л.: Энергия, 1970. – 272 с. 9. Гельфгат, Ю. М. Жидкий металл под действием электромагнитных сил / Ю. М. Гельфгат, О. А. Лиелаусис, Э. В. Щербинин. – Рига: Зинатне, 1975. – 248 с. 10. Ландау, Л. Д. Теоретическая физика: гидродинамика / Л. Д. Ландау, Е. М. Лифшиц. – М.: ФИЗМАТЛИТ, 2001. – 736 с. 11. Бессонов, Л. А. Теоретические основы электротехники / Л. А. Бессонов. – Изд. 6-е, перераб. и доп. – М.: Высш. школа, 1973. – 752 с. 12. Анго, А. Математика для электро- и радиоинженеров / А. Анго. – М.: Наука, 1965. – 780 с. 13. Existence And Smoothness Of The Navier–Stokes Equation / URL: http://www.claymath.org/sites/default/files/navie 14. Hansbo, P. A free-lagrange finite element method using space-time elements / P. Hansbo // Comp. meth. appl. Mech. Engrg. – 2000. – №188. – P. 347–361. 15. Chung, T. J. Computational fluid dynamics / T. J. Chung. – Cambridge: Published by the press syndicate of the University of Cambridge, 2001. – 1012 p.rstokes.pdf 16. Voller, V. R. Modeling Solidification Processes [Technical report] / V. R. Voller // Mathematical Modeling of Metals Processing Operations Conference. – 1987.
86
17. Voller, V. R. The Modeling of Heat, Mass and Solute Transport in Solidification Systems / V. R. Voller, A. D. Brent, C. Prakash // Int. J. Heat Mass Transfer. – 1989. – №9. – P. 1719–1731. 18. Voller, V. R. A Computational Modeling Framework for the Analysis of Metallurgical Solidification Process and Phenomena [Technical report] / V. R. Voller, A. D. Brent, K. J. Reid // Conference for Solidification Processing. – September, 1987. 19. Voller, V. R. A Fixed-Grid Numerical Modeling Methodology for Convection Diffusion Mushy Region Phase-Change Problems / V. R. Voller, C. Prakash // Int. J. Heat Mass Transfer. – 1987. – №30. – P. 1709–1720. 20. Voller, V. R. Generalized Source-Based Method for Solidification Phase Change / V. R. Voller, C. R. Swaminathan // Numer. Heat Transfer. – 1991. – №2. – P. 175–189. 21. Hirt, C. W. Volume of fluid (VOF). Method for the dynamics of free boundaries / C. W. Hirt, B. D. Nichols // Journal of computational physics. – 1981. – №39. – P. 201–226. 22. Sethian, J. A. Tracking interfaces with level sets / J. A. Sethian // American scientist. – 1998. – №85. – P. 254. 23. Остроумов, Г. А. Свободная тепловая конвекция в условиях внутренней задачи / Г. А. Остроумов. – М.: Гостехиздат, 1952. – 286 с. 24. Гершуни, Г. 3. Конвективная устойчивость несжимаемой жидкости / Г. З. Гершуни, Е. М. Жуховицкий. – М.: Наука, 1972. – 392 с. 25. Гершуни, Г. З. Устойчивость конвективных течений / Г. З. Гершуни, Е. М. Жуховицкий. – М.: Наука, 1989. – 320 с. 26. Siegel, R. Thermal Radiation Heat Transfer / R. Siegel, J.R. Howell. – Washington DC: Hemisphere Publishing Corporation, 1992. – 646 p. 27. Cheng, P. Two-Dimensional Radiating Gas Flow by a Moment Method / P. Cheng // AIAA Journal. – 1964. – №2. – P. 1662–1664. 28. Зенкевич, О. Метод конечных элементов в технике / О. Зенкевич. – М.: Мир, 1975. – 318 с. 29. Смирнов, Е. М. Метод конечных объёмов в приложении к задачам гидрогазодинамики и теплообмена в областях сложной геометрии / Е. М. Смирнов, Д. К. Зайцев // Научно-технические ведомости. – 2004. – №2. – С. 70–81. 30. GNU General Public License / URL: http://ru.wikipedia.org/ wiki/GNU_GPL 31. OpenFOAM / URL: https://www.openfoam.com/documentation/ overview 32. Elmer documentation / URL: https://www.csc.fi/web/elmer/ documentation 33. Vencels, J. EOF Library: Open-Source Elmer and OpenFOAM Coupler for Simulation of MHD With Free Surface / J. Vencels, A. Jakovics, V. Geza, M. Scepanskis // Proceedings of XVIII International UIE – Congress Electrotechnologies for Material Processing. – 2017. 87
34. Proceedings of the VI International Conference on Coupled Problems in Science and Engineering / Venice, 2015. – 1 341 p. 35. Proceedings of the VII International Conference on Coupled Problems in Science and Engineering / Rhodes, 2017. – 1 304 p. 36. Авдулов, А. А. Электромагнитный модификатор слитка в роторной литейной машине: автореф. дис. ... канд. техн. наук: 05.09.03 / А. А. Авдулов. – Красноярск, 2015. – 24 с. 37. Kirpo, M. Modeling of turbulence properties and particle transport in recirculated flows: Ph.D. Thesis / M. Kirpo. – Riga, 2008. – 184 p. 38. Baake, E. Large eddy simulation modeling of heat and mass transfer in turbulent recirculated flows / E. Baake, B. Nacke, A. Umbrashko, A. Jakoviċs // Magnetohydrodynamics. – 2003. – №3. – P. 291-298. 39. Дрэвек, Р. Экспериментальное и численное исследование течения расплава в индукционных канальных печах / Р. Дрэвек, А. Якович, А. Мюльбауер, Б. Накэ // Магнитная гидродинамика. – 1996. – №4. – С. 433–442. 40. Фризен, В. Е. Индукционные комплексы для инновационных электрометаллургических технологий: автореф. дис. ... д-ра техн. наук: 05.09.10 / В. Е. Фризен. – Екатеринбург, 2014. – 39 с. 41. Хацаюк, М. Ю. Индукционная установка с МГД воздействием на высоколегированные алюминиевые сплавы в процессе их приготовления и разливки: дис. ... канд. техн. наук: 05.09.01 / М. Ю. Хацаюк. – Красноярск, 2013. – 154 с. 42. Бояревич, В. В. Электровихревые течения / В. В. Бояревич, Я. Ж. Фрейберг, Э. В. Щербинин. – Рига: Знание, 1985. – 315 с. 43. Notepad++ / URL: https://notepad-plus-plus.org/ 44. SALOME / URL: https://www.salome-platform.org/ 45. ParaView / URL:https://www.paraview.org/ 46. Microsoft MPI / URL:https://docs.microsoft.com/en-us/messagepassing-interface/microsoft-mpi 47. OpenFOAM: Standard solvers / URL: https://www.openfoam.com/ documentation/user-guide/a-reference/a.1-standard-solvers 48. Elmer Models Manual / URL: http://www.nic.funet.fi/ pub/sci/physics/elmer/doc/ElmerModelsManual.pdf 49. ElmerSolver Manual / URL: http://www.nic.funet.fi/ pub/sci/physics/elmer/doc/ElmerSolverManual.pdf 50. Elmer non-GUI Tutorials / URL: http://www.nic.funet.fi/ pub/sci/physics/elmer/doc/ElmerTutorials-nonGUI.pdf
88
ПРИЛОЖЕНИЕ А #!/bin/bash sudo apt-get update sudo apt-get -y upgrade sudo apt-get -y install build-essential flex bison git-core cmake zlib1gdev \ libboost-system-dev libboost-thread-dev libopenmpi-dev openmpi-bin \ libreadline-dev libncurses-dev libxt-dev git gfortran libblas-dev liblapack-dev \ rpm g++ binutils-dev libxext-dev libxrender-dev libstdc++5 \ libgl1-mesa-dev libglu1-mesa-dev mkdir elmer cd elmer git clone https://github.com/ElmerCSC/elmerfem.git mkdir build cd build cmake -DWITH_ELMERGUI:BOOL=FALSE \ -DWITH_MPI:BOOL=TRUE -DCMAKE_INSTALL_PREFIX=../install ../elmerfem make -j4 install echo 'export ELMER_HOME=$HOME/elmer/install' >> $HOME/.bashrc echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ELMER_HOME/lib' >> $HOME/.bashrc echo 'export PATH=$PATH:$ELMER_HOME/bin' >> $HOME/.bashrc cd mkdir openfoam cd openfoam wget -O - http://dl.openfoam.org/source/6 | tar xvz wget -O - http://dl.openfoam.org/third-party/6 | tar xvz mv OpenFOAM-6-version-6 OpenFOAM-6 mv ThirdParty-6-version-6 ThirdParty-6 echo '. $HOME/openfoam/OpenFOAM-6/etc/bashrc' >> $HOME/.bashrc cd OpenFOAM-6 . $HOME/.bashrc ./Allwmake -j cd git clone https://github.com/jvencels/EOF-Library cd $HOME/EOF-Library/libs/coupleElmer . $HOME/.bashrc wclean wmake elmerf90 -o $HOME/EOF-Library/libs/Elmer2OpenFOAM.so \ -J$HOME/EOF-Library/libs $HOME/EOF-Library/libs/Elmer2OpenFOAM.F90 elmerf90 -o $HOME/EOF-Library/libs/OpenFOAM2Elmer.so \ -J$HOME/EOF-Library/libs $HOME/EOF-Library/libs/OpenFOAM2Elmer.F90 echo 'export EOF_SRC=$HOME/EOF-Library/libs' >> $HOME/.bashrc echo 'export LD_LIBRARY_PATH=$EOF_SRC:$LD_LIBRARY_PATH' >> $HOME/.bashrc echo 'export LD_LIBRARY_PATH=$FOAM_USER_LIBBIN:$LD_LIBRARY_PATH' >> $HOME/.bashrc . $HOME/.bashrc
89
Учебное издание
ЧИСЛЕННОЕ МОДЕЛИРОВАНИЕ ПРОЦЕССОВ МАГНИТНОЙ ГИДРОДИНАМИКИ НА БАЗЕ ОТКРЫТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ (OPENFOAM/EOF/ELMER) Учебно-методическое пособие
Составители: Сизганов Никита Вячеславович Хацаюк Максим Юрьевич Тимофеев Виктор Николаевич
Компьютерная вёрстка Е. А. Сафиной
Подписано в печать 05.07.2021. Печать плоская. Формат 60×84/16 Бумага офсетная. Усл. печ. л. 5,3. Тираж 100 экз. Заказ № 13917 Библиотечно-издательский комплекс Сибирского федерального университета 660041, Красноярск, пр. Свободный, 82а Тел. (391) 206-26-16; http://bik.sfu-kras.ru, E-mail: [email protected]
Для заметок