Топологическая оптимизация в ANSYS
Напомню, что в ANSYS доступны 2 вида оптимизации: параметрическая и топологическая.
Параметрическая оптимизация служит для определения окончательной формы или поперечных сечений силовых элементов конструкции.Топологическая оптимизация служит для определения силовой схемы конструкции и дает ответ на вопрос: какие вообще нужны силовые элементы, как их расположить в пространстве и связать между собой.
Моделирование детали и прочностной расчет
Для расчета нарисуем простенький рычаг от робота в SolisWorks, берем эскиз и выдавливаем. Ничего сложного. И экспортируем геометрию в ANSYS.Для выделения определенного объема нам необходимо, так сказать, расчленить деталь на составляющие. Для этого открываем SpaceClaim и с помощью инструмента Split body разделим цилиндрические части, которые оставим под установку подшипников, и плоскую часть, которую и нужно будет оптимизировать.Для разделения выбираем ножовку и выделяем цилиндрические грани.По итогу у нас остается 4 тела. Для того, что бы ANSYS воспринимал их как одно целое, и строил конформную сетку без ненужных нам контактов объединим эти тела, но так, что бы геометрия состояла из 4 тел. Выделяем нашу деталь и в свойствах выбираем Share.Теперь можно сохранить геометрию и вернуться в Workbench.Перетаскиваем Static Structural и открываем его. Нам нужно задать нагрузку и применить ограничения.В древе видим наши 4 тела, но ANSYS их воспринимает как одно,т.к. сопряжения у нас неактивны, т.е. на пункте Connections стоит галочка, а самих сопряжений нет.Далее строим сетку, берем настроенную по умолчанию и выбираем Proximity and Curvature и ставим Fine. Отдельно для оптимизируемого тела выбираем задание размера ячейки функцией Sizing.После того как сетка построена и она нас удовлетворяет задаем граничные условия, т.е. закрепления и силы. Я закрепил среднее отверстие жестко с помощью Fixed Support и приложил две силы с помощью компонентов вдоль осей к оставшимся отверстиям.После этого можно запускать расчет и смотреть получившийся результат. Для оценки расчета добавим Deformation и напряжения по Мизесу.После того, как мы провели расчет необходимо закрыть Mechanical и вернуться в Workbench. В ячейку Solution перетаскиваем Topology Optimization и открываем его.Тут помимо нашей геометрии и граничных условий появилось древо топологической оптимизации. Так, что же можно тут настроить? Собственно то, ради чего все и затевалось - Optimization Region. В нем мы выбираем тело, в котором хотим снизить массу, убрав лишний материал. Но это скучно, поэтому мы оставляем все выбранные тела, и укажем отдельно тела, в которых проводить оптимизацию не надо. Поэтому в Exclusion region мы выбираем тела, которые не нужно оптимизировать.Следующий пункт - Objective. Тут мы выбираем критерий оптимизации. На выбор даются податливость, масса и объем. Собственно, установленный критерий податливости чаще всего и используется. Этот критерий означает максимизацию жесткости.Последний пункт это сходимость оптимизации или можно назвать граничные условия. Для упрощения решения я выбираю критерий массы и говорю, что мне хотелось бы оставить 40% от массы этой пластинки при оптимизации.Запускаем решение и за ходом решения можно наблюдать выбрав пункт Topology Densiny Tracker. Итерации отображаются в статус-баре и по мере увеличения числа итераций будет видно результат наиболее приближенный к тому, что мы в итоге получим.В четвертой итерации пока все далеко от конечного результата.В 8 итерации все элементы уже связаны между собой.Плотность оптимизации измеряется в единицах псевдоплотности, которая варьируется от 0 до 1. Псевдоплотность это такая величина, которая отвечает за наличие или отсутствие материала в расчетной области. Причем то, что меньше 0,4 удаляется, от 0,4 до 0,6 то, что можно удалить, а можно и оставить и свыше 0,6 то, что нужно оставить.Так же, для оценки результатов есть те же инструменты, что и при решении нелинейных задач - графики сходимости по итерациям.Полученный результат можно немного скорректировать используя ползунок Retained treshold. Так же, можно оценить и массу получившейся детали.Для красивых цветных картинок можно использовать старые добрые UDF-ки, это User defined result, в строку Expression впишем =TOPO и увидим разноцветную картинку раскрашенную в зависимости от псевдоплотности.Теперь сохраняем проект и возвращаемся к проекту. Для проведения верификационного расчета нужно нажать правой кнопкой мыши по строке Result и выбрать Transfer to Design Validation System. Появляется копия статического расчета, но исходные данные она берет из результатов топологической оптимизации. А для проведения проверочного расчета нужно эту самую геометрию подкорректировать. Сначала жмем Update на ячейке Result, а потом на ячейке Geometry. После чего открываем SpaceClaim. Геометрия откроется в виде STL. Так же, там присутствует и исходная геометрия. Причем результат оптимизации подавлен. Его нужно 'расподавить' и скрыть исходную геометрию.Скроем исходную геометрию, что бы она нам не мешала на данном этапе.
Ну и поскольку STL не является твердым телом, то нужно объединить эти отдельные фасетированные тела в одно. Это делается с помощью функции Merge. Это нам поможет для удобства работы с ним.Теперь нужно проверить сетку STL геометрии на ошибки. Это можно сделать командой Check Facets. И в открывшемся окне можно увидеть ошибки, которые в нашей сетке есть.
Кроме этого эти ошибки можно исправить с помощью операции AutoFix. Большинство ошибок она исправляет, но надеяться на нее не надо. Оставшиеся ошибки мы исправим с помощью другой операции, которая нам поможет. Так называемое оборачивание или обертывание - Shrinkwrap. Она накрывает нашу геометрию слоем новой сетки с равномерным размером сетки, которую можно выбрать самостоятельно.Кроме того можно выбрать два разных варианта сетки. Если выбрать стрелочку с плоскостью и выбрать дополнительно геометрию, то можно выбрать другой размер сетки. Как правило, это отверстия. В свойствах выбираем размер элемента STL-геометрии и вторичный размер, который будет применен к выделенным граням.
Жмем галочку. Результат получился странный и напрямую использовать его нельзя. Теперь для того, что бы превратить этот объект в максимально гладкий будем использовать поочередно 2 операции: Smooth/Сглаживание, которое можно применить как ко всему телу, так и к части тела; и Reduce/Уменьшение числа фасеток.В сглаживании можно изменить пороговое значение угла, то есть тот углол между гранями, который будет больше указанного не будет сглажен. Для максимально гладкого варианта ставим 180 градусов и локальное сглаживание.После нажатия кнопки с галочкой число фасеток осталось прежним, но уменьшился объем. Это происходит из-за перемещения фасеток внутрь конструкции. Полное сглаживание, в отличии от локального, никак не влияет на объем. В этом случае сглаживание происходит за счет добавления большого числа фасеток.Вторая операция Reduce необходима, что бы уменьшить число фасеток. В ее настройках есть процент конструкции, который хотим сделать более грубым и максимальное отклонение, которое мы готовы допустить для формы конструкции.
После данной операции получается достаточно грубая форма. После некоторого количества чередования Smooth и Reduce можно получить очень хорошую гладкость в результате оптимизации.Ну и применять smooth, reduce и shrinkwrap можно до тех пор, пока гладкость конструкции не начнет вас удовлетворять.После всех этих операций видно, что оптимизация затронула те части детали, которые вроде бы оптимизировать мы не хотели. Для восстановления формы в этих местах детали в исходную форму нам и понадобится эта самая, скрытая исходная геометрия.С помощью функции Fill зальем поверхности отверстий, а потом с помощью Pull вытянем их в цилиндры. Эти цилиндры вычтем из детали.Перед тем как вычесть эти цилиндры хочу рассказать как solid-тело будет конвертироваться в STL. Это произойдет в фоновом режиме при вычитании тела из STL. То есть можно преобразовать твердотельные цилиндры в STL и вычесть, а можно вычитать твердое тело без преобразований. Просто в первом случае при конвертации у нас будет возможность выбрать параметры перевода геометрии в STL, то есть длину ребра и прочее. Для конвертации нажимаем кнопочку Convert и в настройках задаем необходимые настройки, что бы сконвертировать цилиндры максимально точно в STL. И при выборе цилиндров они превращаются в STL. Для вычитания тел воспользуемся функцией Substract.Теперь нужно объединить цилиндры исходной геометрии и нашу деталь. Если бы я сделал это раньше, то отверстия не были бы цилиндрическими. При объединении solid-тела и STL, первые автоматически конвертируются в STL.Со средней частью детали придется немного повозиться, т.к. вырезы хочется оставить исходными. Поступим следующим образом: я скопирую эту область в исходной геометрии для того, что бы иметь возможность сначала ее вычесть, а потом прибавить.При помощи Substract вычитаем исходную геометрию из STL. У нас остаются огрызки детали. Для удаления оных жмем Separate all для разделения на отдельные тела. После удаления этих тел остается соединить STL с исходной геометрией.Проверяем деталь с помощью инструмента Check facets и исправляем косяки AutoFix-ом.Совсем забыл объединить с цилиндрами по краям.В таком виде ее можно отправлять на печать металлом, но все еще нельзя на верификационный расчет. Просто потому, что для расчета необходима Solid-геометрия, а не STL. Прямая конвертация это дело долгое и неблагодарное. Для перевода в твердое тело нужно немного упростить деталь.Скопируем деталь и подавим одну для физики. И будем работать с копией.Для уменьшения числа фасеток воспользуемся функцией Reduce, только отклонения сделаю гораздо меньше, чем в предыдущие разы, что бы сохранить максимум от получившейся формы.В таком, более грубом меше ее проще конвертировать в солид. Это можно сделать нажав правой кнопкой мыши и выбрав convert to solid и нажав do not merge facets. У нас их немного и объединять их не будем.Полученный солид уже можно использовать в верификационном расчете.Возвращаемся в проект и открываем ячейку модель. Соглашаемся на повторное чтение файла.В Mechanical гасим ненужные тела и восстанавливаем граничные условия и сетку.Для того, что не выбирать все грани отверстия можно воспользоваться функцией Extend to limits.После решения получаем результаты по напряжениям. Для оптимизация конструкции под механическую обработку, без печати металлом нужно извлечь кривую сечения нашей детали. Это оптимальный вариант,т.к. воздействие на деталь происходит в одной плоскости, то будет проще извлечь кривую из сечения, упростить ее и вытянуть.
Для извлечения кривой из сечения воспользуемся инструментом Extract curves. Но для начала погасим наш солид и высветим STL.Создадим специальный объект плоскости на уровне XZ.И с помощью инструмента Extract curves извлечем кривые.Инструментом Fit curves сделаем наши кривые более гладкими и доработаем поднутрения, которые были в модели.Для того, что бы сечение не превращалось в угловатое уродство, ставим галочки на преобразовании в сплайн, а то все будет в виде радиусов и прямых.Теперь нам нужно выдавить наше сечение.Выдавили на ширину оптимизированной конструкции.Теперь добавим исходную конструкцию и объединим. Вставляем тот самый файл, в котором мы разъединяли цилиндры и пластину.Воспользуемся операцией Split body, что бы отрезать в оптимизированной геометрии ненужные части, в которые потом прикрепим цилиндры.Удалим оставшиеся кусочки.И объединим с цилиндрами.Ну и в финале добавим скруглений нашей детали.На одной грани у меня вылезли ошибки, которые оперативно не получилось исправить, поэтому одна грань будет без скругления, но на результат это не влияет.
Отправляем эту деталь на верификацию, прикладываем нагрузки, закрепления и любуемся результатом.
Сравнение
Типичное упрощение детали под механическую обработку выглядит примерно так.Расчет такой детали я не стал описывать, т.к. он полностью аналогичен тому, который я делал в начале статьи.
Вес детали составляет немногим более 4,5 кг - 4578 грамм. При нагружении возникающие напряжения не превышают 170 МПа, для обычной конструкционной стали это очень мало.Далее у нас есть деталь после топологической оптимизации. У нее вес уже меньше - 4280 грамм. При нагружении максимальные возникающие напряжения - 130 МПа, что меньше, чем у неоптимизированной конструкции.И третий вариант - конструкция, доработанная нами в SpaceClaim под механическую обработку. Она тяжелее немного легче второго варианта, и ее можно как напечатать, так и изготовить традиционными способами мехобработки. Вес составляем 3860 грамм и максимальные напряжения - 140 МПа.Данную методику можно использовать и в случае с FDM печатью пластиком, просто зная предел прочности пластика и проведя несколько опытов по определению предела прочности печатных деталей, можно определить насколько, в процентном соотношении, печатная деталь менее прочная, относительно литой. После этого можно добавить механические характеристики в Engineering Data и проводить топологическую оптимизацию уже печатных деталей. Другой вопрос, что выигрыша в весе может быть куда меньше, чем при использовании металла для производства детали.
Вот несколько примеров удачной оптимизации.P.S. Картинки с балками в начале статьи из [M. P. Bendsoe, Topology optimization: Theory, Methods and Applications. Springer, 2003].
Еще больше интересных статей
Моделирование креплений для различных электронных модулей
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Данная статья ориентирована больше на новичков, однако идея может приг...
Платформа №1. Проект RC машинка
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
3D-модели для 3D-печати и не только: тoп сайтов
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
Я конкретизирую немножко. Да,....
При чем тут я? У меня есть миш...
Бабло появиться бери. Дрыги уй...
Всех приветствую! Есть специал...
Всех приветствую! Есть специал...
Вопрос может показаться дурацк...
Много лет печатаю понемногу, н...