OpenFOAM с точки зрения программиста-физика


В компании Intel разрабатывается довольно много ПО для моделирования различных физических процессов. В некоторых из них мы используем пакет OpenFOAM, и в недавнем посте в Блоге компании Intel на Habrahabr я сделал краткое описание его возможностей.

Что такое OpenFOAM? Это, пользуясь термином Википедии, открытая (GPL) платформа для численнного моделирования — в первую очередь для моделирования, связанного с решением уравнений в частных производных методом конечных объемов, и в самую первую очередь — для решения задач механики сплошных сред.

КПДВ: эволюция двух несмешивающихся жидкостей разной плотности, изначально разделенных тонкой перегородкой (пример «lockExchange» из стандартной поставки OpenFOAM). Переходные цвета обозначают ячейки сетки, где присутствует доля и той, и другой жидкости (более точно: при симуляции используется метод объёма жидкости).
 
Реально OpenFOAM, фактически, состоит из двух частей: это, во-первых, библиотека классов для многих операций, необходимых при численном моделировании, — и во-вторых, библиотека программ («солверов»), использующих эти классы и позволяющих решать конкретные задачи моделирования. Соответственно, мой пост состоит из двух разделов: в первом я (вкратце) описываю библиотеку программ и рассказываю об использовании OpenFOAM с позиции человека, который не хочет лезть в непосредственно программный код; во втором я слегка подробнее остановливаюсь на программировании под OpenFOAM.
 
For more complete information about compiler optimizations, see our Optimization Notice.