WebCAE
← Назад к новостям
Планы19 августа 2026

Расчёт досчитался — это ещё не значит, что оптимизация верна

Мы проверили собственную топологическую оптимизацию по строгому счёту: что нужно, чтобы считать её достоверной. Разрыв публикуем целиком — десять конкретных недоделок, план на три этапа и правило для себя: пока проверочный расчёт идёт не по перестроенной сетке, результат не называется CAD-телом.

Поле плотностей в штриховой рамке ревизии

Топологическую оптимизацию легко изобразить убедительно. Расчёт отработал, объём снизился до заданной доли, появилась органичная на вид форма — а верна ли физика под ней, понять со стороны почти невозможно. Оптимизация, уверенно сошедшаяся к неверному ответу, не выдаёт никакой ошибки.

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

Что не так

Проверочный расчёт идёт по исходной сетке. Правильный порядок другой: получить из поля плотностей геометрию, построить по ней новую сетку и считать уже её, потому что грубое поле плотностей и вытекающая из него форма — разные конструкции. Насколько это важно, видно по опубликованным эталонным задачам: для трёхмерной консоли результат на грубой сетке хуже эталона примерно на 56 %, а после перестроения сетки разница падает примерно до 8 %. Наш проверочный расчёт пока пропускает шаг, который закрывает бо́льшую часть этой разницы.

Одновременно работают два фильтра. Фильтр плотностей применяется до расчёта, фильтр чувствительностей — к градиентам после него. По отдельности оправдан каждый, но вместе они не образуют выведенного кем-либо цепного правила, и получающийся градиент не является точной производной той функции, которую в итоге минимизируют.

Минимум массы без силового ограничения — вырожденная задача. Если попросить снизить массу, ограничив только объём, математически верный ответ — убрать весь материал. Это не ошибка алгоритма, а недостающая проверка в интерфейсе: он обязан требовать хотя бы одно ограничение по жёсткости, перемещению или напряжению, прежде чем запускать такой расчёт.

Ограничение по перемещению работает со знаковой проекцией, поэтому прогиб в обратную сторону может проскочить мимо предела, который задумывался как ограничение по модулю. Расчёт напряжений охватывает тетраэдры, но не гексаэдры, десятиузловые тетраэдры обрабатывает упрощённо — только по угловым узлам, — а p-норму собирает без весов по объёму, из-за чего результат зависит от того, насколько мелко разбита модель. Заморозка приграничных слоёв есть в панели, но до расчёта не доходит: цикл читает другое поле, и введённое число не влияет ни на что. А радиус фильтра подписан в миллиметрах, тогда как алгоритм работает в координатах сетки; то, что они обычно совпадают, — везение, а не гарантия.

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

И то, что мы отдаём на выходе, — это граничная сетка, помещённая в оболочку твердотельного объекта. Как промежуточный контейнер она годится, но герметичным CAD-телом не является. Называть её CAD-телом было преувеличением.

Что на самом деле проверяли тесты

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

План

Сначала — довести до доказуемой правильности один режим, а не сделать правдоподобными много: SIMP с линейной упругостью, минимум податливости, ограничение объёма, один фильтр плотностей и критерий оптимальности. Градиент сверяется с конечными разностями до заявленной точности, а сквозные тесты гоняются на опубликованных плоских эталонных задачах с их известными значениями податливости.

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

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

Правило, которого мы держимся

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

Мы используем обязательные cookie для работы сайта и, с вашего согласия, аналитические. Политика конфиденциальности