Термінова допомога студентам
Дипломи, курсові, реферати, контрольні...

Численное рішення модельного рівняння диссипации, конвекції і кинетики

РефератДопомога в написанніДізнатися вартістьмоєї роботи

A_progonka*Alfa+b_progonka); end; U_: =U_End (time, Alfa, Betta); For m:=Kol_voX-1 downto 1 do U_: =Alfa*U_+Betta;U_:=Alfa*U_+Betta; { 2 етап, частина перша. Вирішується методом скалярной прогонки } a_progonka:=(-2*v-a*h)/(2*SQR (h)); b_progonka:=(2*SQR (h)+2*v*taub*tau*SQR (h))/(SQR (h)*tau); c_progonka:=(a*h-2*v)/(2*SQR (h)); Alfa: =Alfa1/(Alfa1-Betta1*h); Betta: =Betta_Zero (time); For m:=1… Читати ще >

Численное рішення модельного рівняння диссипации, конвекції і кинетики (реферат, курсова, диплом, контрольна)

З Про Д Є Р Ж, А М І Е.

стр.

1. Загальна завдання. .. .. .. .. .. .. .. .. .. .. .

.. .. .. ... 3.

2. Постановка тестових завдань. .. .. .. .. .. .. .. .. ... .

.. .. .. ... 4.

3. Методика рішення тестових завдань. .. .. .. .. .. .. .. .. .

.. ... 6.

4. Результати обчислень. .. .. .. .. .. .. .. .. .. ... .

.. .. .. ... .9.

Список літератури. .. .. .. .. .. .. .. .. .. .. ... .

.. .. .. .. .. .10.

Приложения.

Додаток 1: Опис программы.

Додаток 2: Текст программы.

1. Про Б Щ, А Я П Про З Т, А М Про У До, А З, А Д, А Ч И.

Перенесення тепла (чи речовини) теплопроводностью (для речовини відповідно дифузією) і конвекцией описується диференційним рівнянням параболического типа:

[pic] (1) де [pic] температура (чи концентрація). Нехай [pic] є деякими константами і [pic]. Рівняння (1) при зазначених вище припущеннях називається модельним рівнянням диссипации, конвекції і кінетики. Складові правій частині мають наступний фізичний смысл:

[pic] - відповідає переносу тепла теплопроводностью (чи вещества диффузией);

[pic] - відповідає конвективному переносу;

[pic] - «кінетичний член », відповідає джерелу, пропорционально;

му температурі чи концентрации;

[pic] - інтенсивність зовнішніх джерел чи стоків. Надалі розглядатимемо лише теплову інтерпретацію рівняння (1).

Кількісна рішення рівняння (1) шукатимемо у сфері [pic]:

[pic] (2) при заданих початкових значеннях температури: [pic].

(3) і граничних условиях.

Граничні умови описують режими теплообміну із зовнішнього средой:

[pic] при [pic];

[pic] при [pic].

— 3 ;

2. П Про З Т, А М Про У До, А Т Є З Т Про У И Х З, А Д, А Ч.

Як тестових завдань для температури [pic] мною було обрано наступні п’ять функций:

[pic].

(9).

[pic] (10).

[pic] (11).

[pic] (12).

[pic] (13).

Для функції (9) маємо: [pic].

[pic] [pic].

[pic].

Для функції (10):

[pic].

[pic] [pic].

[pic].

Для функції (11): [pic].

[pic] [pic].

[pic].

Для функції (12): [pic].

[pic] [pic].

[pic].

Для функції (13): [pic].

— 4 ;

[pic] [pic].

[pic].

Дані функції тестировались на відрізку по X: [0, 1], за часом: [0, 1], з кількістю разбиений за цими відрізкам — 30.

— 5 ;

3. М Є Т Про Д І До, А Р Є Ш Є М І Я Т Є З Т Про У И Х.

З, А Д, А Ч.

Це завдання вирішується питання з допомогою двошарової неявно конечно-разностной схемы.

Схема реалізується у три етапу. 1 етап: перебувають попередні значення [pic] з допомогою 4-х точкової неявній схемы:

[pic] (5) 2 етап: використовується протягом двох кроку. Спочатку перебувають [pic] на отриманому шарі ([pic]) з кроком [pic], та був [pic] через [pic]. І тут використовується 4-х точкова неявна разностная схема:

