“Mükemmel dikdörtgen olmayan” ızgara üzerinde çoklu ızgara


9

Çoklu ızgara girişleri normalde dikdörtgen bir ızgara kullanır. Değerlerin enterpolasyonu daha sonra düzdür: Sadece kaba ızgaradaki iki bitişik düğüm arasındaki kenarda doğrusal olarak enterpolasyon yapın, o kenardaki ince ızgara düğümünün değerini bulun.

Bir FEM uygulaması için, "topolojik olarak" dikdörtgen şeklinde bir ızgaram var, böylece düğüm bağlantıları dikdörtgen ızgarada olduğu gibi. Bununla birlikte, düğümler bir ızgara üzerinde mükemmel bir şekilde hizalanmamıştır, ancak bağlantıları mükemmel bir dikdörtgen ızgarada olduğu gibi korurken, geometriye daha iyi uyum sağlamak için küçük mesafeler kat edebilir.

Kafes şöyle görünür: Kafes örneği . Görüyorsunuz: Bağlantılar "normal dikdörtgen" dir, ancak düğüm konumları değildir.

Böyle bir ortamda birkaç "makul" geometrik enterpolasyon şemasını görüntüleyebilirim.

Genel soru şudur: Multigrid mükemmel şekilde hizalanmış bir dikdörtgen ızgara gerektirir mi yoksa enterpolasyon "iyi" olduğu sürece yukarıda açıklanan durumla da çalışır mı? Yoksa bu durumda cebirsel multigrid kullanmak daha mı iyi? (Geometrik multigrid kadar sezgisel olmadığı için tercih etmiyorum.)


Kılavuzun topolojik olarak dikdörtgen olmasıyla ne demek istediğinizi anladığımdan emin değilim, ancak düğümlerin dikdörtgen bir ızgaradaki gibi hizalanmadığı. Izgara yapılandırılmış bir dikdörtgen ızgara mı? Bunu belki bir çizim ile açıklığa kavuşturabilir misiniz? Dikdörtgen olmayan öğeleri kullandığınız sorun, yapılandırılmış bir kartezyen ızgara kullanılırken olduğu gibi mi?
James

@ James, OP'nin sorusunu daha çok şöyle yorumladım: "Bir yamuk içinde 'kartezyen-ish' ızgaram varsa ne olur?".
Bill Barth

Yanıtlar:


6

Multigrid'in Kartezyen (dikdörtgen), düzgün bir ızgaraya ihtiyacı yoktur. İhtiyaç duyduğu şey, ince ve kaba bir seviye tanımlayabilmenizdir (muhtemelen iki seviyeden çok seviyeli bir şemaya geçmek istiyorsanız özyinelemeli olarak) ve bu seviyeler arasında enterpolasyon operatörleri tanımlayabilirsiniz. Bunu açıklamanın en kolay yolu, gerçekten bir Kartezyen ızgaraya sahipseniz, ancak aslında herhangi bir kaba ağ ile başlayabilir, bir kez rafine edebilir ve aynı şekilde: daha ince bir ağa sahip olabilirsiniz.

Başka bir deyişle, çoklu-ızgaraya uygun ağları ince bir ağ olarak değil, daha kalın ağları nasıl bulacağınızı düşünmek, ancak tek tip arıtma ile daha ince seviyeler elde ettiğiniz kaba bir ağ ile başlamak en kolay yoldur (yani, her dörtgen dört küçük bölüme ayrılmıştır). Tek tip iyileştirme her zaman mümkün olduğundan, bu size kolayca bir hiyerarşi sağlar. Bu, belirli bir ağ verildiğinde her zaman mümkün olmayan ve böylece bir ağ hiyerarşisini tanımlamayı çok daha karmaşık hale getiren, kabalaşmaya karşıdır. (Bu yüzden insanlar , yaratıldığı temel ağı düşünmeden, sadece matrise dayalı kaba seviyeleri tanımlamak için cebirsel multigrid yöntemleri geliştirdiler.)


Soruya bir örnek resim düzenledim. Benim durumumda sadece her 2. düğümü (boyut başına) alarak ve kaba matrisi / operatörü almak için bu ızgara için FEM'i yeniden hesaplayarak benim durumumda son derece kolay olduğunu varsayabilirim. Kaba veri vektörü sadece her 2. düğüm değeri alınarak elde edilebilir.
Michael

1
Bu, istediğiniz kadar işe yarayabilir veya çalışmayabilir (herhalde işe yarayacağını düşünüyorum, ancak tamamen emin değilim). Mesele şu ki, örneğinizde, kaba kafes hücreleri çocuklarla aynı alanı kapsamaz ve bu nedenle sonlu eleman uzaylarının yuvalama özelliği yoktur: kaba kafes üzerinde temsil edebileceğiniz işlevler, ince ağ üzerinde temsil edebileceğiniz fonksiyonlar. Joe Pasciak ve Jim Bramble bu gibi vakalar hakkında yazılar yazdılar ve sanırım işe yarayabileceklerini hatırlıyorum. Ama bu benim için hemen belli değil.
Wolfgang Bangerth

4

Dikdörtgen elemanlardan oluşan aşağıdaki ızgaraya sahip olduğunuzu varsayalım:

resim açıklamasını buraya girin

