Mô phỏng dây có thể mở rộng chính xác tùy ý


12

Tôi đang cố gắng mô phỏng một đối tượng dây thừng. Công thức tôi hiểu là một loạt các hạt, được kết nối bởi các lò xo. Những lò xo này có giá trị k rất lớn, do đó đường biến dạng, nhưng kéo dài rất ít. Tôi đã kết luận rằng việc giải quyết điều này như là một hàm của thời gian là không thể ở dạng đóng bởi vì một sợi dây là một khái quát của một con lắc (không phải là dạng đóng).

Giải quyết cho các giải pháp gần đúng, sau đó. Tôi cần một thuật toán có quy mô tốt. Các ví dụ tôi đã thấy sử dụng tích hợp Eulerian rõ ràng hoặc ẩn để di chuyển các hạt. Điều này không mở rộng.

Để thấy điều này, hãy xem xét một sợi dây có n nút. Áp dụng một lực lớn vào một đầu. Bởi vì dây không được kéo căng quá nhiều, gia tốc ở đầu kia phải ngay lập tức.

Tuy nhiên, với tích hợp Euler, để có được bất kỳ lực nào đến đầu kia đòi hỏi phải có n bước. Tôi nhận thấy một sự sụt giảm theo cấp số nhân: nếu nút đầu tiên tăng tốc một số lượng nhất định, thì các nút liền kề tăng tốc ít hơn (nếu chúng tăng tốc với cùng tốc độ, thì thuật toán không ổn định). Do đó, các nút kề rằng nút tăng tốc thậm chí chậm hơn!

Vì vậy, đối với n nút đi, gia tốc gần như không đáng kể. Điều này dẫn đến dây kéo dài đáng kể. Nếu bạn chỉ muốn tăng gấp đôi độ phân giải của mô phỏng, bạn đột nhiên cần thực hiện các bước thời gian nhỏ hơn hàng chục hoặc hàng trăm lần để có hành vi tương tự.

Tôi đang tìm kiếm một phương pháp đơn giản để giải quyết vấn đề này - tức là mô phỏng độ phân giải cao hơn hội tụ vào giải pháp chỉ với tính toán thêm thời gian đa thức. Một thư viện đầy đủ của các kỹ thuật đại số ma trận và tuyến tính có sẵn. Kiến thức của tôi về cơ học cổ điển là rất tốt, và tôi biết một số phân tích số.


Có vẻ như các thuật toán bước phụ giống như RK sẽ tăng tốc độ truyền thông (được đo bằng nút / bước) bằng một hệ số gần bằng số bước phụ, nhưng điều đó có thể không thắng nhiều về thời gian tính toán thực tế . Để thực sự chung chung, có lẽ bạn cần phải tính toán khoảng cách bạn mong đợi hiệu ứng lan truyền theo dấu thời gian (ví dụ ) và bắt đầu từ một ứng dụng heuristic của biến dạng theo độ dài đó sau đó thư giãn. vSdt
dmckee --- ex-moderator mèo con

@dmckee, vâng, làm ơn! Để trả lời cho nhận xét thứ hai của bạn, lý tưởng nhất là lực lượng phải truyền bá hiệu quả vô cùng xa trong bất kỳ dấu thời gian nào.
imallett

Chà, tốc độ âm thanh có thể khá cao ... nhưng nếu các bước thời gian của bạn dưới 10 ms, thì độ dài lan truyền vẫn chỉ là vài mét.
dmckee --- ex-moderator mèo con

Tôi tò mò muốn biết liệu những gợi ý bạn nhận được ở đây có hữu ích không. Tôi cho rằng việc thiếu sự chấp nhận có nghĩa là bạn vẫn đang theo dõi hoặc không có câu trả lời nào chính xác như những gì bạn đã hy vọng, nhưng họ đã chỉ cho bạn một con đường phía trước chưa?
dmckee --- ex-moderator mèo con

Chúng rất hữu ích, nhưng rất nhiều thứ chỉ xuất hiện đồng thời. Tôi đã làm rõ ý định của mình về một số câu trả lời, và khi tôi thở phào, tôi sẽ có thể theo dõi chúng. Cảm ơn,
imallett

Câu trả lời:


4

Trước hết, như Jed Brown đã đề cập, bạn nên sử dụng sơ đồ bước thời gian ngầm vì vấn đề của bạn có vẻ khá khó khăn, hoặc ít nhất là một sơ đồ ổn định hơn, nhưng không kém phần đơn giản như tích hợp Leapfrog hoặc tích hợp Verlet .

Đối với vấn đề thể chất, bạn quan tâm đến việc kéo dài như thế nào? Thay vì kết nối các hạt với lò xo cứng, bạn có thể sử dụng các ràng buộc toàn diện , ví dụ: đảm bảo rằng khoảng cách giữa các cặp hạt không đổi. Các ràng buộc cần phải được giải quyết cho mỗi bước thời gian và tồn tại các thuật toán hiệu quả cho chính xác thiết lập của bạn, tức là một chuỗi các ràng buộc được liên kết dài. Xem, ví dụ, bài báo này .

Vì tò mò, bạn cũng đang sử dụng các tiềm năng góc cạnh dọc theo chiều dài của sợi dây để mô hình hóa tính linh hoạt của nó?


