Решение уравнения теплопроводности неявным методом

Уравнение теплопроводности

Ранее (см. разд. 2.1.2, 2.1.3) уже были построены и исследованы разностные схемы решения смешанной задачи для одномерного уравнения теплопроводности:

Решение уравнения теплопроводности неявным методом(2.75)

Были получены две двухслойные схемы — явная (2.3) и неявная (2.4). В явной схеме значения сеточной функции Решение уравнения теплопроводности неявным методомна верхнем (j + 1)-ом слое вычисляли с помощью решения на нижнем слое [соотношение (2.13)]. Для нахождения решения на (j + 1)-м слое по неявной схеме была получена трехдиагональная система линейных алгебраических уравнений (2.22), которую решают методом прогонки.

Неявная схема безусловно устойчива, явная схема устойчива при выполнении условия Решение уравнения теплопроводности неявным методом

Обе схемы сходятся к решению исходной задачи со скоростью Решение уравнения теплопроводности неявным методом.

Схемы (2.3), (2.4) построены для случая, когда значения искомой функции (температуры) Uна границах х = 0, х = 1определяются заданными функциями Решение уравнения теплопроводности неявным методом. Однако граничные условия в смешанной задаче (2.75) могут быть и иными, в них может входить производная искомой функции. Например, если конец стержня х=0 теплоизолирован, то условие имеет вид

Решение уравнения теплопроводности неявным методом

В этом случае, как и при решении волнового уравнения, данное условие нужно записывать в схемах (2.3), (2.4) в разностном виде.

Перейдем теперь к построению разностных схем для уравнения теплопроводности с двумя пространственными переменными. Примем для простоты а = 1. Тогда это уравнение можно записать в виде

Решение уравнения теплопроводности неявным методом(2.76)

Пусть при t=0 начальное условие задано в виде

Решение уравнения теплопроводности неявным методом(2.77)

В отличие от волнового уравнения, требующего два начальных условия, в уравнение теплопроводности входит только первая производная по t, и необходимо задавать одно начальное условие.

Часто задачи теплопроводности или диффузии, описываемые двумерным уравнением (2.76), решаются в ограниченной области. Тогда, кроме начального условия (2.77), нужно формулировать граничные условия. В частности, если расчетная область представляет прямоугольный параллелепипед Решение уравнения теплопроводности неявным методом Решение уравнения теплопроводности неявным методом Решение уравнения теплопроводности неявным методом(рис. 2.24), то нужно задавать граничные условия на его боковых гранях. Начальное условие (2.77) задано на нижнем основании параллелепипеда.

Решение уравнения теплопроводности неявным методом

Рис. 2.24. Расчетная область

Введем простейшую сетку с ячейками в виде прямоугольных параллелепипедов, для чего проведем три семейства плоскостей: хi= ih1(i=0,1. I), Решение уравнения теплопроводности неявным методом (j=0,1. J), Решение уравнения теплопроводности неявным методом. Значение сеточной функции в узлах Решение уравнения теплопроводности неявным методомобозначим символом Решение уравнения теплопроводности неявным методом. С помощью этих значений можно построить разностные схемы для уравнения (2.76).

Рассмотренные выше схемы для одномерного уравнения легко обобщаются на двумерный случай.

Построим явную разностную схему, шаблон которой изображен на рис. 2.25. Аппроксимируя производные отношениями конечных разностей, получаем следующее сеточное уравнение:

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Рис. 2.25. Шаблон двумерной схемы

Отсюда можно найти явное выражение для значения сеточной функции на (k + 1)-ом слое:

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом(2.78)

Условие устойчивости имеет вид

Решение уравнения теплопроводности неявным методом(2.79)

При Решение уравнения теплопроводности неявным методомполучается особенно простой вид схемы (2.78):

Решение уравнения теплопроводности неявным методом(2.80)

Полученная схема сходится со скоростью Решение уравнения теплопроводности неявным методом

Формулы (2.78) или (2.80) представляют собой рекуррентные соотношения для последовательного вычисления сеточной функции во внутренних узлах слоев k = 1,2. К. На нулевом слое используется начальное условие (2.77), которое записывается в виде

Решение уравнения теплопроводности неявным методом(2.81)

