Экологический мониторинг. CFD-технологии. UDF-функции

Купцов А.И. «Экологический мониторинг. CFD-технологии. UDF-функции». — Научный журнал «Вестник технологического университета», №20 — 2015, с. 203-207;

Научные исследования в области экологического мониторинга направлены на снижение негативных последствий. В данной статье рассмотрено использование UDF-функций при решении физико-математических моделей, которые необходимы для осуществления экологического мониторинга. UDF-функции приведены на языке программирования С.

Впервые понятие мониторинга окружающей среды было введено профессором Р. Манном в Стокгольме на конференции ООН в 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)

}

 

Таблица 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-функция для моделирования устойчивой стратификации атмосферы

#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, 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;

 

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;

}

Использование представленных выше адаптированных UDF-функций для моделирования пограничного слоя атмосферы позволяет осуществлять экологический мониторинг с помощью CFD-технологий.

Литература

  1. Горюнкова А. А. Современное состояние и подходы к разработке систем  мониторинга загрязнения атмосферы / А.А. Горюнкова // Известия Тульского государственного университета. Технические науки. – 2013. — №11. – С. 251-260.

  1. Купцов А.И., Акберов Р.Р., Исламхузин Д.Я., Гимранов Ф.М. Проблемы расчета рассеивания легких газов в атмосфере при их выбросах со свечи с учетом рельефа и застройки местности и атмосферной устойчивости // Вестник Казанского технологического университета – 2014, Т.17, № 6. – С. 284-286.
  2. Купцов А.И., Акберов Р.Р., Исламхузин Д.Я., Гимранов Ф.М. Численное моделирование пограничного слоя атмосферы с учетом ее стратификации // Фундаментальные исследования. – 2014. – № 9 (Ч.7). – с. 1452-1460.
  3. Галеев А.Д., Поникаров С.И., Салин А.А. Моделирование последствий аварийного пролива бинарного раствора с использованием программы Fluent // Математическое моделирование – 2011. № 7. – С. 129-144.
  4. Руководство по безопасности «Методика оценки последствий аварий на взрывопожароопасных химических производствах». Утверждено приказом Ростехнадзора от 20.04.2015 N 160.
  5. Купцов А.И., Зубков А.Г., Гимранов Ф.М. — «Использование методики объединения методов градиента и профиля для моделирования распространения облаков опасных газов в атмосфере». — Научная сессия. КНИТУ. 2-6 февраля 2015. — с. 81.

© А.И. Купцов – аспирант каф. промышленной безопасности КНИТУ, artpb@yandex.ru.

© Kuptsov A.I – postgraduate department of industrial safety KNRTU, [email protected].

This entry was posted in Купцов and tagged , , , . Bookmark the permalink.