13.12.2024 • C3D Modeler

Опыт использования C3D Modeler для построения расчетных моделей

Олег Бутин, ведущий математик-программист, НТЦ «АПМ», делится опытом использования геометрического ядра C3D Modeler при построении расчетных моделей специалистами научно-технического центра «АПМ», который является ведущим российским разработчиком и поставщиком ПО для инженерных расчетов, а также партнером компании АСКОН по консорциуму «РазвИТие».

Компания НТЦ «АПМ» более 30 лет присутствует на рынке и специализируется на разработке CAE-систем для строительства, машиностроения, приборостроения и смежных областей. Центр осуществляет полный цикл работы с моделями от создания до анализа, а также выполняет расчеты на заказ. Линейка продуктов компании «АПМ» состоит из APM WinMachine (CAE-система автоматизированного расчета и проектирования механического оборудования и конструкций), APM FEM (плагин, встраиваемый в КОМПАС-3D для выполнения пространственного анализа) и APM Civil Engineering (предназначен для создания моделей конструкций, выполнения необходимых расчетов и визуализации полученных результатов преимущественно в строительной отрасли).

Линейка программных продуктов НТЦ «АПМ»
Рис. 1. Линейка программных продуктов НТЦ «АПМ»

Примеры, о которых пойдет речь, получены в процессе эксплуатации продукта, который называется APM Studio и входит в пакет APM WinMachine.

Создание модели «c нуля»
Рис. 2. Создание модели «c нуля»

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

После того как модель создана или импортирована из другой системы, наивно полагать, что для достижения положительного результата будет достаточно нажать кнопку «Создать расчетную модель» или «Построить расчетную сетку».

Подготовка модели
Рис. 3. Подготовка модели

На иллюстрации показано, к чему может привести такой подход. Его итогом стала сетка с некими странными артефактами, которые можно наблюдать на слайде слева. Разобравшись, становится очевидно, что у модели каким-то образом появилось короткое ребро, которое стало виной неутешительного исхода. Именно в этом случае мы обращаемся к ядру C3D Modeler, а именно к функции EdgeModifiedSolid. Учитывая простоту топологии модели, функция успешно справляется с поставленной задачей, и на слайде справа видно, что артефакт исчез, а сетка стала более равномерной.

Подготовка модели
Рис. 4. Подготовка модели

Аналогично можно проиллюстрировать применение функции FaceModifiedSolid уже для поверхностей. На слайде слева представлена некая деталь, в которой

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

Подготовка модели
Рис. 5. Подготовка модели

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

Подготовка модели
Рис. 6. Подготовка модели

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

Подготовка модели
Рис. 7. Подготовка модели

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

Подготовка модели
Рис. 8. Подготовка модели

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

Подготовка модели
Рис. 9. Подготовка модели

Не менее важной является задача выявления контактных поверхностей для последующего учета в расчете. На слайде слева показан пример выявления контакта типа «поверхность-поверхность» с помощью функции FindTouchedFaces, которая показывает грани, находящиеся в контакте с заданной точностью, в том числе с разных солидов. В данном случае были найдены малиновая и оранжевая грани. Устанавливая контакт между ними в ограниченных условиях, в расчете можно, например, строить совместную сетку для этих деталей, несмотря на то что изначально это были разные солиды. Эта опция повышает удобство и востребована расчетчиками.

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

Подготовка модели
Рис. 10. Подготовка модели

Полезной для нас оказалась и функция MassInertiaProperties. Часто поведение какой-то конкретной части модели не важно для анализа модели в целом. Не требуется переводить ее в расчетную модель, аппроксимировать конечными элементами — достаточно просто учесть ее как некое абсолютно твердое тело или даже точечную массу. В этом случае у нас есть возможность указать ядру получение для такой детали ее массово-инерционных характеристик, после чего мы ее просто учитываем. Не строим для нее сетку, а лишь учитываем ее в нашей расчетной модели как некие граничные условия. Это помогает в работе.

