пятница, 31 мая 2013 г.

Autodesk Simulation. Переделка конструкторской модели в расчетную. Теория МКЭ

Продолжаю публикации по мотивам доклада на САПРяжении.
Для понимания многих особенностей мышления "расчетчиков" нужно хотя бы немного понимать суть численных методов с помощью которых происходит решение проектно-исследовательских задач. Я не буду углубляться в теорию, просто дам короткое "научно-популярное" объяснение подхода, а также ключевой (в рамках данной серии публикаций) особенности, плавно вытекающей из теории.

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

Все эти предметы возникли не для того чтобы "задолбать" бедных студентов, а как единственная возможность решения отдельных задач. Многие ВУЗовские предметы требовали решения различных зубодробительных матриц, многоэтажных дифференциальных дробей, длинных интегралов, именно потому, что определенные физические явления по другому описать не было возможности. Особенно для объектов со сложной геометрической формой.

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

Для еще большего упрощения, в каждой из отраслей многоэтажные системы дифуров и прочей математики со временем заменились на "стандартные" методики проектирования и расчета. Они по большей части оперировали уже не дифурами, а просто алгебраическими многоэтажными уравнениями ("эмпирика") выведенными путем многочисленных упрощений и обобщений. А также на базе опыта. Жизненного опыта. В рамках своего "коридора применимости" данные задачи решаются хоть и приближенно, а не точно, как в прошлом случае, но зато с нужной степенью достоверности. Зато перенос правил с одной отрасли на другую... Применение методов в случаях выходящих за пределы "коридора применимости" приводил часто к большим погрешностям и проблемам (а иногда к кандидатским и докторским :) ).

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

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

Одним из наиболее распространенных методов вычислительной механики сейчас (и последние десятилетия)  является метод конечных элементов (МКЭ). Он был придуман в 40х годах 20го века для задач строительной механики, но сейчас используется для решение практически любого класса задач.

Аналитические методы расчета хорошо работают на простых объектах, но при этом их нередко невозможно применить к объектам сложной формы. Метод конечных объектов в свою очередь представляет объект с формой любой сложности, как совокупность подобъектов. Каждый из этих подобъектов обладает достаточно простой формой (например "кубик", "призма", "пирамида") и для него может быть получено аналитическое решение.

Наверное лучшей аналогией является конструктор "Lego" из "кирпичиков" которого можно собрать объект практически любой формы:
В нашем случае это демонстрируется на базе "бывшего" логотипа Autodesk Simulation:
На рисунке представлена геометрическая модель (вверху слайда) и его конечно-элементная вариация. Собственно вот эти подобъекты типа "кубиков" и пр. и называются конечными элементами. Кубики имеют друг с другом общие грани, ребра и вершины. Однако, для упрощения решения считается, что они связаны только вершинами. Вершины, в терминологии МКЭ имеют название "узлы". 
Процесс создания на базе геометрии подобъектов называется "создание сетки" или "разбиение на сетку". Собственно посмотрев на картинку аналогия с сеткой становится понятной. 

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

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

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

Для примера возьмем "кубик" разбитый на КЭ сетку с двумя элементами на сторону. Таким образом в нем получается 8 элементов и 27 узлов.
Теперь уменьшим размер элемента в два раза. Всего лишь в два раза.
Подобное действие привело к тому что количество элементов выросло с 8 до 64х. В восемь раз. Количество узлов увеличилось почти в пять раз (а именно в 4.6). Теперь их 125.

Количество элементов является важным параметром, однако его изменение приводит к линейному изменению времени необходимому для расчета поведения элементов по отдельности. 
Однако есть, есть параметр растущий в геометрической прогрессии. Как уже говорилось результаты получаются на базе решения матрицы. Так вот размер матрицы зависит от количества узлов. Матрица является квадратной. Таким образом, в нашем, случае размер матрицы вырос с 27х27 до 125х125 - в 21 раз.

Большинство тех, кто дочитал до данных строк имел опыт решения, в свое время на младших курсах ВУЗа, матриц. В основном это 3х3 и  4х4, некоторым повезло... они решали 10х10. Все мы помним, что это затратный по времени  процесс. Ну а теперь представьте, что компьютеру приходится в реальной жизни решать матрицы с размером стороны в сотни тысяч и даже миллионы. 
А теперь мы еще и в 20 раз увеличиваем их размер. В общем любое измельчение приводит к существенному увеличению размерности задачи, времени потребном для ее решения и прочих вычислительных ресурсов.
Для сравнения ниже представлены матрицы 8х8 и 64х64:
Даже с учетом увеличения масштаба для матрицы 8х8, разница на глаз вполне заметна :)
Теперь следует пояснить "желтые выделения" в матрицах. Так как каждый из узлов принадлежит ограниченному количеству элементов, то по сути матрица имеет ярко выраженный "диагональный вид", с некоторыми вкраплениями. Скажем так. 
Это существенно уменьшает размерность и сложность задачи, однако, все равно требования к ресурсам растут в геометрической прогрессии.

Фразы о требованиях к ресурсам хороши, но увы не дают конкретики. Именно для этих целей мы в свое время проводили большое количество различных расчетов. Читали книги и статьи, и можем сказать, что на задаче по расчету напряженно-деформированного состояния в линейной постановке и без контактов (одна из самых простых задач, а о контактах будет сказано позже) для задачи на базе объемной сетки в среднем на 300 тысяч узлов приходится около 1 ГБ оперативной памяти. Autodesk Simulation (AS) обычно сообщает количество элементов, а не узлов, но это не проблема. Для реальных задач количество узлов и элементов - величины одного порядка.  
Таким образом, если у нас есть задача которая содержит около 300 тысяч элементов, и спокойно решается на машине с объемом ОЗУ в 2-4 ГБ. Уменьшение размера элемента в два раза может привести к тому, что на ее решение не хватит и 16 ГБ. Ну а время решения увеличится с пяти минут до получаса-часа.

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

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

Раз мы говорим о людях ранее мало сталкивавшихся с расчетами, то следует сказать пару слов о usability и user-frendly продукта AS. С этой точки зрения интерфейс AS достаточно прост, и особенно близок тем, кто работал с другими продуктами Autodesk. Эти люди заметят много знакомых "фишек". Остальные смогут сделать свои первые расчеты буквально за несколько минут, если перед этим выберут не сильно сложную деталь, и посмотрят хотя бы парочку видео о работе AS (например на ресурсе engineering exploration). Во многих книгах, статьях , видеоматериалах говорится, что создание сетки - один из наиболее ответственных, важных и сложных этапов. С этой точки зрения старт "новичка" с AS будет быстрым и легким. Для того чтобы создать свою первую сетку не понадобится делать никаких лишних телодвижений - достаточно просто нажать на "Generate 3D Mesh"
Если Вы хотите уточнить результаты, то в Вашем распоряжении ползунок из верхнего диалогового окна на рисунке. Как уже говорилось - просто и быстро.
В то же время два нижних окна, доступных по кнопке "Options"  из верхнего показывают что на самом деле вариантов настройки для создания сетки чуть больше. В целом они могут удовлетворить большинство. Иногда в эти настройки все таки желательно залазить, потому как  это дает возможность получить более качественную и адекватную сетку. Примеры тому будут показаны позже.

Ну а на сегодня наверное достаточно. В следующий раз публикация будет посвящена проекту с условным названием "ящик"

Антон Васильев, для adsk.tmm-sapr.org