Тихо зрозуміти можна отримати досвід досвіду, мені було просто цікаво, чи хтось раніше бачив щось подібне до цього. На графіку показано початкову умову (зелене) для рівняння адвекційно-дифузійної, потім розчин при ітерації 200 (синій), а потім знову при ітерації 400 (червоний).
Розв’язок рівняння адвекційно-дифузійного рівняння вибухає після кількох ітерацій. Число Пеклета , а умова CFL виконується, C ≈ 0,0015 , тому рівняння повинні бути стабільними. Я припускаю, що у мене є помилка в числовому коді.
Фон Дискретизація є центральною відмінністю як для термінів адвекції, так і для дифузії. Я вважаю, що це перший порядок адвекції та другий порядок дифузії. Я реалізував це, використовуючи підхід з кінцевими обсягами (вперше), в якому значення коефіцієнтів (коефіцієнт швидкості та дифузії) на гранях комірки визначається лінійною інтерполяцією від середніх клітин. Я застосовую граничну умову Робіна на лівій і правій поверхнях і встановлюю потік у межах нуля.
Як ви налагоджуєте свій цифровий код? Хтось раніше щось подібне робив, де було б гарне місце для початку шукати?
Оновлення
- Ось мої особисті примітки у стилі "лабораторія книги" щодо впровадження методу обмеженого обсягу для рівняння адвекційно-дифузійної форми, http://danieljfarrell.github.io/FVM/
- Вихідний код Python доступний тут, http://github.com/danieljfarrell/FVM.git
Оновлення
Рішення не могло бути простішим! Я щойно зробив помилку знаку на терміні дифузії. Дивно, я впевнений, що я цього не опублікував, я б не знайшов помилку! Якщо хтось хоче поділитися порадами щодо налагодження свого цифрового коду, я все ще зацікавлений. У мене немає методу, це трохи вдарило і пропустило, я продовжую пробувати речі, щоб отримати підказки, але цей процес може зайняти тижні (іноді).