Як ви налагоджуєте числовий код, що може бути джерелом цієї коливальної помилки?


16

Тихо зрозуміти можна отримати досвід досвіду, мені було просто цікаво, чи хтось раніше бачив щось подібне до цього. На графіку показано початкову умову (зелене) для рівняння адвекційно-дифузійної, потім розчин при ітерації 200 (синій), а потім знову при ітерації 400 (червоний).

Коливання помилок

Розв’язок рівняння адвекційно-дифузійного рівняння вибухає після кількох ітерацій. Число Пеклета , а умова CFL виконується, C 0,0015 , тому рівняння повинні бути стабільними. Я припускаю, що у мене є помилка в числовому коді.мк0,07С0,0015

Фон Дискретизація є центральною відмінністю як для термінів адвекції, так і для дифузії. Я вважаю, що це перший порядок адвекції та другий порядок дифузії. Я реалізував це, використовуючи підхід з кінцевими обсягами (вперше), в якому значення коефіцієнтів (коефіцієнт швидкості та дифузії) на гранях комірки визначається лінійною інтерполяцією від середніх клітин. Я застосовую граничну умову Робіна на лівій і правій поверхнях і встановлюю потік у межах нуля.

Як ви налагоджуєте свій цифровий код? Хтось раніше щось подібне робив, де було б гарне місце для початку шукати?

Оновлення

  • Ось мої особисті примітки у стилі "лабораторія книги" щодо впровадження методу обмеженого обсягу для рівняння адвекційно-дифузійної форми, http://danieljfarrell.github.io/FVM/
  • Вихідний код Python доступний тут, http://github.com/danieljfarrell/FVM.git

Оновлення

Рішення не могло бути простішим! Я щойно зробив помилку знаку на терміні дифузії. Дивно, я впевнений, що я цього не опублікував, я б не знайшов помилку! Якщо хтось хоче поділитися порадами щодо налагодження свого цифрового коду, я все ще зацікавлений. У мене немає методу, це трохи вдарило і пропустило, я продовжую пробувати речі, щоб отримати підказки, але цей процес може зайняти тижні (іноді).

×

Рівняння адвекційно-дифузійної форми із закритими граничними умовами методом кінцевих об'ємів.


2
Яку дискретизацію ви використовуєте? Який спосіб замовлення? Які ваші граничні умови?
Джефф Оксберрі

Дякую @GeoffOxberry, я оновив більше деталей. Хоча, щоб зрозуміти, що я зробив, ви можете прочитати мої записки з лабораторії за посиланням github.
boyfarrell

2
θ=0,0,5,1

1
а=0г<0

Відповіді:


9

Я зібрав частину свого досвіду налагодження числових кодів тут: deal.II FAQ: налагодження . Я не знаю, чи могло б це допомогти вам у цьому конкретному випадку, але це може бути і в інших.


Привіт, це посилання розірвалося, коли проект рухався - це зараз правильно? github.com/dealii/dealii/wiki/…
гіперпалій

Так, це правильно. Дякуємо, що оновили його у вашому коментарі!
Вольфганг Бангерт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.