Các thực hành tốt nhất cho các thuật toán và thực hiện các mô phỏng đa vật lý là gì?


16

Mô phỏng đa vật lý bao gồm ghép nhiều "vật lý", thường với các tỷ lệ không gian và / hoặc thời gian khác nhau. Ngoài ra, các mã vật lý đơn thường được viết bởi các nhóm khác nhau. Kỹ thuật ghép được sử dụng phổ biến nhất là tách toán tử bậc một, nhưng điều này có tính chính xác và độ ổn định kém. Làm cách nào để xác định thuật toán nào sẽ hiệu quả cho một vấn đề đáng quan tâm và tôi nên cấu trúc phần mềm của mình như thế nào để làm cho các thuật toán này khả dụng?

Câu trả lời:


5

Tôi mạnh mẽ ủng hộ một hội đồng được ghép hoàn toàn vì điều này có thể dễ dàng tái tạo các phiên bản phân chia toán tử. Cụ thể, các thói quen tính toán phần dư và Jacobian cho các vật lý khác nhau có thể tách biệt, nhưng khung nên có thể kết hợp chúng để tạo thành phần dư thống nhất cho toàn bộ hệ thống. Đây là cách PETSc hoạt động.

Sau đó, các giải pháp phân chia toán tử có thể được sử dụng như một điều kiện tiên quyết cho hệ thống được ghép hoàn toàn, hoặc như một bộ giải theo đúng nghĩa của nó, tất cả từ dòng lệnh. Hơn nữa, một số khớp nối có thể được bảo tồn, trong khi một số khác có thể bị thất sủng. PETSc xử lý việc này thông qua giao diện PC FieldSplit. Điều này cho phép nhân rộng các sơ đồ lai, chẳng hạn như ICE bán ẩn cho động lực học chất lỏng.


5

Vì đây là một lĩnh vực nghiên cứu rất tích cực, tôi ngần ngại thử trả lời cho vấn đề này nhưng tôi có một số kinh nghiệm về những gì không nên thử.

Không :

  • Lấy mã ứng dụng cũ A và ứng dụng cũ B, sau đó thử ghép chúng lại với nhau
  • Sử dụng mã cổ (ngụ ý không thể sử dụng trong nhận thức muộn), thay vì xây dựng một ứng dụng mới
  • Yêu cầu một khung lớn (> 10 phụ thuộc bắt buộc) đối với người dùng mới bắt đầu đóng góp
  • Giả sử bố cục dữ liệu (lưới, ma trận, vectơ, v.v.) dễ dàng tự viết

Làm :

  • Sử dụng thực hành lập trình tiêu chuẩn và, hy vọng, các mẫu thiết kế tốt
  • Đọc tài liệu về tách toán tử để hiểu các giới hạn của độ chính xác và ổn định
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.