Участник:Popko Fedor/Параллельная реализация явной разностной схемы для решения уравнения теплопроводности: различия между версиями

Материал из Алговики
Перейти к навигации Перейти к поиску
Строка 7: Строка 7:
  
 
где <math>u(x, t)</math> — температура в точке <math>x</math> в момент времени <math>t</math>, <math>a</math> — коэффициент теплопроводности материала, <math>f(x, t)</math> — правая часть, описывающая внешний источник или сток тепла.
 
где <math>u(x, t)</math> — температура в точке <math>x</math> в момент времени <math>t</math>, <math>a</math> — коэффициент теплопроводности материала, <math>f(x, t)</math> — правая часть, описывающая внешний источник или сток тепла.
 +
Также необходимо задать:
 +
 +
1. '''Граничные условия''':
 +
 +
Граничные условия задаются на краях области <math>x = 0</math> и <math>x = L</math> и бывают нескольких типов.
 +
 +
* Граничные условия первого рода (условия Дирихле):
 +
 
 +
Граничные условия первого рода устанавливают фиксированные значения температуры на границах области, то есть она поддерживается постоянной и равной заранее заданной функции времени.
 +
   
 +
<math>
 +
\begin{cases}
 +
u(0, t) = u_{\text{left}}(t), \\
 +
u(L, t) = u_{\text{right}}(t),
 +
\end{cases}
 +
</math>
 +
   
 +
где <math>u_{\text{left}}(t)</math> и <math>u_{\text{right}}(t)</math> — заданные значения температуры на левой и правой границах области.
 +
 +
* Граничные условия второго рода (условия Неймана):
 +
   
 +
Граничные условия второго рода определяют тепловой поток через границы области, то есть устанавливают значение производной температуры по нормали к поверхности. Это означает, что на границах тепловой поток поддерживается постоянным.
 +
 +
<math>
 +
\begin{cases}
 +
\frac{\partial u}{\partial x}\Big|_{x=0} = q_{\text{left}}(t), \\
 +
\frac{\partial u}{\partial x}\Big|_{x=L} = q_{\text{right}}(t),
 +
\end{cases}
 +
</math>
 +
   
 +
где <math>q_{\text{left}}(t)</math> и <math>q_{\text{right}}(t)</math> — заданные значения теплового потока на левой и правой границах.
 +
 +
2. '''Начальные условия''':
 +
 +
Задаются для всего стержня при начальном времени <math>t = 0</math>:
 +
<math>u(x, 0) = u_0(x),</math>
 +
где <math>u_0(x)</math> — начальное распределение температуры по всей длине стержня.
 +
 +
 +
Далее будем рассматривать граничные условия первого рода равные нулю.
 +
Тогда итоговая система будет иметь вид:
 +
 +
<math>
 +
\begin{cases}
 +
\frac{\partial u}{\partial t} = a \frac{\partial^2 u}{\partial x^2} + f(x, t), & 0 < x < L, \, t > 0, \\
 +
u(0, t) = u(L, t) = 0, \\
 +
u(x, 0) = u_0(x), & 0 \leq x \leq L .
 +
\end{cases}
 +
</math>
  
  
 
=== Математическое описание алгоритма ===
 
=== Математическое описание алгоритма ===
 +
Для явной разностной схемы приближаем производные конечными разностями на каждом временном шаге, обновляя <math>u(x, t)</math> в каждой точке сетки по пространству, используя значения с предыдущего временного шага. Пусть <math>\Delta x</math> — шаг по пространству, а <math>\Delta t</math> — шаг по времени.
 +
 +
1. '''Аппроксимация производной по пространству''':
 +
 +
Вторую производную по <math>x</math> можно аппроксимировать следующим образом:
 +
<math>\frac{\partial^2 u}{\partial x^2} \approx \frac{u_{i+1}^{n} - 2 u_{i}^{n} + u_{i-1}^{n}}{(\Delta x)^2},</math>
 +
где <math>u_i^n</math> — значение температуры в узле <math>i</math> на временном слое <math>n</math>.
 +
 +
2. '''Аппроксимация производной по времени''':
 +
 +
Первую производную по <math>t</math> можно аппроксимировать так:
 +
<math>\frac{\partial u}{\partial t} \approx \frac{u_i^{n+1} - u_i^n}{\Delta t}.</math>
 +
 +
