Использование модуля BlenderFDS для экспорта информации в программный комплекс FDS
Updated to version 2.0.
В новой версии BlenderFDS 2.0 работает новый механизм генерации вокселей, основанный на относительно новом модификаторе Блендера Remesh. Это не только делает вокселизацию более быстрой и точной, надежной и гибкой, но теперь возможно даже визуализировать и измениять воксели перед экспортом. BlenderFDS теперь полностью поддерживает BMesh. Также добавлено несколько улучшений - в управлении параметрами IJK, а также управлении параметром OUTLINE=.TRUE. Новая версия получила третий пример - полный проект замка Thun, исторического замка 13 века, имеющего нерегулярную геометрию. Также улучшена работа с неполностью сплошными объектами - их обработка происходит более интеллектуально. Параметр THICKEN=.TRUE. теперь есть в пользовательском интерфейсе. Размер вокселя теперь у каждого объекта свой.
Перевод документации по использованию модуля BlenderFDS (http://code.google.com/p/blenderfds/). Модуль является дополнением к ПО Blender (http://www.blender.org/), позволяющим вносить в геометрию зданий дополнительную информацию, необходимую для расчетов пожаров в программном комплексе NIST FDS (http://fire.nist.gov/fds/). Модуль также позволяет произвести экспорт во входной файл для запуска FDS.
BlenderFDS является открытым пользовательским интерфейсом для программного комплекса NIST FDS. Периодически выходят новые версии, чтобы соответствовать текущим изменениям в ПО Blender и FDS. На момент написания статьи существует стабильная версия модуля BlenderFDS v.2.0.1, которая устанавливается для ПО Blender версии 2.64.
Содержание
Установка BlenderFDS
Идеи, лежащие в основе BlenderFDS
Файлы Блендера имеют иерархическую структуру
Сущности Блендера: СЦЕНЫ, ОБЪЕКТЫ, СЕТКИ, МАТЕРИАЛЫ
Каждая сущность Блендера может быть продублирована и связана с несколькими родителями
FDS входной файл
Именованные группы, которые оказывают влияние на геометрические сущности
BlenderFDS устанавливает связь между сущностями Блендера и именованными группами FDS
Каждая СЦЕНА Блендера - это один вариант для моделирования в FDS
Каждый Блендер-ОБЪЕКТ и его МАТЕРИАЛ экспортируется как одна или больше именованная группа FDS
Соответствие объектов Блендера именованным группам FDS
Параметры именованных групп FDS
Синтаксические ошибки
Параметр "Namelist"
Параметр "ID"
Параметр "FYI"
Параметр "SURF_ID"
Параметр "SAWTOOTH" (Зубчатость)
Параметр "IJK"
Пользовательские параметры
Геометрия именованных групп FDS
Параметр "XB"
Параметр XYZ
PB* параметр
Установка параметров XB, XYZ, PB* одновременно
Копирование FDS-параметров и геометрии от активного Блендер-объекта на другие объекты
Как поступать с Несплошными объектами
Починка non-manifold моделей
Пример
Отображение материалов Блендера на именованные группы FDS SURF
Параметры FDS "SURF"
Параметры RGB и TRANSPARENCY
Пользовательские параметры (Custom SURF Parameters)
Параметр "FYI"
Зарезервированные имена FDS "SURF": OPEN, INERT, MIRROR
Сцены Блендера - Сценарии FDS
Блендер-файл содержит несколько сценариев FDS
Параметры CHID and TITLE
Директория для сценария
Config File
Размер Вокселя
Экспортирование текущей сцены Блендера во входной файл FDS
Установка BlenderFDS
Описание установки модуля BlebderFDS можно найти в оригинальной документации - http://code.google.com/p/blenderfds/wiki/InstallingBlenderFDS.
Важно, что модуль BlenderFDS v.2.0 ставится на Blender версии 2.64. Предыдущие версии Blender не поддерживаются, а в будущих работоспособность не гарантируется.
Вкратце установка следующая:
- Скачать и распаковать в удобное место файл с архивом BlenderFDS 2.0.
- Запустить Blender.
- File - User Preferences - Install Add-on.
- Указать на файл blenderfds.zip в папке, разпакованной на первом шаге.
- Включить галочку против вновь появившегося дополнения.
- Сохранить по-умолчанию профиль (Save as Defaults).
Идеи, лежащие в основе BlenderFDS
Файлы Блендера имеют иерархическую структуру
Каждый Блендер-файл содержит базу данных геометрических деталей. Эта база данных содержит все СЦЕНЫ, ОБЪЕКТЫ, СЕТКИ, МАТЕРИАЛЫ, ТЕКСТУРЫ и т.д., описанные в Блендер-файле и показанные в пользовательском интерфейсе Блендера. Файл может содержать множество СЦЕН, и каждая СЦЕНА может содержать множество ОБЪЕКТОВ. ОБЪЕКТЫ составлены из СЕТОК и могут содержать множество МАТЕРИАЛОВ, которые в свою очередь могут содержать много ТЕКСТУР.
Следующий пример ПАНЕЛИ OUTLINER показывает этот вид организации данных:
Сущности Блендера: СЦЕНЫ, ОБЪЕКТЫ, СЕТКИ, МАТЕРИАЛЫ
В Блендере СЦЕНА - это коллекция объектов. Свойствами ОБЪЕКТОВ можно манипулировать в ОБЪЕКТНОМ РЕЖИМЕ (Object mode).
Каждый Блендер-ОБЪЕКТ объединяет:
- свою СЕТКУ - форму ОБЪЕКТА;
- свои МАТЕРИАЛЫ - внешний вид своих поверхностей (цвет, прозрачность,...);
- и ТЕКСТУРУ, применимую к его МАТЕРИАЛУ.
СЕТКА Блендера - это коллекция граней, ребер и вершин, которые могут быть смоделированы и управляться в РЕЖИМЕ РЕДАКТИРОВАНИЯ (Edit Mode). Блендер-СЕТКИ не надо путать с сетками FDS. Фактически, Блендер-СЕТКИ - это только объем или поверхность, определяемая вершинами, ребрами и гранями: это геометрическое описание родительского ОБЪЕКТА.
ВЕРШИНА - это 3-координатная точка в пространстве. РЕБРО - это прямая "проволочная" линия, представляющая собой границу двух соседних вершин. ГРАНЬ - это плоское соединение ребер, представляющее собой границу, поле или поверхность объемного тела. ГРАНИ всегда плоские. РЕБРА всегда прямые. РЕБРО сформировано пересечением двух ГРАНЕЙ. ВЕРШИНЫ сформированы пересечением трех или более ГРАНЕЙ. Например, куб имеет 6 граней, 12 ребер и 8 вершин.
Каждая сущность Блендера может быть продублирована и связана с несколькими родителями
Также возможно создать связи между различными сущностями Блендера для того чтобы они совместно использовали информацию. Например, если у вас есть СЕТКА для автомобиля, вы можете использовать эту СЕТКУ для шести автомобилей в сцене автомобильной парковки. Если вы измените первоначальную СЕТКУ, то все шесть автомобилей на парковке наследуют это изменение.
FDS входной файл
FDS использует на входе всего один текстовый файл. Входные данные четко определены в именованных группах:
Именованные группы используются для описания определенного аспекта процесса моделирования пожара: имя моделирования, продолжительность, область вычисления, геометрия, граничные условия, материалы, выходные величины, логика управления...
Именованные группы, которые оказывают влияние на геометрические сущности
Многие именованные группы оказывают влияние в вычислительном пространстве на объемы, грани, сегменты, точки или плоскости:
Геометрическое описание моделируемого окружающего пространства вводится построчно; геомтерические сущности определяются в каждой именованной группе с помощью параметров XB, XYZ, PBX, PBY, PBZ.
FDS использует абсолютную глобальную базовую систему координат, которая подчиняется правилу правой руки. По-умолчанию ось Z считается направленной вертикально. FDS использует систему измерения СИ. Длины выражаются в метрах.
Объем всегда представлен одиночным правильным параллелепипедом с ребрами, параллельными осям. Его позиция и размеры описываются координатами двух диагонально-противоположных вершин: если точка A=(xA,yA,zA) и точка B=(xB,yB,zB) являются противоположными вершинами, их координаты вводятся как xA, xB, yA, yB, zA, zB. Например строка:
&OBST XB=0.5,1.5,2.0,3.5,-2.0,0., SURF_ID='wall' /
использует параметр XB для определения объемного пряпятствия, занимающего объем, начинающийся с (0.5,2.0,-2.0) и простирающийся на 1 метр в положительном x-направлении, полтора метра в +y-направлении, и на 2 метра в +z-направлении.
Грань представлена правильной плоской гранью(прямоугольником) с ребрами, параллельными осям. Ее позиция и размеры описываются координатами двух противоположных вершин, которые должны лежать в одной плоскости. Например строка,
&VENT XB=0.5,1.1,2.0,3.1,-2.0,-2.0, SURF_ID='fire' /`
использует параметр XB для определения плоской грани, перпендикулярной оси Z, налагающей граничные условия на объемное пространство. Две из шести координат одинаковы, что отличает плоскую грань от объемного тела.
Отрезок ограничен двумя конечными точками. Если точка A=(xA, yA, zA) и точка B=(xB, yB, zB) - конечные точки, то их координаты вводятся по такому же соглашению как и для объемов. Например,
&DEVC XB=0.5,1.5,2.0,3.5,-2.0,0., QUANTITY='PATH OBSCURATION', ID='beam1', SETPOINT=0.33 /
- это луч детектора дыма между конечными точками (0.5,2.0,-2.0) и (1.5,3.5,0.).
Точка - просто определяется тремя координатами. Например, строчка:
&DEVC XYZ=2.,3.,4., QUANTITY='THERMOCOUPLE', ID='termo1' /
использует параметр XYZ чтобы вставить термопару в точку с координатами (2.,3.,4.).
Плоскость представлена правильной плоскостью, перпендикулярной одной из координатных осей. Например, строчки:
&SLCF PBX=0.5, QUANTITY='TEMPERATURE' /
- плоскость, перпендикулярная оси x и пересекующая ее в точке (.5,0.,0.).
&SLCF PBY=1.5, QUANTITY='TEMPERATURE' /
- плоскость, перпендикулярная оси y и пересекующая ее в точке (0.,1.5,0.).
&SLCF PBZ=-.5, QUANTITY='TEMPERATURE' /
- плоскость, перпендикулярная оси z и пересекующая ее в точке (0.,0.,-.5).
Все строчки используют параметры PBX, PBY, PBZ для определения координаты в перпендикулярном направлении соответствующей оси.
BlenderFDS устанавливает связь между сущностями Блендера и именованными группами FDS
Блендер -> FDS
каждый файл - один или больше входных файлов FDS
каждая СЦЕНА - один вариант моделирования (один входной файл FDS)
каждый ОБЪЕКТ - одна или больше именованных групп (OBST, DEVC, VENT, HOLE, SLCF...)
каждый МАТЕРИАЛ - одна SURF именованная группа
Каждая СЦЕНА Блендера - это один вариант для моделирования в FDS
Каждая СЦЕНА Блендера может быть экспортирована в .fds текстовый входной файл. Один файл Блендера может содержать несколько СЦЕН, и, соответственно, несколько FDS-вариантов, по одному на каждый моделируемый сценарий.
Например, одна и та же парковочная стоянка может быть продублирована в нескольких СЦЕНАХ. Геометрические СЕТКИ и термо-физические параметры автомобилей могут быть совместно использованы между всеми автомобилями во всех СЦЕНАХ; позиция автомобилей в отдельной СЦЕНЕ может различаться в соответствии с моделируемым сценарием.
Каждый Блендер-ОБЪЕКТ и его МАТЕРИАЛ экспортируется как одна или больше именованная группа FDS
Каждый Блендер-ОБЪЕКТ связан с одной или больше именованной группой FDS. Экспортируемые именованные группы оказывают влияние на геометрию, описываемую СЕТКОЙ Блендер-ОБЪЕКТА.
Например:
Этот желтый Блендер-ОБЪЕКТ "Стена"(Wall) экспортируется как много именованных групп OBST, которые описывают круглую и искривленную геометрию стены.
Блендер-МАТЕРИАЛ, связанный с ОБЪЕКТОМ "Стена", называется "Гипсовая стена"(Gypsum wall) и отображается желтым цветом. МАТЕРИАЛ "Гипсовая стена" экспортируется как FDS-именованная группа SURF, содержащая все параметры, введенные пользователем:
В частности, ОБЪЕКТ "Стена" и его МАТЕРИАЛ "Гипсовая стена" экспортируются в FDS-входной файл как препятствие и его граничные условия:
&SURF ID='Gypsum wall', RGB=204,199,56, MATL_ID='Gypsum plaster', THICKNESS=0.03 /
&OBST ID='Wall', XB=-1.575,-1.375,-1.375,-0.475,-0.025,1.975, SURF_ID='Gypsum wall', SAWTOOTH=.False., FYI='Voxelized walls' /
&OBST ID='Wall_1', XB=-1.575,-1.375,-1.375,1.375,1.975,3.025, SURF_ID='Gypsum wall', SAWTOOTH=.False., FYI='Voxelized walls' /
&OBST ID='Wall_2', XB=-1.575,-1.375,0.475,1.375,-0.025,1.975, SURF_ID='Gypsum wall', SAWTOOTH=.False., FYI='Voxelized walls' /
&OBST ID='Wall_3', XB=-1.575,-0.675,-1.575,-1.525,-0.025,3.025, SURF_ID='Gypsum wall', SAWTOOTH=.False., FYI='Voxelized walls' /
&OBST ID='Wall_4', XB=-1.575,0.625,-1.525,-1.475,-0.025,3.025, SURF_ID='Gypsum wall', SAWTOOTH=.False., FYI='Voxelized walls' /
...
Эти сущности визуализированы в программе Smokeview как желтое закругленное препятствие:
Соответствие объектов Блендера именованным группам FDS
КАЖДЫЙ Blender-объект экспортируется как ОДНА, или НЕСКОЛЬКО FDS-имено-
ванных групп, разделяющих одни и те же параметры. FDS-параметры, назначаемые
каждому объекту, указываются на панели свойств объекта. Различные опции и
свойства отображаются в зависимости от соответствующих именованных групп FDS,
подчиняясь FDS-семантике.
Пользователь строит архитектурную модель. Каждый элемент разделен на
части. Каждая часть должна иметь однородные термо-физические свойства, так как
каждый блендер-объект может иметь только один набор назначенных параметров.
Параметры именованных групп FDS
Пользователь описывает каждую геометрическую именованную группу FDS в
панели FDS-свойств блендер-объекта. Следующие параграфы перечисляют один за
другим некоторые из параметров, управляемые через BlenderFDS-интерфейс.
Синтаксические ошибки
BlenderFDS выполняет некоторые простые проверки на синтаксис входных
параметров. Следующий пример показывает неизвестную именованную группу и
ID-параметр, содержащий неприменимый символ одинарной кавычки:
BlenderFDS не выполняет никакой автоматической коррекции. Ответствен-
ность за ввод имеющих смысл и синтаксически корректных параметров лежит полно-
стью на пользователе.
Параметр "Namelist"
Первый и наиболее важный параметр на панели свойств объекта - это имя
именованной группы "Namelist". Если BlenderFDS распознает именованную группу
(тип), панель видоизменяется соответствующим образом и показывает только отно-
сящиеся к данной именованной группе параметры. Метка панели тоже изменяется,
чтобы наглядно показывать выбранную именованную группу.
&OBST /
Параметр "ID"
Параметр "ID" базируется на имени блендер-объекта:
ID='Wall'
Некоторые именованные группы до сих пор не позволяют вставлять
Параметр "ID". Мы написали отчет об этом баге разработчикам FDS, так как
присутствие ID-параметра во всех именованных группах могло бы упростить
нахождение ошибок в FDS-файле. Смотрите FDS Issue 887.
Параметр "FYI"
Этот параметр содержит пользовательские коментарии и информацию, и
вставляется так как есть в именованную группу, если только не пустой:
FYI='This is a comment.'
Параметр "SURF_ID, SURF_ID3 and SURF_ID6"
Когда блендер-объект имеет допустимое имя именованной группы (OBST,
VENT, ...) и существует ссылка на блендер-материал, то BlenderFDS автоматически
конфигурирует и показывает соответствующий SURF_ID-параметр, ссылающийся на
соответствующий блендер-материал:
SURF_ID='Brick wall'
Следующий рисунок - пример описания объекта типа VENT:
Новое в версии 2.0. - Почему SURF_ID3 и SURF_ID6 не поддерживаются.
Параметр "SAWTOOTH" (Зубчатость) и THICKEN (толщина)
В случае объекта типа OBST, пользователь может вставить параметры
SAWTOOTH=.FALSE. и THICKEN=.TRUE. Далее пример описания объекта типа OBST:
Параметр "IJK"
Новое в версии 2.0 - IJK setup.
Когда пользователь вводит объект типа MESH (расчетный блок FDS), панель
видоизменяется чтобы показать IJK-числа ячеек FDS MESH. ВВеденыые значения проверяются на требования Пуассоновского решателя. Можно нажать кнопку "Скорректировать", чтобы вычислить, используя это Решатель.
Обычно приходится изменять размеры сетки, чтобы получить хорошие значения IJK.
IJK=12,50,50
Пример описания MESH:
Кнопка "Adapt Cell/Voxel" устанавливает размер вокселя в сцене
(Scene Voxel Size) в половину размера ячейки FDS MESH (Смотрите раздел
"Сцены Блендера к FDS-случаям") и подгоняет Desired Cell Size к вычисленному
размеру ячейки.
Пользовательские параметры
Поле пользовательских параметров (Custom parameters) используется для
включения других FDS-парметров в именованную группу. BlenderFDS вставляет значе-
ние "Custom Parameters" как есть, дословно, и не производит никаких проверок на
семантику. Пользователь должен использовать парные одинарные кавычки
(eg: 'This is a string') для строчек для того чтобы сохранить единообразие в
автоматически генерируемыми FDS-параметрами.
Геометрия именованных групп FDS
Объект блендера трансформируется в один или несколько именованных групп
FDS в зависимости от сложности его геометрии и от пользовательских требований.
Экспортированная геометрия отражается в использованных FDS-параметрах XB, XYZ,
PBX, PBY, или PBZ.
Параметр "XB"
Таблица:
XB для блендер-объекта установлен в... |
Экспортируется как |
Число экпортированных именованных групп FDS |
None |
XB не устанавливается |
Ни одной |
Voxels |
Вокселизированный объем |
много |
BBox |
Обрамляющий прямоугольник |
только один |
Faces |
Грани, по одному для каждой грани блендер-объекта |
число граней у объекта |
Edges |
Сегменты, один для каждого ребра блендер-объекта |
число ребер у объекта |
- Если XB-параметр установлен в None, то XB не добавляется в экспортируемую
именованную группу
- XB установлен в "Voxels"
Новое в версии 2.0 - Новый алгоритм вокселизации.
Блендер-объект обрабатывается алгоритмом вокселизации, который апрокси-
мирует его геометрию так, как будто бы он был сделан из кирпичиков Lego.
Строительные кирпич называется "voxel". и его размер определяется пользователем
в панели свойств сцены. (см. "Сцены Блендера к FDS-случаям").
Был сменен алгоритм вокселизации на другой, более быстрый.
Когда возможно, BlenderFDS объединяет воксели вместе в бОльшие боксы для мини-
мизации числа строчек во входном файле для FDS. Боксы направлены всегда вдоль
осей глобальной системы координат, как этог требует FDS:
Здесь показан пример вокселизации цилиндра, с использованием различных размеров вокселей:
Алгоритм вокселизации обрабатывает закрытые (объемные, manifold) объекты. Это
означает, что сетка объекта должна быть водо-непроницаема и согласована, так,
чтобы BlenderFDS мог решить, какая порция пространства является сплошной
(твердой, заполненной, solid), а какая, наоборот, пустая. Если объект не
является закрытым, то высвечивается сообщение об ошибке в пользовательском
интерфейсе и в экспортированном входном файле FDS.
Новое в версии 2.0 - возможность обрабатывать несплошные объекты
The new voxelization algorithm can treat both manifold and non manifold objects, but exported geometries are more precise if the originating objects are manifold, that is water-tight and well-formed, so that BlenderFDS can decide which portion of space is solid and which is instead void. This is the reason why, if the object is non manifold, a warning message is displayed.
Есть отдельный специальный параграф, объясняющая как решать эту проблему:
"Как поступать с несплошными объектами".
Когда XB установлен в "Voxels", общая форма объекта сохраняется настолько,
насколько это возможно:
Блендер-объект экспортируется в несколько именованных групп FDS, разделяя
(повторяя) одинаковые параметры, и покрывая вместе общую геометрию. Например:
&OBST ID='Wall', XB=-1.575,-1.375,-1.375,-0.475,-0.025,1.975, SURF_ID='Gypsum wall', SAWTOOTH=.False., FYI='Voxelized walls' /
&OBST ID='Wall_1', XB=-1.575,-1.375,-1.375,1.375,1.975,3.025, SURF_ID='Gypsum wall', SAWTOOTH=.False., FYI='Voxelized walls' /
&OBST ID='Wall_2', XB=-1.575,-1.375,0.475,1.375,-0.025,1.975, SURF_ID='Gypsum wall', SAWTOOTH=.False., FYI='Voxelized walls' /
&OBST ID='Wall_3', XB=-1.575,-0.675,-1.575,-1.525,-0.025,3.025, SURF_ID='Gypsum wall', SAWTOOTH=.False., FYI='Voxelized walls' /
&OBST ID='Wall_4', XB=-1.575,0.625,-1.525,-1.475,-0.025,3.025, SURF_ID='Gypsum wall', SAWTOOTH=.False., FYI='Voxelized walls' /
...
Размер Вокселя
New in 2.0: Voxel size on a per-object basis - Размер вокселя у каждого объекта может быть свой.
The voxel is cubic and its size is specified by the user on a per-object basis, according to the desired accuracy. When exporting to FDS, geometric features that are smaller than voxel size are automatically filtered out by the voxelization algorithm.
When voxel size is too small compared to object size, the number of voxels grows too much. To prevent out of memory conditions, an error message appears and the required voxel size is not guaranteed:
Reduce the size of the voxelized object (eg by splitting it in two smaller objects) until the error message disappears.
Визуализация Вокселей
New in 2.0: Generated voxels visualization
Generated voxels can be easily visualized and interactively modified by the user before exporting by pushing the Show Voxels buttons. Once verified the quality of the voxelization, the user can hide all the voxels by pushing the Hide All Voxels button.
- XB установлен в "BBox"
BlenderFDS вычисляет обрамляющий прямоугольник (bounding box) объекта
в глобальных координатах. Результирующие координаты прямоугольника (box)
экспортируются как XB параметр одной именованной группы FDS.
В BBox общая фигура объекта не сохраняется, а представлен только его размер:
и блендер-объект экспортируется только в одну именованную группу FDS, например:
&OBST ID='Wall', XB=0.123,2.233,0.123,2.233,0.123,2.233, SURF_ID='Gypsum wall', FYI='BBox wall' /
- XB установлен в "Faces"
BlenderFDS вычисляет обрамляющий прямоугольник (bounding box)
в глобальных координатах граней блендер-объекта. Каждая грань плоская и ее ребра
выпрямлены. Результатом является группа правильных плоских граней с ребрами,
параллельными глобальным координатным осям, как того требует FDS. Результирую-
щие координаты экспортируются как XB параметры нескольких именованных групп FDS,
по одной для каждой грани:
Естественно, будет более понятно и иметь меньше склонности к ошибкам, если сразу
моделировать "правильные" грани, принимаемые FDS без трансформации.
Например, установка XB в "Faces" может быть выгодно использована для
описания нескольких VENT's, которые разделяют одинаковые параметры. Пользователь
создает объект, сделанный из разделенных граней, распределенных внутри помещения,
и получает серию именованных групп типа VENT:
&VENT ID='Fan', XB=5.000,6.000,0.000,1.000,7.134,7.134, SURF_ID='Supply', DEVC_ID='Sd1' /
&VENT ID='Fan_1', XB=5.000,6.000,11.000,12.000,7.134,7.134, SURF_ID='Supply', DEVC_ID='Sd1' /
&VENT ID='Fan_2', XB=5.000,6.000,32.000,33.000,7.134,7.134, SURF_ID='Supply', DEVC_ID='Sd1' /
...
- XB установлен в "Edges"
BlenderFDS вычисляет глобальные координаты конечных точек ребер
блендер-объекта. Результирующие координаты экспортируются как XB параметры
нескольких именованных групп FDS, по одной на каждое ребро.
Например, установка параметров XB в "Edges" может быть использована для описания
группы лучевых детекторов, разделяющих одинаковые параметры. Пользователь создает
объект, сделанный из независимых ребер, распределенных внутри помещения, и
получает серию строчек типа DEVC:
&DEVC ID='Beam detectors', XB=0.029,-1.271,-1.235,1.307,2.500,2.500,
QUANTITY='PATH OBSCURATION', SETPOINT=0.33 , FYI='Two detectors' /
&DEVC ID='Beam detectors_1', XB=1.217,-1.271,0.043,1.307,2.500,2.500,
QUANTITY='PATH OBSCURATION', SETPOINT=0.33 , FYI='Two detectors' /
...
Параметр XYZ
Blender object XYZ set to |
Exported as |
Number of FDS namelist groups |
None |
XYZ not set |
None |
Verts |
Vertices |
Vertices, one for each vertex of the Blender object |
Center |
Center |
Only one |
- XYZ установлен в None
Параметры XYZ не добавляются в экспортируемые именованные группы.
- XYZ установлен в "Verts"
BlenderFDS вычисляет глобальные координаты вершин блендер-объекта.
Результирующие координаты экспортируются как XYZ параметры нескольких именованных
групп FDS, по одной на каждую вершину.
Например, установка XYZ в "Verts", может быть использована для
описания группы термопар, разделяющих одинаковые параметры. Пользователь создает
объект, сделанный из независимых вершин, распределенных внутри помещения, и
получает серию строчек типа DEVC, как вот эти:
&DEVC ID='Thermocouple serie', XYZ=-0.000,0.000,0.100, QUANTITY='THERMOCOUPLE' /
&DEVC ID='Thermocouple serie_1', XYZ=-0.000,0.000,0.400, QUANTITY='THERMOCOUPLE' /
&DEVC ID='Thermocouple serie_2', XYZ=-0.000,0.000,0.700, QUANTITY='THERMOCOUPLE' /
&DEVC ID='Thermocouple serie_3', XYZ=-0.000,0.000,1.000, QUANTITY='THERMOCOUPLE' /
&DEVC ID='Thermocouple serie_4', XYZ=-0.000,0.000,1.300, QUANTITY='THERMOCOUPLE' /
&DEVC ID='Thermocouple serie_5', XYZ=-0.000,0.000,1.600, QUANTITY='THERMOCOUPLE' /
...
- XYZ установлен в "Center"
BlenderFDS вычисляет глобальные координаты центра блендер-объекта.
Результирующие координаты экспортируются как XYZ параметр только одной
именованной группы FDS.
Центр объекта - это маленькая точка, которая появляется, когда блендер-
объект выделен в Object Mode. Это центр локальной системы координат объекта.
PB* параметр
Blender object PB* set to |
Exported as |
Number of FDS namelist groups |
None |
PB* not set |
None |
Faces |
Planes |
Planes, one for each face of the Blender object |
- PB* установлен в None
Никакие из параметров PBX, PBY, PBZ не добавляются в экспортируемую
именованную группу.
- PB* установлен в "Faces"
BlenderFDS вычисляет обрамляющий прямоугольник (bounding box)
в глобальных координатах граней блендер-объекта. Каждая грань плоская и ее ребра
выпрямлены. Результатом является группа правильных плоских граней с ребрами,
параллельными глобальным координатным осям. Каждая грань заменяется плоскостью,
перпендикулярной одной из глобальных осей, как того требует FDS. Результирующие
координаты экспортируются как PBX, PBY, PBZ параметры нескольких именованных
групп FDS, по одной на каждую грань.
Естественно, будет более понятно и иметь меньше склонности к ошибкам,
если сразу моделировать "правильные" грани, принимаемые FDS без трансформации.
Например, эта установка PB* может быть использована для ввода несколь-
ких SLCF, разделяющих одинаковые параметры.
Пользователь создает объект, сделанный из отдельных граней, распределенных
внутри помещения, и получает серию строк типа SLCF:
&SLCF QUANTITY='TEMPERATURE', VECTOR=.TRUE., PBX=0.000 /
&SLCF QUANTITY='TEMPERATURE', VECTOR=.TRUE., PBY=0.600 /
...
Здесь пример объекта "SLCF temp", использующего установку PB* в "Faces":
Установка параметров XB, XYZ, PB* одновременно
Пользователь может установить одновременно параметры XB, XYZ, PB*:
соответсвующая именованная группа получит все параметры.
Однако, некоторые комбинации не разрешены. Когда вводится конфликтная
комбинация, пользовательский интерфейс показывает сообщение об ошибке. Ответствен-
ность за установку безопасных величин лежит на пользователе. Конфликтные установке
- это те, которые требуют множественных именованных групп больше чем один раз.
Например, установка XB в "Voxels" и XYZ в "Verts". А по-другому, установка XB в
"Voxels" и XYZ в "Center" - совместимые установки.
Копирование FDS-параметров и геометрии от активного Блендер-объекта на другие объекты
После выставления FDS-параметров и геометрии ля одиночного блендер-объекта
пользователь может довольно просто скопировать эти установки на другие блендер-
объекты.
Выделите объекты-приемники в окне 3D-вида или в окне Outliner. Последний
выделенный объект становится активным объектом. Активный объект очерчен желтым,
другие выделенные объекты очерчены оранжевым. Текущий активный объект используется
как источник для копирования.
Нажмите кнопку "To Selected Object" внизу панели свойств объекта. Все
FDS параметры и геометрия активного объекта скопируются на выделенные объекты.
Скопированные параметры независимы от параметров источника: изменение скопиро-
ванных параметров не влияет на параметры объекта-источника, и наоборот.
Если вам нужна жесткая связь между объектами (наследуемые свойства и разделя-
емая геометрия), смотрите раздел "Дубликация блендер-объектов".
Как поступать с Несплошными объектами
!!! Этот раздел претерпел значительную корректировку в версии 2.0
ССылка на английский оригинал - http://code.google.com/p/blenderfds/wiki/NonManifoldObjects
Перед началом моделирования всегда помните, что когда вы моделируете
объекты в блендере, которые должны быть вокселизированы, вы должны создать объем,
который имеет аналог в физическом мире: водонепроницаемый и правильно-сделанный,
так чтобы Блендер мог решить, какая порция пространства сплошная, а какая пустая.
Простейший способ делать это - работать экструдируя существующий объем и,
используя булевы операции, комбинировать объемы. Часто трудно модифицировать
существующие модели, так что лучший способ начать с нуля, и на каждом шагу держать
это в голове. Модели, сделанные для визуализации, часто не хороши для вокселизации.
Починка non-manifold моделей
Те же проблемы имеют люди, работающие над процессом 3D-печати. Это та
причина, почему один из лучших и детальных описаний проблемы и как ее решить
находится на сайте Shapeways:
http://www.shapeways.com/tutorials/fixing-non-manifold-models
Предлагаемые операции могут быть выполнены прямо внутри Блендера (они
используют Блендер тоже!).
Когда случается безнадежная ситуация, есть другая мощная, но сложная
утилита: MeshLab (http://meshlab.sourceforge.net/). Вы должны экспортировать
сетку объекта из Блендера в STL формат, починить ее в MeshLab, и импортировать
обратно в блендер: процедура не для слабых духом...
Помните, что часто быстрее перемоделировать проблемный объект с нуля.
Пример
Куб, показанный на картинке, не имеет верхней грани, и поэтому не является
сплошным. Если пользователь попытается установить XB в "Voxels", сообщение об
ошибке появится на панели свойств объекта:
Чтобы починить это, пользователь переключается в Edit Mode. Сетка стано-
вится редактируемой:
Затем он переключает режим выделения в Edge Select Mode:
Затем пользователь кликает на меню Select > Non Manifold в окне 3D View:
Проблемные грани теперь выделены:
Mesh > Faces > Fill
Куб не имеет грани. Пользователь кликает на меню Mesh > Faces > Fill
в окне 3D View Editor Header для создания отсутствующей грани:
Отсутствующая грань создается:
Пользователь переключается обратно в Object Mode:
Ошибочное сообщение исчезает: объект теперь сплошной и XB может быть
безопасно установлено в "Voxels":
Отображение материалов Блендера на именованные группы FDS SURF
Материалы Блендера экспортируются на SURF именованные группы только в случае если на них ссылаются другие объекты.
Параметры FDS "SURF"
Параметры FDS "SURF" полностью описываются в панели свойств материала BlenderFDS. Следующие параграфы перечисляют один за другим все параметры, которыми можно управлять через интерфейс.
Параметры RGB и TRANSPARENCY
Эти параметры устанавливают цвет и альфа-канал (прозрачность) именованной группы FDS "SURF", которые соответствуют свойствам, связанным с рендерингом изображения:
RGB=12,34,35, TRANSPARENCY=.3
Пользовательские параметры (Custom SURF Parameters)
Поле "Custom parameters" используется для включения других FDS параметров в именованную группу SURF. BlenderFDS вставляет значение "Custom parameters" как есть, дословно, и не делает никаких проверок на допустимость. Пользовательский интерфейс просто заменяет все двойные кавычки на одинарные для единообразия с остальными автоматически сгенерированными параметрами.
Параметр "FYI"
Параметр "FYI" содержит пользовательские коментарии и информацию, которая вставляется в именованные группы только тогда когда она не пустая:
FYI='This is a comment.'
Зарезервированные имена FDS "SURF": OPEN, INERT, MIRROR
Когда открывается новый проект, BlenderFDS предлагает создать по-умолчанию зарезервированные именованные группы FDS SUFR:
Зарезервированные материалы FDS (OPEN, INERT, MIRROR) НЕ экспортируются во входной файл FDS.
Сцены Блендера - Сценарии FDS
При экспорте какждая сцена Блендера становится отдельным FDS-сценарием, то есть отдельным .fds входным файлом.
Блендер-файл содержит несколько сценариев FDS
Как правило, пользователю нужно моделировать несколько FDS сценариев с похожей геометрией и термо-физическими параметрами. Только небольшое количество параметров должно быть изменено. Пользователь строит геометрию в Блендер-сцене. Затем он дублирует объекты в несколько других сцен:
- объекты, которые не изменяются, должны быть связаны между сценами, чтобы разделять точно одинаковую геометрическую сетку и параметры FDS. Если пользователь решает изменить общую геометрию или общие термо-физические параметры, то все связанные объекты во всех сценах будут модифицированны соответственно. Для более точного описания как это сделать, смотрите:
http://wiki.blender.org/index.php/Doc:2.6/Manual/Modeling/Objects/Duplic...
- в зависимости от сценария, некоторые объекты на отдельных сценах должны иметь их собственные геометрию и термо-физические параметры. Пользователь разрывает отвязывает эти объекты от общих свойств и они становятся независимыми. Затем пользователь может модифицировать параметры этих объектов и геометрию.
Каждая сцена требует от пользователя ввода нескольких параметров в панели свойств сцены:
Параметры CHID and TITLE
Значение CHID используется как имя файла по-умолчанию для экспорта во входной FDS файл. По этой причине требования к строке CHID являются более строгими: это должно быть допустимое имя файла. Таким образом, пробелы не допускаются.
Значения полей CHID and TITLE также используются для вставки соответствующей именованной группы FDS "HEAD" в этом файле. Например:
&HEAD CHID='uni-build-s1', TITLE='University building, scenario 1' /
Директория для сценария
Поле "Directory" - это директория по-умолчанию, куда отдельный входной файл FDS для сценария экспортируется. Каждая сцена может быть экспортирована в отдельный входной файл FDS, сохраненный в отдельной директории. Каждый расчетный сценарий FDS сохраняет свои выходные файлы в своей директории и они не смешиваются с результатами других сценариев моделирования.
Config File
Если переключатель "Auto Config" выбран, тогда пустая дефолтная конфигурация автоматически будет включена во входной файл FDS. Это часто используется для проверки геометрии.
Если "Config File" выбран, BlenderFDS включает содержимое указанного "Config File" файла дословно в начало экспортированного входного файла FDS. Конфигурационный файл - это текстовый файл, используемый для указания НЕ-ГЕОМТРИЧЕСКИХ именованных групп FDS, в основном редактируемый текстоым редактором, предпочитаемым пользователем. Но имейте ввиду, что BlenderFDS не выполняет никаких интеллектуальных проверок этого файла на синтаксис и семантику.
Типичный конфигурационный файл может содержать следующие параметры:
&TIME T_END=900.0 /
&REAC ID='polyurethane', SOOT_YIELD=0.1875, CO_YIELD=0.02775, C=1.0, H=1.75, O=0.25, N=0.065, HEAT_OF_COMBUSTION=25300., IDEAL=.TRUE. /
Gas phase reaction: polyurethane flexible foam (means) from Tewarson SFPE Handbook 3rd ed, SFPE handbook table 3-4.14, p. 3-112.
&MATL ID='Gypsum plaster', CONDUCTIVITY=0.48, SPECIFIC_HEAT=0.84, DENSITY=1440. /
Thermo-physical properties of gypsum plaster.
&PROP ID='acme smoke detector', QUANTITY='CHAMBER OBSCURATION', LENGTH=1.8, ACTIVATION_OBSCURATION=3.28 /
&ISOF QUANTITY='TEMPERATURE', VALUE(1)=60. /
&ISOF QUANTITY='VISIBILITY', VALUE(1)=10. /
&BNDF QUANTITY='ADIABATIC SURFACE TEMPERATURE' /
Размер Вокселя
New in 2.0: voxel size is set on a per-object basis
The Voxel Size is not any more set in the scene panel. See BlenderObjectsToFDSNamelistGroups#XB_parameter for a detailed description.
Поле "Voxel Size" представляет собой размер вокселя, используемого для трансформации геометрии некоторых блендер-объектов в FDS-прямоугольники. Чтобы получить надежное геометрическое описание для последовательных CFD-моделирований, пользователь должен ввести "Voxel Size", который по крайней мере составляет половину от меньшего предполагаемого размера ячейки FDS-меша.
Экспортирование текущей сцены Блендера во входной файл FDS
Итак, Блендер-сцена готова, геометрия здания смоделирована, граничные условия определены, конфигурационный файл подготовлен.
Пользователь выбирает File > Export > FDS Case (.fds) в меню и экспортирует текущую блендер-сцену во входной файл FDS. Входной файл получает по-умолчанию имя, введенное в поле "CHID" на панели свойств сцены, и сохраняется по-умолчанию в директории сценария, как введено в поле "Directory".
Чтобы указать другое расположение для экспортируемого файла, кликните на желаемом пути в клетке браузера файлов, затем укажите имя файла.
В окне браузера файлов пользователь также может предпочесть только "Export Visible Objects". Это может быть полезно для отладки экспортируемой геометрии в Smokeview.
Когда экспортируется большой файл, интерфейс Блендера может зависнуть на несколько минут пока идет процесс. Это происходит в текущей версии Блендера, и может быть решено, можно надеяться, в будущем. ВАЖНО: для сравнительно сложных построений, таких как сценарий в примере, экспорт может занимать до 3 минут.
Здесь представлен результат построения сценария (в примере), отображенный в Smokeview:
В терминальном окне пользователь может следить за процессом экспорта:
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Комментарии
Randall
Ребят, так все-таки это действенный метод или нет? Только честно напишите пожалуйста.
Godfrey
Огромное человеческое спасибо! Можете ведь, если захотите конечно! Динамичная статья...
Sydney
Спасибо афтуру за отличный пост. Очень внимательно прочитал, почерпнул много ценного для себя.
Wilfred
Более грамотного изложения давно не видел но вы не везде полностью правы, за 10 минут такие темы полностью не почухать