A domain decomposition python framework with autosaving of subdomain solutions for finite element analysis
Alt bölge ayrıştırmalı sonlu eleman analizi için alt bölge çözümlerini otomatik kaydeden bir python çözümleme çerçevesi
- Tez No: 807515
- Danışmanlar: DOÇ. DR. MURAT YILMAZ
- Tez Türü: Yüksek Lisans
- Konular: İnşaat Mühendisliği, Civil Engineering
- Anahtar Kelimeler: Belirtilmemiş.
- Yıl: 2023
- Dil: İngilizce
- Üniversite: İstanbul Teknik Üniversitesi
- Enstitü: Lisansüstü Eğitim Enstitüsü
- Ana Bilim Dalı: İnşaat Mühendisliği Ana Bilim Dalı
- Bilim Dalı: Yapı Mühendisliği Bilim Dalı
- Sayfa Sayısı: 75
Özet
Sonlu Elemanlar (FE) içinde Alt Bölge Ayrıştırma Yöntemleri, sınır değeri problemini alt bölgelerdeki daha küçük sınır değeri problemlerine bölmek ve gerçekleştirilen alt bölge çözümlerini verilen sistem bölgesinin genel bir çözümünü koordine etmek üzere kullanmak şeklinde özetlenebilir. Alt bölge ayrıştırma yöntemleri, belirlenen bir alt bölge üzerindeki problemin, tüm sistem alanından bağımsız olarak kısmen çözülebilmesi nedeniyle paralel hesaplama için uygundur. Bu nedenle, bu bireysel (bölgesel) çözümler farklı CPU'lar üzerinde uygulanabilir ve ardından birleştirilebilir. Alt bölge çözümlerinin sistem çözümlerinden bağımsız özelliği, sadece paralel programlamayı mümkün kılmakla kalmaz, aynı zamanda halihazırda gerçekleştirilmiş olan alt bölge çözümlerinin muhtemel benzer yapıdaki diğer sistem çözümlemelerinde de verimli bir şekilde yeniden kullanılmasına izin verir. Bunun için öncelikle alt bölge çözümlemelerine ait tüm bileşenler taranarak, ilgili alt bölge kendisini eşsiz bir şekilde temsil edecek kripto-grafik bir hash ile işaretlenir ve bilgisayara kaydedilir. Böylece, orijinal sistemdeki bazı bileşenlerde küçük değişiklikler olduğunda, problemi tamamen yeniden çalıştırmak yerine, sadece değişiklik olan alt bölgelerde hesap yenilemek ve değişiklik olmayan alt bölgelerde de önceki hesaplamalarda halihazırda kaydedilmiş mevcut çözümlemeleri çağırmak ve uygulamak mümkün olacaktır. Tez kapsamında sadece bu stratejinin uygulanmasının bile özel bazı durumlarda önemli derecede hesaplama zamanı tasarrufu sağladığı gösterilmiştir. Tez kapsamında, alt bölge ayrıştırmasını ve bölgesel çözümlemelerin otomatik saklanmasını kolaylaştırmak üzere, Python'da yazılmış ve geleneksel bir Sonlu Eleman uygulamasına kolay bir biçimde alt bölge ayrıştırma desteği eklemek üzere tasarlanmış bir kod ara yüzü önerilmektedir. Ayrıca, bu ara yüzün uygulanması sırasında kullanıcı tarafından daha önce Python'da yazılmış bir sonlu elemanlar analizi kodu varsa, bu kodda değişiklik yapılmaması ve kullanıcının sunduğu kod sınıflarının kullanılması için“code binding”yani kod bağlama yöntemi kullanılmıştır. Kullanıcının daha önce oluşturduğu“Node”ve“Element”sınıflarına, alt alan ayrıştırma için gereken özellikler dışarıdan bağlanarak kullanıcı sınıfları genişletilmektedir. Bu sayede, geliştirilen alt alan ayrıştırma kod çerçevesinin en düşük iş gücüyle entegre edilmesi sağlanmaya çalışılmıştır. Ana sisteme ait alt bölge çözümlerini kaydetmek ve yeniden kullanmak için, öncelikle ilgili gelen alt bölgenin değişkenlerini içeren ve bu alt bölgeleri benzersiz şekilde temsil eden bir dize oluşturmak gerekmektedir. Bu dizenin oluşumu, alt bölgeyi oluşturan tüm bireysel öğelerin özelliklerinin, tüm eleman ve düğüm özelliklerinin ve tüm sınır koşullarının mevcut değerlerinin belirlenmesini/öğrenilmesini gerektirir. Bu işlemi kolaylaştırmak için, son kullanıcının fonksiyonlara ait değişkenleri ayrıştırma çerçevesine tanıtmasını sağlayan“hashify”adında özel bir Python dekoratörü geliştirilmiştir.“hashify”dekoratörü son kullanıcı tarafından kodundaki fonksiyonların üstüne eklenmesi şeklinde kullanılır. Kullanıcı“hashify”dekoratörü ile kullanmak istediği eleman rijitlik matris ve yük vektörü hesaplarını ayrıştırma çerçevesine tanıtır. Ayrıştırma çerçevesi daha sonra bahsedilecek olan alt bölge hesaplarında bu tanımları kullanarak alt bölge rijitlik matrisi ve yük vektörlerini hesaplar ve oluşturulan hash ile birlikte kaydeder. Alt bölgelerde yapılacak yüksek hesaplama isteyen işlemler, yukarıda bahsedilen özelliklerden oluşturulan hash isminin kullanıldığı dosyalara kaydedilir. Bu tez kapsamında yazılan programda alt bölgelerde rijitlik matrisi ve yük vektörleri için“{hash}_{matris ismi/vektör ismi}”şeklinde bir dosya isimlendirmesi önerilmiştir. Ayrıştırma çerçevesi alt bölge hesaplarını yapmadan önce bu dosyaların varlığını dosya sisteminde sorgular. Eğer dosya sisteminde ilgili kayıt varsa hesaplama yapılmadan bu dosya okunur ve alt bölge hesaplarına devam edilir. Dosya isimlerinde hash değeri kullanıdığı için, alt bölgeleri oluşturan“Node”ve elemanların tanımlayıcı dizeleri oluşturan değerlerinin değişmesi sonucu hash değeri değişecek ve ilgili dosya, dosya sisteminde bulunamayacaktır. Bu saklama dosyaları eğer dosya sisteminde bulunamazsa ilgili hesaplama işlemi gerçekleştirilecek ve kayıt dosyası yaratılacaktır. Bu kullanımın bir diğer avantajı ise tanımlayıcı değerlerin değişmesi ve sonra eski haline getirilmesi sırasında bir önceki kayıtlı dosyalar tekrar okunabilecek ya da ortak bir alt alan çözüm kütüphanesi oluşturulursa buradaki kayıtlı çözümler diğer kullanıcılar tarafından da kullanılabilecektir. Dosya yazma ve okuma işlemlerinin performansa etkisi de dikkate alınmalıdır. Alt bölgelerde yüksek hesaplama gücü gerektirmeyen işlemler yapılıyorsa dosya okuma ve yazma işlemlerinden gelecek olan ek yük, hesaplama işlemlerinin önüne geçecektir. Matris ve vektör verileri için optimize edilmiş dosya okuma ve yazma fonksiyonlarının kullanımı bu ek yükü azaltacak olsa da kiriş gibi görece basit hesaplama içeren elemanlardan oluşan alt bölgelerde ayrıştırma sonucu beklenen performans iyileştirmesinde düşüşler olacaktır. Ayrıca alt bölgelerin tanımlayıcı verilerinden hash oluşturma işlemleri de dosya okuma ve yazma işlemleri gibi ek yük getirmektedir. Bu nedenle alt bölge ayrıştırma yönteminin en etkili olacağı problem türü çok serbestlikli ve rijitlik matrisi hesabı için çokça matematik işlem gerektiren elemanların olduğu problemlerdir. Ayrıca, tez kapsamında, son kullanıcının tanımladığı Sonlu Elemanlar nesnelerini otomatik olarak alt bölgelere bölen ve gerekli alt bölge hesaplamalarını gerçekleştiren standart bileşenler de sunulmaktadır. Bu bileşenlerden ilki“Container”nesnesidir. Bu nesne sistemi geometrik özellikleri itibari ile içlerinde birbirlerine yakın sayıda eleman bulunacak şekilde alt bölgelere ayırmak üzere programlanmıştır.“Container”nesnesi, kendisine girdi olarak verilen nokta değerlerini her bölgede bulunabilecek nokta sayısını limitleyerek gruplandırır. Gruplama işlemini, verilen noktaları kapsayan, problem uzay boyutuna göre en küçük dikdörtgen ya da küpün en büyük boyutunu ortadan ikiye bölerek yapar. Nokta sayısı limiti aşılıyorsa, bu işlemi tekrarlı bir şekilde gerçekleştirmeye devam eder. Her bölme işleminde, o seviyedeki bölümleri“0”ve“1”olarak adlandırır. Bölme işlemi devam ettikçe bölünen uzaysal alanların isimlerinin yanına“0”ve“1”gelmeye devam eder. Bu adlandırma neticesinde bölümler birbirlerinden ayrıştırılır ve gruplandırılır. Her“node”nesnesine bulunduğu grubun ismi atanır. Bu grup isimleri daha sonra alt alan ayrıştırması yapılırken kullanılacaktır. Bileşenlerden ikincisi“Subdomain”nesnesidir. Bu nesne,“Container”tarafından belirlenen alt bölgeleri kendi içlerinde birer Sonlu Eleman elemanına dönüştürülür. Bu haliyle her bir“Subdomain”, kendi Rijitlik Matrisi, kendi Yük Vektörleri ve kendi serbestlikleri ile tıpkı tekil bir elemanmışçasına ana sisteme dahil olabilmektedir.“Container”tarafından gruplanan“Node”nesnelerine bağlı olan“Element”yani eleman nesnelerine, kendisini oluşturan“Node”lardan ilkinin grubu tanımlanır. Bileşenlerden üçüncüsü“Decompose”nesnesidir. Bu nesne, ilgili alt bölge çözümlerini tetikler ve bu çözümleri toplayarak birleştirir ve“Master Çözüm”diye tabir edilen sistem çözümünü gerçekleştirir. Çözümün elde edilebilmesi için öncelikle“Decompose”nesnesi“Master Interface”olarak tanımlanan alt alanların sınırlarını tespit etmelidir. Bunun için daha önce“Node”ve elemanlara atanan gruplar kullanılır. Eğer bir“Node”a bağlı olan elemanların tümü aynı gruptaysa o“Node”alt alanın içinde, eğer bir“Node”a bağlı olan elemanlardan en az iki tanesi farklı gruptaysa o“Node”ana arayüzde kabul edilir. Ayrıca eğer bir“Node”un serbestliklerinden herhangi biri tutuluysa o“Node”yine ana arayüzde olarak kabul edilir.“Master Interface”tespit edildikten sonra“Decompose”nesnesi tarafından daha önce atanan gruplar kullanılarak alt alanlar oluşturulur. Çözüm elde edebilmek için önce oluşturulan alt alanların eleman matrisleri daha sonra da bu matrisler kullanılarak ana sistem rijitlik matrisi elde edilir. Bu amaçla öncelikle“Master Interface”üzerinde bulunan“Master Node”lar isimlendirilir. Bu isimlendirme işlemine aynı zamanda numaralandırma da denir. Her alt bölgenin, barındırdıkları iç ve“Master Node”ları için bağımsız numaralandırmaları vardır. Her alt bölge ihtiva ettikleri elemanları kullanarak rijitlik matrisi, eleman yük vektörü ve nodal yük vektörü gibi değerlerini hesaplarlar. Bu değerler daha sonra“Node”numaralandırmaları kullanılarak“Assemble”edilecek yani birleştirilecek ve ana sistem rijitlik matrisi ve yük vektörleri elde edilecektir. Çözüm yapıldıktan sonra, her alt bölgenin özel ve genel isimlendirmeleri kullanılarak elde edilen çözümün alt bölgelerdeki“Node”larda ilgili yer değiştirme değerlerine yazılması gerekir. Çözümün alt bölgelere gönderilmesinden sonra her bölgede elemanlar ve“Node”lar için gerilme analizleri de yapılır. Bu hesaplar da tüm sistemden bağımsız olduğu için her alt bölgede paralel bir şekilde yapılabilir. Tezin sonuç kısmında, alt bölge çözümlerinin kaydedilerek yeniden kullanılmasının Sonlu Eleman Analiz hızına olan etkileri çeşitli örnek katı mekaniği uygulamaları ve çeşitli alt bölge bölme sayıları kullanılarak değerlendirilmiştir. Farklı serbestlik derecelerine sahip problemlerde beş farklı durum için çözümler yapılmış ve karşılaştırmaları verilmiştir. Bu beş durum şu şekilde sıralanabilir: (0) hiçbir değişiklik yapmadan tekrar çözüm, (1) tüm alt bölgelerde sadece rijitlik matris hesaplamasını tekrar yaptıracak bir değişikliğin uygulanması, (2) tüm alt bölgelerde eleman yük vektörlerinin tekrar hesaplanmasını sağlayacak bir değişikliğin uygulanması, (3) tek bir alt bölgede rijitlik matrisinin tekrar hesaplanmasını sağlayacak bir değişikliğin uygulanması, (4) tek bir alt bölgede bir“Node”daki dış yükün değiştirilmesi. Böylece alt bölge çözümlerinin kaydedilerek tekrar kullanılmasının farklı durumlar için performansa etkisi incelenmiştir.
Özet (Çeviri)
Domain decomposition methods in Finite Elements (FE) can be summarized as dividing the boundary value problem into smaller boundary value problems in subdomains and using the realized subdomain solutions to coordinate a general solution of the given system domain. Domain decomposition methods are appropriate for parallel computing since the problem on a prescribed subdomain can be partially solved independent of the whole system domain, thus, those individual solutions can be implemented on different CPUs and subsequently combined. The independence aspect of the subdomain solutions not only enables parallel programming but also allows for the efficient storage and reuse of the already realized subdomain solutions in other systems. Thus, it is possible to implement existing subdomain solutions instead of having to completely rework the problem in the event of minor changes to a few components of the system, potentially saving significant calculation time. In this thesis, a domain decomposition framework interface is proposed that, by adding a few straightforward definitions to the end-user code, will automatically enhance a traditional FE application written in Python to support domain decomposition with self-registering and reusable subdomains. To register and reuse a subdomain solution, it is necessary to create a hash string that uniquely represents the corresponding subdomain. This includes traversing all the properties of all individual items that make up the subdomain, such as all element and node properties and all boundary conditions. Special Python decorators that enable the end user to introduce variables of the functions in the end user code to the decomposition framework have been developed to streamline the process. In addition, standard components that automatically decompose end-user-defined FE objects into subdomains are also presented within the scope of the thesis. As a result, using various sample solid mechanics applications, the contribution of the proposed framework to the analysis speed is evaluated.
Benzer Tezler
- Yüksek yapıların dinamik karakteristiklerinin belirlenmesi için açık kaynaklı bir yazılım geliştirilmesi
Development of open source software for determining the dynamic characteristics of high structures
AHMET FURKAN UĞUR
Yüksek Lisans
Türkçe
2023
Deprem MühendisliğiGebze Teknik Üniversitesiİnşaat Mühendisliği Ana Bilim Dalı
DR. ÖĞR. ÜYESİ AHMET ANIL DİNDAR
- Solution of electromagnetics problems with the equivalence principle algorithm
Elektromanyetik problemlerin eşdeğerlik prensibi yöntemiyle çözümleri
BURAK TİRYAKİ
Yüksek Lisans
İngilizce
2010
Elektrik ve Elektronik Mühendisliğiİhsan Doğramacı Bilkent ÜniversitesiElektrik-Elektronik Mühendisliği Ana Bilim Dalı
PROF. DR. LEVENT GÜREL
- Implementation of the equivalence principle algorithm for potential integral equations
Potansiyel integral denklemler için eşdeğerlik prensibi algoritmasının uygulanması
ALI FARSHKARAN
Yüksek Lisans
İngilizce
2018
Elektrik ve Elektronik MühendisliğiOrta Doğu Teknik ÜniversitesiElektrik-Elektronik Mühendisliği Ana Bilim Dalı
DOÇ. DR. ÖZGÜR SALİH ERGÜL
- Computational analysis of external store carriage in transonic speed regime
Harici yük taşımanın transonik sürat bölgesinde hesaplamalı analizi
İ. CENKER ASLAN
Yüksek Lisans
İngilizce
2003
Havacılık Mühendisliğiİstanbul Teknik ÜniversitesiUçak Mühendisliği Ana Bilim Dalı
DOÇ. DR. AYDIN MISIRLIOĞLU
PROF. DR. OKTAY BAYSAL
- Parallel process in computational fluid dynamics
Hesaplamalı akışkanlar mekaniğinde paralel işlem
H. SİYAMİ ERSOY
Yüksek Lisans
İngilizce
2000
Astronomi ve Uzay Bilimleriİstanbul Teknik ÜniversitesiPROF.DR. A. RÜSTEM ASLAN