Форум Академгородка, Новосибирск > Численное решение квазилинейного уравнения теплопроводности/переноса
Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Численное решение квазилинейного уравнения теплопроводности/переноса
Форум Академгородка, Новосибирск > Компьютеры и сети > Программирование
alex2000
Цитата(viking @ 22.07.2011, 15:26) *
трехчлен-это 1000-я строка системы уравнений. проверка на то что вектор решения при подстановке дает левую часть. и он действительно равен D.

Грм...
Цитата
Так как у меня изначально задачи из гидродинамики, под T подразумевается давление. Но в теплофизике обычно Температура.

Вы понимаете, что такое 200 и ноль градусов по шкале Кельвина? Какая гидродинамика?
Цитата
Выходит ~27. Но у меня граничное условие на нулевое время такое что везде температура(давление) одинково-200. Это не физично (везде 200 а в конце 27)

Код проверьте, такого не должно быть.
Цитата
начинаю с первого времени начали греть стенку.(r0).

Ваши граничные условия соответствуют не нагреву, а охлаждению.
Для нагрева надо в начальный момент полагать температуру везде Т0, а на левой границе Т1 > T0.
Цитата
Я пока с размерность не определился.

А вот это нужно сделать еще до проведения расчетов.
alex2000
Цитата(viking @ 22.07.2011, 15:41) *
теперь буду разбираться в единицах измерений. они задаются в граничных условиях так? и если мы приводили уравнение к видимому. то тут надо учесть К.?

Причем тут единицы измерения и граничные условия?
Либо всю задачу решаете в безразмерном виде, либо в размерном, но тогда у Вас будут другие уравнения, в которые входят плотность, коэффициенты теплопроводности и теплоемкости. Кстати, что откуда часы по оси абцисс взялись?
viking
Итак рассматриваем такое уравнения теплопроводности.
Нажмите для просмотра прикрепленного файла
с граничными условиями
Нажмите для просмотра прикрепленного файла
оно хорошо описывается цилиндрическим случаем для уравнения теплопроводности в криволинейных координатах.
Нажмите для просмотра прикрепленного файла решаем по методы прогонки. граничные условия дают значения для краевых коэф-то матрицы(ABC) и (D).
A[0]=C[n]=0. из метода прогонки. И при xn+1=0 делается обратных ход для нахождения решения. Но у меня краевое условие задает и xn. поэтому начинаю не с n а n-2.

Но оказывается главное обезразмерить коэфициенты, что можно сделать заменой -подробно ниже:
Нажмите для просмотра прикрепленного файла

Далее встал вопрос решение квазилинейного уравнения переноса вместе с решением уравнения теплопроводности.
Пока обсуждается метод решения уравнения тепло переноса.

Цитата(alex2000 @ 22.07.2011, 18:25) *
Цитата(viking @ 22.07.2011, 15:41) *
теперь буду разбираться в единицах измерений. они задаются в граничных условиях так? и если мы приводили уравнение к видимому. то тут надо учесть К.?

Причем тут единицы измерения и граничные условия?
Либо всю задачу решаете в безразмерном виде, либо в размерном, но тогда у Вас будут другие уравнения, в которые входят плотность, коэффициенты теплопроводности и теплоемкости. Кстати, что откуда часы по оси абцисс взялись?

то есть если в исходное дифф. уравнени добавить плотность, теплоемкость, теплопроводность как функции от t и r(или температуры), то получиться другое уравнение? Или вы имеете ввиду, что можно дописать их как постоянные коэффициенты- но тогда уравнения останется такое же.

