19 июля 2012 г.

Сопряженный теплообмен в сложных сборках. Часть 2. Подготавливаем сборку.

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

Краткое содержание:
  • Особенности подготовки геометрии в CAD системе;
  • Проверка корректности экспортированной из CAD системы геометрии;
  • Исправление геометрии во FlowVision;
  • Создание сборки во FlowVision;
  • Приемы редактирования геометрии во FlowVision.
  • Проверка качества расчетной сетки.

Освежите в памяти вступление: Теплообмен в сложных сборках. Часть 1. - что и для чего.

Рис. 1. Сборка во FlowVision

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


Шаг первый - подготовка в CAD

Осматриваем нашу сборку, например, в SolidWorks. Я в основном именно с ним работаю, поэтому о нем и буду говорить. Но в той или иной степени основные упоминаемые инструменты реализованы и в других CAD системах.

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

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


Таким образом, мы ищем крупные объемы пересечения и устраняем их сразу в CAD системе. Например, в сборке из 400 деталей мне потребовалось около полутора часов работы на устранение таких пересечений. Согласитесь, это немного. Кстати, поиск больших объемов пересечения в сборках как правило легко автоматизируется, например в SolidWorks в инструментах анализа есть "Проверка интерференции". Снимаем галочку "считать совпадение интерференцией" (т.к. совпадений будет много и устранять мы их будем быстро и изящно) и изучаем список пересечений, с указанием деталей, которые образуют пересечение. Где-то, возможно в CATIA, а может и в SolidWorks, можно еще просмотреть величину объема пересечения. Ищем самые немикроскопические объемы и устраняем их.







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

Шаг второй - экспорт сборки из CAD и создание сборки во FlowVision

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

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

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

А вот ниже я дам несколько рекомендаций по экспорту 3D моделей из SolidWorks, которые позволят избежать некачественной геометрии на выходе:
  • При создании трехмерных моделей избегайте неточного собпряжения тел, которые, например, получаются, если мы выполняем операцию объединения двух солидов по не очень хорошо совпадающим поверхностям. Избегайте очень маленьких ступенек, например на стыке между двумя цилиндрическими поверхностями.
  • Операция вычитания солида из солида нередко дает сетку заметно худшую, чем в выше описанных случаях. Не стоит вычитать похожие по размерам солиды друг из друга. "Вытянутый вырез" почти всегда надежнее прочих булевых операций.
  • Не допускайте в геометрии таких поверхностей, которые образуют в сечении плоскостью очень-очень острые углы. Такие поверхности просто сливаются в одну с точки зрения компьютера. Ни сетку не построить, ни посчитать. Наверняка на практике имеются скругления или фаски. Кстати, скругления или фаски в ряде случаев позволяют решить некоторые проблемы при импорте во FlowVision.
  • При экспорте в STL"Отклонение" я выставляю на максимум. А угол (наиболее заметно влияющий на точность), я как правило ставлю от 10 до 6 градусов, в зависимости от требуемой точности.
  • При экспорте в WRML, если позволяют мощности компьютера, я всегда выставляю максимально возможную точность. Это позволяет получить геометрию с минимальным числом ошибок. Точность экспорта в WRML в SolidWorks выставляется путем настройки изображения в окне с 3d моделью, см. рис. ниже.

Рис.4. Инструменты - Параметры - вкладка Свойства документа - Качество изображения

Проверка корректности экспортированной геометрии

