क्या कोई "लाइट-वेट" FEM पैकेज हैं?


9

मूल रूप से, FEM एक समस्या है जो बहुत अधिक "हल" है। कई शक्तिशाली चौखटे मौजूद हैं, जैसे त्रिलीनोस, पेट्सक, फेनीसीएस, लिबमेश या एमओओएसई।

एक चीज जो उनके पास आम है: वे हैं बेहद "भारी-वजन"। सबसे पहले, स्थापना सामान्य रूप से सुपर दर्दनाक है। दूसरा, उनका इंटरफ़ेस / एपीआई मोटा और भारी है - आपको अपने संपूर्ण विचार को संबंधित पुस्तकालय की सोच में अनुवाद करना होगा। इसका मतलब यह भी है कि, विशेष आवश्यकताओं या मौजूदा कोड के लिए अंतर और विस्तार मुश्किल है।

अन्य परियोजनाएं जैसे (यादृच्छिक उदाहरण) बूस्ट, लिबिजएल, एज़्टेक (लीनियर सॉल्वर), ईगेन या सीजीएएल प्रदर्शित करती है कि शक्तिशाली पुस्तकालयों को लिखना संभव है जो सी + + या पायथन कोड में एकीकृत होते हैं, बहुत दुबला और साफ इंटरफ़ेस के साथ, स्थापना की आवश्यकता के बिना। एक सुपर भारी ढांचे की।

क्या FEM के लिए वास्तव में हल्का पैकेज है? मैं आसान, ऑटोमैटिक सॉल्वर की तलाश नहीं कर रहा हूं - मैं एक ऐसी लाइब्रेरी की तलाश कर रहा हूं जो एक लीनियर इंटरफेस बनाए रखते हुए पावरफुल फंक्शन देती हो, कॉमन डेटास्ट्रक्चर (उदाहरण के लिए C ++ STL) और लाइटवेट इंस्टॉलेशन (उदाहरण के लिए हैडर) के साथ इंटरऑपरेबिलिटी।


1
क्या आप FEM पुस्तकालयों या FEM अनुप्रयोगों के बारे में पूछ रहे हैं?
nicoguaro

2
"एक दुबला इंटरफ़ेस बनाए रखते हुए शक्तिशाली कार्य प्रदान करता है", यह थोड़ा विरोधाभासी नहीं है। मैं फेनिक्स और डील.आई का उपयोग करता हूं और इसे स्थापित करने या यहां तक ​​कि उपयोग करने के लिए मुश्किल नहीं है। फेनिक्स बायनेरिज़ के साथ आता है जिसे आप आसानी से स्थापित कर सकते हैं। Deal.II में कई इंस्टॉलेशन विकल्प हैं जैसे कि Linuxbrew, Homebrew, Candi, आदि। मैं एक को चुनने और इसे अच्छी तरह से सीखने की सलाह दूंगा। प्रारंभिक शिक्षण वक्र पार करने के बाद यह अच्छी तरह से भुगतान करेगा। मैं छोटी समस्याओं के लिए फेनिक्स का उपयोग करता हूं, जल्दी से कुछ विचार का परीक्षण करता हूं और कुछ शिक्षण के लिए भी। बड़ी समस्याओं के लिए, समानांतर कंप्यूटिंग, मैं Deal.II पसंद करता हूं। दोनों के पास अच्छे दस्तावेज हैं।
cfdlab

1
@PraveenChandrashekar: शक्तिशाली कार्य और दुबला इंटरफ़ेस बिल्कुल विरोधाभासी नहीं है। उदाहरण के लिए libigl, बूस्ट या Numpy पर एक नज़र डालें। हां, फेनिक्स का उपयोग करना आसान लगता है, लेकिन मौजूदा एप्लिकेशन में उदाहरण के लिए एकीकृत करना बोझिल होगा। कल्पना कीजिए कि आपके पास एक छोटा खेल है जहां आपको वास्तविक समय FEM कोड (उदाहरण के रूप में) को एकीकृत करने की आवश्यकता है।
माइकल

2
मैं @PraveenChandrashekar से सहमत हूं, लेकिन इससे परे, मेरा मानना ​​है कि प्रश्न, जैसा कि सामने आया, अचूक है। कम से कम, आपको एक पीडीई का एक उदाहरण प्रदान करना होगा जिसे आप एफईएम के साथ हल करना चाहते हैं और जो कार्यक्षमता आप "लाइटवेट" लाइब्रेरी चाहते हैं वह आपको ऐसा करने में मदद करेगी।
बिल ग्रीन

1
एक साधारण सी बात जो मेरे दिमाग में आती है वह है SfePy , मैं इसे डाउनलोड करता हूं और यह 7 एमबी है। मैंने हेमीज़ की भी जाँच की , और यह 10 एमबी है, मैंने इसे हालांकि कोशिश नहीं की है (लेकिन मैंने एग्रोस 2 डी की कोशिश की है)। यहाँ अधिक विकल्प हैं: en.wikipedia.org/wiki/List_of_finite_element_software_packages
nicoguaro

जवाबों:


10