про граничные условия. Я думал на них задаются числа в единицах измерения.
А часы взялись просто из соображение шага по времени. я взял и разделил сутки на 21600- число 15 секунд в сутках. И получил шаг в 0.00004630. На этом шаге я и делаю расчеты для времени 0.0000463 0.0000926 0.0001389 0.0001852...1. Разве не так делается? То же с радиусом, шаг 1 мм.
а моделирую я действительно нагрев(T1=400. T2=200).
Только у меня изначально задача стоит из области гидродинамики (фильтрация жидкости сквозь пористую среду). Вместо T -температуры, я решаю уравнение на Y(P)-давление. Они вещи одного рода.И распределение должно быть одинаковым при одинаковой физики. Вместо теплопроводности используется коэффициент проницаемости, вместо теплоемкости-наверно пористость и насыщенность, а потом тепла аналого потоку жидкости в теле. Поэтому пока мне сложно сообратить какие размерности брать, если бы говорили про безразмерное решение для задачи теромодинамики. Ведь в конце концов мы хотим заложить физические величины в уравнение и получить числовое решение. Как задачу обратно вернуть к размерности? Или надо ввести какой-то коэффициент нормировки, и решение затем на него умножить? Например: k/c (теплопроводность/теплоемкость)


Цитата
Уравнение диффузии или уравнение теплопроводности представляет собой частный вид дифференциального уравнения в частных производных. Бывает нестационарным и стационарным.
Математически уравнение диффузии и уравнение теплопроводности не различаются, и применение того или иного названия ограничено только конкретным приложением, причем второе представляется более частным, так как можно говорить, что в этом случае речь идет о диффузии тепловой энергии.
В смысле интерпретации при решении уравнения диффузии речь идет о нахождении зависимости концентрации вещества (или иных объектов) от пространственных координат и времени, причем задан коэффициент (в общем случае также зависящий от пространственных координат и времени), характеризующий проницаемость среды для диффузии. При решении уравнения теплопроводности речь идет о нахождении зависимости температуры среды от пространственных координат и времени, причем задана теплоемкость и теплопроводность среды (также в общем случае неоднородной).
viking
Цитата
Цитата
Выходит ~27. Но у меня граничное условие на нулевое время такое что везде температура(давление) одинково-200. Это не физично (везде 200 а в конце 27)

Код проверьте, такого не должно быть.