[pic] (6).

[pic] (7) 3 етап: остаточні значення [pic] перебувають у вигляді лінійної комбінації двох попередніх значений:

[pic] (8).

Аби вирішити (1) скористаємося формулами (5) — (8). Дані рівняння представляють трьох діагональні матриці, які вирішуються методом скалярной прогонки.

На початку потрібно змінити (5) — (7) до виду:

[pic] (14).

Тоді (5) прийме вид:

[pic].

[pic].

[pic].

Тобто. [pic];

[pic];

[pic];

[pic].

— 6 ;

Формула (6) перетворюється на: [pic] Тобто. [pic];

[pic];

[pic];

[pic].

Формула (7) перетвориться в:

[pic].

Тобто. [pic];

[pic];

[pic];

[pic].

Далі вирішуємо по формулам скалярной прогонки:

[pic] [pic] (15).

[pic] (16).

Для визначення [pic], [pic] і [pic] скористаємося даними граничними умовами, тобто. формулою (4) і функцією [pic]. Тож якщо ми беремо [pic] з формули (9), то имеем:

[pic].

[pic].

Наведемо цей вислів до виду: [pic].

[pic].

[pic].

[pic].

— 7 ;

Тобто. тепер ми маємо [pic] і [pic]: [pic].

[pic].

Далі знайдемо кінцеве [pic]: [pic].

[pic].

[pic].

[pic].

[pic] (18).

Провівши аналогічні розрахунки для [pic] заданих формулами (10) — (13), ми матимемо відповідні [pic], [pic] і [pic]. Далі ми можемо вирішити системи методом прогонки й одержати необхідний результат.

— 8 ;

4. Р Є З У Л И Т, А Т И У И Ч І З Л Є М І Й.

Через війну проведених випробувань програма виявили високу надійність. Були отримані такі данные.

При розрахунку з допомогою функції [pic] і вхідних даних [pic]; [pic]; [pic]; [pic]; [pic]; [pic]; [pic] на відрізку по X й часово [0,1] з кроком 0,033 було отримано результат з помилкою рівної 0,0675.

Для функції [pic] при [pic]; [pic]; [pic]; [pic]; [pic]; [pic]; [pic], тому ж проміжку, помилка становить 0,055.

З функцією [pic] і [pic]; [pic]; [pic]; [pic]; [pic]; [pic]; [pic] помилка прийме значення 0,0435.

При [pic] і правових умовах [pic]; [pic]; [pic]; [pic]; [pic]; [pic]; [pic] внаслідок виникає помилка рівна 0,0055.

І, нарешті, якщо обрано функція [pic] і [pic]; [pic]; [pic]; [pic]; [pic]; [pic]; [pic], то помилка становитиме 0,255.

Тобто. можна сказати, що маємо результат з цим порядком точності. Настільки малу точність можна пояснити тим, що похідна, знайдена при граничних умовах, як і має перший порядок точности.

— 9 ;

З П І З Про До Л І Т Є Р, А Т У Р Ы.

1. А. Епанешников, У. Епанешников Програмування серед Turbo-Pascal.

7.0. — М.: Діалог — Міфі, 1996. — 288 с.

2. Пєтухова Т. П., Сибірцев У. У. Пакет прикладних програм для чисельного моделювання процесів теплоі массопереноса. — Караганда:

Вид-во КарГУ. 1993.

3. Фигурнов У. Еге. IBM PC для користувача. — М.: Инфра — М, 1995. — 432 с.

Додаток 1.

Про П І З, А М І Є П Р Про Р Р, А М М Ы.

Завдання, поставлене була програмно реалізована мовою програмування Turbo-Pascal 7.0.

До складу програми входять такі файли: basis. pas — PAS-файл більшості программы.

(рішення системи рівнянь методом скалярной прогонки); basis. v&v — EXE-файл більшості програми (викликається з START. PAS); fun. bmp — BMP-фаил із зображенням функцій; inform. v&v — TXT-фаил з туристичною інформацією про програму (викликається з START. PAS); music. v&v — музичний EXE-фаил (викликається з START. PAS); my_menu.pas — UNIT до створення меню; sea. exe — програма для перегляду графічних файлів; start. pas — файл для запуску всієї програми; u — файл з результатами роботи; zastavka. v&v — EXE-фаил з заставкою до основний программе.

(викликається з START. PAS).

