Область расчёта

Время чтения


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

Задание Области расчёта

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

Доступные для использования размеры ячеек Областей расчёта могут быть рассчитаны по формуле

{width=30%}

Задание параметра BaseSize

Область расчёта передаётся в файл FDS посредством группы параметров MESH (Сетка), а также группы параметров VENT, если у области расчёта имеются «открытые» грани. В простейших сценариях соответствие Области расчёта и Сетки может быть однозначное. Но в общем случае соответствие лишь приблизительное, так как, например, одна Область расчета может во входном файле FDS формировать несколько групп MESH или, даже наоборот, несколько Областей расчета может преобразоваться в одну группу MESH.

Рассмотрим группу MESH.

&MESH IJK = 36, 24, 12 XB = -1, 8, 1, 7, -0.1, 3 MPI_PROCESS=0/

Здесь параметр XB задаёт координаты прямоугольного параллелепипеда, определяющего область расчёта в FDS. Параметр IJK задаёт, на какое количество ячеек вдоль каждой оси координат будет разбита область. В приведённом выше примере область расчёта расположена между координатами -1 м и 8 м по оси X и разбит вдоль этой оси на 36 ячеек. Соответственно, размер ячейки по оси X составляет 0.25 м.

Параметр MPI_PROCESS группы MESH задаёт номер MPI-процесса, в котором будет производиться расчёт для данной группы MESH. Имеет смысл только при имеющейся аппаратной возможности многопоточного расчёта, а количество процессов будет находиться в пределах заданного в Параметрах моделирования пожара значения.

Задание Количества процессов

Наружные грани области расчёта в FDS, по умолчанию, считаются «закрытыми», то есть непроницаемыми для воздуха и опасных факторов пожара. В свойствах Области расчёта можно указать, какие грани считать «открытыми». Через «открытые» грани воздух, дым и тепловое излучение могут беспрепятственно покидать Область расчёта. Для «открытых» граней в файл FDS добавляется код, подобный следующему:

&VENT XB=1, 1, 1, 7, 0, 3 SURF_ID='OPEN'/

Здесь параметр XB отвечает за координаты грани, которую необходимо сделать «открытой». Причём одна из пар координат должна быть тождественной, поскольку грань является плоской. Параметр SURF_ID, имеющий значение ‘OPEN’, указывает на то, что грань будет покрыта поверхностью, обладающей свойствами открытого пространства.

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

Размеры Области расчёта и Размер ячейки

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

Высота Области расчета не может быть меньше высоты этажа, на котором она расположена.

В Fenix+ 3 размеры ячеек по осям X и Y всегда одинаковые и равны величине, указанной при создании Области расчёта. Количество ячеек вдоль осей X и Y определяется делением размеров Области расчёта на размер ячейки.

Количество ячеек по оси Z определяется следующим образом. Высота Области расчёта делится на размер ячейки по горизонтали. Полученное число округляется до ближайшего целого, и считается количеством ячеек по вертикали.

Размещение нескольких Областей расчёта

На одном этаже можно разместить несколько Областей расчета. Их размеры и другие параметры (размер ячейки, состояние открытых граней) могут быть разными. Расположение областей расчета друг относительно друга может быть произвольным: они могут пересекаться, касаться или вообще не иметь общих точек.

FDS предъявляет достаточно много требований к группам MESH и к их взаимному расположению.

Выравнивание MESH{width=70%}

Преобразование Областей расчёта

По умолчанию, Fenix+ 3 преобразует Области расчета в группы MESH таким образом, чтобы выполнить все требования FDS (когда установлен флажок для параметра Автоматически корректировать области расчета).

Автоматически корректировать области расчета