Şimdi enterpolasyonunuzu normal yapılandırılmış dikdörtgen bir ızgara varsayarak gerçekleştirirseniz, bu yanlış enterpolasyonla ilişkili hatalar ortaya koyacaksınız. Diğer bir deyişle, artık vektörünüzü kısıtladığınızda ve hata vektörünüzü uzattığınızda enterpolasyondan kaynaklanan hatalar olacaktır.

Şimdi şebekeniz normal yapılandırılmış kartezyen bir ızgaraya "yakın" ise, bu en azından ilk başta işe yarayabilir, ancak ızgaradan dikdörtgen olmanın ne kadar uzakta olduğuna bağlı olarak iki şeyden birinin gerçekleşeceğinden şüpheleniyorum:

1) Multigrid'in ilk önce birleşmeye başladığını görebilirsiniz. Sonuçta başlangıçta hatanız zaten büyüktür ve "yaklaşık" enterpolasyonunuz gerçekten sadece bazı düğümlerin biraz fazla temsil edildiğini, bazıları ise biraz saygının altında olduğunu gösterir. Bununla birlikte, çözüm daha doğru hale geldiğinde ve enterpolasyon hatalarının daha önemli hale gelmesiyle yakınsamanın durduğunu görebilirsiniz.

2) Başka bir olasılık, multigrid'in yakınsamaya dönüşmesi, ancak doğru enterpolasyonu kullanmış olmanız gerektiği kadar hızlı olmamasıdır.

Temel olarak enterpolasyonunuzla yola çıkarak bazı düğümlerin önemini yanlış bir şekilde değerlendiriyorsunuz. Örneğin, belirli bir düğümü şu şekilde tarıyorsanız 2D'de:

[0.250.50.250.51.00.50.250.50.25]

Gerçekte, şebekeniz tam olarak kartezyen olmadığından:

[0.250,550.250,551.00.490.280.520.30]

bu bazı hatalara neden olur. Bu hatanın iletimin engellenip engellenmeyeceği büyük olasılıkla şebekenizin ne kadar uzakta kartezyen olduğuna bağlı olacaktır.

AMG'yi anlamak / uygulamak daha zor olsa da, şebekeniz için doğru yöntem gibi görünüyor. "Yaklaşık" bir dikdörtgen ızgaraya geometrik multigrid uygulamak işe yarayabilir, ancak en iyi ihtimalle bir yara bandı çözümü olduğunu tahmin ediyorum. Bu yardımcı olur umarım.

Güncelleme : Cevabımda biraz karışıklık olabileceğini düşünüyorum. Geometrik multigrid'in sadece kartezyen ağlarla çalışacağını söylemiyorum, aksine kartezyen ağlar üzerinde enterpolasyon (ve dolayısıyla kısıtlama) tanımlamanın kolayken, yapılandırılmamış ağlarda bu zor olabilir. Örneğin, üçgen örgülü basit bir 2D alan bile düşünün. Bu ağın düzeltilmesi kolaydır - en azından kavramsal olarak - ancak kaba ve ince ağ arasında bir enterpolasyon operatörünü nasıl tanımlarsınız? AMG'yi sadece bir "kara kutu" çözücüsü gibi daha fazla performans gösterdiği için tercih ediyorum, yani çözülmeyen ağ hakkında bilgiye gerek yok, ancak bu sadece benim kişi önyargısı / tuhaflığı. Geometrik multigrid, doğru enterpolasyon operatörleri sağlayabildiğiniz sürece çalışabilir.


Bunu "enterpolasyonunuzun ne kadar iyi olduğuna bağlı" olarak okuyabilirim, doğru mu? Eğer bir "mükemmel" enterpolasyon şeması ile gelebilir Yani, o zaman iyi olmalı?
Michael

1
Bu cevabın doğru ama yanıltıcı olduğunu düşünüyorum - eğer şebekenizi değilken düzenli kartezyen gibi yaparsanız, yanlış cevabı alacağınızı söylüyor. Bu doğru, ancak aynı şeyi herhangi bir sayısal yöntem hakkında da söyleyebilirsiniz. Mesele şu ki, geometrik çoklu-ızgara, doğru uygulandığında daha genel kafeslerde doğrudur .
David Ketcheson

Geometrik multigridin doğru şekilde yapıldığı sürece kartezyen olmayan kafeslerle kullanılabileceğini kabul ediyorum. OP sorusunu yeni bir kartezyen kafes için tasarlanmış enterpolasyonu kullanırken "yaklaşık" kartezyen örgü kullanmanın işe yarayıp yaramayacağını soran bir soru aldım.
James

@Michael Temelde farklı şebeke seviyeleri arasındaki enterpolasyon operatörlerini tanımlamanın bir yoluna ihtiyacınız vardır. Kartezyen örgülerle bu kolaydır. Kartezyen olmayan ağlarla, ağlarınızın ne kadar yapılandırılmamış olduğuna bağlı olarak bu hızla daha zor hale gelebilir. Wolfgang'ın cevabında söylediği gibi, her zaman kaba olandan daha rafine bir kafes oluşturabilirsiniz, ancak anlamlı enterpolasyon operatörlerini tanımlamak zor olabilir. AMG'nin avantajı, enterpolasyon operatörlerini tanımlamak için mesh verilerine ihtiyaç duymamanız nedeniyle daha çok "kara kutu" çözücüsü gibi davranmasıdır. İhtiyacınız olan tek şey matris
James

@MIchael Sorunuzu cevaplamak için. Evet, doğru enterpolasyon operatörleri ile gelebilirseniz, geometrik multigrid iyi çalışır. Bu yardımcı olur umarım.
James
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.