Значения Решение уравнения теплопроводности неявным методомв граничных узлах вычисляют с помощью граничных условий.

Алгоритм решения смешанной задачи для двумерного уравнения теплопроводности изображен на рис. 2.26. Здесь решение хранится на двух слоях: нижнем (массив Решение уравнения теплопроводности неявным методом) и верхнем (массив Решение уравнения теплопроводности неявным методом). Блоки граничных условий необходимо сформировать в зависимости от конкретного вида этих условий. Результаты выводят на каждом слое, хотя можно ввести шаг выдачи (см. рис. 2.13).

Решение уравнения теплопроводности неявным методом

Рис. 2.26. Алгоритм решения двумерного уравнения теплопроводности

Построим теперь абсолютно устойчивую неявную схему для решения уравнения (2.76), аналогичную схеме (2.4) для одномерного уравнения теплопроводности. Аппроксимируя в (2.76) вторые производные по пространственным переменным на (k + 1)-ом слое, получаем следующее разностное уравнение:

Решение уравнения теплопроводности неявным методом(2.82)

Это уравнение можно записать в виде системы линейных алгебраических уравнений относительно значений сеточной функции на каждом слое:

Решение уравнения теплопроводности неявным методом(2.83)

Решение уравнения теплопроводности неявным методом

К этой системе уравнений нужно добавить граничные условия для определения значений сеточной функции в граничных узлах (т.е. при i= 0, I; j = 0, J). На нулевом слое решение находится из начального условия (2.77), представленного в виде (2.81).

Система (2.83), полученная для двумерного уравнения теплопроводности, имеет более сложный вид, чем аналогичная система (2.22) для одномерного случая, которую можно решить методом прогонки. Таким образом, распространение неявной схемы на многомерный случай приводит к значительному усложнению вычислительного алгоритма и увеличению объема вычислений.

Недостатком явной схемы (2.78) является жесткое ограничение на шаг по времени τ, вытекающее из условия (2.79). Существуют абсолютно устойчивые экономичные разностные схемы, позволяющие вести расчет со сравнительно большим значением шага по времени Решение уравнения теплопроводности неявным методоми требующие меньшего объема вычислений. Две из них будут рассмотрены в разд. 2.3.3.

Видео:Решение уравнения теплопроводности методом конечных разностейСкачать

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

Неявный метод Эйлера. Решение уравнения теплопроводности в узлах сетки

Страницы работы

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Содержание работы

Новосибирский Государственный Университет

Решение уравнения теплопроводности неявным методом

Выполнила: Сахно Алина гр.3114

Преподователь: Аверина Т.А.

Постановка задачи и математические методы ее реализации

Рассматривается задача нахождения решения системы:

Решение уравнения теплопроводности неявным методом

при начальных и граничных данных:

Решение уравнения теплопроводности неявным методом

с помощью неявного метода Эйлера: Решение уравнения теплопроводности неявным методом

Известно так же точное решение: Решение уравнения теплопроводности неявным методом.

Необходимо 1. Исследовать схему на точность и устойчивость

2. Найти решение уравнения теплопроводности в узлах сетки

3. Вывести на экран графики точного и численного решений на каждом временном слое.

Неявный метод Эйлера задается системой Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Поскольку метод неявный, то для нахождения решения исходной системы нужно решить СЛАУ на каждом временном слое. Матрица СЛАУ и столбец свободных коэффициентов восстанавливается по разностной схеме, начальным и граничным данным, таким образом система имеет вид:

Решение уравнения теплопроводности неявным методом

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

Вычислим теперь погрешность аппроксимации и погрешность решения:

Мы получили, что Решение уравнения теплопроводности неявным методом, то есть при Решение уравнения теплопроводности неявным методомпогрешность стремится к нулю со скоростью Решение уравнения теплопроводности неявным методом.

Таким образом, неявный метод Эйлера безусловно устойчив.

ЧИСЛЕННЫЕ ЭКСПЕРИМЕНТЫ И АНАЛИЗ РЕЗУЛЬТАТОВ

h – шаг сетки по x, Решение уравнения теплопроводности неявным методом— шаг сетки по t

Решение уравнения теплопроводности неявным методом— ошибка

Мы теоретически установили, что точность решения ОРешение уравнения теплопроводности неявным методом, проверим это на практике:

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Т.е. на самом деле при увеличении h в 2 раза ошибка увеличивается в 4 раза.

