Довільне моделювання точного масштабування мотузки


12

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

Тоді вирішення приблизних рішень. Мені потрібен алгоритм, який добре масштабує. Я бачив, як приклади я використовую явну або неявну ейлерову інтеграцію для переміщення частинок. Це не масштабується.

Щоб побачити це, розгляньте мотузку з n вузлами. Прикладіть велику силу до одного кінця. Оскільки мотузка не повинна дуже розтягуватися, прискорення на іншому кінці повинно бути негайним.

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

Так, для n вузлів, прискорення майже незначне. Це призводить до мотузки, яка значно розтягується. Якщо ви хочете подвоїти роздільну здатність моделювання, вам раптом потрібно зробити кроки в часі, які в десятки чи сотні разів менше, щоб отримати подібну поведінку.

Я шукаю простий метод, який вирішує цю проблему - тобто, симуляції більш високої роздільної здатності сходяться до рішення лише за допомогою додаткових обчислень у многочлени. Доступна повна бібліотека методів матричної та лінійної алгебри. Мої знання класичної механіки дуже хороші, і я знаю деякий числовий аналіз.


Схоже, що алгоритми, схожі на RK, підскорюють зв'язок (вимірюється у вузлах / кроці) на коефіцієнт, приблизно рівний кількості підшагових кроків, але це може не мати великої виграші з точки зору фактичного обчислювального часу . Щоб бути справді загальним, вам, мабуть, потрібно обчислити, наскільки ви очікуєте, що ефект за часовий крок (тобто ), і почати з евристичного застосування напруги по цій довжині, а потім розслабитися. vsdt
dmckee --- кошеня колишнього модератора

@dmckee, так, будь ласка! Відповідаючи на ваш другий коментар, в ідеалі сила повинна ефективно поширюватися нескінченно далеко в будь-який часовий крок.
imallett

Ну, швидкість звуку, ймовірно, досить висока ... але якщо ваші часові кроки менше 10 мс, ця довжина розповсюдження становить лише кілька метрів.
dmckee --- кошеня колишнього модератора

Мені цікаво дізнатися, чи були вам корисні пропозиції, які ви отримали тут. Я припускаю, що відсутність прийняття означає або те, що ви все ще стежите, або жодна з відповідей не є саме такою, на яку ви сподівалися, але чи показали вам шлях вперед?
dmckee --- кошеня колишнього модератора

Вони були корисними, але багато речей просто придумали одночасно. Я пояснив свої наміри в деяких відповідях, і коли я передихаю, я зможу продовжувати їх виконувати. Дякую,
imallett

Відповіді:


4

Перш за все, як згадував Джед Браун , вам слід скористатися неявною схемою кроку в часі, оскільки ваша проблема здається досить жорсткою або, принаймні, більш стабільною, але не менш простою схемою, наприклад інтеграцією Leapfrog або інтеграцією Верле .

Щодо фізичної проблеми, наскільки ви зацікавлені у розтягуванні? Замість з'єднання частинок з жорсткими пружинами можна використовувати голономічні обмеження , наприклад, забезпечити, щоб відстань між парами частинок залишалося постійним. Обмеження потрібно вирішувати на кожному етапі часу, і існують ефективні алгоритми саме для вашої установки, тобто довгий ланцюг обмежень. Дивіться, наприклад, цей документ .

Ви також з цікавості використовуєте також кутові потенціали по довжині мотузки для моделювання її гнучкості?


Навіть використовуючи неявні кроки часу (що допомагає), відбувається розтягнення. Насправді мені цікаво розтягуватись лише настільки, наскільки я намагаюся його позбутися. Математика в роботі в основному над моєю головою, але я вивчаю код фортрану. Ще не використовуйте жодного кутового обмеження.
imallett

@IanMallett: Гаразд, тоді обмеження - це шлях, тобто розтягнення зовсім не має обмежень.
Педро

5