Файл START є, хіба що оболонкою програми, з якої викликаються інші файли. Сам процес розв’язування міститься у файлі BASIS.

BASIS містить такі процедури і функции:

Function Fun_U (Xm, t: real):real; Вхід: значення по X і значення за часом t, і навіть глобальна змінна обраної функції SelectFunction. Дія: обчислює точне значення функції U при заданих X і t. Вихід: Fun_U — значення функции.

Function Fun_F (Xm, t, a, b, v:real):real; Вхід: значення по X, за часом t, коефіцієнти [pic], [pic], [pic] і номер обраної функции.

SelectFunction. Дія: обчислює значення функції F при заданих X, t, [pic], [pic], [pic]. Вихід: Fun_F — значення функції F.

Function Betta_Zero (time:real): real; Вхід: значення часу t і глобальні коефіцієнти [pic], [pic], [pic], номер обраної функції SelectFunction. Дія: обчислює [pic], використовуване у методі скалярной прогонки. Вихід: Betta_Zero — значення [pic].

Function U_End (time, Alf, Bet: real): real; Вхід: значення часу t, [pic], [pic] і глобальні коефіцієнти [pic], [pic], [pic], номер обранийіншої функції SelectFunction. Дія: обчислює [pic] використовуване у методі скалярной прогонки. Вихід: U_End — значення [pic].

Procedure PrintArray; Вхід: використовує глобальний масив даних U_m. Дія: видає вміст U_m на екран й у файл. Вихід: висновок U_m.

Додаток 2.

Т Є До З Т П Р Про Р Р, А М М Ы.

Більшість програми така: Program Basis; Uses Crt; { Підключення бібліотек } Label Metka1, Metka2; { Мітки } Var a, b, v: real; { Коефіцієнти, задаються користувачем } h, tau: real; { Крок по X й часово відповідно } X, x0: real; { Кінцеве і початкова значення X } m, n, k: word; { Змінні використовувані в циклах до розрахунку } T, t0: real; { Кінцеве і початкова значення часу } Kol_voX, Kol_voT: word; { Кількість разбиений по X й часово } U_m, U_,_U1_2,_U1: array [0.200] of real; { Масиви результатів } z: array [0.200] of real; { Масив точних рішень } Xm: real; { Проміжний X } Alfa, Betta: array [0.200] of real; { Масив коефіцієнтів використовуваних при скалярной прогонке } a_progonka, b_progonka, c_progonka, d_progonka: real; { Коефіцієнти для скалярной прогонки } Error: real; { Значення помилки } time: real; { Змінна часу } ch: char; { Код натиснутій клавіші } SelectFunction: word; { Номер обраної функції } U: text; { Змінна висновку результату в файл } Alfa1, Alfa2, Betta1, Betta2: real; { Коефіцієнти граничних умов } Data: word; { Змінна режиму введення початкових даних }.

Function Fun_U (Xm, t: real):real; { Функція U (точне рішення) } begin.

If SelectFunction=1 then Fun_U:=SQR (Xm)*Xm+SQR (t);

If SelectFunction=2 then Fun_U:=SQR (Xm)*SQR (t)*t+10*Xm*t+SQR (SQR (t))*Xm;

If SelectFunction=3 then Fun_U:=Xm*SIN (Xm*t)-4*SQR (Xm)*COS (t);

If SelectFunction=4 then Fun_U:=t*EXP (Xm);

If SelectFunction=5 then Fun_U:=SIN (Xm)+EXP (t); end; Function Fun_F (Xm, t, a, b, v:real):real; { Функція F } begin if SelectFunction=1 then Fun_F:=2*t-v*6*Xm+a*3*SQR (Xm) — b*(SQR (Xm)*Xm+SQR (t)); if SelectFunction=2 then Fun_F:=3*SQR (Xm)*SQR (t)+10*Xm+4*SQR (t)*t*Xmv*2*SQR (t)*t+ a*(2*Xm*SQR (t)*t+10*t+SQR (SQR (t))) — b*(SQR (Xm)*SQR (t)*t+10*Xm*t+Xm*SQR (SQR (t))); if SelectFunction=3 then Fun_F:=SQR (Xm)*COS (Xm*t)+4*SQR (Xm)*SIN (t) — v*(2*COS (Xm*t)*t;

Xm*SIN (Xm*t)*SQR (t)-8*COS (t))+a*(SIN (Xm*t)+Xm*t*COS (Xm*t) — 8*COS (t)*Xm) — b*(Xm*SIN (Xm*t)-4*SQR (Xm)*COS (t)); if SelectFunction=4 then Fun_F:=EXP (Xm)-v*(t*EXP (Xm))+a*(t*EXP (Xm)) — b*(t*EXP (Xm)); if SelectFunction=5 then Fun_F:=EXP (t)-v*(-SIN (Xm))+a*(COS (Xm)) — b*(SIN (Xm)+EXP (t)); end; Function Betta_Zero (time:real): real; { Функція Betta[0] для прогонки } begin.