Существует небольшая хитрость для ускорения процесса проверки сотни-другой деталей на корректность их поверхностной сетки :) Итак, следите за руками, никакого мошенничества!
  1. Создаем пустой проект во FlowVision на основе любой простейшей геометрии. Удобнее будет на основе бокса, который по своим размерам раза в два больше нашей сборки. 
  2. Создаем пустую Модель и задаем ее в подобласти.
  3. На элементе Модификаторы кликаем правой кнопкой мыши и выбираем "Пакетный импорт..." и выбираем все файлы для нашей сборки. Произойдет пакетный импорт новых Импортированных объектов и автоматическое создание на основе этой геометрии Подвижных тел.
  4. Т.к. подвижные тела можно создавать только на основе геометрии, отвечающей всем требованиям к геометрии расчетной области FlowVision, то все некорректные импортированные объекты останутся без Подвижного тела, а в окне логов отобразятся сообщения об ошибках импорта. Так мы получим список файлов с грубыми ошибками, которые нужно исправить, прежде чем пытаться создать расчетную область-сборку.
  5. Если вдруг наши подвижные тела оказались заметно больше расчетной области, то мы их не сможем разглядеть, т.к. их изображение обрезается. Для того, чтобы "отодвинуть камеру", нужно во вкладке "Отображение" увеличить параметр "Расширение" (по умолчанию равно единице) до тех пор, пока все подвижные тела не станут отображаться полностью.
  6. Для следующего шага нам обязательно понадобится какая-нибудь не единичная начальная сетка.Поэтому построим простейшую начальную сетку с адекватным (с точки зрения нашей геометрии) размером начальных ячеек. Ну, скажем, вобъем что-нибудь вроде 100x100x200 ячеек.
  7. После того, как все грубые ошибки были исправлены, необходимо убедиться, что каждое подвижное тело не имеет самопересекающихся треугольников. Дело в том, что самопересечения во время импорта не детектируются. Эту операцию необходимо проделать отдельно.  На элементе "Регион" жмем правой кнопкой мыши и выбираем "Проверить геометрию + подвижные тела на самопересечения"
  8. Программа спросит "Хотите ли Вы перед проверкой преобразовать геометрию к состоянию, в котором на солвере будет производиться расчёт?" Однозначно отвечаем "Да". Дело в том, что в процессе расчета поверхности могут смещаться на величины едва ли не порядка точности. Это необходимая процедура для построения сетки. Но даже при таком малом смещении возможно образование самопересечений, если треугольники нашей геометрии, что называется, на грани фола. И, кстати, именно для этой проверки нам необходимо, чтобы была задана какая-то начальная сетка.
  9. В результате этой проверки будет оповещено, какие импортированные объекты имеют самопересечения. И для каждого Импортированного объекта с самопересечением будет создан Импортированный объект в постпроцессоре, который будет содержать только самопересекающиеся треугольники. Это позволит сразу изучить проблемное место. Важно отметить, что в случае набора подвижных тел будет проверяться пересечение только в рамках каждого отдельного Подвижного тела. Самопересечения между телами искаться не будут. Но нам это и нужно, сначала мы хотим получить корректную геометрию каждой отдельной детали.
  10. Исправляем самопересечения и получаем набор из поверхностей, готовых для корректного создания расчетной области.

Самопересечения, исправление геометрии во FlowVision, импорт/экспорт геометрии во FlowVision

