OpenFOAM

Первая страница

Введение

На текущий момент существует огромное количество программ математического моделирования (ANSYS, LabVIEW, MATLAB, Maple, Mathematica и тд). В основном это коммерческое программное обеспечение. Поскольку эти программы стоят достаточно дорого, для них есть фирмы, обеспечивающие поддержку и разработку документации, группа клиентов. Кроме них существует также программное обеспечение с открытым исходным кодом (OpenFOAM, SALOME, KCalc, Scilab, R и тд). В основном, это программы, разработанные под операционную систему Linux. Одним из минусов открытого программного обеспечения является разнородность групп поддержки, практически полное отсутствие документации, в том числе и русской. Данное издание предназначено для обучения работе в OpenFOAM. Предполагается, что читатель знаком с основами дифференциального исчисления в частных производных, основами объектно-ориентированного программирования на языке C++, владеет основами программирования для CUDA

OpenFOAM (Open Source Field Operation And Manipulation) — открытая интегрируемая платформа для численного моделирования задач механики сплошных сред. Предназначена для решения задач в области механики сплошных сред.
По данным сайта http://www.openfoam.com/ 10 декабря 2004 года код FOAM (Field Operation And Manipulation) был открыт под лицензией GNU GPL. Таким образом, данная дата считается первым релизом открытого программного продукта OpenFOAM. FOAM остался закрытым и продолжает развиваться параллельно с OpenFOAM. На текущий момент доступна для скачивания версия 1.7.1. анонсированная 26 августа 2010 года.
OpenFOAM позволяет решать следующие задачи:

  • Прочностные расчеты
  • Гидродинамика ньютоновских и неньютоновских вязких жидкостей как в несжимаемом, так и сжимаемом приближении с учётом конвективного теплообмена и действием сил гравитации. Для моделирования турбулентных течений возможно использование RANS-моделей, LES и DNS методов. Возможно решение дозвуковых, околозвуковых и сверхзвуковых задач;
  • Задачи теплопроводности в твёрдом теле; (
  • Многофазные задачи, в том числе с описанием химических реакций компонент потока;
  • Задачи, связанные с деформацией расчётной сетки;
  • Сопряжённые задачи;
  • Некоторые другие задачи, при математической постановке которых требуется решение ДУ в ЧП в условиях сложной геометрии среды;
  • Распараллеливание расчёта как в кластерных, так и многопроцессорных системах

Организация OpenFOAM

Условно код OpenFOAM можно разделить на следующие части (как и любую другую сложную программу):
1. Ядро (core) – набор файлов, определяющих основные функциональные возможности кода
2. Библиотеки (solvers) – содержат множество моделей механики сплошных сред.
3. Исполняемые файлы (utilities)– утилиты для решения задач МСС, подготовки и обработки данных

  • Утилиты для работы с расчетной сеткой
  • Диагностические утилиты
  • Утилиты для задания начальных и граничных условий
  • Решатели
  • Утилиты для обработки полученных данных
  • Системные утилиты
  • Рабочим языком OpenFOAM является язык C++. Данный язык выбран для удобства представления математических операторов и выражения в удобной форме до компиляции в исполняемый файл. Сам продукт состоит из инструментов для решения систем дифференциальных уравнений в частных производных (solvers), утилит (utilities) и библиотек (libraries). При решении задач используется конечно-элементный метод.
    В качестве примера обычно приводится уравнение сохранения количества движения для ньютоновской несжимаемой жидкости без действия массовых сил:

    которое может быть представлено в виде:
    solve
    (
    fvm::ddt(rho, U)
    + fvm::div(rho, U, U)
    - fvm::laplacian(mu, U)
    ==
    - fvc::grad(p)
    );

    которое записывается следующим образом:
    solve
    (
    fvm::ddt(k)
    + fvm::div(phi, k)
    - fvm::laplacian(nu() + nut, k)
    == nut*magSqr(symm(fvc::grad(U)))
    - fvm::Sp(epsilon/k, k)
    );
    Другие примеры:
    Уравнение неразрывности:
    solve(
    fvm::ddt(rho)
    + fvc::div(phi)
    );
    Уравнение сохранения количества движения:
    fvVectorMatrix UEqn
    (
    fvm::ddt(rho, U)
    + fvm::div(phi, U)
    - fvm::laplacian(mu, U)
    );
    solve(UEqn == -fvc::grad(p));
    Уравнение сохранения энергии:
    solve
    (
    fvm::ddt(rho, e)
    + fvm::div(phi, e)
    - fvm::laplacian(mu, e)
    ==
    - p*fvc::div(phi/fvc::interpolate(rho))
    + mu*magSqr(symm(fvc::grad(U)))
    );
    T = e/Cv;
    Официальный сайт в состав поставки включает Paraview 3.8.1 - программа для графической визуализации данных.
    Часто для моделирования исходной сетки используется программный продукт SALOME.
    Компании и академические институты, которые используют OpenFOAM: ABB Corporate Research, Audi, Airbus, Bayer, CD-adapco group, Danone, Daimler, Hitachi, Mitsubishi, Obayashi, SKF, Shell, Toyota, Tokyo Gas, Volkswagen, Electrolux, Fluid Technology, Icon-CG, The Technology Partnership plc, Imperial College London, Kings College London, Chalmers University, University of Exeter, University of Guelph, Hirosaki Universty, Tokyo Institute of Technology.

    При подготовке данной статьи использовались материалы из следующих источников:

    e-mail: serg@imech.anrb.ru