3. '''Схема явного метода''':
 +
 +
Подставляем аппроксимации производных в исходное уравнение теплопроводности:
  
 +
<math>\frac{u_i^{n+1} - u_i^n}{\Delta t} = a \frac{u_{i+1}^{n} - 2 u_{i}^{n} + u_{i-1}^{n}}{(\Delta x)^2} + f(x_i, t_n).</math>
  
 +
Теперь выразим <math>u_i^{n+1}</math>:   
 +
 +
<math>u_i^{n+1} - u_i^n = \Delta t \cdot \left( a \frac{u_{i+1}^{n} - 2 u_{i}^{n} + u_{i-1}^{n}}{(\Delta x)^2} + f(x_i, t_n) \right).</math>
 +
 +
<math>u_i^{n+1} = u_i^n + \Delta t \cdot \left( a \frac{u_{i+1}^{n} - 2 u_{i}^{n} + u_{i-1}^{n}}{(\Delta x)^2} + f(x_i, t_n) \right).</math>
 +
 +
У нас получилось явное выражение для <math>u_i^{n+1}</math>, которое позволяет вычислить температуру в узле <math>i</math> на следующем временном слое, используя значения с текущего временного слоя <math>n</math>.
 +
 +
 +
4. '''Граничные условия''':
 +
 +
Устанавливаем граничные условия для расчёта на краях области, в зависимости от физической постановки задачи, например, <math>u(0, t) = 0</math> и <math>u(L, t) =0</math> для закрепленных концов стержня.
 +
 +
5. '''Начальные условия''':
 +
 +
Начальные условия для температуры по всему стержню <math>u(x, 0) = u_0(x)</math> для начального распределения температуры.
 +
В результате, итоговая система уравнений для каждого временного слоя <math>n+1</math> и каждого узла <math>i</math> в сетке может быть записана как:
 +
 +
<math>
 +
\begin{cases}
 +
u_i^{n+1} = u_i^n + \Delta t \cdot \left( a \frac{u_{i+1}^n - 2 u_i^n + u_{i-1}^n}{(\Delta x)^2} + f(x_i, t_n) \right), i = 1, \dots, L-1, \\
 +
u_0^{n+1} = u_L^{n+1} = 0, \\
 +
u_i^0 = u_0(x_i),  i = 0, \dots, L.
 +
\end{cases}
 +
</math>
  
  
Строка 35: Строка 126:
  
 
== Литература ==
 
== Литература ==
 +
<references>
 +
 +
[[en:Description of algorithm properties and structure]]
 +
<references />
 +
Воеводин Вл., Жуматий С., Соболев С., Антонов А., Брызгалов П., Никитенко Д., Стефанов К., Воеводин Вад. Практика суперкомпьютера «Ломоносов» // Открытые системы, 2012, N 7, С. 36-39.

Версия 15:01, 3 ноября 2024

1 Свойства и структура алгоритма

1.1 Общее описание алгоритма

Явная разностная схема для решения уравнения теплопроводности с правой частью предназначена для моделирования процессов теплопередачи в материале с учётом внешнего источника тепла. Уравнение теплопроводности с правой частью имеет вид:

\frac{\partial u}{\partial t} = a\frac{\partial^2 u}{\partial x^2} + f(x, t),

где u(x, t) — температура в точке x в момент времени t, a — коэффициент теплопроводности материала, f(x, t) — правая часть, описывающая внешний источник или сток тепла. Также необходимо задать:

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

Граничные условия задаются на краях области x = 0 и x = L и бывают нескольких типов.

  • Граничные условия первого рода (условия Дирихле):

Граничные условия первого рода устанавливают фиксированные значения температуры на границах области, то есть она поддерживается постоянной и равной заранее заданной функции времени.

\begin{cases} u(0, t) = u_{\text{left}}(t), \\ u(L, t) = u_{\text{right}}(t), \end{cases}

где u_{\text{left}}(t) и u_{\text{right}}(t) — заданные значения температуры на левой и правой границах области.

  • Граничные условия второго рода (условия Неймана):

Граничные условия второго рода определяют тепловой поток через границы области, то есть устанавливают значение производной температуры по нормали к поверхности. Это означает, что на границах тепловой поток поддерживается постоянным.

