2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Численное решение двумерного нестационарного уравнения тепло
Сообщение03.04.2017, 15:00 
Заслуженный участник
Аватара пользователя


30/01/06
72407
svv в сообщении #1206085 писал(а):
Выбор $k_1\neq k_2$ означает, что коэффициент теплопроводности анизотропен — различен в разных направлениях. Но если так, то, скорее всего, всё ещё хуже

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

Впрочем, это я фантазирую.

 Профиль  
                  
 
 Re: Численное решение двумерного нестационарного уравнения тепло
Сообщение03.04.2017, 15:10 
Заслуженный участник
Аватара пользователя


23/07/08
10910
Crna Gora
Допустим даже, коэффициент тензорный, но от координат (декартовых) не зависит. Можно было бы поворотом системы координат привести его к диагональному виду. Но если прямоугольная область задачи имела границы, параллельные осям, а после поворота этого не будет, стоит ли это делать?

 Профиль  
                  
 
 Re: Численное решение двумерного нестационарного уравнения тепло
Сообщение03.04.2017, 16:37 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Я не говорю, что вы неправы. В общем случае вы правы. Я просто привёл пример практически возникающей ситуации, когда сложность всё-таки промежуточная.

 Профиль  
                  
 
 Re: Численное решение двумерного нестационарного уравнения тепло
Сообщение04.04.2017, 02:07 


12/11/11
88
А ещё возник такой вопрос (жаль, что я не просчитал эту проблему заранее). В той схеме, что я написал в заглавном сообщении, имеются значения $a^{(1)}_{i+1,j}, a^{(1)}_{i,j}$ ($a^{(2)}_{i,j+1}, a^{(2)}_{i,j}$). При аппроксимации граничных условий через фиктивные узлы будем иметь дело с $a^{(1)}_{0,j}, a^{(1)}_{N_1,j}$ ($a^{(2)}_{i,0}, a^{(1)}_{i,N_2}$), и если $a^{(1)}_{i,j} = k_1((i-\frac{1}{2})h_1,j h_2)$, то нам понадобятся значения $k_1(-0,5 h_1, j h_2), k_1((N_1+0,5) h_1, j h_2)$, которые не были заданы, т.к. находятся за границами рассматриваемой области. Как в этом случае следует поступить?

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

 Профиль  
                  
 
 Re: Численное решение двумерного нестационарного уравнения тепло
Сообщение04.04.2017, 09:46 
Заслуженный участник


12/07/07
4534
Добавил краткую аннотацию.
SteelRend в сообщении #1206130 писал(а):
Верно?
У Вас переменные коэффициенты. Если нужно, чтобы сетка не выходила за границы области, то в случае постоянных коэффициентов $k_1$ и $k_2$ легко получить и так (и это изложено в учебниках).

SteelRend в сообщении #1206375 писал(а):
Получается ... ?
В случае переменных коэффициентов можно начать с попытки аппроксимации производной с использованием самого уравнения (хоть Тейлор тут и не к месту, но перед чтением теории пользительно). Пусть в одномерном случае (тут всё просто)
$ u_t = (ku_x)_x$ (1)
$\frac{u_1-u_0} h = u_x(0,t) +\frac h 2 u_{xx}(0,t)+O(h^2)$ (2)
Теперь, используя (1) в (2), пытаемся получить аппроксимацию $u_x(0,t)$ со вторым порядком по $h$ и первым порядком по $\tau$ ($\tau$ — шаг по времени). Здесь $u_t$ — производная по $t$, $u_x$ — производная по $x$.

Более простого способа я не знаю. Может другие участники подскажут.

-- Вт 04.04.2017 09:02:38 --

(Сразу забыл написать.) Шаг постоянный, узел 0 лежит на левой границе (как в начальном сообщении ветки).

-- Вт 04.04.2017 09:25:11 --

И ещё. Если коэффициент $k$ не постоянный, то условие второго рода, пусть на левой границе, обычно записывают в виде $k(0)u_x(0,t)= g(t)$. Тогда левая часть (2) изменяется соответствующим образом и может будет проще.

 Профиль  
                  
 
 Re: Численное решение двумерного нестационарного уравнения тепло