Ngay cả khi sử dụng bước thời gian ngầm (giúp ích), việc kéo dài vẫn xảy ra. Trên thực tế, tôi chỉ quan tâm đến việc kéo dài chỉ trong chừng mực khi tôi đang cố gắng thoát khỏi nó. Toán học trong bài báo về cơ bản nằm trên đầu tôi, nhưng tôi đang nghiên cứu mã fortran. Không sử dụng các ràng buộc góc của bất kỳ loại nào.
imallett

@IanMallett: Ok, sau đó các ràng buộc là cách để đi, tức là không có sự kéo dài nào cả với các ràng buộc.
Pedro

5

Bạn có một hệ thống cứng với công thức hiện tại. Sự kéo dài động và rung động trong chuỗi (có lẽ) không thú vị, nhưng chúng kiểm soát bước thời gian rõ ràng. Điều này cho thấy sử dụng một phương pháp tích hợp thời gian ngầm. Bạn có thể sử dụng giảm xóc để ngăn chặn các dao động sẽ có xu hướng làm rối loạn kiểm soát lỗi thích ứng cho phương pháp ngầm.

Nếu các dao động ở quy mô nhỏ rất quan trọng đối với mô hình mặc dù muốn bước qua chúng (ví dụ: đối với mô hình mỏi), thì bạn có thể muốn kiểm tra các phương pháp đa biến mới như Phương pháp đa biến không đồng nhất (Engquist, Tsai, v.v.) hoặc bán quang phổ trong phương pháp thời gian. Sử dụng các phương pháp như vậy là một chủ đề ở cấp độ nghiên cứu và bạn phải hiểu rõ vấn đề của mình và khả năng của phương pháp để quyết định xem nó có phù hợp hay không. Nếu bạn muốn bảo tồn năng lượng, ví dụ như các chế độ rung nhất định không nên tiêu tan, thì bạn nên xem xét các bộ tích hợp đối xứng như Verlet.

Bạn cũng có thể giải quyết giới hạn không giãn nếu bạn muốn. Với các thuật ngữ quán tính, mô hình có thể được điều chỉnh lại theo các góc độ, dẫn đến một hệ thống ODE không cứng. Như faleichik đã chỉ ra, đây là ROPEvấn đề thử nghiệm được xem xét trong cuốn sách của Hairer, Nørsett và Wanner. Nếu bạn loại bỏ quán tính của dây, nhưng cho phép chùng (dây nhẹ, căng thấp với tải rời rạc; không phải là mô hình chung), vấn đề sẽ trở thành bất đẳng thức khác biệt (DVI) và bạn thường không thể có được độ chính xác theo thứ tự đầu tiên trong thời gian.


2
HMM là một phương pháp giảm mô hình dựa trên phép chiếu, về bản chất. Tôi ngần ngại đề xuất các phương pháp như vậy trừ khi một ứng dụng đặc biệt yêu cầu chúng; người ta phải sẵn sàng hy sinh độ chính xác cho tốc độ. Việc xác định các lựa chọn "tốt" của các toán tử nén và tái thiết (sử dụng danh pháp của HMM) vẫn không cần thiết đối với một số ứng dụng (đốt cháy là một ví dụ như vậy).
Geoff Oxberry

@GeoffOxberry Đồng ý, tôi đã thêm một cảnh báo. Một vấn đề kinh điển là làm thế nào các rung động cơ học trong đồng hồ gây ra trôi. Một vấn đề ví dụ mà tôi nghĩ sẽ phù hợp là mô hình leo / trượt của một sợi dây xung quanh một chiếc mũ được tăng tốc bởi các chế độ rung từ phía được tải. Không phải tất cả mọi thứ là đốt cháy. ;-)
Jed Brown

Giới hạn không kéo dài về cơ bản là điều duy nhất tôi thực sự cố gắng vào thời điểm này. Dao động ở quy mô tốt sẽ là tốt, nhưng một miếng vải không co giãn quá mịn là tốt hơn ngay bây giờ. Tôi đã thử bước thời gian ngầm (thông qua công thức của OpenCloth) và không may sự cố vẫn xảy ra. Bạn có thể xây dựng / cung cấp các liên kết về cách thực hiện đoạn cuối cùng của bạn? Cảm ơn,
imallett

2

Nếu bạn quan tâm đến một giải pháp nhanh, gần đúng, thì các phương pháp được sử dụng trong các hiệu ứng kỹ thuật số như hình học vi phân rời rạc có thể khiến bạn quan tâm. Tôi biết về một công thức quasistatic trong rời rạc đàn hồi , một bài báo năm 2008 từ nhóm của Grinsasta tại Đại học Columbia, nhưng có lẽ có nhiều tài liệu gần đây trong lĩnh vực này.


2

Chuyển động của dây treo là một vấn đề thử nghiệm được yêu thích của Hairer và Wanner xuất hiện trong tập thứ hai (cứng) của "Giải phương trình vi phân thông thường" và trong phiên bản thứ hai của tập thứ nhất (1993). Tôi đề nghị tùy chọn cuối cùng, trang 247. Các phương trình rất khó để rút ra và thuật toán của giải pháp số không đơn giản lắm. Mặc dù cuối cùng các bước thời gian rõ ràng thông thường như DOPRI, RK45 hoặc ODEX được áp dụng và hoạt động khá tốt, vì vậy vấn đề không thực sự nghiêm trọng.


1
Các ROPEvấn đề từ các mô hình cuốn sách một sợi dây thừng mà không kéo dài, với động lực chi phối bởi ảnh hưởng quán tính. Câu hỏi dường như được hỏi về những sợi dây kéo dài.
Jed Brown
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.