Войти
ПрограммированиеФорумФизика

The Finite Element Method

#0
17:42, 10 апр. 2007

Прочитал на американском gamedev про деформацию тел.
Короче в одной статье написано, что деформирующиеся тела можно рассчитывать в реальном времени
с помощью систем связей. Эти системы реализованы с помощью " Finite Element Method ". Ничего про этот метод я не понял.
Пробовал сделать интегрированием Верлетта по статье Якобсона, но такие соединеия слишком мягкие.

Прошу помощи у более опытных в объяснении этого метода.


#1
17:47, 10 апр. 2007

Есть 3 тома: "The finite element method. Solid mechanics".
Авторы: Zienkiewicz, Taylor... В сумме 1534 страницы...
Качество - вполне читабельное. Общий обьйом - 16 метров... Куда лить? :)

#2
10:35, 11 апр. 2007

chak
Спасибо, конечно, но 1534 страницы я не потяну.

Вот если кто-нибудь вкратце расскажет про него, буду признателен

#3
11:24, 11 апр. 2007

chak
На рапиду

#4
13:06, 11 апр. 2007

Andrew ZZZ
если вкратце - то идея следующая. тело (упругое) моделируется из набора тех самых элементов. для каждого элемента задача его деформации от всех возможных нагрузок решена заранее.
элементы бывают разные - в зависимости от числа узлов и степеней свободы, которые он обслуживает. они могут быть линейные (стержни), плоские и объемные.
вариантов широко используемых типов элементов - чертова прорва, как минимум несколько десятков (если не сотен) - в ANSYS- это такая достаточно мощная инженерная считалка - кажется как раз около сотни.
элементы стыкуются друг с другом в узлах, модифицируя таким образом жесткость узла по отношению к той или иной нагрузке.
после этого вся эта система нагружается (тоже в узлах) и в результате решения получается ее деформированое состояние.
технически это выглядит так
- строится матрица жесткости конструкции - NxN, где N - число степеней свободы в этой конструкции. в полном варианте N = 6 * K - 6 степеней свободы * число узлов.
  если интересно, то матрица эта симметричная и диагональная.
- решается линейная система уравнений M * D = F, где M - матрица жесткости, D - вектор перемещений узлов под нагрузкой, а F - вектор нагрузок.

решать это можно по разному - как правило решение "в лоб" - например метод гаусса - это ОЧЕНЬ долго - потому что матрицы на нормальных инженерных конструкциях чудовищного размера.
как правило используется что-то вроде метода холецкого (для диагональных-симметричных матриц) или итерациями.
кроме того, в зависимости от особенностей конструкции можно использовать всякие специаяльные методы - они бывают гораздо быстрее.

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

#5
14:15, 11 апр. 2007

Lion007
Блин, пожизненный респект. Вроде понял
Читал на gamedev.net
http://www.gamedev.net/reference/articles/article1459.asp

chak
Кстати, Zienkiewicz - Зенкевич - почти мой однофамилец, однако

#6
14:53, 11 апр. 2007

Andrew ZZZ
на добром слове - спасибба! 8)
на самом деле изложить в нескольких словах всего зенкевича - это, кастати, классический труд по МКЭ - можно сказать библия - ясен пень не получится.

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

за ссылку спасиба - гляну, если какие мысли появятся - то свистну!

зы : посмотрел. ровно как я говорил - обычные конечные элементы + запоминание обращенной матрицы жесткости.

#7
17:44, 11 апр. 2007

может немного не в тему, но раз уж речь о деформациях, то FEM это естественно не единственный метод,
например - "Position Based Dynamics", shape matching.

#8
20:08, 11 апр. 2007

согласен с Lion007.Писать не писал такого, но работал с  ANSYS: он швеллер нагруженный (штука в виде пуквы "П") считает довольно долго.В реалтайме не заработает имха, если не шаманить, а если шаманить может проще обойтись анимацией?

#9
20:10, 11 апр. 2007

chak
залей плз куда нить, для коллекции.

#10
21:08, 11 апр. 2007

покрутил идею в голове. а ведь есть здравое зерно!
для несильно побитых (в смысле - у которых число узлов небольшое) объектов, которые почти не меняют своей формы.вполне может покатить - при наличии той самой обращенной матрицы.
например дерево - как его решали - не суть важно, но даже если его свести к сравнительно небольшому числу точек, то гнуться ветки у него будут вполне физично - во всяком случае, наверняка более правдоподобно, чем симуляция его же жесткими стержнями с непонятно какой жесткости связями. с другой стороны, никто не мешает взять жесткость связей из того же конечноэлементного расчета. помножить матрицу небольшого размера на вектор - это достаточно быстро. если поизгаляться немного - можно даже на ГПУ 8)_). а вот то, что ребята пишут про тряпки... либо врут, либо что-то хитрое придумали. все-таки МКЭ - он как правило дает вразумительные результаты для сравнительно небольших деформаций (и, соответственно, достаточно небольших по отношению к жесткости нагрузок), а для тряпок это далеко не так... это уже начинается сугубо нелинейная задача, а с ней возни гораздо больше.

зы : а вообще - меня можно сказать профессиональный интерес разобрал - надо будет попробовать... все-таки кафедра строительной механики и прочности ЛА в МАИ, а потом несколько лет в отделе прочности РКК "Энергия" - это не лингам собачий! 8)_)

#11
21:26, 11 апр. 2007

"Тряпки" можно в динамике решатъ Рунге-Куттом для неболъших timestep. Разбиватъ ее на узлы и при просчете узла учитыватъ ближайших соседей.
Так уже на ГПУ считают динамику потоков.

#12
21:33, 12 апр. 2007

KAP
jD
качаем-с
http://ifolder.ru/1662157

#13
0:25, 13 апр. 2007

Andrew ZZZ
Почитай книжку или погугли. Книжка лучше. Для понимания метода надо осилить две вещи: слабая постановка (конкретно, надо понимать, чем она отличается от классической) и галёркинская аппроксимация (а именно, преимущества локальных базисов над глобальными базисами). Усё.

ПрограммированиеФорумФизика

Тема в архиве.