मैं Python 2.7 में एक हल्के परिमित तत्व पुस्तकालय का विकास कर रहा हूं, जो NumPy सरणियों और SciPy विरल मैट्रिस की शक्ति का उपयोग कर रहा है। सामान्य विचार यह है कि एक जाली और एक परिमित तत्व दिया गया है, आपके पास बिलिनियर फॉर्म और एक (विरल) मैट्रिक्स के बीच एक-से-एक-से-एक पत्राचार है। उपयोगकर्ता तब परिणामी मैट्रिक्स का उपयोग कर सकता है जैसा कि वह फिट देखता है।

मैं एक विहित उदाहरण प्रस्तुत करता हूं जहां हम एक यूनिट लोडिंग के साथ एक यूनिट स्क्वायर में पॉइसन समीकरण को हल करते हैं।

from spfem.mesh import MeshTri
from spfem.asm import AssemblerElement
from spfem.element import ElementTriP1
from spfem.utils import direct

# Create a triangular mesh. By default, the unit square is meshed.
m=MeshTri()

# Refine the mesh six times by splitting each triangle into four
# subtriangles repeatedly.
m.refine(6)

# Combine the mesh and a type of finite element to create
# an assembler. By default, an affine mapping is used.
a=AssemblerElement(m,ElementTriP1())

# Assemble the bilinear and linear forms. The former outputs
# a SciPy csr_matrix and the latter outputs linear NumPy array.
A=a.iasm(lambda du,dv: du[0]*dv[0]+du[1]*dv[1])
b=a.iasm(lambda v: 1.0*v)

# Solve the linear system in interior nodes using
# a direct solution method provided by SciPy.
x=direct(A,b,I=m.interior_nodes())

# Visualize the solution using Matplotlib.
m.plot3(x)
m.show()

अन्य टिप्पणी:

  • मेरा लक्ष्य कठोर अभिसरण इकाई परीक्षण लिखना है, जैसे कि संबंधित मानदंडों में सैद्धांतिक अभिसरण दर प्राप्त की जाती है। प्रत्येक परिवर्तन पर परीक्षण स्वचालित रूप से चलाए जाते हैं।
  • नए तत्वों को लागू करना काफी आसान है।

आप GitHub में परियोजना पा सकते हैं ।

कोड का पायथन 3 संस्करण यहां पाया जा सकता है


4

मुझे लगता है कि आपको कुछ भ्रम है। पीईटीएससी फेनिक्स, लिबमेश, मूस आदि के समान लीग में नहीं है। वास्तव में, ये सभी (हैवीवेट) पैकेज रैखिक बीजगणित के लिए पेट्सक का उपयोग करते हैं।

IMHO PETSc उतना ही हल्का है जितना आप प्राप्त कर सकते हैं। इसके लिए बस C / फोरट्रान कंपाइलर और पाइथन की आवश्यकता होती है (जिसका उपयोग केवल कॉन्फ़िगरेशन के लिए किया जाता है) और आप अपने लैपटॉप पर 5 मिनट के अंदर लाइब्रेरी का निर्माण कर सकते हैं। इसके अलावा, FE कोड का सबसे जटिल हिस्सा समानांतर असेंबली और हल है और PETSc दोनों का ध्यान रखता है। बाकी (जैसे, तत्व स्तर की गणना) सीधा है।

Trillinos, OTOH एक रेखीय बीजगणित की रूपरेखा से बहुत अधिक है, उदाहरण के लिए, एज़्टेक (रैखिक विलायक) जिसका आप उल्लेख करते हैं। कुछ मायनों में Azill in Trillinos की तुलना PETSc से की जा सकती है।


1
वास्तव में उस मामले में "समानांतर विधानसभा" से आपका क्या मतलब है? बस मैट्रिक्स / वेक्टर तत्वों का संचार, या अधिक है? मैं मैनुअल अर्द्ध thorougly पढ़ा है, लेकिन मैं (लीनियर सॉल्वर में संचार की के अलावा) विधानसभा के बारे में ज्यादा नहीं मिला (मैनुअल: mcs.anl.gov/petsc/petsc-current/docs/manual.pdf )
माइकल

4

मैं अखरोट की सिफारिश कर सकता हूं

nutils कम से कम आपके "हल्के-वजन" आवश्यकताओं को पूरा करता है।

  • यह शुद्ध अजगर है और आसान स्थापित करने के लिए है, क्योंकि यह केवल मानक अजगर लाइब्रेरी पर निर्भर करती numpy , scipy , और matplotlib
  • और, इस प्रकार, यह अंतर के लिए अच्छी तरह से अनुकूल है। कम से कम डेवलपर्स का दावा है कि

"उजागर वस्तुएं देशी अजगर प्रकार की हैं या तीसरे पक्ष के उपकरणों का लाभ उठाने के लिए आसान रूपांतरण की अनुमति देती हैं।"


यह एक बहुत ही रोचक परियोजना है! मैं इसके बारे में नहीं जानता था और लक्ष्य मेरे जैसे ही प्रतीत होते हैं। उनके पास निश्चित रूप से कुछ अच्छे डेमो वीडियो हैं ...
knl
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.