Здесь чуть подробнее о том, как мы лечим проблемы с геометрией во FlowVision.
  1. Вычисленную по алгоритму в предыдущем параграфе негодную для импорта геометрию мы используем для создания проекта во FlowVision;
  2. После создания проекта увидим всем знакомое сообщение об ошибках геометрии, см. рис. ниже.
  3. Кликая правой кнопкой по каждой из неисправностей с восклицательным знаком пробуем "Вылечить" геометрию. Очевидно, что какие-то грубые ошибки в геометрии вылечить невозможно, во FlowVision пока еще не встроен искусственный разум. А некоторые некорректные сетки вообще могут заставить FlowVision потерять сознание от неожиданности. Мы стараемся количество таких падений уменьшить, хотя, как вы понимаете, типов проблем в геометрии бесчисленное множество. Но с каждой новой версией FV будет справляться все с большим числом ошибок, а вместо падений все чаще сообщать, что геометрию вылечить не удалось. В любом случае, уже сегодня средствами одного только FlowVision удается исправить самопересечения, перекрытия и дырявости едва ли не в 50-70% случаев. На мой личный скромный взгляд - это прорыв!
  4. Если вылечить геометрию не удалось или удалось вылечить только часть проблем, то существует возможность экспортировать  поверхность в MESH, WRML2 или vtk (правой кнопкой мыши по Регион, или по Импортированному объекту, или по Поверхности в элементе Геометрия, который находится в Подобласти.
  5. Экспортированную геометрию уже можно пытаться долечить пофасеточно в специальных программах (3DTransVidia - шикарная программулина, сделано в России! Или бесплатный MeshLab - по первым впечателниям весьма мощная программулина).
  6. Ну и для ленивых всегда есть возможность попробовать экспортировать геометрию из CAD систему с чуть иными параметрами точности, нередко это помогает.
  7. После исправления ошибок выполняем проверку на самопересечения (см выше). Есть во FlowVision возможность попробовать автоматически исправить и самопересечения.
  8. Ну и в самом конце рекомендую выполнить Удаление маленьких треугольников (правой кнопкой мыши на Регионе и Импортированном объекте). Эта операция удаляет треугольники, одна сторона которых несоизмерима с двумя остальными. По сути не треугольник, а линия. Такая чистка исключительно положительно повлияет на качество построения расчетной сетки.
  9. Ну а теперь экспортируем всю геометрию из FlowVision. А вот тут автоматизации, увы, пока нет. 

Создание сборки во FlowVision. Оффсет - автоматическое создание зазоров

Исправление ошибок в треугольной сетке деталей сборки, а так же устранение самопересечений в отдельных деталях - необходимое условие для нормального построения расчетной сетки, но не достаточное. Когда мы соберем все эти детали в сборку, выяснится, что почти все они с кем-то пересекаются. Как минимум, добрая половина деталей соприкасаются поверхностями друг с другом. А как велите строить ячейку, если в ней две поверхности оказались совпадающими? А ведь именно соприкосновение поверхностей - самый типичный случай в сборках из CAD систем. В конце концов, детали опираются друг на друга, а в ряде случаев устанавливаются в натяг. Никаких зазоров, которые в реальности имеют место всегда, хотя бы за счет шероховатости, в CAD сборказ не предусматривается. А нам в FV сетку строить надо! Ну так и создадим свои собственные зазоры :)



Рис.5. Пример микроскопических пересечений поверхностей из-за триангуляции аналитически описанной геометрии. На картинке справа имеем типичную ситуацию сопряжения цилиндрических деталей. Такие пересечения бывают даже тогда, когда  мы предусмотрели в CAD системе зазор между валом и втулкой. Но при триангуляции получилось все очень грустно. Или может получиться, если вал начнет вращаться.


Итак, во FlowVision есть специальный инструмент - создание зазоров при импорте сборки. Работает этот механизм просто (хотя в основе его алгоритмы, с которыми пришлось весьма и весьма повозиться): каждая отдельная деталь-поверхность начинает "усыхать", "худеть". Конкретно каждый узел поверхностной сетки начинает перемещаться внутрь объема на заданную величину. Таким образом строится эквидистантная оригинальной поверхность.

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

Итак, при создании сборки появится окошко:


Рис.6. Если жмем OK, то выполняем эквидистантный сдвиг поверхности каждой детали. Если жмем CANCEL, то сборка создается без сдвига.

Здесь первый параметр отвечает за то, сколько раз Ахиллес будет пытаться догнать черепаху, а второй параметр - непосредственно величина (в метрах), на которую нам нужно сдвинуть поверхность каждого импортируемого тела.

Треугольники могут располагаться таким образом, что смещение двух соседних узлов на заданную величину приведет к пересечению треугольников. Поэтому при оффсете стоит озаботиться качеством геометрии и не стоит задавать неадекватные сдвиги. Как правило я смещаю поверхности на 50-100 кратную точность импорта (по умолчанию точность = 10e-8).

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

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

Шаг третий - Устраняем последние геометрические проблемы

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

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