да я проверял. просто приходиться выкинуть уравнение T(n)=betta(n). И вместо него писать граничное условие на максимальном радиусе(Tn(r=rmax)=Т0.


Цитата
Цитата
начинаю с первого времени начали греть стенку.(r0).

Ваши граничные условия соответствуют не нагреву, а охлаждению.
Для нагрева надо в начальный момент полагать температуру везде Т0, а на левой границе Т1 > T0.

да она у меня в начальные момент везде 200. А на следующем шаге-15 сек только на r0 равна 400.
viking
Цитата(alex2000 @ 22.07.2011, 18:21) *
Цитата(viking @ 22.07.2011, 15:26) *
трехчлен-это 1000-я строка системы уравнений. проверка на то что вектор решения при подстановке дает левую часть. и он действительно равен D.

Грм...

правую
alex2000
Цитата(viking @ 26.07.2011, 13:38) *
то есть если в исходное дифф. уравнени добавить плотность, теплоемкость, теплопроводность как функции от t и r(или температуры), то получиться другое уравнение? Или вы имеете ввиду, что можно дописать их как постоянные коэффициенты- но тогда уравнения останется такое же.

Уже про это писал, повторю.Будем говорить об уравнении теплопроводности.
Прежде чем считать - поставьте правильно задачу и разберитесь с размерностями физических величин.
В размерных величинах уравнение теплопроводности в вашем случае такое:
rho*c*dT/dt = lambda*d/dx(x*(dT/dx))/x,
если же введете безразмерные переменные так, как уже писал, получите то уравнение, которое Вы и приводили.
Считают обычно в безразмерной формулировке.
Посчитайте, чему равен в вашем случае временной масштаб (через плотность, коэффициенты теплопроводности, теплоемкости и размера области), после этого можно подбирать шаг (безразмерный) для счета.
Граничные условия ест-но тоже надо обезразмерить.
Переход от безразмерных величин к размерным очевиден.
Например, безразмерное время (температуру) умножаете на масштаб времени (температуры), получаете размерные значения.
Теперь о числовых значениях.
0 K = -273 C. (а 0 K у Вас на картинках изображено) Соответственно, 200 K = - 73 С.
Это что за жидкость такая, раз речь идет о гидродинамике?
Сделайте мне ликбез.
alex2000
Цитата(viking @ 26.07.2011, 17:16) *
Цитата(alex2000 @ 22.07.2011, 18:21) *
Цитата(viking @ 22.07.2011, 15:26) *
трехчлен-это 1000-я строка системы уравнений. проверка на то что вектор решения при подстановке дает левую часть. и он действительно равен D.

Грм...

правую

грм было по поводу того, что у Вас должно быть всегда 0 = 0 по определению (см. граничное условие на правой границе)
На каком языке программировали?
ПыСы. У Вас нет научного руководителя или консультанта? Тут уж пора отдельный топик выделять и в другой раздел.
viking
Цитата(alex2000 @ 26.07.2011, 17:15) *
Цитата(viking @ 26.07.2011, 13:38) *
то есть если в исходное дифф. уравнени добавить плотность, теплоемкость, теплопроводность как функции от t и r(или температуры), то получиться другое уравнение? Или вы имеете ввиду, что можно дописать их как постоянные коэффициенты- но тогда уравнения останется такое же.

Уже про это писал, повторю.Будем говорить об уравнении теплопроводности.
Прежде чем считать - поставьте правильно задачу и разберитесь с размерностями физических величин.
В размерных величинах уравнение теплопроводности в вашем случае такое:
rho*c*dT/dt = lambda*d/dx(x*(dT/dx))/x,
если же введете безразмерные переменные так, как уже писал, получите то уравнение, которое Вы и приводили.
Считают обычно в безразмерной формулировке.
Посчитайте, чему равен в вашем случае временной масштаб (через плотность, коэффициенты теплопроводности, теплоемкости и размера области), после этого можно подбирать шаг (безразмерный) для счета.
Граничные условия ест-но тоже надо обезразмерить.
Переход от безразмерных величин к размерным очевиден.
Например, безразмерное время (температуру) умножаете на масштаб времени (температуры), получаете размерные значения.
Теперь о числовых значениях.
0 K = -273 C. (а 0 K у Вас на картинках изображено) Соответственно, 200 K = - 73 С.
Это что за жидкость такая, раз речь идет о гидродинамике?
Сделайте мне ликбез.

никакого ликбеза я сделать не смогу, потому что для меня понятие течения жидкости или течения тепла едины:). В общем будем говорить об уравнение теплопроводности. жидкостей нет.
Значит
Нажмите для просмотра прикрепленного файла
//(изминил картинку после след. поста.)
в общем для t получается шаг в10 в 7 степени больше. чем я думал. тогда уже будет не проблема записать краевые условия.

так как в методе прогоки правая часть не нулевая состоит из D. тогда в проверке решение должно удовлетворять уранению т
Цитата
рехчлен-это 1000-я строка системы уравнений.
ну и должно выполняться уравнение вида Сумма игроков =D. откуда 0=0 я не понял.

