Войти
ПрограммированиеФорумФизика

Навье-стокс. Опять. (2 стр)

Страницы: 1 2
#15
2:41, 26 фев. 2018

Suslik
> но как мультигрид может помочь в случае со сложными границами?
Вообще-то, мультигрид — это достаточно общий метод решения систем линейных уравнений.
Использование сеток относится, скорее, к истории его возникновения, ну и коэффициенты подгонять проще, чем в общем случае.

> как при усреднении ячеек усреднять ячейки на границе? как интерполировать ячейки на границе при переходе к более мелкой сетке?
Например, можно использовать такой метод:
1) выбираешь "опорные" ячейки с определенным шагом;
2) для каждой опорной ячейки единицу в этой ячейке размываешь матрицей eM, где M — матрица решаемого уравнения (для лапласиана давления получается обычная диффузия);
3) опорные ячейки — это грубая сетка, а размытые функции — коэффициенты интерполяции.

#16
3:55, 26 фев. 2018

так, отвлеклись от мультигрида. я нашёл, почему у меня staggered grid разваливается и в упор не могу понять, почему он НЕ должен разваливаться. точнее, он не сходится именно при нечётном количестве итераций якоби-солвера давления.

если опустить присказки, то получается так, что у меня солвер давления ([cht]\nabla p = f(x, y)[/cht]) фейлит на таких данных:

f.data(i, j) = ((i % 2) ^ (j % 2)) ? 1.0f : -1.0f;
короче, если дивергенция скорости распределяется в шахматном порядке. солвер работает по такой схеме:
[cht]p^{k+1}_{i,j}=\frac{p^k_{i-1,j}+p^k_{i+1,j}+p^k_{i,j-1}+p^k_{i,j+1}-h^2f_{i,j}}{4}[/cht]
инициализируем нулём:
[cht]p^{0}_{i,j}=0[/cht]
после первой итерации получается:
[cht]p^{1}_{i,j}=\pm \frac{h^2}{4}[/cht]
после второй:
[cht]p^{2}_{i,j}=0[/cht]
послей третьей:
[cht]p^{3}_{i,j}=\pm \frac{h^2}{4}[/cht]
и так далее, оно бесконечно скачет с нуля до [cht]\pm \frac{h^2}{4}[/cht]. в итоге если я останавливаю схему на нечётной итерации, получается чёрт знает что. если на чётной, то получается тождественно ноль и всё не так плохо. wtf, я думал, якоби итерации тут должны всегда сходиться.

#17
4:36, 26 фев. 2018

короче, поэкспериментировав, пришёл к выводу, что метод Якоби просто-напросто не устойчив в общем случае, хотя на педивикии прямым текстом написано https://en.wikipedia.org/wiki/Relaxation_(iterative_method)

the method converges under general conditions

то ли я дурак, то ли это — неправда.

заменив метод на gauss-seidel, тем не менее, всё сходится хорошо и, кажется, таких артефактов нет.

ещё обратил внимание, что граничные условия можно ставить двумя способами: считая, что граница проходит через середину ячейки и через всю границу. оба способа правильные и работают, но нужно аккуратно ставить условия для всех нод, на которые влияет граница:
1) скорость на границе должна обращаться в ноль. если граница проходит напрямую через ячейку скорости, то она просто обнуляется. если граница проходит между ячейками скорости, то в ноль должно обращаться их среднее, то есть нужно установить скорость ячейки внутри границы.
2) производная давления по нормали границы должна быть равна нулю. это значит, что давление внутри границы должно быть таким же, как давление ближайшей точки на поверхности.

#18
17:14, 26 фев. 2018

Suslik
> wtf, я думал, якоби итерации тут должны всегда сходиться.
Конкретно эта задача идеальна для анализа, ибо тут можно сделать преобразование Фурье и диагонализовать матрицу.
Для периодических граничных условий тут, действительно, есть моды (шахматка и константа), которые не убиваются.
Но нетривиальные граничные условия зарезают эти моды, т. е. метод формально будет сходится.
А эта чересстрочная болтанка будет меееедленно задавлена, начиная с границ.

Но, вообще, на мой взгляд, метод Якоби — это исключительно простейший пример итерационного метода для студентов, ни к чему не пригодный на практике.
Чистый Гаусс-Зейдель тоже не очень в данном случае, собственно, мои первые эксперименты в 2D гидродинамике побудили меня искать решалку получше.

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