1. Ж.Л.Коробицына, Г.С.Хакимзянов: Практикум на ЭВМ по курсу «Методы вычислений». Часть1 Разностные схемы для уравнений в частных производных с одной пространственной переменной

2. Лекции Лаевского Ю.М. по курсу «Методы вычислений»

Видео:Лекция №1.1 Явная и неявная схемы для уравнения теплопроводностиСкачать

Лекция №1.1 Явная и неявная схемы для уравнения теплопроводности

Уравнение теплопроводности в tensorflow

Привет, Хабр! Некоторое время назад увлекся глубоким обучением и стал потихоньку изучать tensorflow. Пока копался в tensorflow вспомнил про свою курсовую по параллельному программированию, которую делал в том году на 4 курсе университета. Задание там формулировалось так:

Линейная начально-краевая задача для двумерного уравнения теплопроводности:

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Хотя правильнее было бы назвать это уравнением диффузии.

Задачу тогда требовалось решить методом конечных разностей по неявной схеме, используя MPI для распараллеливания и метод сопряженных градиентов.

Я не специалист в численных методах, пока не специалист в tensorflow, но опыт у меня уже появился. И я загорелся желанием попробовать вычислять урматы на фреймворке для глубокого обучения. Метод сопряженных градиентов реализовывать второй раз уже не интересно, зато интересно посмотреть как с вычислением справится tensorflow и какие сложности при этом возникнут. Этот пост про то, что из этого вышло.

Видео:Решение уравнения теплопроводности в одномерной постановке в Excel с применением неявной схемыСкачать

Решение уравнения теплопроводности в одномерной постановке в Excel с применением неявной схемы

Численный алгоритм

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Разностная схема:

Чтобы проще было расписывать, введем операторы:

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Явная разностная схема:

Решение уравнения теплопроводности неявным методом

В случае явной разностной схемы для вычисления используются значения функции в предыдущий момент времени и не требуется решать уравнение на значения Решение уравнения теплопроводности неявным методом. Однако такая схема менее точная и требует значительно меньший шаг по времени.

Неявная разностная схема:

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Перенесем в левую сторону все связанное с Решение уравнения теплопроводности неявным методом, а в правую Решение уравнения теплопроводности неявным методоми домножим на Решение уравнения теплопроводности неявным методом:

Решение уравнения теплопроводности неявным методом

По сути мы получили операторное уравнение над сеткой:

Решение уравнения теплопроводности неявным методом

что, если записать значения Решение уравнения теплопроводности неявным методомв узлах сетки как обычный вектор, является обычной системой линейных уравнений (Решение уравнения теплопроводности неявным методом). Значения в предыдущий момент времени константы, так как уже рассчитаны.
Для удобства представим оператор Решение уравнения теплопроводности неявным методомкак разность двух операторов:

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Заменив Решение уравнения теплопроводности неявным методомна нашу оценку Решение уравнения теплопроводности неявным методом, запишем функционал ошибки:

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

где Решение уравнения теплопроводности неявным методом— ошибка в узлах сетки.

Будем итерационно минимизировать функционал ошибки, используя градиент.

В итоге задача свелась к перемножению тензоров и градиентному спуску, а это именно то, для чего tensorflow и был задуман.

Видео:Решение уравнения теплопроводности в одномерной постановке в ExcelСкачать

Решение уравнения теплопроводности в одномерной постановке в Excel

Реализация на tensorflow

Кратко о tensorflow

В tensorflow сначала строится граф вычислений. Ресурсы под граф выделяются внутри tf.Session. Узлы графа — это операции над данными. Ячейками для входных данных в граф служат tf.placeholder. Чтобы выполнить граф, надо у объекта сессии запустить метод run, передав в него интересующую операцию и входные данные для плейсхолдеров. Метод run вернет результат выполнения операции, а также может изменить значения внутри tf.Variable в рамках сессии.

tensorflow сам умеет строить графы операций, реализующие backpropagation градиента, при условии, что в оригинальном графе присутствуют только операции, для которых реализован градиент (пока не у всех).

Сначала код инициализации. Здесь производим все предварительные операции и считаем все, что можно посчитать заранее.

