Текущая версия |
Ваш текст |
Строка 1: |
Строка 1: |
| ==Постановка задачи== | | ==Постановка задачи== |
− | [[File:Heat eqn.gif|thumb|Пример численного решения уравнения теплопроводности. Цветом и высотой поверхности передана температура данной точки.]]
| + | Решается однородное уравнение теплопроводности на промежутке <math>\left[a\ldots b\right]</math> |
− | Решается однородное [https://ru.wikipedia.org/wiki/%D0%A3%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D1%82%D0%B5%D0%BF%D0%BB%D0%BE%D0%BF%D1%80%D0%BE%D0%B2%D0%BE%D0%B4%D0%BD%D0%BE%D1%81%D1%82%D0%B8 уравнение теплопроводности] на промежутке <math>\left[a\ldots b\right]</math> | |
| :<math>\frac{\partial U\left(x,t\right)}{\partial t} - k^2\frac{\partial^2 U\left(x,t\right)}{\partial x^2} = f(x,t)</math> | | :<math>\frac{\partial U\left(x,t\right)}{\partial t} - k^2\frac{\partial^2 U\left(x,t\right)}{\partial x^2} = f(x,t)</math> |
| С граничными условиями | | С граничными условиями |
Строка 10: |
Строка 9: |
| и начальным распределением температуры | | и начальным распределением температуры |
| :<math>U(x,0) = U0(x)</math> | | :<math>U(x,0) = U0(x)</math> |
− | *Где :<math>f(x,t), U0(x), M1(t), M2(t)</math> - Известные функции | + | *Где f(x,t), U0(x), M1(t), M2(t) - Известные функции |
| | | |
− | ==Реализация== | + | ==Реализация MPI== |
− | ===Конечно-разностная схема===
| + | * Скачать [[File:HeatEquation.rar|HeatEquation 2KB]] |
− | [[File:Zavnuischeme.PNG|thumb|300px|Явная разностная схема|right]]
| |
− | Задача содержит производную по времени первого порядка и производную по пространственной координате второго порядка.
| |
− | Запишем исходное уравнение в виде
| |
− | :<math>\frac{\partial U\left(x,t\right)}{\partial t} = a^2\frac{\partial^2 U\left(x,t\right)}{\partial x^2}</math>
| |
− | | |
− | Введем равномерную сетку <math>0 < x_i < L</math> с шагом разбиения <math>Δx</math>. Шаг по времени назовем <math>Δt</math>
| |
− | Построим явную конечно-разностную схему:
| |
− | :<math>\frac{U_i^{n+1}-U_i^{n}}{Δ t} = \frac{a^2}{Δx^2}\left(U_{i+1}^{n} - 2U_{i}^{n}+U_{i-1}^{n}\right)</math>
| |
− | Где, <math>U_i</math> — значение температуры в <math>i</math>-ом узле.
| |
− | * Условие сходимости явной схемы:<math>dt<dx^2/2</math>, где dt - шаг по времени, dx - шаг по координате | |
− | | |
− | ===Применение технологии MPI===
| |
− | Разветвление для уравнения теплопроводности осуществляется путем разбиением отрезка интегрирования на некоторые интервалы. На каждом интервале, процесс интегрирования осуществляется отдельным процессом, при этом в связи с использованием явной схемы, соседние процессы должны обменивать крайними значениями, получены на предыдущем шаге, для выполнения следующего шага.
| |
− | [[File:Sendandreceive.png|Схема передачи данных между процессами|center]] | |
− | : Первый процесс обменивается данными только с вторым процессом
| |
− | : Последний процесс обменивается данными только с предпоследним процессом
| |
− | : Все центральные процессы обмениваются с процессами слево, и справо
| |
− | * Начальные и краиние значения на каждом шаге вычисляются по начальным и граничным условиям.
| |
− | | |
− | ===Данные для расчета===
| |
− | :<math> \begin{cases}
| |
− | a=0;b=1\\
| |
− | M1(t)=6t+0.887\\
| |
− | M2(t)=0.0907\\
| |
− | U0(x)=cos(x+0.48)\\
| |
− | f(x,t)=0\\
| |
− | k=1
| |
− | \end{cases}</math>
| |
| | | |
| ==Результаты== | | ==Результаты== |
− | * Решение | + | * Решение |
− | ** 2 процесса
| |
− | [[File:Result.PNG|thumb|500px|Решение при запуске 2-х процессов|center]]
| |
− | *4 процесса
| |
− | [[File:Result2.png|thumb|500px|Решение при запуске 4-х процессов|center]]
| |
| * Погрешность вычисления | | * Погрешность вычисления |
− | * Зависимость времени расчета от количества процессов при постоянных шагах вычисления: dx = 0.001; dt = 0.000001 | + | * Зависимость скорости вычисления от количества процессов |
− | | + | {| class="wikitable" width="643" |
− | [[File:Processing time.PNG|thumb|500px|Зависимость времени расчета от кол. процессов|center]]
| |
− | {| class="wikitable" width="300" floating="center" | |
| !Количество процессов | | !Количество процессов |
| !Время рассчета (сек) | | !Время рассчета (сек) |
Строка 77: |
Строка 42: |
| |40 | | |40 |
| | 7.52 | | | 7.52 |
− | |} | + | |} |
− | Для малого числа узлов в сетке использовать многопроцессорные вычисления не выгодно: время работы программы неуменьшается.
| + | [[File:Processing time.PNG|thumb]] |
− | Заметим что при увеличении количества процессов, скорость расчета параллельно повысилась
| |
− | ==Полезные ссылки==
| |
− | [https://ru.wikipedia.org/wiki/%D0%A3%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D1%82%D0%B5%D0%BF%D0%BB%D0%BE%D0%BF%D1%80%D0%BE%D0%B2%D0%BE%D0%B4%D0%BD%D0%BE%D1%81%D1%82%D0%B8 Уравнение теплопроводности] | |