#19
17:45, 26 фев. 2018

}:+()___ [Smile]
> Конкретно эта задача идеальна для анализа, ибо тут можно сделать преобразование
> Фурье и диагонализовать матрицу.
> Для периодических граничных условий тут, действительно, есть моды (шахматка и
> константа), которые не убиваются.
> Но нетривиальные граничные условия зарезают эти моды, т. е. метод формально
> будет сходится.
> А эта чересстрочная болтанка будет меееедленно задавлена, начиная с границ.
так проблема в том, что такое поле возникает при распределении скоростей в таком же шахматном порядке. и так за несколько итераций шахматная болтанка в давлении от границ не успокаивается, скорости раскачиваются ещё сильнее и к следующему dt будет ещё хуже. короче, жесть, я не думал, что такие проблемы могут быть у самого влобного метода. gauss-seidel — не чемпион по скорости сходимости, но таких проблем я за ним не замечал.

}:+()___ [Smile]
> Это да, есть такое, причем часто надо сочетать оба способа, ибо компоненты
> заданы в разных местах.
> Еще бывают полезными граничные условия в виде нулевых производных от скорости.
в том и идея, что для каждого узла сетки нужно ставить граничное условие из того, где он находится и из того, каким образом выбранная граница через него проходит. то есть если узел скорости, к примеру, попал на границу, то на нём просто [cht]v_{i,j}=0[/cht]. если граница проходит между ним и соседом, то [cht]\frac{v_{i,j}+v_{i+1,j}}{2}=0[/cht]. и то, как именно проходит граница, можно выбирать по-разному, но если всё сделать правильно, то любой выбор будет работать. я просто из интересу поэкспериментировал и для разных шаблонов поделал разные граничные условия, риальне работает.

короче, я разобрался, в чём плюс staggered grid'а. если использовать collocated grid, то при шахматном распределении скоростей дивергенция будет везде равна нулю и оно просто никуда не уйдёт. поэтому со временем в медленных расчётах накапливается из-за численной ошибки вот такой шахматный паттерн в скорости, который никуда не уходит, если нет адвекции и диффузии. на практике обычно это не так уж заметно, потому что этот паттерн немедленно смазывается адвекцией, но если адвекцию отключить или скорости низкие, то он ещё как появляется. отмечу, что это — именно проблема дискретизации дивергенций скоростей на collocated grid'е, к методу якоби, обладающему похожей проблемой, никакого отношения не имеет.

#20
18:31, 26 фев. 2018

Suslik
> если использовать collocated grid, то при шахматном распределении скоростей дивергенция будет везде равна нулю и оно просто никуда не уйдёт
Это, собственно, всегда так, когда есть центральная разность без какого-либо использования центральной точки.
Сетка, фактически, теряет разрешение (ну или верхние частоты) и такого надо избегать.
Похожая хрень возникает, например, в уравнении Шредингера, где действительная и мнимая часть хранятся со сдвигом на полшага по времени.

#21
21:14, 26 фев. 2018

Я дико извеняусь, но может кто сказать годиться ли наве-стокса для описания магнитных полей, эсли в него какимто образом вписать уравнения Максвелла , и если да то какие граничные условия надо накладивать?

#22
0:29, 27 фев. 2018

Suslik
}:+()___ [Smile]
А вот расскажите, как подобные штуки в реальной жизни отлаживаются? В общем случае конечно правильно будет построить экспериментальную установку, и сравнить результаты эксперимента с симуляцией. Но большинство отлаживается как-то без этого.
У Навье-Стокса нет аналитического решения. Все методы решения - это симуляция той или иной степени. А если учесть, что незначительные изменения коэффициентов уравнения могут менять картинку кардинально, то даже банальное накопление погрешности может полностью изменить картину.
Да и куда вообще смотрят при отладке таких вот симуляций? Ведь как мне кажется максимум, который можно "проверить" - это граничные условия (а что-то кроме граничных условий проверять вообще даже бессмысленно, ведь насколько я понимаю, не доказано, что задача Коши имеет единственное решение для Навье-Стокса, так?)
Вот например:
how | Навье-стокс. Опять.
Какое из решений правильнее и почему?

#23
1:22, 27 фев. 2018

MrShoor
> А вот расскажите, как подобные штуки в реальной жизни отлаживаются?
О да, отладка математики — это самая жесть.

> У Навье-Стокса нет аналитического решения.
Есть.

В общем, можно проверять:
1) на известных точных решениях;
2) на задачах, которые могут быть сведены к более простым (симметрия и т. п.), которые можно решить численно, но другим методом.
3) сравнивать с другими кодами, которые решают ту же задачу;
4) соблюдение разных законов сохранения;
5) наличие сходимости по сетке и времени.

#24
2:18, 27 фев. 2018

MrShoor
обычно если реализуешь какую-то известную схему и она не взрывается к чёртовой матери, не поджигает твой монитор и выглядит более-менее похоже на правду, то она, скорее всего, сходится к тому, что нужно. при реализации схем более высокого порядка часто сравниваются диссипативные параметры схема — чем меньше схема "размазывает" решение и чем меньше артефактов по сравнению с линейной схемой вносит, тем лучше. обрати внимание на мелкие завитки, которые не размываются — это хорошо. обрати внимание на странные ступеньки — это плохо.

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

навье-стокс на турбулентностях по [cht]L^2[/cht] норме (интегральное отклонение от референсного решения) и тем более по [cht]L^\infty[/cht] (максимальное отклонение в точке), насколько я знаю, обычно не сравнивают, потому что уравнение слишком хаотично. но на ламинарных потоках — вполне можно сравнить.

#25
21:57, 27 фев. 2018

MrShoor
Если я  не ошибаюсь , то за доказательство того что существует глобальное гладкого решения задачи коши для уравнений Навье — Стокса в 3D ,мематичский иститут клея даёт мильон долларов, и на сколько я знаю пока ни кто ни чего не доказал! Так что уравнения навье стокса в общемь виде вообще может быть ошыбочно !

Страницы: 1 2
ПрограммированиеФорумФизика

Тема в архиве.