Каковы лучшие практики для алгоритмов и реализации мультифизических симуляций?


16

Мультифизическое моделирование включает в себя соединение нескольких «физик», часто с различными пространственными и / или временными масштабами. Кроме того, одиночные физические коды часто пишутся разными командами. Наиболее часто используемый метод связи - операторное расщепление первого порядка, но он обладает плохими свойствами точности и устойчивости. Как определить, какие алгоритмы будут эффективны для интересующей проблемы, и как мне структурировать свое программное обеспечение, чтобы эти алгоритмы были доступны?

Ответы:


5

Я настоятельно рекомендую полностью связанную сборку, поскольку это может легко воспроизвести разделенные оператором версии. В частности, процедуры, которые вычисляют невязку и якобиан для разных физик, могут быть отдельными, но структура должна быть в состоянии объединить их, чтобы сформировать единую невязку для всей системы. Вот как работает PETSc.

Затем операторные решения для разделения можно использовать в качестве предобусловливателя для полностью связанной системы или в качестве самостоятельного решателя из командной строки. Кроме того, некоторые соединения могут быть сохранены, в то время как другие могут быть проигнорированы. PETSc управляет этим через интерфейс PC FieldSplit. Это позволяет тиражировать гибридные схемы, такие как полу-неявные ДВС для гидродинамики.


5

Поскольку это очень активная область исследований, я не решаюсь ответить на этот вопрос, но у меня есть некоторый опыт в том, чего не стоит пытаться.

Do Not :

  • Возьмите старый код приложения A и старое приложение B, затем попытайтесь соединить их вместе
  • Используйте архаичный (подразумевающий непригодность в ретроспективе) код вместо создания нового приложения
  • Требовать огромного каркаса (> 10 обязательных зависимостей) для новых пользователей, начинающих вносить свой вклад
  • Предположим, что расположение данных (сетки, матрицы, векторы и т. Д.) Легко написать самостоятельно

Делать :

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