Файл: Курсовой проект по дисциплине Математическое моделирование процессов чрезвычайных ситуаций Тема проекта.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.12.2023
Просмотров: 81
Скачиваний: 6
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
S(i,j)=S0;
end
end
% Задание гарничных условий
for j=1:m
u(1,j)=0;v(1,j)=0;C(1,j)=C1e;
u0(1,j)=0;v0(1,j)=0;C0(1,j)=C1e;
end
for j=1:n
u(i,1)=0;v(i,1)=0;C(i,1)=C1e;
u0(i,1)=0;v0(i,1)=0;C0(i,1)=C1e;
end
% Задание данных для нестационарной задачи
dt=0.01; tk=10; t=0;
% Начало временного цикла
while t
%Вычисление коэффициентов уравнений b и c
for i=2:n-1
for j=2:m-1
Fe=r0*u(i,j);
Fw=r0*u(i-1,j);
De=D*dy(j)/hx(i);
Dw=D*dy(j)/hx(i-1);
Pe=Fe/De;
Pw=Fw/Dw;
Ape=max(0,(1-0.1*Pe)^5);
Apw=max(0,(1-0.1*Pw)^5);
b(i,j)=De*Ape+max(-Fe,0);
c(i,j)=Dw*Apw+max(Fw,0);
end
end
%коэффициентов уравнений d и e
for i=2:n-1
for j=2:m-1
Fn=r0*v(i,j);
Fs=r0*v(i,j-1);
Dn=D*dx(i)/hy(j);
Ds=D*dx(i)/hy(j-1);
Pn=Fn/Dn;
Ps=Fs/Ds;
Apn=max(0,(1-0.1*Pn)^5);
Aps=max(0,(1-0.1*Ps)^5);
d(i,j)=Dn*Apn+max(-Fn,0);
e(i,j)=Ds*Aps+max(Fs,0);
end
end
%Вычисление коэф. для прохода по горизонтальным линиям
for i=2:n-1
for j=2:m-1
ap0(i,j)=2*r0*dx(i)*dy(j)/dt;
a(i,j)=b(i,j)+c(i,j)+ap0(i,j);
d1(i,j)=d(i,j)*C0(i,j+1)+e(i,j)*C0(i,j-1)-(d(i,j)+e(i,j)-ap0(i,j))*C0(i,j)+S(i,j)*dx(i)*dy(j);
end
end
%Проход по горизонтальным линиям
%Открываем цикл по j
for j=2:m-1
%При x=L:dc/dx=0 учтем это Гу
%Уравнение на правой границе а(n,j)*C(n,j)=c(n,j)*C(n-j)
%Тогда
a(n,j)=1;
c(n,j)=1;
b(n,j)=0;
d1(n,j)=0;
P(1)=0;
Q(1)=0;
for i=2:n
P(i)=b(i,j)/(a(i,j)-c(i,j)*P(i-1));
Q(i)=(d1(i,j)+c(i,j)*Q(i-1))/(a(i,j)-c(i,j)*P(i-1));
end
C(n,j)=Q(n);
i=n-1;
while i>1
C(i,j)=P(i)*C(i+1,j)+Q(i);
i=i-1;
end
for i=2:m
C0(i,j)=C(i,j);
end
end
for i=2:n-1
for j=2:m-1
a(i,j)=d(i,j)+e(i,j)+ap0(i,j);
d1(i,j)=b(i,j)*C0(i+1,j)+c(i,j)*C0(i-1,j)-(b(i,j)+c(i,j)-ap0(i,j))*C0(i,j)+S(i,j)*dx(i)*dy(j);
end
end
for i=2:n-1
%при y=h: dc/dy=0 учтем это ГУ
%уравнение на верхней границе a(i,m)*C(i,m)=e(i,m)*c(i,m-1);
a(i,m)=1;
e(i,m)=1;
d(i,m)=0;
d1(i,m)=0;
P(1)=0;
Q(1)=0;
%Решаем TDMA систему уравнений:
for j=2:m
P(j)=d(i,j)/(a(i,j)-e(i,j)*P(j-1));
Q(j)=(d1(i,j)+e(i,j)*Q(j-1))/(a(i,j)-e(i,j)*P(j-1));
end
C(i,m)=Q(m);
j=m-1;
while j>1
C(i,j)=P(j)*C(i,j+1)+Q(j);
j=j-1;
end
for j=2:m
C0(i,j)=C(i,j);
end
end
t=t+dt;
end
%Рисование графика на данный момент времени
contour(x,y,C','k')
xlabel('x,м'); ylabel('y,м')