If SelectFunction=1 then Betta_Zero:=(h/(Betta1*hAlfa1))*(Alfa1*3*SQR (x0)+.

Betta1*(SQR (x0)*x0+SQR (time)));

If SelectFunction=2 then Betta_Zero:=(h/(Betta1*hAlfa1))*(Alfa1*(2*x0*SQR (time)*time+.

10*time+SQR (SQR (time)))+Betta1*(SQR (x0)*SQR (time)*time+10*x0*time+SQR (SQR (t ime))*x0));

If SelectFunction=3 then Betta_Zero:=(h/(Betta1*hAlfa1))*(Alfa1*(SIN (x0*time)+ x0*time*COS (x0*time)-8*x0*COS (time))+Betta1*(x0*SIN (x0*time) — 4*SQR (x0)*COS (time)));

If SelectFunction=4 then Betta_Zero:=(h/(Betta1*hAlfa1))*(Alfa1*(time*EXP (x0))+.

Betta1*(time*EXP (x0)));

If SelectFunction=5 then Betta_Zero:=(h/(Betta1*hAlfa1))*(Alfa1*(COS (x0))+.

Betta1*(SIN (x0)+EXP (time))); end; Function U_End (time, Alf, Bet: real): real; { Функція Um для прогонки } begin.

If SelectFunction=1 then U_End:=(Alfa2*h*3*SQR (X)+Betta2*h*(SQR (X)*X+SQR (time)).

+ Bet*Alfa2)/(Alfa2-Alf*Alfa2+h*Betta2);

If SelectFunction=2 then U_End:=(Alfa2*h*(2*X*SQR (time)*time+10*time+SQR (SQR (time)))+.

Betta2*h*(SQR (X)*SQR (time)*time+10*X*time+SQR (SQR (time))*X).

+Bet*Alfa2)/(Alfa2-Alf*Alfa2+h*Betta2);

If SelectFunction=3 then U_End:=(Alfa2*h*(SIN (X*time)+X*time*COS (X*time)-8*X*COS (time))+.

Betta2*h*(X*SIN (X*time) — 4*SQR (X)*COS (time))+Bet*Alfa2)/(Alfa2-Alf*Alfa2+h*Betta2);

If SelectFunction=4 then U_End:=(Alfa2*h*(time*EXP (X))+Betta2*h*(time*EXP (X))+Bet*Alfa2)/.

(Alfa2-Alf*Alfa2+h*Betta2);

If SelectFunction=5 then U_End:=(Alfa2*h*(COS (X))+Betta2*h*(SIN (X)+EXP (time))+Bet*Alfa2)/.

(Alfa2-Alf*Alfa2+h*Betta2); end; Procedure PrintArray; { Процедура друку масиву U } begin.

WriteLn; For m:=0 to Kol_voX do begin Write (U_m[m]: 15:4); Write (U, U_m[m]: 15:4); end;

WriteLn; WriteLn (U); end;

{ Основна програма } Begin Assign (U, «u »); { Файл для записи значень функції } Rewrite (U); { Відкриття файла для записи } TextBackGround (0); { Вибір функції до роботи } ClrScr; TextColor (10); GoToXY (20,8); Write («Запровадьте номер обраної функції (1−5): »); Metka1: ch:=ReadKey;

If ch= «1 «then SelectFunction:=1 else If ch= «2 «then SelectFunction:=2 else If ch= «3 «then SelectFunction:=3 else If ch= «4 «then SelectFunction:=4 else If ch= «5 «then SelectFunction:=5 else begin.

