УДК 502.7:502.55
А. И. Купцов
ЭКОЛОГИЧЕСКИЙ МОНИТОРИНГ. CFD-ТЕХНОЛОГИИ. UDF-ФУНКЦИИ
Ключевые слова: мониторинг, численное моделирование, пограничный слой атмосферы, UDF.
Научные исследования в области экологического мониторинга направлены на снижение негативных последствий. В данной статье рассмотрено использование UDF-функций при решении физико-математических моделей, которые необходимы для осуществления экологического мониторинга. UDF-функции приведены на языке программирования С.
Key words: monitoring, numerical modeling, boundary layer of the atmosphere, UDF.
Scientific research in the field of environmental monitoring aimed at reducing the negative effects. This article discusses the use of UDF-functions for solving physical and mathematical models, which are necessary for the implementation of environmental monitoring. UDF-function shown in the programming language C.
Впервые понятие мониторинга окружающей среды было введено профессором Р. Манном в Стокгольме на конференции ООН в 1972 г. Мониторингом было предложено называть систему повторяющихся наблюдений элементов среды в пространстве и во времени с определенными целями. Однако затем стало ясно, что понятие «мониторинг» выходит за рамки содержания данного определения и не позволяет раскрыть его задачи.
Основными задачами экологического мониторинга на сегодняшний день являются:
а) наблюдение за источниками и причинами антропогенного воздействия, за состоянием окружающей среды и происходящими в ней процессами;
б) оценка фактического состояния природной среды;
в) прогноз изменения состояния природной среды под влиянием факторов и ее оценка.
Научные исследования в области экологического мониторинга направлены на снижение негативных последствий хозяйственной деятельности и (или) сориентированы на разработку продуктивных методов очистки выбросов и сбросов. Одними из таких исследований являются исследования по созданию систем экологического мониторинга пограничного слоя атмосферы. К системам мониторинга можно отнести: объект наблюдения; составление информационной модели для объекта; планирование измерений; прогнозирование изменения состояния объекта наблюдений; представление информации [1].
Для осуществления экологического мониторинга разработаны различные автоматизированные системы, которыми пользуются различные экологические службы и предприятия. В настоящее время в связи с развитием информационных технологий основой автоматизированных систем все чаще становятся CFD-технологии (технологии вычислительной гидродинамики). Эти технологии представляют собой компьютерное численное моделирование, включающие совокупность физических, математических и численных методов, предназначенных для вычисления характеристик потоковых процессов. Базой любого исследования в
области вычислительной гидродинамики является формулировка основных уравнений
гидро/газодинамики потоков, а именно: уравнения неразрывности; уравнения сохранения импульса; уравнение сохранения энергии; уравнение состояния (для газов). Для моделирования пограничного слоя атмосферы предложены различные физико-математические модели [2-5].
Однако при решении физико-математических моделей на практике с помощью прикладных программных продуктов неизбежно возникает проблема использования UDF-функций (функции определенные пользователем). UDF-функции представляют из себя функции, которые программируются пользователем. Они могут быть динамически сопряжены с решателем программного продукта для улучшения стандартных характеристик программ. Чаще всего для их записей используют язык программирования С.
В таблицах 1-4 предлагаются готовые разработанные UDF-функции для моделирования пограничного слоя атмосферы. При этом предлагается использовать физико-математическую модель, подробно освященную в статье [2]. Граничные условия этой модели предлагается находить путем использования методики объединения методов градиента и профиля [6].
Таблица 1 - UDF-функция для моделирования неустойчивой стратификации атмосферы
#include "udf.h" #include "mem.h" #include "flow.h"
DEFINE_PROFILE(inlet_velocity, thread, index) {
real x[ND_ND]; real y;
real ud=0.0497; real kk=0.41; real zz=0.002; real lmo=-108.1; face_t f; real fm; real f1;
real fe; real AA; real BB; real CC; real DD;
begin_f_loop(f, thread) {
F_CENTROID (x,f,thread); y = x[1];
f1 = 1-(16*y/lmo); fm = pow(f1, -0.25);
AA = 8*pow(fm, 4); BB = pow((fm+1), 2); CC = pow(fm, 2)+1; DD = -(3.14/2)+2*atan(1/fm);
F_PROFILE(f, thread, index) = (ud/kk) * ( log(y/zz)
+ log(AA / (BB *CC))+DD ); }
end_f_loop(f, thread)
}
DEFINE_PROFILE(temperature, thread, index) {
real x[ND_ND]; real y;
real tz=303.15; real mt=-0.1779; real kk=0.41; real zz=0.002; real lmo=-108.1; face_t f; real fm; real f1;
begin_f_loop(f, thread) {
F_CENTROID (x,f,thread); y = x[1];
f1 = 1-(16*y/lmo); fm = pow(f1, -1/4);
F_PROFILE(f, thread, index) = tz+((mt/kk)*(log(y/zz)-(log(1+(1/(fm*fm))))))-
(0.01*(y-zz))+(-0.009775*y); }
end_f_loop(f, thread)
}
DEFINE_PROFILE(k_profile,t,i) {
real y, del, h, ufree, x[ND_ND];
real ff, utau, knw, kinf;
real ud=0.0497;
real lmo=-108.1;
face_t f;
real fm;
real f1;
real fe;_
begin_f_loop(f,t) {
F_CENTROID (x,f,t); y=x[1];
f1 = 1-(16*y/lmo); fm = pow(f1, -1/4); fe = 1-(y/lmo);
F_PROFILE(f,t,i)=5.48*ud*ud*sqrt((fe)/(fm)); }
end_f_loop(f,t)
}
DEFINE_PROFILE(dissip_profile,t,i)
{
real y, x[ND_ND], del, h, ufree;
real ff, utau, knw, kinf;
real mix, kay;
real ud=0.0497;
real lmo=-108.1;
real kk=0.41;
face_t f;
real fm;
real f1;
real fe;
begin_f_loop(f,t) {
F_CENTROID(x,f,t); y=x[1];
f1 = 1-(16*y/lmo); fm = pow(f1, -1/4); fe = 1-(y/lmo);
F_PROFILE(f,t,i)= ud*ud*ud*(fe)/(kk*y) ;
}
end_f_loop(f,t) i_
Таблица 2 - UDF-функция для моделирования нейтральной стратификации атмосферы
#include "udf.h" #include "mem.h" #include "flow.h"
DEFINE_PROFILE(inlet_velocity, thread, index) {
real x[ND_ND]; real y;
real ud=0.0481; real kk=0.41; real zz=0.002; face_t f;
begin_f_loop(f, thread) {
F_CENTROID(x,f,thread); y = x[1];
F_PROFILE(f, thread, index) = ud*(log(y/zz))/kk;
}
end f loop(f, thread)_
}
DEFINE_PROFILE(temperature, thread, index) {
real x[ND_ND]; real y;
real tz=303.15; face_t f;
begin_f_loop(f, thread) {
F_CENTROID(x,f,thread); y = x[1];
F_PROFILE(f, thread, index) = tz+(-0.009775*y); }
end_f_loop(f, thread)
}
DEFINE_PROFILE(k_profile,t,i) {
real y, del, h, ufree, x[ND_ND];
real ff, utau, knw, kinf;
real ud=0.0481; face_t f;
begin_f_loop(f,t) {
F_CENTROID(x,f,t); y=x[1];
F_PROFILE(f,t,i)=5.48*ud*ud; }
end_f_loop(f,t)
}
DEFINE_PROFILE(dissip_profile,t,i) {
real y, x[ND_ND], del, h, ufree;
real ff, utau, knw, kinf;
real mix, kay; real ud=0.0481; real kk=0.41; face_t f;
begin_f_loop(f,t) {
F_CENTROID(x,f,t); y=x[1];
F_PROFILE(f,t,i)= ud*ud*ud/(kk*y) ;
}
end_f_loop(f,t) }_
Таблица 3 - UDF-функция для моделирования устойчивой стратификации атмосферы
begin_f_loop(f, thread) {
F_CENTROID(x,f,thread); y = x[1];
F_PROFILE(f, thread, index) =
ud*(log(y/zz)+(5*y/lmo))/kk; }
end_f_loop(f, thread)
}
DEFINE_PROFILE(temperature, thread, index) {
real x[ND_ND]; real y;
real tz=303.15; real mt=0.0507; real kk=0.41; real zz=0.002; real lmo=109.5; face_t f;
begin_f_loop(f, thread) {
F_CENTROID(x,f,thread); y = x[1];
F_PROFILE(f, thread, index) =
tz+((mt/kk)*(log(y/zz)+(5*y/lmo))); }
end_f_loop(f, thread)
}
DEFINE_PROFILE(k_profile,t,i) {
real y, del, h, ufree, x[ND_ND]; real ud=0.0472; real lmo=309.5; face_t f;
begin_f_loop(f,t) {
F_CENTROID(x,f,t); y=x[1];
F_PROFILE(f,t,i)=5.48*ud*ud*sqrt((lmo+(4*y))/(lmo+(5*y)))
' }
end_f_loop(f,t)
}
DEFINE_PROFILE(dissip_profile,t,i) {
real y, x[ND_ND], del, h, ufree; real ud=0.0472; real lmo=309.5; real kk=0.41; face_t f;
#include "udf.h" #include "mem.h" #include "flow.h"
DEFINE_PROFILE(inlet_velocity, thread, index) {
real x[ND_ND]; real y;
real ud=0.0472; real kk=0.41; real zz=0.002; real lmo=309.5;
face_t f;_
begin_f_loop(f,t) {
F_CENTROID(x,f,t); y=x[1];
F_PROFILE(f,t,i)= ud*ud*ud*(1+((4*y)/lmo))/(kk*y) ; }
end_f_loop(f,t) }_
Таблица 4 - UDF-функция для источникового члена в уравнении для переноса кинетической энергии турбулентности
#include "udf.h" #include "mem.h" #include "flow.h"
DEFINE_SOURCE(xmom_source_K, c, t, dS, eqn) {
real y, x[ND_ND]; real source;
real mut = C_MU_T(c,t);
C_CENTROID(x, c, t); y = x[1];
source = -0.00367*(-9.81)*(-9.81)*mut/(0.85*1005);
dS[eqn]=0;
return source;
i_
Использование представленных выше адаптированных UDF-функций для моделирования пограничного слоя атмосферы позволяет осуществлять экологический мониторинг с помощью CFD-технологий.
Литература
1. Горюнкова А. А. Современное состояние и подходы к разработке систем мониторинга загрязнения атмосферы / А.А. Горюнкова // Известия Тульского государственного университета. Технические науки. -2013. - №11. - С. 251-260.
2. Купцов А.И., Акберов Р.Р., Исламхузин Д.Я., Гимранов Ф.М. Проблемы расчета рассеивания легких газов в атмосфере при их выбросах со свечи с учетом рельефа и застройки местности и атмосферной устойчивости // Вестник Казанского технологического университета - 2014, Т.17, № 6.
- С. 284-286.
3. Купцов А.И., Акберов Р.Р., Исламхузин Д.Я., Гимранов Ф.М. Численное моделирование пограничного слоя атмосферы с учетом ее стратификации // Фундаментальные исследования. - 2014. - № 9 (Ч.7). -с. 1452-1460.
4. Галеев А.Д., Поникаров С.И., Салин А.А. Моделирование последствий аварийного пролива бинарного раствора с использованием программы Fluent // Математическое моделирование - 2011. № 7. - С. 129-144.
5. Руководство по безопасности «Методика оценки последствий аварий на взрывопожароопасных химических производствах». Утверждено приказом Ростехнадзора от 20.04.2015 N 160.
6. Купцов А.И., Зубков А.Г., Гимранов Ф.М. — «Использование методики объединения методов градиента и профиля для моделирования распространения облаков опасных газов в атмосфере».
— Научная сессия. КНИТУ. 2-6 февраля 2015. — с. 81.
© А. И. Купцов - аспирант каф. промышленной безопасности КНИТУ, [email protected]. © A. I. Kuptsov- postgraduate department of industrial safety KNRTU, [email protected].