Можно получить много понимания из опыта, мне просто интересно, видел ли кто-нибудь что-то подобное раньше. График показывает начальное условие (зеленый) для уравнения адвекции-диффузии, затем решение на итерации 200 (синий) и затем снова на итерации 400 (красный).
Решение уравнения адвекции-диффузии взрывается после нескольких итераций. Число Пекле , а условие КЛЛ выполнено, , поэтому уравнения должны быть устойчивыми. Я ожидаю, что у меня есть ошибка в числовом коде.
Фон. Дискретизация является центральной разницей как для адвекции, так и для диффузии. Я считаю, что это первый порядок адвекции и второй порядок диффузии. Я реализовал это, используя метод конечных объемов (впервые), в котором значения коэффициентов (скорости и коэффициента диффузии) на гранях ячейки находят путем линейной интерполяции от средних значений ячейки. Я применяю граничное условие Робина на левой и правой поверхностях и устанавливаю поток на границах на ноль.
Как вы отлаживаете свой числовой код? Кто-нибудь делал подобные сцены раньше, где было бы хорошее место, чтобы начать искать?
Обновить
- Вот мои личные заметки в стиле «лабораторной книги» о реализации метода конечных объемов для уравнения адвекции-диффузии, http://danieljfarrell.github.io/FVM/
- Исходный код Python доступен здесь, http://github.com/danieljfarrell/FVM.git
Обновить
Решение не может быть более простым! Я только что сделал ошибку в знаке диффузии. Странно, я уверен, что я не опубликовал это, я не нашел бы ошибку! Если кто-то хочет поделиться советами о том, как они отлаживают свой числовой код, я все еще заинтересован. У меня нет метода, он немного ударил, я продолжаю пробовать что-то, чтобы получить подсказки, но этот процесс может занять несколько недель (иногда).
Доказательство он работает ( NB , что с помощью метода конечных объемов все , что вам нужно сделать , чтобы вычислить площадь является суммированием ширины высота для всех ячеек, если вы используете метод интеграции , такие как numpy.trapz ваших результаты включают числовое ошибка метода трапеции). Что здесь происходит? Существует постоянная скорость и коэффициенты диффузии, но с замкнутыми граничными условиями. Поэтому на границе мы видим равновесие между полем скоростей, толкающим вправо, и диффузионным толчком влево.
источник
Ответы:
Я собрал свой опыт отладки числовых кодов здесь: deal.II FAQ: отладка . Я не знаю, помогло бы это вам в данном конкретном случае, но может и в других.
источник