Sound (400); Delay (100); NoSound; GoTo Metka1; end; GoToXY (59,8);TextColor (12);WriteLn (SelectFunction); TextColor (11); GoToXY (11,12); Write («Ви продовжуватимете працювати з стандартними параметрами (цифра ~1~) »); GoToXY (22,13); Write («чи введете є дані (цифра ~2~)? »); Metka2: ch:=ReadKey;

If ch= «1 «then Data:=1 else If ch= «2 «then Data:=2 else begin.

Sound (400); Delay (100); NoSound; GoTo Metka2; end; TextBackGround (9); TextColor (10); ClrScr; { Введення початкових даних } WriteLn; WriteLn («———————————————— Введення даних —————- ——————————— «); For k:=1 do 21 do WriteLn («¦

¦ «); WriteLn («L———————————————————————————————— ——————— «); TextColor (15); Window (3,3,77,23); Write («Запровадьте область рассчета по X від: »); If Data=1 then begin x0:=0; Write (x0:1:0); WriteLn; end else ReadLn (x0); Write («до: »); If Data=1 then begin.

X:=1; Write (X:1:0); WriteLn; end else ReadLn (X); WriteLn; Write («Запровадьте кількість разбиений в напрямі X: »); If Data=1 then begin Kol_voX:=30; Write (Kol_voX:2); WriteLn; end else ReadLn (Kol_voX); WriteLn;WriteLn; Write («Запровадьте область рассчета за часом від: »); If Data=1 then begin t0:=0; Write (t0:1:0); WriteLn; end else ReadLn (t0); Write («до: »); If Data=1 then begin T:=1; Write (T:1:0); WriteLn; end else ReadLn (T); WriteLn; Write («Запровадьте кількість разбиений за часом: »); If Data=1 then begin Kol_voT:=30; Write (Kol_voT:2); WriteLn; end else ReadLn (Kol_voT); WriteLn;WriteLn; WriteLn («Запровадьте коефіцієнти »); Write («a= «); If Data=1 then begin a:=1; Write (a:1:0); WriteLn; end else ReadLn (a); Write («b= «); If Data=1 then begin b:=1; Write (b:1:0); WriteLn; end else ReadLn (b); Write («v= «); If Data=1 then begin v:=0.001; Write (v:1:3); WriteLn; end else ReadLn (v); Write («Alfa-1= «); If Data=1 then begin Alfa1:=1; Write (Alfa1:1:0); WriteLn; end else ReadLn (Alfa1); Write («Betta-1= «); If Data=1 then begin Betta1:=1; Write (Betta1:1:0); WriteLn; end else ReadLn (Betta1); Write («Alfa-2= «); If Data=1 then begin Alfa2:=1; Write (Alfa2:1:0); WriteLn; end else ReadLn (Alfa2); Write («Betta-2= «); If Data=1 then begin Betta2:=1; Write (Betta2:1:0); WriteLn;TextColor (14);

Write («Натисніть будь-яку клавішу »); ReadKey; end else ReadLn (Betta2); { Інтерфейс екрана під час видачі результату } TextBackGround (3); TextColor (1); Window (1,1,80,25); ClrScr; WriteLn; WriteLn («р===================== Результат ========================== «); For k:=1 to 21 do WriteLn («¦

¦ «); WriteLn («================================================================== =- «); TextColor (0); TextBackGround (7); GoToXY (2,23); WriteLn («Для продовження натисніть будь-яку клавішу »); TextBackGround (3); Window (3,4,77,22); TextColor (15); ClrScr;

{ Вычесление кроку сітки } tau:=(T-t0)/Kol_voT; h:=(X-x0)/Kol_voX; { Введення даних при time=t0 } For m:=0 to Kol_voX do begin.

Xm:=x0+h*m; U_m[m]: =Fun_U (Xm, t0); end; TextColor (14); WriteLn («Час одно », time:3:3); TextColor (15); WriteLn (U, «Час одно », time:3:3); PrintArray; { Початок рассчета } time:=t0; Repeat time:=time+tau;

WriteLn; TextColor (14); WriteLn («Час одно », time:3:3); TextColor (15);

WriteLn (U, «Час одно », time:3:3); { 1 етап. Вирішується методом скалярной прогонки } a_progonka:=(-2*v-a*h)/(2*SQR (h)); b_progonka:=(SQR (h)+2*v*taub*tau*SQR (h))/(SQR (h)*tau); c_progonka:=(a*h-2*v)/(2*SQR (h)); Alfa[0]: =Alfa1/(Alfa1-Betta1*h); Betta[0]: =Betta_Zero (time); For m:=1 to Kol_voX-1 do begin.

