Як видалити жорсткі рухи тіла в лінійній пружності?


9

Я хочу вирішити Ku=b де Kмоя матриця жорсткості. Однак деякі обмеження можуть бути відсутніми, тому деякий жорсткий рух тіла може залишатися в системі (через власне значення нуля). Оскільки я використовую CG для вирішення лінійної системи, це не прийнятно, оскільки іноді CG не сходить на напівпозитивних проблемах (але я іноді може конвергуватися).

Насправді я використовую підхід до певного переміщення в тому сенсі, що я додаю штрафну форму α||u||2до пружної енергії. Так енергія зчитується

W(u):=12uT(K+αI)u−btu
де αприйнятий як пропорційний деякому діагональному введенню матриці жорсткості. Але насправді це впливає на зволоження деякого режиму деформації, який я хотів би колись мати.

Деякі мої запитання:

а) чи можу я перетворити оригінальну систему так, щоб зробити її без сингулярності та певного позитивного (наприклад, перетворення координат чи перетворення конгруентності чи будь-чого іншого)? Моя ідея - використовувати таке перетворення, щоб все-таки використовувати CG для перетвореної проблеми

б) Чи існує якийсь стандартний спосіб поводження з цими особливостями?

Дуже дякую !

З повагою,

Том

Відповіді:


6

Стандартний спосіб - додати обмеження u(x0)=0 для довільно обраного вузла x0. Це гарантує, що ваше тіло не може переводити чи обертатись, і тому забирає нульове власне значення. Отримана система з цим обмеженням є позитивно визначеною навіть без вашого строку покарання.


1
Дякую! Так, але я мій випадок, у мене є кілька плаваючих підструктур, і я не можу сказати, які вузли (3 нелінійні вузли в 3D) виправити. Ось чому мені цікаво, чи не існує рішення вищого рівня, оскільки в моєму випадку нульовий простір добре відомий.
— Том

Якщо у вас є кілька структур, то вам потрібно виправити по одному вузлу для кожної структури. Не має значення, який саме, просто виберіть по одній структурі.
— Вольфганг Бангерт

3
@WolfgangBangerth Це еластичність в 3D, тому вам потрібно зафіксувати три нелінійні точки, щоб контролювати нульовий простір розмірності 6. Закріплення цих трьох переміщень - обурення рангом 9, і нелегко переконатися, що модифікація рангу 3 перевищує нульовий простір не змінює рішення. Для будь-якого вибору точок та значень, які потрібно зафіксувати, існує тривимірне сімейство правої сторони, в якому ваша зав'язана проблема дає правильну відповідь лише для одного члена.
— Джед Браун

Ні, ви не можете закріпити 3 бали за 9 обмежень, тому що ви потім також фіксуєте їх відносні відстані. Якщо ваші граничні умови дійсно не передбачають жодних інших обмежень (наприклад, якщо вони не є нормальним зміщенням по колу), вам потрібно зафіксувати 1 бал + різні кути повороту на двох інших точках загалом 6 обмежень.
— Вольфганг Бангерт

6

Якщо ви знаєте нульовий простір, ви можете зробити праву частину сумісною і метод Крилова запобігає забрудненню попереднього кондиціонера, див. Чому зафіксовано крапку для видалення нульового простору? для подальшого обговорення. У PETSc це робиться за допомогою MatNullSpaceоб'єкта. Зауважте, що ви можете надати власну функцію для проектування нульового простору, що було б корисно для зменшення витрат на проекцію, коли у вас багато плаваючих структур.

Якщо ви не знаєте нульового простору і не можете уникнути несумісного правого боку, існують спеціалізовані методи Крилова, такі як MINRES-QLP, які можуть знайти рішення мінімальної норми, незважаючи на це. Цей підхід може бути корисним, якщо у вас є шарніри та одноточкові з'єднання, які з'єднують лише деякі режими. Зауважте, що ви все ще повинні бути обережними щодо попереднього кондиціонера, що спричиняє забруднення (наприклад, через LU-факторизацію, що знаходить нульові повороти, можливо, на грубому рівні мультисетки).


Дякую тобі Джеде! Я думав про видалення нульового простору за допомогою проекції безпосередньо в своєму ітеративному методі. Але мені було цікаво, чи це не надто дорого (я можу створити оператора, який проектує нульовий простір, оскільки він справді банальний по еластичності). Також я думаю, що залишок слід також спроектувати?
— Том

2
Зробіть сумісність правої сторони та спроектуйте нульовий простір після кожного застосування попереднього кондиціонера (адже багато попередніх кондиціонерів забруднить нульовий простір). Це дає оператору КриловаK=(I−N)P−1A такий як {b,Kb,K2b,…}є ортогональним до нульового простору. Оскільки ваша проблема симетрична, вам не потрібна інша рутина для лівого та правого нульових пробілів. Це те, що робить PETSc, якщо ви телефонуєте MatSetNullSpace().
— Джед Браун
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.