Skip to content
This repository has been archived by the owner on Feb 2, 2022. It is now read-only.

[programming] Thermophysical Models

Stanislau Stasheuski edited this page Apr 13, 2020 · 6 revisions

Термофизические модели

В качестве основного термодинамического уравнения в решателях OpenFOAM может быть использовано не только уравнение удеального газа, но и другие. Задание термодинамических параметров среды и параметров теплообмена осуществляется в файле thermoPhysicalProperties🔻, который располагается в системной папке constant/ кейса.

В OpenFOAM cуществует несколько типов термофизических моделей📖:

  • fluidThermo – наиболее часто встречающаяся термодинамическая модель (для которой и можно указать тип в словаре thermoPhysicalProperties🔻)
  • psiThermo – модель основанная на сжимаемости (как постоянной)
  • rhoThermo – модель основанная на плотности
  • psiReactionThermo – модель для реагирующих смесей основанная на сжимаемости
  • psiuReactionThermo – модель для реагирующих смесей основанная на сжимаемости несгоревшего газа
  • rhoReactionThermo – модель для реагирующих смесей основанная на плотности

Тип термодинамической модели задаётся в createFields.H:

#include "fluidThermo.H" // такие header'ы пишут в ядре (.C-файле):

autoPtr<fluidThermo> pThermo
(
    fluidThermo::New(mesh)
);
fluidThermo& thermo = pThermo();
thermo.validate(args.executable(), "h", "e");

Для fluidThermo независимыми параметрами является давление и плотность {?}, поэтому зависимые параметры должны обязательно быть объявлены ссылкой (вида <типПоля> <поле>& = thermo.<поле>();). Пример объявления поля внутренней энергии/энтальпии [J/kg] (определяется из полей температуры и давления):

volScalarField& e = thermo.he();

& необходим так как это ссылка на переменную, а не полноценное её объявление – без него поле энегии не будет обновляться во времени

Потому что плотность является независимым {?} параметром, потому она и задаётся конструктором, типа:

volScalarField rho
(
    IOobject
    (
        "rho",
        runTime.timeName(),
        mesh,
        IOobject::READ_IF_PRESENT,
        IOobject::AUTO_WRITE
    ),
    thermo.rho()
);

Также термодинамические модули автоматически читают поле температур {?} из папки 0/ начальных условий. Для пересчёта зависимых параметров от независимых по выбранному уравнению состояния используется:

thermo.correct();

Полезные ссылки

  1. 7.1 Thermophysical models📖
  2. Словарь thermoPhysicalProperties🔻
  3. fluidThermo🔗, Fundamental fluid thermodynamic properties
  4. psiThermo🔗, Basic thermodynamic properties based on compressibility
  5. rhoThermo🔗, Basic thermodynamic properties based on density
  6. heThermo🔗, Enthalpy/Internal energy for a mixture
  7. basicThermo🔗, Abstract base-class for fluid and solid thermodynamic properties

<- К предыдущему разделу

Clone this wiki locally