я программирую на языке C#(технология dot.net) только не смейтесь.
Ну и мой научный руководитель посчитал расчет такой задачи не актуальным, хотя без него двигаться дальше нельзя. И я можно сказать в тайне от него этим занимаюсь. Уже хочу сообщить готовые результаты. А про научного консультанта я пока не знаю-так с миру по нитке. То есть всё люди либо занятые либо не без радости делятся знаниями.
Вот сегодня мне кое-что объяснили( я не зря решал уравнение конвекции, но предстоит решить ешё гиперболическое уравнение на K так оно зависит от допустим плотности среды, которое в свою очередь зависит от температуры.хоть и линейно, но на плотность меняется скачком.
alex2000
У Вас размерность t0 почему-то м*с, а должна быть с (секунда).
viking
Уже лучше?(Дж=Вт*с; К-градусы кельвина)
Нажмите для просмотра прикрепленного файла
А почему в формуле теплопроводности используются удельные теплоемкость и теплопроводность? Есть видимо уравнение учитывающее массу вещества?

попробую нарисовать графики для правильного шага по времени.
alex2000
Цитата(viking @ 28.07.2011, 16:37) *
Уже лучше?

Нормально.
Цитата
А почему в формуле теплопроводности используются удельные теплоемкость и теплопроводность? Есть видимо уравнение учитывающее массу вещества?

Этот вопрос выходит за рамки данного топика. Но в вашей задаче, однако, это, скорее всего не имеет значения.
viking
записал новые шаг по времени и по координате. соответственно изменились гран условия .200K/300K=0.63; 400K/300K=1.33
получились такие профиля
Нажмите для просмотра прикрепленного файла
но теперь не понятно какие писать единицы измерения в осях. Или умножать полученные данные на
l=1.892м, T0=300K ?

Весь интервал по времени 1 сутки. Греем на координате xmin=0,108м при T0= 400K. тело было при 200 K. но оказывается прогревается всего на 5 см. что мало.
ph0=2300, c=1000 дж/кг*град; lambda=0.125 Вт/м*град.

будет ли с увеличением времени увеличиваться область прогрева, или обмен теплом вышел на стационарный процесс?
alex2000
Цитата(viking @ 29.07.2011, 13:47) *
но теперь не понятно какие писать единицы измерения в осях. Или умножать полученные данные на
l=1.892м, T0=300K ?

Это уж как удобнее, не очень принципиально. Лишь бы понятно было.
Цитата
Весь интервал по времени 1 сутки. Греем на координате xmin=0,108м при T0= 400K. тело было при 200 K. но оказывается прогревается всего на 5 см. что мало.
ph0=2300, c=1000 дж/кг*град; lambda=0.125 Вт/м*град.

С цифрами что-то не правильно. При этих значениях физических констант t0 = 65.8*106 с, у Вас выше приведена величина примерно в два раза меньшая.
dt (на графике) - это с таким шагом по времени считаете, а 5760 (=N) - это число шагов по времени с таким шагом?
Чета 24 часа никак не получаются, если считать конечное время как dt*N*t0
Цитата
будет ли с увеличением времени увеличиваться область прогрева, или обмен теплом вышел на стационарный процесс?

Это просто проверить. Зафиксируйте N, и посчитайте с dt большим в 10, 100, 1000 раз, чем было.
Что за пик на левом конце и откуда такие значения по оси абсцисс не ясно.
Для контроля кода можно посмотреть задачку с начальной температурой везде 200 К, а на обоих краях 400 К.

ПС. Зачем 4 графика приводить? Сведите на один, динамику легче увидеть.
viking
Цитата(alex2000 @ 29.07.2011, 23:35) *
Это уж как удобнее, не очень принципиально. Лишь бы понятно было.

понятно.

Цитата
С цифрами что-то не правильно. При этих значениях физических констант t0 = 65.8*106 с, у Вас выше приведена величина примерно в два раза меньшая.

Да я там ошибся(умножал на l а не на l^2), но не исправил. Реально брал t0=5.67E+7
вот часть кода
Нажмите для просмотра прикрепленного файла

Цитата
dt (на графике) - это с таким шагом по времени считаете, а 5760 (=N) - это число шагов по времени с таким шагом?
Чета 24 часа никак не получаются, если считать конечное время как dt*N*t0

да я наверно не правильно dt считаю. Если считать так, то dt=2.2831050E-07. (t_nole=6.57E+07)). считал так как указано в коде.(верхняя картинка)

Цитата
Цитата
будет ли с увеличением времени увеличиваться область прогрева, или обмен теплом вышел на стационарный процесс?

