Теплообмен излучением. Численный метод расчета угловых коэффициентов.

При расчете теплообмена излучением часто возникает проблема с нахождением угловых коэффициентов, которые представляют собой геометрическую характеристику взаимного положения двух поверхностей в пространстве. Если случай какой-нибудь из простых, например, соосные квадрат и круг и пр., аналитически найти угловые коэффициенты никаких трудностей не вызывает. Однако, когда мы имеем сложные криволинейные поверхности в объеме, задача становится нетривиальной и требует численных методов. В openFoam есть для этого специальная утилита viewFactorsGen, которую мы в данной статье протестируем на простейшем случае: куб внутри цилиндра с длиной L=D.
plot_XY_reedit

Численный расчет угловый коэффициентов (они же views factors в англоязычной литературе) производится следующим образом:
1) Разбиваются поверхности, чем меньше площадь получаемых граней тем точнее расчет
2) Составляется матрица “видимости” граней
3) Для каждой пары “видимых” граней рассчитывается угловой коэффициент с учетом их площади, расстояния и углом между ними
4) Для каждой поверхности угловые коэффициенты суммируются.
Для двух поверхностей, с количество элементарных площадок ~10000, получаются матрицы 10000×10000. Чтобы сгруппировать грани и уменьшить время расчета используется утилита faceAgglomerate, однако в этом есть существенная проблема. В исходном коде данной утилиты допускается максимальное количество элементов (переменная maxDynListLength) в количестве 100000, это чаще всего не хватает, поэтому необходимо это исправить. Идем “/applications/utilities/preProcessing/viewFactorsGen” и изменяем shootRays.H. Можно просто задать большое число для этой константы, но вот здесь предложен более удобный вариант, когда переменная берется из constant/viewFactorsGenDict:

Все рассмотренные в данной статье случаи в приложенном архиве: radiationCubeInCylinder.tar.gz
В папке начальных значений в нашем случае используется только один файл Qr – тепловой поток излучением:

Единственный файл настроек – constant/viewFactorsDict:

В результате работы утилиты viewFactorsGen в лог запишутся необходимые нам угловые коэффициенты:

В нашем случае поверхность куба имеет номер 0, поверхность цилиндра 1. Таким образом:
F00 – угловой коэффициент куба самого на себя (т.к. он не имеет выпуклых поверхностей F00=0)
F01 – угловой коэффициент куба на цилиндр (т.к. цилиндр полностью окружает куб F01=1)
F10 – угловой коэффициент цилиндра на куб, аналитически рассчитывается по формуле
F_{cube} / F_{cyl}
F11 – угловой коэффициент цилиндра сам на себя, аналитически рассчитывается по формуле
1 - F_{cube} / F_{cyl}

Сопоставление коэффициента F10 полученного численно и аналитически выполнено на графике ниже, расхождение менее 0.2%.
fi_12=f(F-F)