Những cấu trúc dữ liệu mới được sử dụng trong FEM thích ứng?


9

Rất nhiều thư viện FEM thích nghi sử dụng các cấu trúc lưới dữ liệu tiên tiến hơn để xử lý thêm / gỡ bỏ các nút, cạnh, hình tam giác, tứ diện, vv Ví dụ, các p4est sử dụng thư viện octree cấu trúc dữ liệu cho lưới tinh tế thích nghi; bạn thường không tìm thấy quãng tám được sử dụng để tính toán trên lưới tĩnh.

Những gì thay đổi về phía đại số tuyến tính cho FEM thích ứng?

Cách thẳng thắn nhất mà tôi có thể nghĩ ra là xây dựng lại hoàn toàn tất cả các ma trận hệ thống bất cứ khi nào lưới được tinh chế hoặc thô. Nếu thích ứng lưới là một hoạt động không thường xuyên, thì chi phí cho việc đó cuối cùng được khấu hao trong phần còn lại của tính toán. Người ta có thể dễ dàng tận dụng phần mềm đại số tuyến tính thưa thớt hiện có (PETSc, Trilinos, v.v.) với phương pháp này.

Là phương pháp cùn này được sử dụng phổ biến nhất, hoặc có các thư viện quản lý để sử dụng lại hoặc sửa đổi ma trận cũ trong quá trình sàng lọc? Rốt cuộc, hầu hết các lưới và ma trận tương ứng không thay đổi trong quá trình thích ứng lưới.

Câu trả lời:


6

Vâng, cách tiếp cận phổ biến nhất là xây dựng lại. Các cấu trúc dữ liệu có thể thay đổi tại chỗ có xu hướng kém hiệu quả hơn một khi được thiết lập và việc phân bổ lại thực sự khá rẻ so với việc lắp lại (ví dụ, do tính phi tuyến) nên đó thực sự là một giải pháp tốt. Bên ngoài các hốc tương đối hiếm với các giải pháp rất dễ dàng, các nỗ lực sử dụng cấu trúc dữ liệu động trong các bộ giải sẽ chỉ làm cho ứng dụng của bạn chậm hơn. Tuy nhiên, đó là một nhận thức phổ biến trong số những người quên đo lường hoặc mô hình hiệu suất.


3

Giống như Jed đã nói, việc tái sử dụng các thành phần đại số tuyến tính như ma trận và vectơ thường không được thực hiện. Nó cũng không cần thiết: thiết lập các thành phần này tương đối rẻ so với chi phí giải quyết các hệ thống tuyến tính.

Nếu bạn tìm kiếm những thứ thay đổi khi chuyển từ lưới tĩnh sang lưới tinh chỉnh thích nghi, thì trở ngại lớn nhất là xử lý các nút treo. Trong deal.II , điều này được xử lý bởi lớp ConstraintMatrix , cần vài 1000 dòng mã. Bạn có thể tìm thấy một số mô tả về những gì lớp này làm trong bài báo của tôi và Oliver Kayser-Herold (được liên kết từ trang ấn phẩm của tôi ). Tất nhiên, không có thành phần nào khác (ngoài việc xử lý lưới) đòi hỏi rất nhiều sự thích ứng khi đi từ các lưới cố định sang các lưới thích ứng.

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.