"En basit" ile sıfırdan öğrenmesi ve uygulaması en kolayı kastediyorum. Umarım sorum aşağı yukarı cevaplanabilir.
"En basit" ile sıfırdan öğrenmesi ve uygulaması en kolayı kastediyorum. Umarım sorum aşağı yukarı cevaplanabilir.
Yanıtlar:
İki boyutta, hız-girdap formülasyonu uygulanması en basit olandır, çünkü değişkenler koordine edilir, ancak sınır koşulları karmaşık olabilir ve sorunun daha az doğrudan bir ifadesidir. İlkel değişken formülasyonlar için Harlow ve Welch'in (1965) kademeli ızgara sonlu fark yöntemi başlamak için harika bir yerdir.
Çok basit ama oldukça etkili çözüm yöntemi (Chorin'e çatlıyor yöntemi) tam bir belge uygulaması bulabilirsiniz burada .
Diğer popüler yöntemlerin bir seçimi için bu kitapta Bölüm 21'e bakınız .
Feragatname: Hem demo programının hem de kitabın (ortak) yazarıyım. Kitap ücretsiz olarak indirilebilir.
En basit olanı her zaman özel ilgi alanlarınıza ve ihtiyaçlarınıza göre olacaktır. Anders ile hem basit kullanım geometrisine sahip alanlardaki sıkıştırılamaz akış için hem kullanım kolaylığına hem de doğruluğa öncelik veriyorsanız projeksiyon yöntemini (yani Chorin'in bölme yöntemini) yenmek için zorlanacağınız konusunda hemfikirim.
Biraz daha ayrıntıya inmek için, yöntem sorudır [1]. Daha modern, ikinci derece, yaklaşık projeksiyon yöntemi [2] 'de iyi açıklanmıştır. Motivasyon, tam sıkıştırılamaz Navier-Stokes denklemlerinin çözülmesinin, hız alanı ve basınç için eşzamanlı olarak çözülmesi gerektiğini ve sonuçta ortaya çıkan doğrusal sistemin oldukça koşulsuz olduğunu. Projeksiyon yöntemi, her zaman adımını bir hız çözümüne bölerek, önceki zaman adımındaki basıncı kullanarak ve ardından hız alanının sıkıştırılamaz kalmasını zorlayan bir basınç güncellemesi ile bu sorunu ortadan kaldırır.
Bunu uygulamak için birkaç bileşene ihtiyacınız olacak, ancak hepsi kolayca öğrenilebilir ve programlanabilir.
Basınç çözümü için, sabit yoğunluklu sistemlerle ilgilendiğinizi varsayarsak, Poisson denklemini çözmeniz gerekir. Tabii ki, bu soruna yaklaşmak için düzinelerce algoritma vardır, ancak belki de tam olarak anlayamıyorsanız, uygulanması en kolay olan eşlenik gradyan (CG) algoritmasıdır. Okuduğum CG'nin en iyi açıklamalarından biri Jonathan Shewchuk tarafından yazılmıştır ve burada bulunabilir . Ancak algoritmayı uygulayabilmeniz için tüm makaleyi kesinlikle okumanız gerekmez.
Navier-Stokes'teki reklam terimini işlemek için başka bir algoritmaya ihtiyacınız olacak. Çeşitli boyutlarda, Godunov gibi en esnek yöntemlerin sağlam uygulamalarının programlanması oldukça zor olabilir. Bununla birlikte, nispeten mütevazı Reynolds sayısına (yani, ihmal edilemez viskoziteye sahip) akışlarla ilgileniyorsanız, temel olarak salınımlı olmayan (ENO) yöntemlerden biri, faturaya uygulama kolaylığı açısından iyi uyuyor. [3] 'te hem teori hem de uygulama hakkında mükemmel bir genel bakış vardır.
Viskoz terimi, genellikle Crank-Nicolson gibi örtük bir yöntem kullanarak ele almanız gerekir. Bu, projeksiyon yöntemi belgelerinde ayrıntılı olarak açıklanmaktadır ve viskozitenin sabit olması şartıyla CG'yi matris çözümü için kolayca kullanabilirsiniz.
[1] AJ Chorin, Navier-Stokes denklemlerinin sayısal çözümü , J. Math. Hesaplama, 22 (1968), s. 745-762
[2] A. Almgren, JB Bell ve W. Szymczak, Yaklaşık projeksiyona dayanarak sıkıştırılamaz Navier-Stokes denklemleri için sayısal bir yöntem , SIAM J. Sci. Comput. 17 (1996), sayfa 258-369'da açıklanmaktadır.
[3] S. Osher ve R. Fedkiw, Seviye Belirleme Yöntemleri ve Dinamik Örtük Yüzeyler . Springer-Verlag New York ,. Uygulamalı Matematik Bilimleri, 153, 2002
Bilgisayar grafikleri ve oyunlar, son yıllarda sıvı simülasyonuna büyük bir ilgi patlaması gördü. İşte Jos Stam'dan gerçek zamanlı uygulamalar için bir çözücünün uygulanmasını tartışan harika bir makale. Kaynak kodu anlamak çok kolay geliyor. Ne kadar doğru olduğunu bilmiyorum, ama aradığınız şey olabilir.
Bir başka gerçekten güzel ve basit yöntem, ayrıklaştırma için hücresel otomatları kullanmaktır. LBA, FHP ve çok daha fazlası dahil olmak üzere bu tür birçok model var. Modern bilgisayarlarda gerçek zamanlı bir simülasyon sağlayabildikleri ve aynı zamanda güzel bir şekilde paraleleştirilebildiği ve GPU'larda çalışabildikleri için bunlar gerçekten güzel. Ayrıca bazı dezavantajları vardır ve sonuçlar büyük ölçüde uygulanan kafesin şekline bağlıdır. Kare kafes yetersizdir çünkü dönme özgürlüğünden yoksundur ve yani von kaarman girdapları hoş olmayan kare şeklinde olacaktır :)