Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Использование конечно-разностных методов при решении задач теплопроводности. Методические указания к расчётной работе по дисциплине «Методы математиче

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
865 Кб
Скачать

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Окончание табл. 4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Граничные условия

 

 

Процесс

п/п

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Граничные условия III рода, Вт/(м2 К)

17

= 500 (2 −

 

 

 

)

 

 

 

Нагрев и охлаждение

кон

 

 

 

18

 

 

 

 

 

12

 

 

Нагрев и охлаждение

= 50 [2 − ( кон)

 

 

 

 

 

]

 

 

 

 

 

 

 

 

 

 

= 100 [2 −

 

 

 

2

 

 

 

19

(

 

) ]

 

Нагрев и охлаждение

кон

 

20

= 600 (2 −

 

 

 

 

 

 

 

 

)

 

Нагрев и охлаждение

+ кон

 

 

= 60 [2 − (

 

 

 

 

 

 

 

 

 

 

2

 

 

21

 

 

) ]

 

Нагрев и охлаждение

+ кон

 

22

 

 

 

 

 

 

 

 

 

 

 

12

]

Нагрев и охлаждение

= 2000 [2 − ( + кон)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4. Содержание отчёта

Отчёт о выполненной работе должен содержать:

задание с необходимыми данными;

описание алгоритма решения;

блок-схему программы с необходимыми пояснениями;

таблицу соответствия переменных;

распечатку программы с необходимыми текстовыми пояснениями;

результаты решения задачи с необходимыми комментариями;

графическое представление результатов (распределения температуры,

зависимость числа итераций от параметра релаксации);

библиографический список.

5.Вопросы для контроля знаний

1.Принципы построения блок-схем алгоритмов расчётов и основные обозначения.

21

2.Таблица соответствия переменных.

3.Краевые условия параболической задачи.

4.Основные понятия теории разностных схем, дискретизация области определения аргумента.

5.Аппроксимации первой производной.

6.Аппроксимация второй производной.

7.Явная схема.

8.Неявная схема.

9.Разностное представление краевых условий.

10.Устойчивость явной разностной схемы.

11.Устойчивость неявной разностной схемы.

12.Решение разностного уравнения с использованием явной схемы.

13.Метод прогонки.

14.Метод Якоби.

15.Метод Гаусса-Зейделя.

16.Метод последовательной верхней релаксации.

17.Построение трёхмерных графиков в среде программирования Scilab.

18.Оформление подпрограмм в среде программирования Scilab.

19.Оформление функций в среде программирования Scilab.

20.Операторы условия и циклов в среде программирования Scilab.

21.Ввод – вывод информации в среде программирования Scilab.

Библиографический список

1. Вержбицкий, В.М. Основы численных методов [Текст] /

В.М. Вержбицкий. – Москва: Высшая школа, 2002. – 840 с.

2. Алексеев, Е.Р. Scilab: Решение инженерных и математических задач

[Текст] / Е.Р. Алексеев, О.В. Чеснокова, Е.А. Рудченко. – Москва: ALT Linux;

БИНОМ: Лаборатория знаний, 2008. – 260 с.

22

Приложение 1

Блок-схема программы реализации неявной схемы методом Гаусса-Зейделя

1

 

Начало

 

 

 

 

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

Ввод

 

 

 

 

j <M

 

 

 

данных

 

 

 

 

 

 

 

 

 

 

3

 

11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Подготовка

 

 

 

 

 

k

 

 

 

 

 

 

 

 

 

 

 

данных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

12

 

 

 

 

 

 

Расчёт шагов по координатам и времени

5

i

6

Формирование

массива x

7

i <N

Формирование массива tau

13

k <K1

14

Обнуление

матрицы ошибок R

15

Задание

начальных значений r и kk

8

16

 

 

j

 

While

 

 

 

 

 

 

 

 

 

r>eps

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

17

 

Формирование

массива k=2 y

A

B

К стр. 24

 

23

 

Из стр. 23

B

18

j=2

21

Формирование нижней и верхней сторон матрицы t

19

i=2

21

Формирование левой и правой сторон матрицы t

22

Вычисление матрицы ошибок и пересчёт температуры

23

i <M-1

24

j <N-1

25

k <K1

26

r = R1,1,1

C

24

Продолжение прил. 1

C

27

i

28

j

29

k

30

Нет

Ri,j,k >

 

Да

31

r = Ri,j,k

32

k <K1

33

j <N

34

i <M

35

Счётчик

итераций

D

К стр. 25

Окончание прил. 1

Из стр. 24

D

36

While r>eps

37

Выделение

результата

38

Определение температуры в углах сетки

39

Вывод

количества

итераций

40

Вывод

распределения

температур

41

Построение

графика

42

Конец

25

Приложение 2

Распечатка программы реализации неявной схемы методом Гаусса-Зейделя

//Решение параболического уравнения с

//помощью неявной разностной схемы методом Гаусса-Зейделя.

//N - количество узлов по х (0,L1);

//М - количество узлов по y (0,L2);

//K - количество узлов по tau (0,tk);

//a - коэффициент температуроводности,

//eps - точность решения методом Гаусса-Зейделя.

//Ввод исходных данных

//Начальная температура поля в градусах Цельсия

clear;

disp('Введите начальную температуру поля в градусах Цельсия'); t0=input('t0=');

// Температура окружающей среды в градусах Цельсия disp('Введите температуру окружающей среды в градусах Цельсия'); tcp=input('tcp=');

// Коэффициент теплопроводности в Вт/(м*К) disp('Введите коэффициент теплопроводности в Вт/(м*К)'); lam=input('lam=');

// Плотность, кг/м^3 disp('Введите плотность в кг/м^3'); ro=input('ro=');

// Теплоёмкость в Дж/(кг К) disp('Введите теплоёмкость в Дж/(кг К)'); c=input('c=');

// Размеры пластины в м disp('Введите размеры пластины в м');

L1=input('L1=');

L2=input('L2=');

// Время остывания, мин

disp('Введите время остывания в минутах'); tk=input('tk=');

// Введите точность решения

disp('Введите Введите точность решения в градусах'); eps=input('eps=');

//Ввод технических параметров

//Количество узлов:

disp('Введите количество узловых точек по оси x');

N=input('N=');

disp('Введите количество узловых точек по оси y');

M=input('M=');

disp('Введите количество узловых точек по оси времени');

K1=input('K1=');

//Пересчёт времени в секунды tk=tk*60;

//Определение коэффициента температуропроводности a=lam/(c*ro);

//Правая часть дифференциального уравнения

function z=q(x, y) z=1.6e5*(1+(x/L1).*(y/L2)).*abs(sin(2*%pi*(x/L1).*(y/L2)))

26

Продолжение прил. 2

endfunction

//Условие на левой границе function y=yleft(x) y=t0-1.283*x;

endfunction

//Условие на правой границе function y=yright(x) y=t0-1.283*x;

endfunction

//Условие на нижней границе function y=xupper(x, tau)

y=t0-abs(cos(4*%pi*x/L1)).*(700^2-1.361*(tau-tk).^2).^(1/2) endfunction

//Условие на верхней границе

function y=xbottom(x, tau) y=t0-abs(sin(2*%pi*x/L1)).*(700^2-1.361*(tau-tk).^2).^(1/2) endfunction

//Расчёт шагов по координатам и времени: dx=L1/(N-1);

dy=L2/(M-1); dt=tk/(K1-1);

//Формируем массив x

for i=1:N x(i)=(i-1)*dx;

end

//Формируем массив y for j=1:M

y(j)=(j-1)*dy; end

//Формируем массив tau for k=1:K1

tau(k)=(k-1)*dt; end

//Занесение начальных условий for i=1:M

for j=1:N t(i,j,1)=t0;

end end

//Определяем матрицу ошибок R и заполняем ее нулями

R(M,N,K1)=0;

//Начальные значения технических параметров r=1;

kk=0;

//Цикл while для организации итерационного процесса при

//решении системы уравнений методом Гаусса-Зейделя с точностью eps while r>eps

//Вычисление матрицы ошибок R во внутренних точках

//и пересчет значений во внутренних точках при решениии методом Гаусса-Зейделя for k=2: K1

for j=2:N-1

27

Продолжение прил. 2

//Формируем нижнюю и верхнюю стороны матрицы решений T из граничного условия t(1,j,k)=xupper(x(j),tau(k));

t(M,j,k)=xbottom(x(j),tau(k)); for i=2:M-1

//Формируем левую и правую стороны матрицы решений T из граничного условия t(i,1,k)=yleft(tau(k));

t(i,N,k)=yright(tau(k));

//Пересчет значений

bb=(t(i-1,j,k)+t(i+1,j,k))/dy^2; bb=((t(i,j-1,k)+t(i,j+1,k))/dx^2+bb)*a*dt; bb=(bb+t(i,j,k-1)+dt*q(x(j),y(i))/(ro*c))/(1+2*a*dt*(1/dx^2+1/dy^2)); R(i,j,k)=abs(t(i,j,k)-bb);

t(i,j,k)=bb; end

end end

//Поиск максимума в матрице ошибок r=R(1,1,1);

for i=1:M for j=1:N

for k=1:K1

if R(i,j,k)>r r=R(i,j,k);

end end

end end

//Счётчик итераций

kk=kk+1; end

//Определение температуры в углах сетки t(1,1,K1)=(t(1,2,K1)+t(2,1,K1))/2; t(M,N,K1)=(t(M,N-1,K1)+t(M-1,N,K1))/2; t(1,N,K1)=(t(1,N-1,K1)+t(2,N,K1))/2; t(M,1,K1)=(t(M-1,1,K1)+t(M,2,K1))/2; t1=t(:,:,K1);

disp('Количество итераций'); disp(kk);

//Результат расчёта - распределение температуры в конечный момент времени disp('Распределение температуры');

disp(t1); subplot(3,1,1); mesh(y,x,t1');

xtitle('Распределение температуры в конечный момент времени',...

'y, м','x, м','Tемпература, °С');

//Распределение температур при фиксированном Х subplot(3,1,2);

x2=tau/60;

kx=iconvert(N/2,11);

t2=t(:,kx,1); for k=2:K1

28

Окончание прил. 2

t20=t(:,kx,k); t2=[t2 t20];

end mesh(y,x2,t2');

xtitle('Распределение температур при фиксированном Х','y, м',… 'Время, мин','Температура, °С');

//Распределение температур при фиксированном Y subplot(3,1,3);

ky=iconvert(M/2,11);

t3=t(ky,:,1); for k=2:K1

t30=t(ky,:,k);

t3=[t3;t30]; end mesh(x,x2,t3);

xtitle('Распределение температур при фиксированном Y','х, м',… 'Время, мин','Температура, °С');

29

Приложение 3

Распечатка диалога при задании исходной информации для неявной схемы

Введите начальную температуру поля в градусах Цельсия t0=800

Введите температуру окружающей среды в градусах Цельсия tcp=30

Введите коэффициент теплопроводности в Вт/(м*К) lam=45

Введите плотность в кг/м^3 ro=7850

Введите теплоёмкость в Дж/(кг К) c=450

Введите размеры пластины в м

L1=0.4

L2=0.8

Введите время остывания в минутах tk=10

Введите Введите точность решения в градусах eps=0.01

Введите количество узловых точек по оси x

N=20

Введите количество узловых точек по оси y

M=30

Введите количество узловых точек по оси времени

K1=20

30

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]