Sayısal kodda hata ayıklama, bu salınım hatasının kaynağı ne olabilir?


16

Sessizce çok fazla fikir edinilebilir, daha önce böyle bir şey görüp görmediğini merak ediyordum. Grafik, adveksiyon-difüzyon denklemi için başlangıç ​​koşulunu (yeşil), daha sonra iterasyon 200 (mavi) ve sonra tekrar iterasyon 400 (kırmızı) 'daki çözeltiyi gösterir.

Salınım hatası

Adveksiyon-difüzyon denkleminin çözeltisi birkaç tekrardan sonra patlar. Péclet numarası ve CFL koşulu karşılanır, , bu nedenle denklemler kararlı olmalıdır . Sayısal kodda bir hata olduğunu tahmin ediyorum.μ0.07C0.0015

Arka fon. Ayrıklaştırma, hem kabul hem de yayılma terimleri için merkezi bir farktır. Bunun birinci derece kabul ve ikinci yayınım sırası olduğuna inanıyorum. Bunu, hücre yüzeylerindeki katsayıların (hız ve difüzyon katsayısı) değerlerinin hücre ortalamalarından doğrusal enterpolasyon ile bulunduğu sonlu hacimli bir yaklaşım (ilk kez) kullanarak uyguladım. Sol ve sağ yüzeylere Robin sınır koşullarını uyguluyorum ve sınırlardaki akıyı sıfıra ayarlıyorum.

Sayısal kodunuzda nasıl hata ayıklama yapıyorsunuz? Daha önce böyle bir şey yapan biri var mı, bakmaya başlamak için iyi bir yer olurdu?

Güncelleme

Güncelleme

Çözüm daha kolay olamazdı! Sadece difüzyon teriminde bir işaret hatası yaptım. Bu garip, eminim ben bu yayınlanmış olmasaydı ben hata bulamazdım! Birisi nasıl sayısal kod hata ayıklama ipuçları paylaşmak istiyorsa ben hala ilgileniyorum. Bir yöntemim yok, biraz vurup özledim, ipucu almak için bir şeyler denemeye devam ediyorum, ancak bu işlem haftalar sürebilir (bazen).

O (işleri Kanıtı NB sonlu hacimli yöntemi ile bölgeyi hesaplamak için tüm yapmanız gereken genişlikte bir toplamını olduğunu böyle numpy.trapz senin sonuçları gibi bir entegrasyon yöntemini kullanırsanız tüm hücreler için boy, nümerik dahil yamuk yönteminin hatası). Burada ne oluyor? Sabit hız ve difüzyon katsayıları vardır ama ile kapalı sınır koşulları. Bu nedenle sınırda sağa doğru iten hız alanı ile sola doğru difüzyon itme arasındaki dengeyi görüyoruz.x

Sonlu hacimler yöntemi ile kapalı sınır koşulları ile diferansiyel difüzyon denklemi.


2
Ne tür bir takdir yetkisi kullanıyorsunuz? Hangi sipariş yöntemi? Sınır koşullarınız nelerdir?
Geoff Oxberry

Teşekkürler @GeoffOxberry, daha fazla ayrıntıyla güncelledim. Ne yaptığımı gerçekten anlasam da, yukarıdaki github bağlantısındaki laboratuvar kitap notlarımı okuyabilirsiniz.
boyfarrell

2
Bu soruna yoğun yaklaşımınıza hayran kaldım. Bu grafikler zamana bağlı denklemlerden mi? Evet ise, için ne gözlemliyorsunuz ? θ=0,0.5,1
Jan

1
Bunu denedim, genel olarak aynı şeyi veriyor. Ama şimdi kendimi aptal hissediyorum, bir işaret hatası için test yapıyordum ... ve ayarı bunu yapıyor (difüzyon limitinde, evet negatif difüzyon çalışmasını sağlıyor!). Bu nedenle, ileride başvurmak üzere yukarıdakiler bir işaret hatasıyla tutarlı olabilir. Henüz tamamen test edilmedi, bu yüzden yakında rapor vereceğim! PS. iltifat için teşekkürler :)d < 0bir=0d<0
boyfarrell

Yanıtlar:


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.