Làm thế nào để loại bỏ chuyển động cơ thể cứng nhắc trong độ co giãn tuyến tính?


9

Tôi muốn giải trong đó K là ma trận độ cứng của tôi. Tuy nhiên, một số hạn chế có thể bị thiếu do đó một số chuyển động cơ thể cứng nhắc có thể vẫn còn tồn tại trong hệ thống (do giá trị 0). Vì tôi đang sử dụng CG để giải quyết hệ thống tuyến tính, điều này không được chấp nhận vì đôi khi CG không hội tụ các vấn đề bán tích cực (nhưng đôi khi tôi có thể hội tụ).Kbạn= =bK

Trên thực tế, tôi đang sử dụng một phương pháp thay thế bị phạt theo nghĩa là tôi đang thêm một hình phạt có dạng đến năng lượng đàn hồi. Vì vậy, năng lượng đọc W ( u ) : = 1α||bạn||2trong đóαđược lấy theo tỷ lệ với một số đường chéo của ma trận độ cứng. Nhưng thực sự điều này có tác dụng làm ẩm một số chế độ biến dạng mà đôi khi tôi muốn có.

W(bạn): =12bạnT(K+αTôi)bạn-btbạn
α

Một số câu hỏi của tôi là:

a) Tôi có thể chuyển đổi hệ thống ban đầu để có thể làm cho nó không có điểm kỳ dị và xác định dương (chẳng hạn như chuyển đổi tọa độ hoặc chuyển đổi đồng dạng hoặc bất cứ điều gì)? Ý tưởng của tôi là sử dụng chuyển đổi như vậy để vẫn sử dụng CG cho vấn đề được chuyển đổi

b) Có cách tiêu chuẩn nào để đối phó với những điểm kỳ dị đó không?

Cảm ơn rât nhiều !

Trân trọng,

Tom

Câu trả lời:


6

bạn(x0)= =0x0


1
Cảm ơn bạn! Đúng, nhưng tôi là trường hợp của tôi, tôi có một số cấu trúc nổi và tôi không thể biết được các nút nào (3 nút không colinear trong 3D) để khắc phục. Đây là lý do tại sao tôi tự hỏi nếu không có giải pháp cấp cao hơn vì trong trường hợp của tôi, không gian null được biết đến.
Tom

Nếu bạn có một vài cấu trúc thì bạn cần sửa một nút cho mỗi cấu trúc. Nó không quan trọng cái nào, chỉ cần chọn một cho mỗi cấu trúc.
Wolfgang Bangerth

3
@WolfgangBangerth Đây là 3D độ đàn hồi, do đó bạn sẽ cần phải ghim ba điểm không colinear để kiểm soát không gian rỗng của chiều 6. khoanh vùng chúng ba chuyển vị là một cấp bậc 9 nhiễu loạn và nó không phải dễ dàng để đảm bảo rằng các cấp bậc-3 sửa đổi ngoài không gian rỗng không thay đổi giải pháp. Đối với bất kỳ lựa chọn điểm và giá trị nào để ghim, có một nhóm 3 chiều bên phải, trong đó vấn đề được ghim của bạn đưa ra câu trả lời đúng cho chỉ một thành viên.
Jed Brown

Không, bạn không thể ghim 3 điểm cho 9 ràng buộc vì sau đó bạn cũng sẽ sửa khoảng cách tương đối của chúng. Nếu các điều kiện biên của bạn thực sự không cung cấp bất kỳ ràng buộc nào khác (ví dụ: nếu chúng không có chuyển vị bình thường trên một vòng tròn) thì bạn cần sửa 1 điểm + các góc quay khác nhau trên hai điểm khác trong tổng số 6 ràng buộc.
Wolfgang Bangerth

6

Nếu bạn biết không gian null, bạn có thể làm cho phía bên phải tương thích và có phương pháp Krylov ngăn chặn điều kiện tiên quyết gây ô nhiễm, xem Tại sao ghim một điểm để loại bỏ không gian null xấu? để thảo luận thêm. Trong PETSc, điều này được thực hiện bằng cách sử dụng MatNullSpaceđối tượng. Lưu ý rằng bạn có thể cung cấp chức năng của riêng mình để chiếu ra không gian rỗng, điều này sẽ hữu ích để giảm chi phí chiếu khi bạn có nhiều cấu trúc nổi.

Nếu bạn không biết khoảng trống null và không thể tránh được phía bên tay phải không tương thích, có các phương pháp Krylov chuyên dụng như MINRES-QLP có thể tìm thấy giải pháp định mức tối thiểu mặc dù. Cách tiếp cận này có thể hữu ích nếu bạn có bản lề và các kết nối một điểm chỉ kết hợp một số chế độ. Lưu ý rằng bạn vẫn phải cẩn thận về điều kiện tiên quyết gây ô nhiễm (ví dụ, do yếu tố LU tìm thấy các trụ không, có lẽ ở mức độ đa biến thô).


Cảm ơn bạn Jed! Tôi nghĩ về việc loại bỏ bằng cách chiếu không gian null trực tiếp trong phương pháp lặp của mình. Nhưng tôi đã tự hỏi nếu nó không quá tốn kém (tôi có thể tạo ra một toán tử chiếu ra không gian rỗng vì nó thực sự không đáng kể trong độ co giãn). Ngoài ra tôi nghĩ rằng phần còn lại nên được dự kiến ​​là gì?
Tom

2
K= =(Tôi-N)P-1Một{b,Kb,K2b,Giáo dục}MatSetNullSpace()
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.