XperienS
У нас на кластере считаются сетки из 109 нодов. Система очень разреженная получается, матрица ведь не квадратная - почему так небыстро-то?
Suslik,
Ну во-первых, у нас не кластер :)))
Во-вторых, что ты подразумеваешь под "сеткой" ? Ты пространство бьёшь или как мы частицы двигаешь? У тебя 10^9 частиц?
SoRRoW
тетраэдральная сетка, всего 10^9 тетраэдров. в смысле, у вас сложность алгоритма квадратичная по количеству нодов или линейная? если квадратичная, то тут никакой кластер не поможет :/
Suslik
Сложность линейная от числа тетраэдров. Точность, правада, как и во всех итеративных методах падает с ростом размерности, поэтому, вероятно, при больших на порядок рахмерностях придётся увеличивать число итераций
Suslik
Какая схема рассчета используется? Какое уравнение решается? Какой интегратор используете? Какой солвер? Как в вашей схеме происходит объединение твердых/деформируемых тел?
Или это опять военная тайна? :)
XperienS
> Или это опять военная тайна? :)
я действительно не имею правараспространяться о подробностях тамошних методов, но по своей работе запросто могу рассказать. у меня, правда, попроще - в риалтайме не больше 106 кубов обсчитывается.
Suslik
Да мне в принципе без разницы, про какую работу ты будешь рассказывать :) интересует в принципе любая альтернативная методика, работающая в таких масштабах. Те же вопросы остаются, только хочу добавить еще парочку: если ты говоришь о кубах, какой shape function используешь, каковы параметры материала, более точная статистика количества узлов и КЭ; конфигурация теста.
XperienS
Суть метода, который я использую, в следущем:
Интегратор position-based, verlet. Каждый куб(нод может быть любым телом, не обязательно кубическим) обсчитывается независимо от остальных, считается, что пока силы действуют в одном, во всех остальных они нулевые - стандартное приближение, как в rigid dynamics. В каждом кубе не слишком простым методом высчитываются силы упругости, стремящиеся вернуть его к недеформированному состоянию, и отдельно - силы давления, действующие, как если бы куб был оболочкой, наполенной идеальным газом.
В таком подходе метод имел бы первый порядок точности по времени и координате. Это, в принципе, не слишком плохо, но волны затихали бы слишком для некоторых задач быстро. Поэтому был использован метод, который позволяет ценой малой крови по кодингу но нехилой по производительности повысить порядок точности по времени на единицу. Если будет интересно, могу описать в двух словах. Метод реализуется в две строчки, несколько негативно сказывается на устойчивости, но повышает порядок аппроксимации любого метода рунге-кутты. Так как verlet интегратор, который я использую, сводится к неявной схеме эйлера, следовательно, является интегратором рунге-кутты первого рода.
Suslik
Твой подход мне ясен. Я делал нечто подобное довольно давно, и мы даже говорили об этом с тобой, если помнишь. Метод похож на те, что упоминает Mueller в Position Based Dynamics и/или Matyka в Pressure Model of Soft Body Simulation.
Мы же тут пытаемся адаптировать под рил-тайм именно классическую модель МКЭ в теории деформации твердых тел, с совершенно конкретным набором определений и постулатов; не думаю что эти методы подлежат сравнению.
XperienS
Почему же? Итеративный солвер математически эквивалентен последовательному решению нодов, параметры задаются и там и там одни и те же, разве нельзя просто в случае успешности обоих методов сравнить результаты с экспериментальными/аналитическими данными?
Тема в архиве.