Моделирование теплопроводности. Пример 1.

Моделирование нестационарной теплопроводности – наиболее простая задача теплообмена, решаемая с помощью численных методов. Особенно это просто сделать при простой геометрии, постоянной теплопроводности и граничных условиях первого рода. В разнообраных вычислительных платформах это делается при минимуме необходимых настроек и соответственно трудозатрат. В данной статье рассмотрен расчет в OpenFOAM охлаждения неограниченной пластины с температуропроводностью 10^{-6} м.кв/с, толщиной 0,5 м, находящейся в начальный момент времени при t=500 c, если мгновенно уменьшить температуру одной стенки до t=0 С. Также выполнено сопоставление с аналитическим расчетом.

Дифференциальное уравнение распространения теплоты теплопроводностью при отсутствии внутренних источников достаточно простое [1]:
\frac {\partial T} {\partial \tau} = a \nabla ^2 T
где T – температура;
\tau – время;
a – температуропроводность;
 \nabla ^2 – оператор Лапласа.
Код OpenFOAM в таком случае выглядит следующим образом [2]:

f(x)

Структура расположения папок и файлов в расчетной директории следующая (см. приложенный файл transientConduction.tar.gz):

  • 0 (обязательная папка, в ней решатели ищут начальные условия необходимых переменных)
  • constant (обязательная папка, здесь располагаются: сетка, параметры модели турбулентности, теплофизические свойства и прочее неизменяющееся во времени)
  • system (обязательная папка, тут находятся конфигурационные файлы параметров дискретизации дифференциальных уравнений, параметры решателя и всех дополнительных утилит)
  • logs (папка не обязательна, как видно из названия в нее я обычно свожу все логи)
  • scripts (здесь я обычно размещаю все bash-скрипты для генерации сетки, пре- и пост- обработки, управления ходом расчета. Папка необязательна)

Для упрощения контроля правильности ввода начальных параметров, особенно если их много и серия опытов большая, я все исходные значения обычно свожу в один файл 0/include/initialConditions. В разбираемом примере необходимо задать только начальное распределение температуры 0/T:

Аналогично поступаем и с constant/transportProperties

В папке constant/polyMesh находятся файлы расчетной сетки, которые генерируются утилитой blockMesh, которая обрабатывает constant/polyMesh/blockMeshDict. Если предполагается какое-либо изменение геометрических размеров сетки, то лучше сгенерировать blockMeshDict с помощью bash-скрипта. В данном случае он лежит в scripts/meshgen.sh. Правила создания сетки с помощью blockMesh достаточно понятно описаны здесь, в интернете есть полностью переведенный user guide.
Далее рассмотрим конфигурационные файлы в папке system. В файле system/controlDict задаются временные интервалы, вид результатов расчета, здесь же задаются параметры так называемого runTime-postprocessing.

Конфигурационный файл fvSchemes отвечает за дискретизацию дифференциальных уравнений. Теплопроводность – наверно самый простой случай, чистая диффузия, конвективных членов нет, самый сходимый вариант. Поэтому все довольно коротко:

Файл fvSolution отвечает за решение матриц уравнений и настройки самого решателя.

Пишем простой скрипт для последовательного запуска

Аналитический расчет данного случая можно посмотреть в работе [1] и выглядит следующим образом:
\theta = \frac {x} {R} + \sum_{n=1} ^ \infty {(-1)^{n+1} \frac {2} {\mu _n} \sin (\mu _n) \frac {R-x} {R} \exp (- \mu _n ^2 Fo)}
где \theta = \frac { T(x,\tau) - T_c} {T_0 - T_c} – безразмерный температурный напор;
\mu _n=n \pi – характеристические числа;
R – толщина пластины;
Fo=\frac {a \tau} {R^2} – число Фурье.
Достаточно использовать n=1…9.
На графике выполнено сопоставление профилей температурного напора в разные моменты времени. Линиями обозначены аналитические решения, значками – численное.
f(x)

Рисунок ниже показывает распределение абсолютной температуры в один из моментов времени (t=15000 c).
plot_X

Источники:
1. Лыков А.В. Теория теплопроводности. – Изд-во “Высшая школа”, 1967 г. – 600 с.
2. applications/solvers/basic/laplacianFoam/laplacianFoam.C