Преобразование Областей расчета в Сетки состоит из следующих основных этапов:

  1. “Объединение“. Все области расчета с ячейкой одного размера по возможности объединяются в более крупные области. При этом:
  • устраняются пересечения областей расчета. Если пересекаются области с разными размерами ячейки, то из области с крупным размером ячейки исключается пересечение с областью расчета с мелким размером ячейки, а оставшаяся часть разбивается на несколько прямоугольных областей.
  • увеличиваются области расчета в направлениях, где количество ячеек меньше 3.
  1. “Разбиение“. Если количество потоков, которое пользователь хочет использовать для моделирования, больше количества получившихся на первом этапе областей, то те из них, в которых больше всего ячеек, разбиваются пополам в направлении с наибольшим количеством ячеек. Разбиение прерывается, если:
  • количество имеющихся областей равно или больше желаемого количества потоков.
  • границы областей, которые получились бы при разбиении самой крупной области, попадают на одну из групп VENT во входном файле FDS (группы VENT располагаются в месте расположения очага пожара или клапана дымоудаления)
  • больше нет MESH, которые можно разбить. После этого этапа получаются области, полностью соответствующие сеткам во входном файле FDS. Так как разбиение может прерваться, то количество сеток может быть меньше желаемого количества потоков.
  1. “Балансировка“. Всем получившимся сеткам назначается MPI процесс, который будет их обрабатывать. Для этого:
  • выбирается самая крупная сетка, которой ещё не назначен MPI процесс.
  • выбирается MPI процесс, которому назначены для обработки сетки с наименьшим суммарным объемом.
  • выбранной сетке назначается выбранный MPI процесс.

Если используется параметр Передавать области расчета неизменными, то первый этап обработки областей расчета (объединение в более крупные) не происходит. При необходимости выполняются только второй и третий этапы.

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

Коррекция размера Областей расчёта по оси Z

При размещении на сцене нескольких областей расчета их размеры и расположения могут выравниваться вдоль оси Z. Это происходит только в том в случае, если расположение областей расчета и размеры их ячеек таковы, что могут привести к возникновению недопустимой конфигурации групп MESH во входном файле FDS.

Выравнивание по оси Z не требуется, если размеры ячеек по оси Z двух пересекающихся Областей расчёта кратны друг другу, и в трёх указанных на рис. областях (A, B, C) умещается целое число ячеек.

Правильно выровненные по оси Z MESH{width=50%}

В противном случае, высота обеих Областей расчёта будет увеличена до величины, кратной параметру BaseSize, а размер ячейки по вертикали в каждой Области расчёта станет таким же, как по горизонтали.

Устранение пересечения областей

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

Пусть, например, имеются две пересекающиеся области с разным размером ячеек.

Две пересекающиеся Области расчёта{width=50%}

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

Минимизация площади соприкосновения MESH требуется для ускорения расчёта.

Возможный результат разбиения на три MESH показан на рис. с помощью областей разного цвета.

Три непересекающиеся MESH{width=50%}

Пример устранения пересечения

Рассмотрим пример сценария, где кроме помещения с очагом пожара размещены две пересекающиеся Области расчёта с разным размером ячеек. Причём некоторые элементы сцены вообще не охвачены Областями расчёта.

Две пересекающиеся области расчёта{width=50%}

Для избежания пересечения MESH, две Области расчёта были представлены в файле FDS с помощью трёх элементов MESH.

&MESH IJK=16,16,12 XB=1,5,1,5,0,3 MPI_PROCESS=0/

&MESH IJK=8,12,12 XB=5,7,1,4,0,3 MPI_PROCESS=0/

&MESH IJK=24,24,24 XB=5,8,4,7,0,3 MPI_PROCESS=0/

Три MESH (вид в Smokeview){width=50%}

Примеры преобразования областей расчёта

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

На примерах ниже показан результат выполнения этапа “Объединение“ при формировании групп MESH для различных взаимных расположений областей расчета.

{width=50%}

На следующих примерах показан результат выполнения этапов “Разбиение“ и “Балансировка“ для различного количества потоков моделирования (число сверху) в случае, если количество сеток после этапа “Разбиение“ не превышает количество потоков.

Над каждой сеткой показан номер MPI процесса, который назначен для обработки этой сетки.

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

{width=50%}

На следующих примерах показан результат выполнения этапа “Балансировка“ для 2-х потоков моделирования в случае, когда количество сеток после этапа “Разбиение“ превышает количество потоков.

Над каждой сеткой показан номер MPI процесса, который назначен для обработки этой сетки.

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

{width=50%}

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