Редактирование: Одномерное уравнение теплопроводности. Буй Ван Шань. 6 курс

Перейти к: навигация, поиск

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 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"
 
 
!Количество процессов
 
!Количество процессов
 
!Время рассчета (сек)
 
!Время рассчета (сек)
Строка 78: Строка 43:
 
| 7.52
 
| 7.52
 
|}
 
|}
Для малого числа узлов в сетке использовать многопроцессорные вычисления не выгодно: время работы программы неуменьшается.
+
[[File:Processing time.PNG]]
Заметим что при увеличении количества процессов, скорость расчета параллельно повысилась
 
==Полезные ссылки==
 
[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 Уравнение теплопроводности]
 
Вам запрещено изменять защиту статьи. Edit Создать редактором

Обратите внимание, что все добавления и изменения текста статьи рассматриваются как выпущенные на условиях лицензии Public Domain (см. Department of Theoretical and Applied Mechanics:Авторские права). Если вы не хотите, чтобы ваши тексты свободно распространялись и редактировались любым желающим, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого.
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ МАТЕРИАЛЫ, ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Отменить | Справка по редактированию  (в новом окне)