Alfa[m]: =-c_progonka/(a_progonka*Alfa[m-1]+b_progonka);

Betta[m]: =(Fun_F (x0+m*h, time+tau, a, b, v)+U_m[m]/tau-a_progonka*Betta[m- 1])/.

(a_progonka*Alfa[m-1]+b_progonka); end; U_[Kol_voX]: =U_End (time, Alfa[Kol_voX-1], Betta[Kol_voX-1]); For m:=Kol_voX-1 downto 1 do U_[m]: =Alfa[m]*U_[m+1]+Betta[m];U_[0]:=Alfa[0]*U_[1]+Betta[0]; { 2 етап, частина перша. Вирішується методом скалярной прогонки } a_progonka:=(-2*v-a*h)/(2*SQR (h)); b_progonka:=(2*SQR (h)+2*v*taub*tau*SQR (h))/(SQR (h)*tau); c_progonka:=(a*h-2*v)/(2*SQR (h)); Alfa[0]: =Alfa1/(Alfa1-Betta1*h); Betta[0]: =Betta_Zero (time); For m:=1 to Kol_voX-1 do begin.

Alfa[m]: =-c_progonka/(a_progonka*Alfa[m-1]+b_progonka);

Betta[m]: =(Fun_F (x0+m*h, time+tau/2,a, b, v)+2*U_m[m]/taua_progonka*Betta[m-1])/.

(a_progonka*Alfa[m-1]+b_progonka); end; _U1_2[Kol_voX]: =U_End (time, Alfa[Kol_voX-1], Betta[Kol_voX-1]); For m:=Kol_voX-1 downto 1 do _U1_2[m]: =Alfa[m]*_U1_2[m+1]+Betta[m];

_U1_2[0]: =Alfa[0]*_U1_2[1]+Betta[0]; { 2 етап, частина друга. Вирішується методом скалярной прогонки } a_progonka:=(-2*v-a*h)/(2*SQR (h)); b_progonka:=(2*SQR (h)+2*v*taub*tau*SQR (h))/(SQR (h)*tau); c_progonka:=(a*h-2*v)/(2*SQR (h)); Alfa[0]: =Alfa1/(Alfa1-Betta1*h); Betta[0]: =Betta_Zero (time); For m:=1 to Kol_voX-1 do begin.

Alfa[m]: =-c_progonka/(a_progonka*Alfa[m-1]+b_progonka);

Betta[m]: =(Fun_F (x0+m*h, time+tau, a, b, v)+2*_U1_2[m]/taua_progonka*Betta[m-1])/.

(a_progonka*Alfa[m-1]+b_progonka); end; _U1[Kol_voX]: =U_End (time, Alfa[Kol_voX-1], Betta[Kol_voX-1]); For m:=Kol_voX-1 downto 1 do _U1[m]: =Alfa[m]*_U1[m+1]+Betta[m];

_U1[0]: =Alfa[0]*_U1[1]+Betta[0]; { 3 етап. Остаточне значення } For m:=0 to Kol_voX do.

U_m[m]: =2*_U1[m]-U_[m]; PrintArray; { Висновок результату на екран та її запис в файл } For m:=0 to Kol_voX do { Рассчет точного значення функції } begin z[m]: =Fun_U (x0+m*h, time); end; { Висновок помилки розрахунку екран й у файл } Error:=0; For m:=0 to Kol_voX do begin a:=Abs (U_m[m]-z[m]); If ErrorT;

Close (U); { Закриття файла з результатами } End.

Міністерство загального характеру і професійної освіти РФ.

Оренбургский державний университет.

Інститут енергетики, і информатики.

кафедра: Информатики.

Р, А З Ч Є Т М Про — Р Р, А Ф І Ч Є З До Про Е.

З, А Д, А М І Е.

" Кількісна рішення модельного рівняння диссипации, конвекції і кінетики «.

Виконав: студент грн. 97 ИДМБ.

Волков У. У .

Distributed by BRS Corporation internet.

Е-mail: [email protected].

Перевірив: Пєтухова Т. П.

Оренбург — 1999.

———————————- [pic].

[pic].

Показати весь текст
Заповнити форму поточною роботою