Это просто проверить. Зафиксируйте N, и посчитайте с dt большим в 10, 100, 1000 раз, чем было.

да попробую.

Цитата
Что за пик на левом конце и откуда такие значения по оси абсцисс не ясно.
Для контроля кода можно посмотреть задачку с начальной температурой везде 200 К, а на обоих краях 400 К.

пик соответствует последнему шагу времени. и связан с граничными условиями на температуру. В последний момент на левой границе я ставлю опять 200K/300K-якобы возращаю систему в изначальное состояние, но пик-показывает какая температура осталась в теле( rolleyes.gif ). ось абсцисс тоже обезразмерина-делиться на l=1.892. попробую изменить условия.


Цитата
ПС. Зачем 4 графика приводить? Сведите на один, динамику легче увидеть.

хорошо сделаю.
alex2000
Как-то странно фрагмент кода смотрится.
У вас есть физические параметры задачи: плотность rho. коэффициенты теплопроводности lambda и теплоемкости с, область [x0, xmax].
Я бы так (схематично) кодировал:

// задаем параметры (размерные!)
rho = ...
lambda = ...
c = ...
x0 = ...
xmax = ...
// нормальная температура
T0 = 300
// температура на границах
Tleft = 400
Tright = 200
// длина области по х
l = xmax - x0
// временной масштаб
t_nole = rho*c*l^2/lambda
// безразмерные
Tleft = Tleft/T0
Tright = Tright/T0
r0 = x0/l
rmax = xmax/l
// число точек по оси х
Nx = ...
// шаг по х
dr = (rmax - r0)/(Nx -1)
// далее опциально
// шаг по времени (можно и так, как было, хотя мне это не очень понятно)
// я бы задал dt от "фонаря" и сделал бы цикл типа do while
viking
Сделал правильную установку размерных величин.

Думал как решить квазиленейное на K(T). Читал раздел в Калиткине, там надо менять метод прогонки, на мой взгляд просто коэффициенты умножить на 1/2(k1+k2)(индекс разный). Попробую вывести.
часть вопроса снялась, подробности ниже(между последними графиками). Так смешно ошибиться)))
viking
Ну вот первые результаты. Уже можно радоваться. вроде красиво. Температура 400 прикладывается лишь с одного края области (левого). В начале и слева 200К.

Нажмите для просмотра прикрепленного файла

теперь инициализация выглядит так
Нажмите для просмотра прикрепленного файла

а это вообще красиво вышло. Ставим на обе стенки 400K/T0
Нажмите для просмотра прикрепленного файла
или так, оказывается напутал с начальными условиями и матрица прогонки работала для t=0. поэтому код был не правильный. теперь лучше, поменял tright c 200 на 400. получилась правильная картинка для предыдущего случая( при т=0 на краях покой а не нагрев).
Нажмите для просмотра прикрепленного файла
update при разных шагах времени, круто.
Нажмите для просмотра прикрепленного файла
alex2000
По последней картинке. Если меняется dt при фиксированном числе шагов по времени, то должно меняться и реальное (размерное) время.
У Вас же почему-то оно везде одинаковое.
viking
Цитата(alex2000 @ 03.08.2011, 20:34) *
По последней картинке. Если меняется dt при фиксированном числе шагов по времени, то должно меняться и реальное (размерное) время.
У Вас же почему-то оно везде одинаковое.

ну да так и есть, просто это шаблонная диаграмма из Екселя и названия подписей кривых я не менял.
а так интервал увеличивается в 10, 100 1000 раз.
alex2000
Цитата(viking @ 03.08.2011, 22:29) *
ну да так и есть, просто это шаблонная диаграмма из Екселя и названия подписей кривых я не менял.
а так интервал увеличивается в 10, 100 1000 раз.

