Belirsiz simetrik sistemler için PETSc'de hangi önkoşulları (ve çözücü) kullanmalıyım?


12

Sistemim lagrange çarpanları (örn. Sıkıştırılamaz Stokes akışı) ile simetrik bir FE problemidir:

(ABTBC)

Burada tipik bir durumdur (denklemlerin Lagrange çarpanlarının en son görünmesini sağlayacak şekilde numaralandığından bile emin oldum). Sistem oldukça büyük (+ 100 bin satır).C=0

Bu sorunun cevabını okuduktan sonra , karışık FE problemleri için kullanılabilecek uygun önkoşullar olduğu izlenimi verildi.

-ksp_type minres -pc_type none -mat_type sbaijHassasiyeti mükemmel olmasa da (doğrusal bir problem için birkaç Newton yinelemesine neden olur) PETSc kullanarak sistemi MINRES ( ) ile çözmeyi başardım . Önkoşul ve ksp-çözücünün başka bir kombinasyonu işe yaramıyor gibi görünüyor.

PETSc için bu sistemi sadece MINRES'ten daha hızlı çözecek bayrak kombinasyonu var mı?


1
SciComp SE'ye hoş geldiniz! Sorunuz netlik ve genellik açısından iyi bir şekilde soruluyor. Sadece bir cümle biraz belirsiz veya eksik: Ne demek yanlış hesaplamalardan kaynaklanıyor?
Ocak

1
Cümleyi bitirmeyi unuttum! Umarım şimdi açıktır.
Mikael Öhman

Yanıtlar:


13

Uyarı

Eyer noktası problemlerini çözmek, kesin problemlerden çok daha fazla seçenek içerir ve yanlış gidebilecek çok daha fazla şey vardır. Yakınsama hatalarını ayıklamak, yardımcı operatörler tekil olduğunda (genellikle yalnızca sabit bir boş alan) boş alanların doğru şekilde işlendiğinden emin olmak ve ön koşullu koşulların kararlı olmasını sağlamak için tüm düzeylerde monitörler kullanın. Bu teknikler bu soruda tartışılmıştır .

Eyer noktası problemlerini çözme

Kullanım Kılavuzunda blok matrisleri çözme bölümü ile başlayabilirsiniz . Stokes benzeri sorunlar için, PCFIELDSPLIT kullanarak bir Schur tamamlayıcısı önkoşulu oluşturabilirsiniz .

-pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_detect_saddle_point

Bu , Schur tamamlayıcısı ( ) için En Küçük Kareler Komütatörü önkoşulu ile birleştirilebilir -fieldsplit_1_pc_type lsc. -fieldsplit_1_ksp_type preonlyDış iterasyon işin çoğunu yapmak için yaygındır ve bırakın. Blok üçgen varyantları bu şekilde kullanıldığında popülerdir, örn -pc_fieldsplit_schur_fact_type upper.

Çözücünün kompozisyonu hakkında daha fazla bilgiyi kağıdımızdaki (ön baskı) seçenekleri kullanarak kullanarak çoklu ayrıştırmayı blok ayrıştırmasıyla (alan bölmesini çoklu ızgara içine koyarak ) tartışmayı da tartışabilirsiniz.

Birçok sorun için, çoğu yardımcı operatör içeren alan ayrışmasını ve Schur tamamlayıcısı ön koşullarını özelleştirmek isteyeceksiniz. Örneğin, Elman ve arkadaşlarının "basınç konveksiyon-difüzyon" (PCD) yöntemi, basınç uzayında yardımcı bir operatörün ayrıştırılmasını gerektirir. Bu amaç için PCSHELL örneklerine ve kullanım kılavuzu bölümüne bakın.


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.