Интерактивное построение расчетной сетки
Рис. 11. Интерактивное построение расчетной сетки

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

Интерактивное построение расчетной сетки
Рис. 12. Интерактивное построение расчетной сетки

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

Интерактивное построение расчетной сетки
Рис. 13. Интерактивное построение расчетной сетки

Оценим результат. В первом случаем мы получаем цилиндр и шайбу. Во втором — цилиндр и втулку. Оба варианта нас устраивают, модель фундаментально «упрощена». Мы представили ее в виде двух частей, с которыми в дальнейшем можно работать независимо.

Построение сетки — обработка ребер
Рис. 14. Построение сетки — обработка ребер

Следуем хронологическому порядку: мы построили модель, удалили артефакты, «упростили» ее, дальше мы начинаем непосредственно построение сеток. Для этого мы аппроксимируем кривые модели их конечным элементом представления — ломаными, затем — поверхности, после строим сетку в объеме. Нами востребован если не полный набор функций, которые даются ядром для работы с кривыми и поверхностями, то большая их часть. Это необходимо и для определения параметров кривых и поверхностей, в частности.

Построение сетки — обработка граней
Рис. 15. Построение сетки — обработка граней

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

«Особенности»: дефекты на кривых (на ребрах) — «петли»
Рис. 16. «Особенности»: дефекты на кривых (на ребрах) — «петли»

«Особенности»: дефекты на контурах — «зазоры»
Рис. 17. «Особенности»: дефекты на контурах — «зазоры»

«Особенности»: дефекты на контурах — вырождение в линию
Рис. 18. «Особенности»: дефекты на контурах — вырождение в линию

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

«Особенности»: дефекты на контурах — микроперехлесты
Рис. 19. «Особенности»: дефекты на контурах — микроперехлесты

«Особенности»: дефекты на контурах — микроперехлесты
Рис. 20. «Особенности»: дефекты на контурах — микроперехлесты

Еще одна распространенная ситуация — пересечения кривых контура (либо в месте гладкой стыковки, либо в месте стыковки под углом).

«Особенности»: дефекты на контурах — макроперехлесты
Рис. 21. «Особенности»: дефекты на контурах — макроперехлесты

Нередко приходится сталкиваться с макроскопическими пересечениями в рамках всего контура. Растет потребность в функционале, который позволяет выявлять такие артефакты, подсвечивать их и в дальнейшем «лечить». За «лечение» может отвечать ядро или конвертер, но эти процессы скрыты от построителей расчетной модели. Надеемся, что вместе с развитием функциональности ядра мы также будем двигаться в этом направлении.

«Вызовы»: дефекты на гранях
Рис. 22. «Вызовы»: дефекты на гранях

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

«Вызовы»: дефекты на гранях
Рис. 23. «Вызовы»: дефекты на гранях

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

«Вызовы»: дефекты на гранях
Рис. 24. «Вызовы»: дефекты на гранях

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

«Вызовы»: дефекты на гранях
Рис. 25. «Вызовы»: дефекты на гранях

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

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

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

Автоматизация при преобразовании тонких деталей в оболочке означает потребность в если не в автоматическом, то в полуавтоматическом распознавании. Эта опция востребована, когда часть модели нужно оставить в виде солидов, а часть — представить в виде пластин. При этом при разрезании необходимо сохранять топологическую связь между исходным солидом и подсолидами, полученными при разрезании. Сейчас мы опираемся на инструмент MbName, но возникают ситуации, когда проследить цепочку соответствия исходной детали и получившихся из нее не представляется возможным. Специалистами C3D Labs уже ведется работа в этом направлении, и мы благодарим разработчиков за то, что они прислушиваются к нашим просьбам и делают ядро всё лучше и лучше.

Олег Бутин, ведущий математик-программист, НТЦ «АПМ»
Олег Бутин,
ведущий математик-программист,
НТЦ «АПМ»
Поделиться материалом
Вверх