Ну а другим догадываться7 Либо легенду вообще уберите, либо правильно пишите.
А так вполне правдопободобно, просто прогрев медленный, что неудивительно при таких граничных условиях.
Зададите слева не 400, а больше, то и разогрев быстрее пойдет.
Можете в виде теста проверить.
Еще проверка: когда слева и справа задано по 400, прогоните с очень большим шагом по времени.
В пределе должен получиться выход на постоянное значение =400.
viking
Цитата(alex2000 @ 03.08.2011, 22:20) *
Цитата(viking @ 03.08.2011, 22:29) *
ну да так и есть, просто это шаблонная диаграмма из Екселя и названия подписей кривых я не менял.
а так интервал увеличивается в 10, 100 1000 раз.

Ну а другим догадываться7 Либо легенду вообще уберите, либо правильно пишите.
А так вполне правдопободобно, просто прогрев медленный, что неудивительно при таких граничных условиях.
Зададите слева не 400, а больше, то и разогрев быстрее пойдет.
Можете в виде теста проверить.
Еще проверка: когда слева и справа задано по 400, прогоните с очень большим шагом по времени.
В пределе должен получиться выход на постоянное значение =400.

спасибо большое. Попробую.
viking
вот теперь такой вопрос. У меня есть физ. величина которая зависит от рас читаной температуры.
Нажмите для просмотра прикрепленного файла

Можно ли мне сделать следующую разносностную схему для расчета?
Нажмите для просмотра прикрепленного файла

тогда весь вопрос ставиться в вычисление второй производной по T, но если взять шаг в половину имеющегося,
Нажмите для просмотра прикрепленного файла
Получается разностная схема на T
подробнее в приложении. Можно ли так делать?
Нажмите для просмотра прикрепленного файла

в общем я понял, что моя явная схема для S не подходит. Тут сложное уравнение переноса, или надо линеаризовывать(. Жаль осталось 3 шага до цели)
alex2000
Вы когда научитесь правильную формулировку начально-краевой задачи писать?
На S какие условия? n чему равно? Та схема, которую привели, имеет право на существование, но про устойчивость явных схем слышали?
Шаг по времени как и из каких соображений был выбран, когда S считали?
Что физически S означает?
И численное дифференцирование табличной функции не есть гуд, вообще говоря.
Тут нужно поразмыслить.
alex2000
Цитата(viking @ 05.08.2011, 22:11) *
Условия на S

Задача поставлена неправильно. Вообще непонятно, что и как при таких условиях считается.
viking
хорошо сформулирую иначе.
Нажмите для просмотра прикрепленного файла
так корректно?
подскажите что это за вид уравнения. Япока читаю про квазилинейное уравнение переноса, но у него искомая функция входит в 1 степени
alex2000
Не очень ясно, что именно надо посчитать.
1. Сначала найти Т, а потом S. Тогда на какой момент времени нужно брать Т?
2. Или одновременно считать два уравнения, это другая задача.
В любом варианте у вас для S квазилинейное уравнение переноса.
Это дело давно уже исследовано, почитайте, например,
Рождественский Б.Л., Яненко Н.Н. Системы квазилинейных уравнений и их приложения к газовой динамике.
Ваш случай в более общем виде см. начиная со стр. 72.
Скачать можно отсюда
http://eqworld.ipmnet.ru/ru/library/mathematics/pde.htm
По этой ссылке много и другой литературы.
В выше приведенной постановке задачи по классике одно из граничных условий для S лишнее.
viking
Цитата(alex2000 @ 06.08.2011, 17:57) *
Не очень ясно, что именно надо посчитать.

2. Или одновременно считать два уравнения, это другая задача.

на каждом шаге по времени вычислется T, потом S. И даже было предложение T -По неявной, S- по явной. Но так как я думал не получается-как вы сказали не устройчивое решение.
спасибо большое буду разбираться!
а про лишнии условия, я не понял.
alex2000
Цитата(viking @ 06.08.2011, 23:55) *
Но так как я думал не получается-как вы сказали не устройчивое решение.