По-хорошему надо было считать значения функции на краях заданными и оптимизировать значения функции только во внутренней области, но с этим возникли проблемы. Способа сделать оптимизируемым только часть тензора не нашлось, и у операции присвоения значения срезу тензора не написан градиент (на момент написания поста). Можно было бы попробовать хитро повозиться на краях или написать свой оптимизатор. Но и просто добавление разности на краях значений функции и краевых условий в функционал ошибки хорошо работает.

Стоит отметить, что метод с адаптивным моментом показал себя наилучшим образом, пусть функционал ошибки и квадратичный.

Вычисление функции: в каждый момент времени делаем несколько оптимизационных итераций, пока не превысим maxiter или ошибка не станет меньше eps, сохраняем и переходим к следующему моменту.

Запуск:

Видео:8.1 Решение уравнения теплопроводности на отрезкеСкачать

8.1 Решение уравнения теплопроводности на отрезке

Результаты

Решение уравнения теплопроводности неявным методом
Решение уравнения теплопроводности неявным методом

Условие как и оригинальное, но без Решение уравнения теплопроводности неявным методомв уравнении:

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Что легко правится в коде:

Разницы почти нет, потому что производные имеют большие порядки, чем сама функция.

Решение уравнения теплопроводности неявным методом
Решение уравнения теплопроводности неявным методом

Условие с одним нагревающимся краем:

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом
Решение уравнения теплопроводности неявным методом

Условие с остыванием изначально нагретой области:

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом
Решение уравнения теплопроводности неявным методом

Условие с включением нагрева в области:

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом

Решение уравнения теплопроводности неявным методом
Решение уравнения теплопроводности неявным методом

Видео:Решение неоднородного уравнения теплопроводностиСкачать

Решение неоднородного уравнения теплопроводности

Рисование гифок

Функция рисования 3D-гифки:

В основной класс добавляем метод, возвращающий U в виде pandas.DataFrame

Функция рисования 2D-гифки:

Стоит отметить, что оригинальное условие без использования GPU считалось 4м 26с, а с использованием GPU 2м 11с. При больших значениях точек разрыв растет. Однако не все операции в полученном графе GPU-совместимы.

  • Intel Core i7 6700HQ 2600 МГц,
  • NVIDIA GeForce GTX 960M.

Посмотреть, какие операции на чем выполняются, можно с помощью следующего кода:

Это был интересный опыт. Tensorflow неплохо показал себя для этой задачи. Может быть даже такой подход получит какое-то применение — всяко приятнее писать код на питоне, чем на C/C++, а с развитием tensorflow станет еще проще.

🔍 Видео

Уравнение в частных производных Уравнение теплопроводностиСкачать

Уравнение в частных производных  Уравнение теплопроводности

Метод Фурье для неоднородного уравнения теплопроводностиСкачать

Метод Фурье для неоднородного уравнения теплопроводности

Уравнение теплопроводности на полупрямой (решение задачи)Скачать

Уравнение теплопроводности на полупрямой (решение задачи)

Решение первой краевой задачи для неоднородного уравнения теплопроводности.Скачать

Решение первой краевой задачи для неоднородного уравнения теплопроводности.

Решение задачи теплопроводности методом конечных разностейСкачать

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

Решение задачи Коши для уравнения теплопроводности (Часть 1)Скачать

Решение задачи Коши для уравнения теплопроводности (Часть 1)

Решение нестационарного уравнения теплопроводности в двухмерной постановке в ExcelСкачать

Решение нестационарного уравнения теплопроводности в двухмерной постановке в Excel

Метод конечных элементов (Часть 1) | Пример реализации для уравнения теплопроводностиСкачать

Метод конечных элементов (Часть 1) | Пример реализации для уравнения теплопроводности

15. Решение уравнения теплопроводности в кругеСкачать

15. Решение уравнения теплопроводности в круге

12. Как остывает шар (решение уравнения теплопроводности)Скачать

12. Как остывает шар (решение уравнения теплопроводности)

6-1. Уравнение теплопроводностиСкачать

6-1. Уравнение теплопроводности

Уравнение теплопроводности. Операционный методСкачать

Уравнение теплопроводности. Операционный метод

Принцип максимума для уравнения теплопроводности на отрезкеСкачать

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