Для решения последних проблем возможны следующие варианты действия:

  • Редактирование исходной детали в CAD системе и замена новой деталью старой подобласти. Да, существует возможность в проекте заменить поверхность подобласти на новую геометрию. Для этого кликайте правой кнопкой по элементу Поверхность, который находится  в "Геометрии" в "Подобласти". В меню выбираем "Заменить поверхность".
  • В контекстном меню на "Поверхности" можно также найти опцию выполнения эквидистантного сдвига. Так мы можем отоффсетить дополнительно выбранную поверхность. Из двух пересекающихся поверхностей я выбираю ту, что попроще, которая не имеет слишком острых углов, маленьких уступов и т.д. Оффсет такой поверхности происходит с большей вероятностью успеха.
  • Ну и если у нас достаточно простая геометрия деталей (например, деталей мало и есть плоская поверхность контакта), то можно даже использовать перемещение и масштабирование подобласти (поверхности). Чуть сдвинули деталь и получили нужный зазор. Редактирование геометрии подобласти аналогично редактированию геометрии импортированного тела. Имеется широкий спектр услуг, см рисунок ниже :)
Рис.7. Геометрию подвижных тел и подобласти можно двигать, масштабировать и разнообразно крутить -вертеть. Однако не забывайте, что после изменения геометрии подобластей расчет нельзя продолжать, нужно стартовать с нуля с перестроением сетки.

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

Проверка качества расчетной сетки

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

Вполне возможна ситуация, когда сетка с горем пополам строится на Вашей кривой геометрии (например иногда сетка успешно строится при самопересечениях или совпадениях поверхностей). Но в один прекрасный момент, после нескольких суток расчета Вы получите развал или просто падение солвера. И уже ничего невозможно будет исправить. После починки геометрии в 99% случаев понадобится запустить расчет с нуля.

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

Делаем это в два этапа:
  1. Проверяем расчетную область и подвижные тела на самопересечения с учетом сдвига на солвере (теперь уже с финальной начальной сеткой).
  2. Проверяем сам процесс построения расчетной сетки - об этом ниже.
Ряд проблем с геометрией можно обнаружить только в процессе построения расчетной сетки. Поэтому введена специальная опция для проверки качества расчетной сетки. Эта опция будучи включенной заметно замедляет расчет, поэтому не забывайте ее отключать.

Итак, включаем Вкладка Солвер - Дополнительные параметры - Проверять сетку - Да

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

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

Не все, что пишется в err файлы смертельно. Паниковать можно при сообщениях, начинающиеся с [ERROR] . Error in build grid - сигнал к тому, чтобы прекратить расчет и срочно заняться выяснением причин ошибки.

При появлении сообщения Error in build grid дается информация о местоположении проблемной ячейки. Это могут быть координаты ячейки или ее индекс. Далее Вы можете построить слой Отладочная ячейка по этим координатам или индексу и с его помощью изучить проблемное место. Об этом, наверное,я когда-нибудь напишу отдельную статью.

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

Все-таки, автоматическое построение сетки - это здорово. А решение задачи с 400 деталей реальной сборки, а не упрощенной донельзя, это уже даже круто.

Что дальше?

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

Очень просто :) Об этом в следующей, заключительной части данного цикла. Скоро на экранах ваших мониторов! 

А пока, задавайте вопросы, если таковые имеются.

Спасибо за внимание :)

6 комментариев:

  1. "При экспорте в WRML" - при переводе в красную зону в SW 2011 x64 SP1 неоднократно сталкивался с тем, что на простой геометрии (типа "ситечко" от мясорубки) возникают самопересечения на ровном месте. FV такие самопересечения автоматом исправить не мог. Поэтому ставлю ползунок у границы красной зоны.

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

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

      Удалить
  2. Этот комментарий был удален автором.

    ОтветитьУдалить
  3. "Ну и создали мы уйму зазоров, что дальше то?" - да и что дальше?
    "Об этом в следующей, заключительной части данного цикла. Скоро на экранах ваших мониторов! " - а скоро ли она появиться?
    А может Вы сможете сделать видео обзор?

    ОтветитьУдалить
    Ответы
    1. PS посмотрел, по сути статья у меня уже была готова, не хватало только проекта. Думаю, что статья важнее, поэтому проект выложу позже, а статью опубликовал.

      Удалить
  4. Сейчас по разного рода причинам сильно загружен, поэтому руки никак до завершения цикла не доходят. Как появится свободная от работа минутка - обязательно сделаю. Вполне возможно, в течение месяца. Благо заготовка уже есть. С видео сложнее, но в планах видеоблог тоже имеется.

    ОтветитьУдалить