Возможно и получится, тут в шаге по времени дело.
Для неявной схемы он не столь важен, в случае явной для устойчивости нужно обеспечить условие (типа) Куранта.
Какое именно в вашем случае сходу не скажу. Попробуйте уменьшить шаг по времени при фиксированном шаге по х.
Только тогда с таким временным шагом придется, если не придумывать некую процедуру интерполяции для Т, считать с таким шагом оба уравнения.
Цитата
а про лишнии условия, я не понял.

В классике для уравнения переноса ставятся два условия.
В ваших обозначениях: S(x,0) = f(x) - начальное, S(xmin,t) = g(t) - краевое.
У вас же два краевых условия, как им удовлетворить - не знаю.

ПС. Как правило, число начальных и краевых условий должно быть таким, какой наивысший порядок по времени и координате, соответственно.
viking
Цитата(alex2000 @ 06.08.2011, 23:28) *
В классике для уравнения переноса ставятся два условия.
В ваших обозначениях: S(x,0) = f(x) - начальное, S(xmin,t) = g(t) - краевое.
У вас же два краевых условия, как им удовлетворить - не знаю.

ПС. Как правило, число начальных и краевых условий должно быть таким, какой наивысший порядок по времени и координате, соответственно.

И вправду, вспомнил).
Просто я привязался к области моделирования, вот и решил что во всех уравнениях надо левую стенку задавать, а тут оказывается нет),
Спасибо. Очень понятно объясняете. буду экспериментировать. Для начала хочу уменьшить размер масива, потому как при уменьшении шага по времени съедается много оперативки-решение у меня ищеться в виде массива T(t_n,r_n)-что недопустимая роскошь)). Перепишу код, чтобы использовать лишь T(2,r_n))
alex2000
Цитата(viking @ 06.08.2011, 23:55) *
на каждом шаге по времени вычислется T, потом S.

Так можно сделать.
1. Делаете один шаг по времени, находите Т.
2. Чтобы избежать численного дифференцирования, аппроксимируете Т по формуле типа а*exp(b*T/х), где a и b вычисляете по полученным значениям в x = xmin и x = xmax.
3. При счете S в уравнение для него все производные от Т заменяете на формулы производных по аналитике аппроксимации.
4. И так на каждом шаге по времени.
viking
Уменьшение шага по координате пока не дал сильного измерения данных, кроме замедления компьютера. переписать код для двумерного массива стоило ради красоты только).
Работаю над интерполяцией. Как я понимаю коэффициенты a и b надо находить из такой системы?

Нажмите для просмотра прикрепленного файла
//есть предложени продолжить в другой теме, если согласны я её создам с названием.
"Численной решение квазилинейного уравнения теплопроводности/переноса."
alex2000
Цитата(viking @ 08.08.2011, 18:17) *
//есть предложени продолжить в другой теме, если согласны я её создам с названием.
"Численной решение квазилинейного уравнения теплопроводности/переноса."

Да пожалуйста, только не я это решаю. Обратитесь к модератору раздела, как лицо заинтересованное.
Создать тему сможете, но тогда туда разумно перенести несколько страниц сообщений из этой темы.
У меня нет такой возможности.
В формуле я ошибся: под экспонентой не b*T/х, а b*х/Т должно быть.
viking
Цитата(alex2000 @ 07.08.2011, 23:55) *
..
3. При счете S в уравнение для него все производные от Т заменяете на формулы производных по аналитике аппроксимации.
..

я расписал вид аппроксимирующей экспоненты.
Нажмите для просмотра прикрепленного файла