Сообщение04.04.2017, 14:51 
Заслуженный участник


12/07/07
4534
Вечером не будет времени. Поэтому напишу подробней (хоть и банальные вещи).
(Если условие не на поток, а на производную, то умножим обе части граничного условия на $k(0)$ и получим в левой части граничного условия поток. Конечно, предполагается, что $k(0) > 0$.)

1. $$k(h/2)\frac {u_1^{n+1}-u_0^{n+1}} h \equiv (k(0)+k'(0)\frac h 2 + O(h^2))(u_x(0, t)+u_{xx}(0,t) \frac h 2 + O(h^2)) \equiv $$$$\equiv k(0) u_x(0, t) + [k(0) u_{xx}(0,t)+ k'(0) u_x(0, t)] \frac h 2  + O(h^2) \equiv k(0) u_x(0, t) + (k(0) u_x(0, t))_x \frac h 2 + O(h^2).$$Здесь слой $n+1$ соотвнетсвует моменту времени $t$ (при постоянном шаге по времени $t = (n+1)\tau$).
2. Используя уравнение, заменяем $(k(0) u_x(0, t))_x$ на $u_t(0, t)$.
3. Для $u_t(0,t)$ используем $\frac {u_0^{n+1}- u_0^n} \tau$.

Таким образом, на левой границе $$k(h/2)\frac {u_1^{n+1}-u_0^{n+1}} h - \frac {u_0^{n+1}- u_0^n} \tau \frac h 2 = k(0) g_1(t).$$

 Профиль  
                  
 
 Re: Численное решение двумерного нестационарного уравнения тепло
Сообщение04.04.2017, 15:44 
Заслуженный участник


11/05/08
32166
Зачем всё это?... $u'_x(0)=\frac{-3u_0+4u_1-u_2}{2h}+O(h^2)$, вот и всё.

 Профиль  
                  
 
 Re: Численное решение двумерного нестационарного уравнения тепло
Сообщение04.04.2017, 15:50 


12/11/11
88
Спасибо за вашу помощь.
Мне не понятно, почему $k(0)$ мы заменяем выражением $k(\frac {h}{2})$, ведь если принять $a_i = k_{i-0,5} = k_i + O(h^{2}), \frac{a_{i+1}-a_i}{h}=\frac{k_{i+1/2}-k_{i-1/2}}{h} = k'_i+O(h^2)$, то получается, что мы аппроксимируем не $k(0)$, а $k(h)$...

ewert в сообщении #1206467 писал(а):
Зачем всё это?... $u'_x(0)=\frac{-3u_0+4u_1-u_2}{2h}+O(h^2)$, вот и всё.

мне учитель сказал, что так делать НЕЛЬЗЯ (хотя я читал, что можно), мы должны учитывать вид уравнения. Да и разве получится тогда использовать прогонку в методе переменных направлений?

 Профиль  
                  
 
 Re: Численное решение двумерного нестационарного уравнения тепло
Сообщение04.04.2017, 15:53 
Заслуженный участник


12/07/07
4534
ewert в сообщении #1206467 писал(а):
Зачем всё это?...
Из-за очевидности. И сразу имеем нужную аппроксимацию гран условия.

-- Вт 04.04.2017 14:58:51 --

SteelRend в сообщении #1206468 писал(а):
Спасибо за вашу помощь.
Мне не понятно, почему $k(0)$ мы заменяем выражением $k(\frac {h}{2})$, ведь если принять $a_i = k_{i-0,5} = k_i + O(h^{2}), \frac{a_{i+1}-a_i}{h}=\frac{k_{i+1/2}-k_{i-1/2}}{h} = k'_i+O(h^2)$, то получается, что мы аппроксимируем не $k(0)$, а $k(h)$...
Мы не аппроксимируем $k(0)$. Мы аппроксимируем поток.

 Профиль  
                  
 
 Re: Численное решение двумерного нестационарного уравнения тепло
Сообщение04.04.2017, 16:03 


12/11/11
88
Вернее, я был неправ.

