Arbitralna dokładność Symulacja skalowalnej liny

12

Próbuję symulować obiekt linowy. Rozumiem, że sformułowanie to szereg cząstek połączonych sprężynami. Sprężyny te mają bardzo duże wartości k, tak że linia odkształca się, ale bardzo mało się rozciąga. Doszedłem do wniosku, że rozwiązanie tego w funkcji czasu nie jest możliwe w formie zamkniętej, ponieważ lina jest uogólnieniem wahadła (które nie jest formą zamkniętą).

Rozstrzygnijcie więc przybliżone rozwiązania. Potrzebuję algorytmu, który dobrze się skaluje. Przykłady, które widziałem, używają jawnej lub niejawnej integracji Eulera do przemieszczania cząstek. To nie jest skalowane.

Aby to zobaczyć, rozważ linę z węzłami. Zastosuj dużą siłę na jednym końcu. Ponieważ lina nie powinna bardzo się rozciągać, przyspieszenie na drugim końcu musi być natychmiastowe.

Jednak w przypadku integracji Eulera, aby uzyskać jakąkolwiek siłę na drugim końcu, potrzeba n kroków. Zauważam wykładniczy spadek: jeśli pierwszy węzeł przyspieszy określoną wartość, wówczas sąsiednie węzły przyspieszają mniej (jeśli przyspieszają z tą samą prędkością, algorytm nie jest stabilny). W związku z tym węzły sąsiadujące z tym węzłem przyspieszają jeszcze wolniej!

Tak więc dla oddalonych węzłów przyspieszenie jest prawie znikome. Prowadzi to do liny, która znacznie się rozciąga. Jeśli chcesz podwoić rozdzielczość symulacji, musisz nagle wykonać kroki dziesięciokrotnie lub setki razy mniejsze, aby uzyskać podobne zachowanie.

Szukam prostej metody, która rozwiązuje ten problem - tj. Symulacje o wyższej rozdzielczości są zbieżne z rozwiązaniem z dodatkowym obliczeniem tylko czasu wielomianowego. Dostępna jest pełna biblioteka technik algebry macierzowej i liniowej. Moja wiedza na temat mechaniki klasycznej jest bardzo dobra i znam analizę numeryczną.

imallett
źródło
Wydaje się, że podobne do RK algorytmy podstopniowe przyspieszą komunikację (mierzoną w węzłach / krokach) o współczynnik mniej więcej równy liczbie podetapów, ale może to nie być dużo wygrane pod względem faktycznego czasu obliczeniowego . Aby być naprawdę ogólnym, prawdopodobnie musisz obliczyć, jak daleko spodziewany jest efekt rozprzestrzeniania się w czasie (tj. ), i zacząć od heurystycznego zastosowania odkształcenia na tej długości, a następnie zrelaksować się. vsret
dmckee --- były moderator kociak
@dmckee, tak, zrób to! W odpowiedzi na twój drugi komentarz, idealnie, siła powinna rozprzestrzeniać się nieskończenie daleko w dowolnym czasie.
imallett,
Szybkość dźwięku jest prawdopodobnie dość wysoka ... ale jeśli twoje kroki czasowe są krótsze niż 10 ms, to długość propagacji nadal wynosi tylko kilka metrów.
dmckee --- były moderator kociak
Jestem ciekawy, czy otrzymane tutaj sugestie były pomocne. Zakładam, że brak akceptacji oznacza, że ​​nadal śledzisz działania lub że żadna z odpowiedzi nie jest dokładnie taka, jak się spodziewałeś, ale czy wskazały one drogę naprzód?
dmckee --- były moderator kociąt
Były pomocne, ale wiele rzeczy pojawiło się jednocześnie. Wyjaśniłem swoje zamiary w odniesieniu do niektórych odpowiedzi, a kiedy otrzymam chwilę wytchnienia, będę mógł je kontynuować. Dzięki,
imallett,

Odpowiedzi:

4

Przede wszystkim, jak wspomniał Jed Brown , powinieneś zastosować domyślny schemat krokowy, ponieważ twój problem wydaje się dość sztywny lub przynajmniej bardziej stabilny, ale równie prosty schemat, taki jak integracja Leapfrog lub Verlet .

Jeśli chodzi o problem fizyczny, jak bardzo jesteś zainteresowany rozciąganiem? Zamiast łączyć cząstki ze sztywnymi sprężynami, można zastosować ograniczenia holonomiczne , np. Upewnić się, że odległość między parami cząstek pozostaje stała. Ograniczenia muszą zostać rozwiązane na każdym etapie, a istnieją wydajne algorytmy dokładnie dla twojej konfiguracji, tj. Długi połączony łańcuch ograniczeń. Zobacz na przykład ten artykuł .

Czy z ciekawości używasz również potencjałów kątowych na całej długości liny do modelowania jej elastyczności?