\begin{cases} \frac{\partial u}{\partial x}\Big|_{x=0} = q_{\text{left}}(t), \\ \frac{\partial u}{\partial x}\Big|_{x=L} = q_{\text{right}}(t), \end{cases}

где q_{\text{left}}(t) и q_{\text{right}}(t) — заданные значения теплового потока на левой и правой границах.

2. Начальные условия:

Задаются для всего стержня при начальном времени t = 0: u(x, 0) = u_0(x), где u_0(x) — начальное распределение температуры по всей длине стержня.


Далее будем рассматривать граничные условия первого рода равные нулю. Тогда итоговая система будет иметь вид:

\begin{cases} \frac{\partial u}{\partial t} = a \frac{\partial^2 u}{\partial x^2} + f(x, t), & 0 \lt x \lt L, \, t \gt 0, \\ u(0, t) = u(L, t) = 0, \\ u(x, 0) = u_0(x), & 0 \leq x \leq L . \end{cases}


1.2 Математическое описание алгоритма

Для явной разностной схемы приближаем производные конечными разностями на каждом временном шаге, обновляя u(x, t) в каждой точке сетки по пространству, используя значения с предыдущего временного шага. Пусть \Delta x — шаг по пространству, а \Delta t — шаг по времени.

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

Вторую производную по x можно аппроксимировать следующим образом: \frac{\partial^2 u}{\partial x^2} \approx \frac{u_{i+1}^{n} - 2 u_{i}^{n} + u_{i-1}^{n}}{(\Delta x)^2}, где u_i^n — значение температуры в узле i на временном слое n.

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

Первую производную по t можно аппроксимировать так: \frac{\partial u}{\partial t} \approx \frac{u_i^{n+1} - u_i^n}{\Delta t}.

3. Схема явного метода:

Подставляем аппроксимации производных в исходное уравнение теплопроводности:

\frac{u_i^{n+1} - u_i^n}{\Delta t} = a \frac{u_{i+1}^{n} - 2 u_{i}^{n} + u_{i-1}^{n}}{(\Delta x)^2} + f(x_i, t_n).

Теперь выразим u_i^{n+1}:

u_i^{n+1} - u_i^n = \Delta t \cdot \left( a \frac{u_{i+1}^{n} - 2 u_{i}^{n} + u_{i-1}^{n}}{(\Delta x)^2} + f(x_i, t_n) \right).

u_i^{n+1} = u_i^n + \Delta t \cdot \left( a \frac{u_{i+1}^{n} - 2 u_{i}^{n} + u_{i-1}^{n}}{(\Delta x)^2} + f(x_i, t_n) \right).

У нас получилось явное выражение для u_i^{n+1}, которое позволяет вычислить температуру в узле i на следующем временном слое, используя значения с текущего временного слоя n.


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

Устанавливаем граничные условия для расчёта на краях области, в зависимости от физической постановки задачи, например, u(0, t) = 0 и u(L, t) =0 для закрепленных концов стержня.

5. Начальные условия:

Начальные условия для температуры по всему стержню u(x, 0) = u_0(x) для начального распределения температуры. В результате, итоговая система уравнений для каждого временного слоя n+1 и каждого узла i в сетке может быть записана как:

\begin{cases} u_i^{n+1} = u_i^n + \Delta t \cdot \left( a \frac{u_{i+1}^n - 2 u_i^n + u_{i-1}^n}{(\Delta x)^2} + f(x_i, t_n) \right), i = 1, \dots, L-1, \\ u_0^{n+1} = u_L^{n+1} = 0, \\ u_i^0 = u_0(x_i), i = 0, \dots, L. \end{cases}


1.3 Вычислительное ядро алгоритма

1.4 Макроструктура алгоритма

1.5 Схема реализации последовательного алгоритма

1.6 Последовательная сложность алгоритма

1.7 Информационный граф

1.8 Ресурс параллелизма алгоритма

1.9 Входные и выходные данные алгоритма

2 Программная реализация алгоритма

2.1 Масштабируемость алгоритма и его реализации

2.2 Существующие реализации алгоритма

3 Литература

<references>

Воеводин Вл., Жуматий С., Соболев С., Антонов А., Брызгалов П., Никитенко Д., Стефанов К., Воеводин Вад. Практика суперкомпьютера «Ломоносов» // Открытые системы, 2012, N 7, С. 36-39.