$\frac{a_{i+1}+a_i}{2}=\frac{k_{i+1/2} + k_{i-1/2}}{2}=k_i+O(h^2)$, т.е. $k(0) \approx \frac{k_{1/2} + k_{-1/2}}{2}$, и тогда опять получается, что нужно знать $k(-0,5 h)$...

-- 04.04.2017, 17:05 --

GAA в сообщении #1206469 писал(а):
Мы не аппроксимируем $k(0)$. Мы аппроксимируем поток.

Но ведь поток $k(x)u_x(x,t)$ берётся в точке $x=0$, и поэтому сомножители мы аппроксимируем в этой точке, разве нет? Почему всё же там записано $k(\frac{h}{2})$? В Самарском тоже подобное видел, но не могу понять, почему аппроксимация берётся при $x=h$, а не при $x=0$.

 Профиль  
                  
 
 Re: Численное решение двумерного нестационарного уравнения тепло
Сообщение04.04.2017, 16:45 
Заслуженный участник


12/07/07
4534
Ещё раз. Мы не аппроксимируем каждый из сомножителей. Мы аппроксимируем поток. Я привел детальные наивные выкладки выше. Не хотите $k(h/2)$, возьмите $k(0)$, но не берите полусумму и посмотрите, что получится в рамках наивного подхода.

У Самарского в «Теории разностных схем» можно найти подробную теорию.
На всякий случай отмечу, что Вы ещё не указали ничего о $k(x)$, а я производными балуюсь.

 Профиль  
                  
 
 Re: Численное решение двумерного нестационарного уравнения тепло
Сообщение05.04.2017, 19:26 
Заслуженный участник


12/07/07
4534
SteelRend, может картинка облегчит понимание Самарского.
(На самом деле выписываются интегралы, но для простоты без них. Детали и строгость можно найти в книжках.)
Идея получения граничного условия. (За знаками потоков я не следил. Нужно перепроверить.)

Пусть для простоты рисунка $N=3$. На обеих границах заданы условия второго рода, т.е. заданы потоки. Тело разбиваем на 4 ячейки. Две ячейки половинной ширины — граничные.
Вложение:
BC.PNG
BC.PNG [ 3.55 Кб | Просмотров: 736 ]
Запишем баланс для левой крайней ячейки (для правой аналогично).
Изменение количества тепла (теплоёмкость равна 1) равна объёму на изменение температуры. $S \frac h 2 (u_0^{n+1}- u_0^{n})$, где $S$ площадь "бокового" сечения ячейки. С другой стороны это изменение равно плотности потоков умножить на площадь боковой поверхности и на промежуток времени $\tau$. Учитывая, что поток на левой боковой поверхности есть $k(0)g_1(t)$, а на правой боковой $k(h/2)\frac {u_1^{n+1} - u_0^{n+1}} h$ и сокращая на $S$, получим $$\frac h 2 (u_0^{n+1}-u_0^n) = \left[ k(h/2) \frac {u_1^{n+1} - u_0^{n+1}} h - g_1k(0)\right]\tau.$$Как-то так в нулевом приближении.

 Профиль  
                  
 
 Re: Численное решение двумерного нестационарного уравнения тепло
Сообщение06.04.2017, 02:54 


12/11/11
88
Но если $k(x)$ коэффициент теплопроводности, тогда граничное условие второго рода нужно записать как $k(0)\frac{\partial u(0,t)}{\partial x}=g_1(t)$, тогда в скобке справа нужно записать $g_1(t)$ вместо $k(0)g_1(t)$, поскольку именно этой величие в соотв. с граничным условием равен тепловой поток на границе?

Возможно не по теме, но почему теплоёмкость равна 1 и куда в этом случае "девается" плотность $\rho$?

 Профиль  
                  
 
 Re: Численное решение двумерного нестационарного уравнения тепло
Сообщение07.04.2017, 04:27 
Заслуженный участник


12/07/07
4534
Да. Если $k(0)\frac{\partial u(0,t)}{\partial x}=g_1(t)$, тогда в скобке справа нужно записать $g_1(t)$. Но в начальном сообщении было условие $\frac{\partial u(0,t)}{\partial x}=g_1(t)$.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 29 ]  На страницу Пред.  1, 2

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: Утундрий


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group