Сопряженные задачи переноса и диффузии в проблеме оценки и прогноза состояния окружающей среды

дипломная работа

Заключение

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

Дипломная работа посвящена построению математической модели, описывающей процесс распространения пассивных загрязняющих веществ от сосредоточенных источников с использованием аппарата сопряженных задач для определения наиболее безопасных зон размещения объектов, загрязняющих атмосферу, расчета распределения концентрации примеси и заданных функционалов. В качестве исходного уравнения, было взято уравнение турбулентной диффузии.

Рассмотрены прямые и сопряженные задачи переноса загрязнений, методы их решения, определение функционала чувствительности, а также задачи оптимизации и регулировки мощности источников на основе прямых и сопряженных уравнений.

Рассмотренные модели в качестве составляющих могут быть использованы при создании комплексной экологической модели территории. Решение подобных задач может помочь в работе региональных природоохранных организаций по выявлению требований к промышленным выбросам предприятий с учетом допустимых доз загрязнения экологически значимых зон.

Список использованных источников

Берлянд, М.Е. Современные проблемы атмосферной диффузии. - Ленинград: Гидрометеоиздат, 1975. - 448 с.

Бызова, Н.Л. Экспериментальные исследования атмосферной диффузии и расчет распространения примеси / Н.Л. Бызова, Е.К. Гаргер, В.Н. Иванов - Ленинград: Гидрометеоиздат, 1991. - 279 с.

Марчук, Г.И. Математическое моделирование в проблеме охраны окружающей среды. - М.: Наука, 1982. - 320 с.

Марчук, Г.И. Численное решение задач динамики атмосферы и океана. - Ленинград: Гидрометеоиздат, 1974. - 303 с.

Марчук Г.И. Сопряженные уравнения, Москва: Институт вычислительной математики РАН, 2001. - 241 с.

Марчук Г.И. Методы вычислительной математики. - М.: Наука, 1989. - 608 с.

Агошков В.И. Методы решения задач математической физики / В.И. Агошков, П.Б. Дубовский, В.П. Шутяев. - М.: ФИЗМАТЛИТ, 2002. - 303 с.

Пененко В.В., Модели и методы для задач охраны окружающей среды / В.В. Пененко, А.Е. Алоян. - Новосибирск: Наука, 1985. - 254 с.

Алоян, А.Е. Моделирование динамики и кинетики газовых примесей и аэрозолей в атмосфере. - М.: Наука, 2008. - 415 с.

Петросян, Л.А. Математические модели в экологии / Л.А. Петросян, В.В. Захаров. - СПб: Изд. СпбГУ, 1997. - 256 с.

Самарский, А.А. Численные методы решения задач конвекции-диффузии / А.А. Самарский, П.Н. Вабищевич. - М.: URSS: Либроком, 2009. - 246 с.

Винтер Г. Модель экологического менеджмента. - Минск: Технопринт, 2001. - 320 с.

Пахомова Н. Экологический менеджмент / Н. Пахомова, А. Эндрес, К. Рихтер. - СПб.: Питер, 2003. - 544 с.

Приложения

Приложение А

Примеры решения прямых и сопряженных задач

Было решено несколько прямых и сопряженных задач с постоянным точечным источником в области D={0<x<2, 0<y<2}. В первой задаче источник располагался в точке М (0.5; 0.5). Так же полагалось: U=0.2, V=0, k1=1, k2=0.5, my=ny=0.5. Шаг по пространственной переменной выбирался равный 0,1, а по временной 0,01.

При решении этой задачи методом покомпонентного расщепления были получены следующие результаты при Т=2. На подстилающей поверхности (ниже источника) распределение концентрации выглядит следующим образом.

Рисунок А.1 ? Распределение концентрации при y=0

При у=0.6, т.е. выше источника распределение концентрации следующее:

Рисунок А.2 ? Распределение концентрации при y=0.6

Второй пример. В области D={0<x<4, 0<y<2}. Источник располагается в точке М (0,1; 0,8). Так же полагалось: U=V=0.5, k1=0.7, k2=0.4, my=0.6, ny=0.3. Шаг по пространственной переменной выбирался равный 0,2, а по временной 0,01.

При решении этой задачи методом покомпонентного расщепления были получены следующие результаты при Т=3. При y=0.4 (ниже источника) распределение концентрации выглядит следующим образом:

Рисунок А.3 ? Распределение концентрации при y=0.4

При у=0.6, т.е. выше источника распределение концентрации следующее:

Рисунок А.4 ? Распределение концентрации при y=0.6

Третий пример. В области D={0<x<2, 0<y<2}. Источник располагается в точке М (1; 0,5). Так же полагалось: U=-0.25, V=0.25, k1=1, k2=0.5, my=1, ny=0.5. Шаг по пространственной переменной выбирался равный 0.1, а по временной 0.01.

При решении спряженной задачи были получены следующие результаты при Т=2. При y=0,1 и при y=1.

Рисунок А.5 ? Функция чувствительности при y=0.1

Рисунок А.6 ? Функция чувствительности при y=1

Четвертый пример. В области D={0<x<2, 0<y<2}. Источник располагается в точке М (1; 0,5). Так же полагалось: U=0, V=0 (штиль), k1=10, k2=5, my=2, ny=1. Шаг по пространственной переменной выбирался равный 0.1, а по временной 0.01.

При решении этой задачи были получены следующие результаты при Т=1. При y=0,1 и при y=0,5.

Рисунок А.7 ? Распределение концентрации при y=0.1

Рисунок А.8 ? Распределение концентрации на уровне источника

Приложение Б

ЛИСТИНГ ПРОГРАММЫ

const

n1=400;

delta=0.001;

Nr=201;

type

vect=array [0. n1] of Extended;

matr=array [0. n1,0. n1] of Extended;

vectr=array [0. nr] of Extended;

var

L,M,T,k1,k2,U,V,my,ny,h,tao,cons,tc: Extended;

i,j,k,n,z: integer;

fi,fipr,fi1: matr;

a1,a2,a3,b,pr: vect;

yr,xr,ydr,fr,farr,ftr,ar,br,cr,dr,er,ffr: vectr;

function func (o,s: integer): real;

begin

if (o=strtoint (frmmain. LabeledEdit14. Text)) and

(s=strtoint (frmmain. LabeledEdit15. Text)) then

func: =cons*cons

else func: =0;

end;

procedure Progonka (var a1,a2,a3,b,pr: vect);

var

pr1,pr2: vect;

i1: integer;

begin

pr1 [n-1]: =-a1 [n] /a2 [n];

pr2 [n-1]: =b [n] /a2 [n];

for i1: =n-1 downto 1 do

begin

pr1 [i1-1]: =-a1 [i1] / (pr1 [i1] *a3 [i1] +a2 [i1]);

pr2 [i1-1]: = (b [i1] - pr2 [i1] *a3 [i1]) / (pr1 [i1] *a3 [i1] +a2 [i1]);

end;

pr [0]: = (b [0] - a3 [0] *pr2 [0]) / (a2 [0] +a3 [0] *pr1 [0]);

for i1: =1 to n do

pr [i1]: =pr1 [i1-1] *pr [i1-1] +pr2 [i1-1];

end;

procedure Prog5 (var nr: integer; ar,br,cr,dr,er,fr,yr: vectr; itask: integer);

var

i: integer;

begin

if itask=1 then

begin

dr [1]: =dr [1] /cr [1];

er [1]: =er [1] /cr [1];

cr [2]: =cr [2] - dr [1] *br [2];

dr [2]: = (dr [2] - er [1] *br [2]) /cr [2];

er [2]: =er [2] /cr [2];

for i: =3 to nr do

begin

cr [i]: =er [i-2] *ar [i] +dr [i-1] * (dr [i-2] *ar [i] - br [i]);

dr [i]: = (dr [i] +er [i-1] * (dr [i-2] *ar [i] - br [i])) /cr [i];

er [i]: =er [i] /cr [i];

end;

itask: =2;

end;

fr [1]: =fr [1] /cr [1];

fr [2]: = (fr [2] +fr [1] *br [2]) /cr [2];

for i: =3 to n do

fr [i]: = (fr [i] - fr [i-2] *ar [i] - fr [i-1] * (dr [i-2] *ar [i] - br [i])) /cr [i];

yr [nr]: =fr [nr];

yr [nr-1]: =dr [nr-1] *yr [nr] +fr [nr-1];

for i: =nr-2 downto 1 do

yr [i]: =dr [i] *yr [i+1] - er [i] *yr [i+2] +fr [i];

end;

procedure Prog3 (var nr: integer; ar,cr,br,fr,yr: vectr; itask: integer);

var

i: integer;

begin

if itask=1 then

begin

br [1]: =br [1] /cr [1];

for i: =2 to nr do

begin

cr [i]: =cr [i] - br [i-1] *ar [i];