У вас жорстка система з поточною рецептурою. Динамічне розтягнення та вібрація в струні (імовірно) нецікаві, але вони контролюють чіткий крок часу. Це вказує на використання неявного методу інтеграції часу. Ви можете використовувати демпфірування для запобігання коливань, які, як правило, псують адаптивний контроль помилок для неявного методу.

Якщо дрібномасштабні коливання важливі для моделювання, незважаючи на те, що вони хочуть переступити через них (наприклад, для моделювання втоми), тоді ви можете перевірити нові багатомасштабні методи, такі як метод гетерогенного багатомасштабного масштабу (Engquist, Tsai тощо) або напів- спектральні в часі методи. Використання таких методів - це тема рівня дослідження, і ви повинні добре зрозуміти свою проблему та можливості методу, щоб вирішити, чи це може бути доречно. Якщо ви хочете заощадити енергію, наприклад, щоб певні вібраційні режими не повинні розсіюватися, то слід поглянути на симплектичні інтегратори, такі як Верлет.

Ви також можете вирішити обмеження нульового розтягування, якщо хочете. Інерційними умовами модель може бути переформульована з точки зору кутів, що призводить до нежорсткої системи ODE. Як зазначав Фалейчик, це ROPEтестова проблема, розглянута в книзі Хайрера, Нюрсета та Ваннера. Якщо ви відкинете інерційність самого канату, але дозволите провисання (легкий, малопотяжний мотузок з дискретним навантаженням; не звичайна модель), проблема стає диференційованою варіаційною нерівністю (DVI), і ви, як правило, не можете отримати кращу точність першого замовлення в час.


2
HMM - це, по суті, метод скорочення моделі на основі проекції. Я вагаюся, рекомендуючи такі методи, якщо програма спеціально їх не вимагає; треба бути готовим пожертвувати точністю за швидкість. Визначення "хорошого" вибору операторів стиснення та відновлення (використовуючи номенклатуру HMM) залишається нетривіальним для деяких застосувань (згоряння - один із таких прикладів).
Джефф Оксберрі

@GeoffOxberry Погодився, я додав попередження. Класична проблема полягає в тому, як механічні коливання в годиннику викликають дрейф. Прикладною проблемою, яку, на мою думку, було б доречно, є моделювання повзучості / ковзання мотузки навколо капстану, прискореного вібраційними режимами з завантаженої сторони. Не все - це горіння. ;-)
Джед Браун

Нульова межа розтягування - це єдине, що я справді намагаюся досягти. Дрібномасштабні коливання були б непоганими, але занадто гладка нееластична тканина зараз є кращою. Я спробував неявний крок часу (через формулювання OpenCloth), і, на жаль, проблема все ще виникає. Чи можете ви розробити / надати посилання про те, як виконати останній абзац? Дякую,
imallett

2

Якщо вас цікавить швидке, приблизне рішення, то такі методи, які використовуються в цифрових ефектах, такі як дискретна диференціальна геометрія, можуть вас зацікавити. Мені відомо про квазістатичну формулювання в " Дискретних пружних паличках", доповіді 2008 року з групи Грінспуна в Колумбійському університеті, але, мабуть, є новіша література в цій галузі.


2

Рух висячої мотузки є улюбленою тестовою проблемою Хайрера та Ваннера, яка з'явилася у другому (жорсткому) томі "Розв’язування звичайних диференціальних рівнянь" та у другому виданні першого тому (1993). Я рекомендую останній варіант, стор. 247. Рівняння складно вивести, і алгоритм чисельного рішення не дуже простий. Хоча наприкінці звичайних кроків часу, таких як DOPRI, RK45 або ODEX, застосовуються і ведуть себе досить добре, тому проблема насправді не є жорсткою.


1
ROPEПроблема з книги моделей мотузка , яка не розтягується, з динамікою переважають інерційні ефекти. Здається, питання задається про мотузки, які тягнуться.
Джед Браун
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.