Pedro
źródło
Nawet przy użyciu niejawnego zwiększania czasu (co pomaga), następuje rozciąganie. W rzeczywistości jestem zainteresowany rozciąganiem tylko w takim stopniu, w jakim próbuję się go pozbyć. Matematyka w gazecie jest w zasadzie nad moją głową, ale studiuję kod fortran. Nie używam jeszcze żadnych ograniczeń kątowych.
imallett,
@IanMallett: Ok, a następnie ograniczenia są właściwą drogą, tzn. Nie ma rozciągania z ograniczeniami.
Pedro
5

Masz sztywny system z obecnym składem. Dynamiczne rozciąganie i wibracje struny są (prawdopodobnie) nieciekawe, ale kontrolują wyraźny krok czasowy. Wskazuje to na użycie niejawnej metody integracji czasu. Można użyć tłumienia, aby zapobiec oscylacjom, które będą miały tendencję do zakłócania adaptacyjnej kontroli błędów dla metody niejawnej.

Jeśli drobne oscylacje są ważne w modelowaniu, mimo że chcesz je przekroczyć (np. W przypadku modelowania zmęczeniowego), możesz wypróbować nowe metody wieloskalowe, takie jak heterogeniczna metoda wieloskalowa (Engquist, Tsai itp.) Lub pół- metody spektralne w czasie. Zastosowanie takich metod jest tematem badawczym i musisz dobrze zrozumieć swój problem i możliwości tej metody, aby zdecydować, czy może być odpowiednia. Jeśli chcesz oszczędzać energię, na przykład aby niektóre tryby wibracyjne nie rozpraszały się, powinieneś spojrzeć na integratory symplektyczne, takie jak Verlet.

Możesz także rozwiązać limit zerowego rozciągnięcia, jeśli chcesz. W warunkach bezwładności model można przeformułować pod kątem kątów, co prowadzi do powstania niesztywnego układu ODE. Jak wskazał faleichik, jest to ROPEproblem testowy rozważany w książce Hairer, Nørsett i Wannera. Jeśli odrzucisz bezwładność samej liny, ale dopuścisz luzu (lekka, mało rozciągliwa lina z dyskretnym obciążeniem; nie jest to powszechny model), problem stanie się różnicową różnicą wariacyjną (DVI) i ogólnie nie będziesz w stanie uzyskać lepszej dokładności niż w przypadku pierwszego rzędu czas.

Jed Brown
źródło
2
HMM to w zasadzie metoda redukcji modelu oparta na projekcji. Waham się przed poleceniem takich metod, chyba że aplikacja ich wyraźnie wymaga; trzeba być gotowym poświęcić dokładność dla prędkości. Określenie „dobrych” wyborów operatorów kompresji i rekonstrukcji (przy użyciu nomenklatury HMM) pozostaje nietrudne w niektórych zastosowaniach (jednym z takich przykładów jest spalanie).
Geoff Oxberry
@GeoffOxberry zgodził się, dodałem ostrzeżenie. Klasycznym problemem jest to, jak drgania mechaniczne w zegarze powodują dryf. Przykładowym problemem, który moim zdaniem byłby odpowiedni, jest modelowanie pełzania / poślizgu liny wokół kabestanu przyspieszanego przez tryby wibracyjne od strony obciążenia. Nie wszystko jest spalaniem. ;-)
Jed Brown,
Limit zerowego rozciągnięcia jest w zasadzie jedyną rzeczą, o którą tak naprawdę staram się w tym momencie. Przydałyby się oscylacje na małą skalę, ale w tej chwili lepsza jest nieelastyczna, zbyt gładka tkanina. Próbowałem niejawnego zwiększania czasu (poprzez formułę OpenCloth) i niestety problem nadal występuje. Czy potrafisz opracować / podać linki do tego, jak wykonać ostatni akapit? Dzięki,
imallett,
2

Jeśli interesuje Cię szybkie, przybliżone rozwiązanie, metody zainteresowane efektami cyfrowymi, takie jak dyskretna geometria różnicowa, mogą Cię zainteresować. Zdaję sobie sprawę z quasistatycznego sformułowania zawartego w Discrete Elastic Rods , artykule z 2008 roku grupy Grinspun z Columbia University, ale prawdopodobnie jest więcej nowszej literatury na ten temat.

Aron Ahmadia
źródło
2

Ruch wiszącej liny jest ukochanym problemem testowym Hairera i Wannera, który pojawił się w drugim (sztywnym) tomie „Rozwiązywanie zwykłych równań różniczkowych” oraz w drugim wydaniu pierwszego tomu (1993). Polecam ostatnią opcję, strona 247. Równania są trudne do wyprowadzenia, a algorytm rozwiązania numerycznego nie jest bardzo prosty. Chociaż na końcu stosowane są konwencjonalne steppery czasu jawnego, takie jak DOPRI, RK45 lub ODEX i zachowują się całkiem nieźle, więc problem nie jest naprawdę sztywny.

faleichik
źródło
1
ROPEProblem z modeli rezerwacji liny, które nie rozciągają, z dynamiką zdominowanych przez efektów inercyjnych. Wydaje się, że pytanie dotyczy lin rozciągających się.
Jed Brown