br [i]: =br [i] /cr [i];

end;

itask: =2;

end;

fr [1]: =fr [1] /cr [1];

for i: =2 to n do

fr [i]: = (fr [i] +fr [i-1] *ar [i]) /cr [i];

yr [nr]: =fr [nr];

for i: =nr-1 downto 1 do

yr [i]: =br [i] *yr [i+1] +fr [i];

end;

procedure TfrmMain. cmdRunClick (Sender: TObject);

begin

L: = StrToFloat (LabeledEdit1. Text);

M: = StrToFloat (LabeledEdit2. Text);

T: = StrToFloat (LabeledEdit3. Text);

k1: = StrToFloat (LabeledEdit4. Text);

k2: = StrToFloat (LabeledEdit5. Text);

U: = StrToFloat (LabeledEdit6. Text);

V: = StrToFloat (LabeledEdit7. Text);

my: = StrToFloat (LabeledEdit8. Text);

ny: = StrToFloat (LabeledEdit9. Text);

n: = StrToInt (LabeledEdit10. Text);

cons: = StrToFloat (LabeledEdit11. Text);

tao: = StrToFloat (LabeledEdit16. Text);

h: =L/n cmdRun. Enabled: =false;

for i: =1 to n-1 for j: =1 to n-1 do

fi [i,j]: =0;

for j: =1 to n-1 do begin

fi [0,j]: =0;

fi [n,j]: =0;

end;

for i: =1 to n-1 do

begin

fi [i,n]: =0;

fi [i,0]: = ( (k1*fi [i,1]) / (k1+k2*h));

end;

tc: =0.0;

fi1: =fi;

Z: =0;

while (abs (tc-T) >=tao) and (z<=10000000) do

begin

z: =z+1;

tc: =tc+tao;

fi: =fi1;

for j: =1 to n-1 do

begin

a1 [0]: =0.0;

a2 [0]: =1.0;

a3 [0]: =-1.0;

b [0]: =0.0;

a1 [n]: =1.0;

a2 [n]: =-1.0;

a3 [n]: =0.0;

b [n]: =0.0;

for k: =1 to n-1 do

begin

a1 [k]: = ( ( (-u*tao) / (4*h)) - (my*tao) / (2*h*h));

a2 [k]: = (1.0+ (my*tao) / (h*h));

a3 [k]: = ( ( (u*tao) / (4*h)) - (my*tao) / (2*h*h));

b [k]: = (fi [k,j] - ( (tao*u* (fi [k+1,j] - fi [k-1,j])) / (4*h) +

(tao*my* (fi [k+1,j] - 2*fi [k,j] +fi [k-1,j])) / (2*h*h)));

Application. ProcessMessages;

end;

Progonka (a1,a2,a3,b,pr);

for k: =0 to n do

fipr [k,j]: =pr [k];

end;

{for k: =1 to n-1 do

begin

fipr [0,k]: =0;

fipr [n,k]: =0;

end;

}

for k: =1 to n-1 do

begin

fipr [k,n]: =0;

fipr [k,0]: = ( (k1*fipr [k,1]) / (k1+k2*h));

end;

fi: =fipr;

for i: =1 to n-1 do

begin

a1 [0]: =0.0;

a2 [0]: =-k1/h-k2;

a3 [0]: =k1/h;

b [0]: =0.0;

a1 [n]: =0;

a2 [n]: =1.0;

a3 [n]: =0.0;

b [n]: =0.0;

for k: =1 to n-1 do

begin

a1 [k]: = ( ( (-v*tao) / (4*h)) - (ny*tao) / (2*h*h));

a2 [k]: = (1.0+ (ny*tao) / (h*h));

a3 [k]: = ( ( (v*tao) / (4*h)) - (ny*tao) / (2*h*h));

b [k]: = (fi [i,k] - ( (tao*v* (fi [i,k+1] - fi [i,k-1])) / (4*h) +

(tao*ny* (fi [i,k+1] - 2*fi [i,k] +fi [i,k-1])) / (2*h*h))) +tao*func (i,k);

end;

Progonka (a1,a2,a3,b,pr);

for k: =0 to n do

fipr [i,k]: =pr [k];

end;

fi: =fipr;

fi1: =fipr;

end;

chart1. Visible: =true;

cmdGraf. Visible: =true;

cmdRun. Enabled: =true;

labeledEdit12. Visible: =true;

label1. Caption: =IntToStr (z);

z: =0;

end;

end.

Делись добром ;)