Які найкращі практики щодо алгоритмів та впровадження мультифізичного моделювання?


16

Багатофізичне моделювання включає з'єднання декількох "фізик", часто з різними масштабами простору та / або часу. Крім того, коди з однієї фізики часто пишуться різними командами. Найчастіше використовується техніка з'єднання - оператор розщеплення першого порядку, але це має низькі властивості точності та стабільності. Як визначити, які алгоритми будуть ефективними для проблеми, що цікавить, і як я повинен структурувати своє програмне забезпечення, щоб зробити ці алгоритми доступними?

Відповіді:


5

Я настійно виступаю за повністю пов'язану збірку, оскільки це може легко відтворити розділені версії оператора. Зокрема, підпрограми, які обчислюють залишковий і якобійський для різної фізики, можуть бути окремими, але рамки повинні бути здатні поєднувати їх для формування єдиного залишку для всієї системи. Так працює PETSc.

Тоді рішення для розділення оператора можуть використовуватися як попередній передумови для повністю пов'язаної системи, або як самостійно вирішувач, з командного рядка. Більше того, деякі муфти можуть бути збережені, а інші - відмовитися. PETSc обробляє це через інтерфейс PC FieldSplit. Це дозволяє реплікацію гібридних схем, таких як напів неявна ДВС для динаміки рідини.


5

Оскільки це дуже активний напрямок досліджень, я вагаюся, намагаючись відповісти на це, але маю певний досвід, що не намагатися.

Не робити :

  • Візьміть старий код програми A і стару програму B, а потім спробуйте їх з'єднати
  • Використовуйте архаїчний (маючи на увазі непридатний для заднього огляду) код, а не створювати нову програму
  • Потрібні величезні рамки (> 10 необхідних залежностей) для нових користувачів, які починають робити свій внесок
  • Припустимо, макет даних (сітки, матриці, вектори тощо) легко написати самостійно

Зробіть :

  • Використовуйте стандартні практики програмування та, сподіваємось, хороші шаблони дизайну
  • Прочитайте літературу про розділення оператора, щоб зрозуміти обмеження точності та стабільності
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.