но только если подставлять в схему записанную для S, то всё равно возникает производная от T по х и x2 и по времени. Или это нормально?
Нажмите для просмотра прикрепленного файла
alex2000
Опять перемудрили.
1. Сделали шаг по времени, нашли Т на момент t = t0 + dt.
2. По двум точкам по х находите а и b (только исправьте формулу как написал выше), получите аналитическую аппроксимацию R(x) = a*exp(b*x/T) на момент времени t.
3. Выпишите аналитические формулы для dR(x)/dx и d2R(x)/dx2.
4. В уравнении для S заменяете Т, dT/dx, d2T/dx2 на R, dR/dx, d2R/dx2 по аналитическим формулам.
5. Считаете S
Далее по циклу с п. 1.
Кстати, хоть раз проверьте контроля аппроксимацию для Т на графике.
viking
Цитата(alex2000 @ 08.08.2011, 21:29) *
..
2. По двум точкам по х находите а и b (только исправьте формулу как написал выше), получите аналитическую аппроксимацию R(x) = a*exp(b*x/T) на момент времени t.
..
4. В уравнении для S заменяете Т, dT/dx, d2T/dx2 на R, dR/dx, d2R/dx2 по аналитическим формулам.
..

2. коэффициенты a и b b ищуться исходя из граничных условий или для кадого узла x(j) и x(j-1)?
Если из граничных то будет следующая система уравнения
Нажмите для просмотра прикрепленного файла
а если для каждого узла то они будут разные для каждого точке по x((]

3. в аналитических формулах разве не возкнет производной dT/dx? ведь производная от экспаненты записывается так
Нажмите для просмотра прикрепленного файла
или я чего-то не понимаю
alex2000
Попробуйте другую, простую аппроксимацию.
Например, T = a + b/x. У вас же нет нулевой координаты.
Либо полином, сплайн и т.п.
Смысл уйти от численного дифференцирования.
S, как понимаю, пытаетесь найти по той явной схеме.
Это не очень хорошо.
viking
то есть можно аппроксимировав T функцией R, вычислять значения для разностной схемы S вместо T подставляя R? но тогда R не должно зависит от Т либо включать всё найденные точки от Т и рассчитываться не по краям а в каждом отрезке между узлами сетки по x. Тогда это будет масив аппроксимаций.
в общем я пока не понимаю принцип построения схемы. А линеаризация уравнения тут не подойдет?


пока Рождественнский мной не переваривается, У самарского более понятен язык с практическими примерами и записями схем но всё уравнения разбросаны по книге))

думаю поискать решение в виде бегущей волны, s=W(kx-yt)
viking
пока получается что-то такое. но брать интеграл я не могу сообразить как(
Нажмите для просмотра прикрепленного файла
ладно это вариант не сгодиться. у меня коэфициенты зависят от независимых переменных-х, значить такое решение не подойдет.
viking
есть ещё вариант по такому типу искать решение, но из общего уравнения ни один частный случай на наш не похож, может есть какая-та общая замена которая приведет в решению?
Нажмите для просмотра прикрепленного файла
viking
в общем я узнал что такое подход, раздельного счета применяли в 60х годах, а сейчас используют схемы для произведения функций расписывая дивергенцию. В общем придеться почитать спец книги, как что получиться сделать отпишусь здесь. Надеюсь это будет полезно не только мне, потому как про решение квазилинейных уравнений в интернете информации мало.
viking
Пока чтение мудрых книг никаких результатов не дало кроме того что они тоже явно вычисляют S и T
viking
Постановка вопроса в приложенном файле.
там описаны три уравнения решаемые последовательно. Уравнение 1 я с вашей помощью научился решать а второе никак не могу как сделать шаг по времени и координате.
Это жизненно важно.
Нажмите для просмотра прикрепленного файла

уравнение я решил, просто сделал зависимый шаг по времени от шага по коориднате. так как второе уравнение было гиперболическое, а оно не устойчиво при не выполнение условия куранта. теперь проверяю как работает само решение. получилось красочно.
viking
можно закрыть тему. Я решил уравнение.
может конечно не точно, но пока достаточная точность.
Какие можно посоветовать книги по численному решению дифуров? в двумерных или трехмерных постановках?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Русская версия IP.Board © 2001-2024 IPS, Inc.