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

Принятые обозначения:

  1. Слово, заключенное в угловые скобки <…> называется тегом (например: <tag>…</tag>).
  2. Тег состоит из открывающей части (<tag>), атрибутов, значения и закрывающей части </tag>.
  3. Необязательные значения в схемах заключены в квадратные скобки […].
  4. Обязательные значения обозначены фигурными скобками {…}.
  5. Все атрибуты должны заключаться в кавычки “…”.

Пример тега: <tag attr=”attribute”>12345</tag>.

Здесь attr – имя атрибута; attribute – значение атрибута; 12345 – значение тега.

Все числовые значения задаются в системе Си.

Алфавит пользовательских имен состоит из букв латинского алфавита, цифр, пробела и знака подчеркивания.

Описание области должно быть заключено в тег <region>. Текст, не ограниченный тегами, считается комментарием. У каждой области имеется ряд характеристик, которые присутствуют обязательно. Это размеры области, тип границ области, шаги разбивки области по координатам, шаг по времени, вещества и фазы, которые присутствуют в данной области, а также начальные и граничные условия.

 

ТИПЫ ЗАПОЛНЕНИЙ ОБЛАСТИ И ГРАНИЦ

Существует 6 типов заполнений:

  1. empty – пустая ячейка. Является расчетной.
  2. open – открытая ячейка. Имитирует бесконечно удаленную стенку.
  3. adhes– прилипание. Твердое заполнение.
  4. impen – проскальзывание. Твердое заполнение.
  5. hard – жесткая граница. Численно задаются все значения (скорость, тепрература, давление, плотность).
  6. soft – мягкая граница. По давлению задается нулевой градиент. Остальные значения задаются численно.

ЗАДАНИЕ РАЗМЕРОВ ОБЛАСТИ

Все размеры области должны быть заключены в тег <bounds>.

Так как расчетная область представляет собой параллелепипед, то требуется задать координаты двух противоположных вершин (xmin, ymin, zmin) и (xmax, ymax, zmax).

Общая схема задания размеров:

<bounds>
<xmax type=”{тип поверхности}” [name = ”{имя границы}”]>{координата}</xmax>
<ymax type=”{тип поверхности}” [name =” {имя границы}”]>{координата}</ymax>
<zmax type=”{тип поверхности}” [name = ”{имя границы}”]>{координата}</zmax>
<xmin type=”{тип поверхности}” [name = ”{имя границы}”]>{координата}</xmin>
<ymin type=”{тип поверхности}” [name = ”{имя границы}”]>{координата}</ymin>
<zmin type=”{тип поверхности}” [name = ”{имя границы}”]>{координата}</zmin>
</bounds>

Здесь

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

Рассмотрим пример задания границ области:

<bounds> <xmin type="hard" name=”bound”>0</xmin>
<xmax type="open">10</xmax>
<ymin type="impen">0</ymin>
<ymax type="open">3</ymax>
<zmin type="impen">0</zmin>
<zmax type="open">3</zmax>
</bounds>

В примере задается параллелепипед размером 10х3х3 с двумя твердыми границами проскальзывания ymin и zmin. К границе xmin с именем bound в дальнейшем должны быть приложены граничные условия.

ЗАДАНИЕ СЕТОЧНЫХ ПАРАМЕТРОВ

Схема задания дискретизации:

<steps>
<timestep>{шаг по времени}</timestep>
<xstep>{число}</xstep>
<ystep>{число}</ystep>
<zstep>{число}</zstep>
</steps>

Здесь в теге <timestep> задается шаг по времени в секундах, а в тегах <xstep>, <ystep> и <zstep> - размеры ячейки в метрах.

Пример:

<steps>
<xstep>0.2</xstep>
<ystep>0.2</ystep>
<zstep>0.2</zstep>
<timestep>0.001</timestep>
</steps>

ЗАДАНИЕ РАССМАТРИВАЕМЫХ ВЕЩЕСТВ

Все вещества, которые рассматриваются в расчетной области, должны быть предварительно описаны в теге <matters>. Для этого для каждого вещества надо задать имя и коэффициент диффузии [с/м2].

Схема:

<matters>
<matter name=”{название 1-го вещества}”>
<diffusion>{коэф. диффузии}</diffusion>

</matter>
<matter name=”{название 2-го вещества}”>
<diffusion>{коэф. диффузии}</diffusion>

</matter>
.......................

</matters>

Пример:

<matters>
<matter name="CO">
<diffusion>0.32</diffusion>

</matter>
<matter name="NO">
<diffusion>0.22</diffusion>

</matter>
</matters>

В примере описываются два вещества "CO" и "NO" со своими коэффициентами.

ЗАДАНИЕ ФАЗ

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

Описание всех фаз должно быть заключено в тег <phases>.

Описание газовой фазы (gas) включает в себя <adiabatic> - коэффициент адиабаты.

Описание дисперсной фазы (“drop”) содержит:

Общая схема описания фаз:

<phases>
<phase sort="gas">
<adiabatic>{коэф. адиабаты}</adiabatic>

</phase>
<phase sort="drop">
<matter name=”{1-е вещество, из которого состоит фаза}”>
<min>{Минимальное содержание}</min>
<max>{Максимальное содержание}</max>
<count>{Количество делений}</count>
</matter>
<matter name=”{2-е вещество, из которого состоит фаза}”>
<min>{Минимальное содержание}</min>
<max>{Максимальное содержание}</max>
<count>{Количество делений}</count>
</matter>
………………………………………

<diameter>{диаметр}</diameter>

<density>{плотность}</density>

</phase>
</phases>

Пример:

<phases>
<phase sort="gas">
<adiabatic>2.7</adiabatic>
</phase>
<phase sort="drop">
<diameter>0.001</diameter>
<density>1000</density>
<matter name="CO">
<min>0</min>
<max>1</max>
<count>10</count>
</matter>
<matter name="NO">
<min>0</min>
<max>2</max>
<count>10</count>
</matter>
</phase>
</phases>

В данном примере у газовой фазы задан коэффициент адиабаты равный 2.7. Дисперсная фаза представлена 100 фракциями (10 разбиений по CO и 10 разбиений по NO). Минимальное и максимальное содержание CO во фракциях соответственно 0 и 1 кг; NO – 0 и 2 кг соответственно. Диаметр частиц 0.001м. Плотность – 1000 кг/м3.

СОЗДАНИЕ ОБЪЕКТОВ

Объекты бывают двух видов: простейший – точка, и макрообъекты – параллелепипед, шар и др. Макрообъекты физически присутствуют в области, а простейший объект точка необходим только для задания макрообъектов.

СОЗДАНИЕ ТОЧКИ

Точка является простейшим объектом. Она задается уникальным числовым идентификатором <id> и своими координатами в пространстве. Ее схема:

<point>
[<id>{идентификатор точки}</id>]
<x>{координата}</x>
<y>{координата}</y>
<z>{координата}</z>
</point>

Пример:

<point>
<id>1</id>
<x>2</x>
<y>0.5</y>
<z>0</z>
</point>

Создается точка с координатами (2,0.5,0).

Если точка объявляется вне описания макрообъекта, то обязательно наличие идентификатора. Им может стать любое натуральное число. По этому идентификатору можно будет в дальнейшем ссылаться на данную точку:

<point>{идентификатор точки}</point>

Если точка объявляется внутри описания макрообъекта, то она только в нем и видна. В этом случае идентификатор не обязателен.

СОЗДАНИЕ МАКРООБЪЕКТОВ

Перечислим одинаковые черты макрообъектов:

  1. Если типом поверхности является hard или soft, то необходимо задать имя. По этому имени ко всем границам макрообъекта будут приложены соответствующие граничные условия.
  2. Если типом поверхности является empty, то возможно задать имя области с последующим приложением начальных условий.
  3. {точка} – создание новой точки или ссылка на уже созданную

СОЗДАНИЕ ПАРАЛЛЕЛЕПИПЕДА

Любой параллелепипед можно задать четырьмя точками – одной вершиной и тремя ребрами.

Схема создания параллелепипеда:

<bar type=”{тип поверхности}” name=”{имя границы/области}”>
{точка 1}

{точка 2}

{точка 3}

{точка 4}

</bar>

СОЗДАНИЕ ПИРАМИДЫ

Для создания пирамиды так же необходимо задать четыре точки. Схема:

<piramid type=”{тип поверхности}” name=”{имя границы/области}”>
{точка 1}

{точка 2}

{точка 3}

{точка 4}

</piramid>

СОЗДАНИЕ ШАРА

Необходимо указать центр шара и его радиус:

<ball type=”{тип поверхности}” name=”{имя границы/области}”>

{точка}

<radius>{радиус}</radius>
</ball>

СОЗДАНИЕ ЦИЛИНДРА

Цилиндр возможно задать двумя способами:

  1. Задать центры нижнего и верхнего основания и радиус сечения:
  2. <cilinder type=”{тип поверхности}” name=”{имя границы/области}”>

    {точка 1}

    {точка 2}

    <radius>{радиус}</radius>

    </cilinder>

  3. Задать центр нижнего основания, радиус, высоту цилиндра, угол φ – угол между проекцией нормали к нижнему основанию на плоскость XOY и осью X, и угол ψ – угол между нормалью и плоскостью XOY

<cilinder type=”{тип поверхности}” name=”{имя границы/области}”>

{точка}

<radius>{число}</radius>

<normal>

<angleFi>{угол φ}</angleFi>

<anglePsi>{число}</anglePsi>

</normal>

<height>{угол ψ}</height>

</cilinder>
ЗАДАНИЕ НАЧАЛЬНЫХ И ГРАНИЧНЫХ УСЛОВИЙ

Описание начальных и граничных условий должно быть заключено в тег <conditions>.

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

Описание граничных условий заключено в тег <boundary>.

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

Описание начальных условий заключено в теге <initial>.

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

Условия задаются для каждой из двух фаз: газовой и дисперсной. В каждой из двух фаз задаются распределения скорости <velocity>, плотности <density> и давления <pressure>. В газовой фазе принято, что плотность, давление и три проекции скорости линейно зависят от координат. Например:

Схема задания скорости:

<velocity>
<x>
[<cx>{число}</cx>]
[<cy>{число}</cy>]
[<cz>{число}</cz>]
[<c>{число}</c>]
</x>
<y>
[<cx>{число}</cx>]
[<cy>{число}</cy>]
[<cz>{число}</cz>]
[<c>{число}</c>]
</y>
<z>
[<cx>{число}</cx>]
[<cy>{число}</cy>]
[<cz>{число}</cz>]
[<c>{число}</c>]
</z>
</velocity>

Как видно из схемы, для каждой компоненты необходимо задать 4 крнстанты. Однако если имеются нулевые константы, то их вместе с окружающими тегами можно опустить. Если все константы при переменных нулевые, то можно указать только свободную константу, опустив тег <c>. Поясним сказанное на примере:

<velocity>
<x>
<cx>10</cx>
<c>-2</c>
</x>
<y>
<cy>-5</cy>
</y>
<z>10</z>
</velocity>

Если обозначить проекции скорости на оси координат через U, V и W, то:

В задании плотности и давления присутствуют только 4 константы:

<pressure>
[<cx>{число}</cx>]
[<cy>{число}</cy>]
[<cz>{число}</cz>]
[<c>{число}</c>]
</pressure>
<density>
[<cx>{число}</cx>]
[<cy>{число}</cy>]
[<cz>{число}</cz>]
[<c>{число}</c>]
</density>
В дисперсной фазе скорость и давление задается таким же образом. Однако задание плотности происходит законом статистического распределения. При этом требуется задать вид распределения и значение необходимых параметров по каждому из веществ. Например, для нормального распределения это математическое ожидание и дисперсия. В настоящее время реализовано только нормальное распределение.

Так как закон распределение нормирован, то используется множитель <factor>, который также линейно зависит от координат. Его размерность кг/м3.

Общая схема:

<density>
<factor>
[<cx>{число}</cx>]
[<cy>{число}</cy>]
[<cz>{число}</cz>]
[<c>{число}</c>]
</factor>
<distribution type=”{закон распределения}”>

<param number="1">
<matter name=”{1е вещество}”>{значение}</matter>
<matter name=”{2е вещество}”>{значение}</matter>
………………………………………………...

</param>
<param number="2">
<matter name=”{1е вещество}”>{значение}</matter>
<matter name=”{2е вещество}”>{значение}</matter>
………………………………………………...

</param>
</distribution>
</density>

Пример:

<density>
<factor>1</factor>
<distribution type="normal">

<param number="1">
<matter name="CO">0</matter>
<matter name="NO">1</matter>
</param>
<param number="2">
<matter name="CO">0.1</matter>
<matter name="NO">0.1</matter>
</param>
</distribution>
</density>

Так же в начальных и граничных условиях необходимо задать концентрацию каждого вещества [кг/м3]. Распределение концентрации также линейно зависит от координат. Схема задания концентрации выглядит следующим образом:

<matter name=”{1е вещество}”>{>
<concentration>

[<cx>{число}</cx>]
[<cy>{число}</cy>]
[<cz>{число}</cz>]
[<c>{число}</c>]
</concentration>
</matter>
<matter name=”{2е вещество}”>{>
<concentration>

[<cx>{число}</cx>]
[<cy>{число}</cy>]
[<cz>{число}</cz>]
[<c>{число}</c>]
</concentration>
</matter>

::...:::::::::::::...

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

Пример задания начальных условий:

<initial name="default">
<phase sort="gas">
<velocity>

<x>
<z>10</z>
</x>
<y>
<z>10</z>
</y>
<z>
<z>10</z>
</z>
</velocity>
<density>1.3</density>
<pressure>10000</pressure>
</phase>

<phase sort="drop">
<velocity>
<x>
<z>10</z>
</x>
<y>
<z>10</z>
</y>
<z>
<z>10</z>
</z>
</velocity>
<pressure>10000</pressure>
<density>
<factor>1</factor>
<distribution type="normal">
<param number="1">
<matter name="CO">0</matter>
<matter name="NO">1</matter>
</param>
<param number="2">
<matter name="CO">0.1</matter>
<matter name="NO">0.1</matter>
</param>
</distribution>
</density>
</phase>
<matter name="CO">
<concentration>0</concentration>
</matter>
<matter name="NO">
<concentration>0</concentration>
</matter>
</initial>
Начальные условия заданы для области с именем default. Скорости фаз зависят только от высоты (координаты z). В дисперсной фазе распределение плотности происходит по нормальному закону. Концентрация веществ CO и NO равна нулю.