प्रश्न: परिमित तत्व मैट्रिक्स की विरलता संरचना की सही और कुशलता से गणना करने के लिए कौन से तरीके उपलब्ध हैं?
जानकारी: मैं एक पॉसन प्रेशर इक्वेशन सॉल्वर पर काम कर रहा हूं, सी में लिखा गया द्विघात आधार के साथ गैलेरिक की विधि का उपयोग करके, और विरल मैट्रिक्स भंडारण और केएसपी दिनचर्या के लिए पेट्सक का उपयोग कर रहा हूं। PETSc को कुशलता से उपयोग करने के लिए, मुझे वैश्विक कठोरता मैट्रिक्स के लिए मेमोरी को पूर्व-आवंटित करने की आवश्यकता है।
वर्तमान में, मैं प्रति पंक्ति नॉनज़रोज़ की संख्या का अनुमान लगाने के लिए एक मॉक असेंबली कर रहा हूं (स्यूडोकोड)
int nnz[global_dim]
for E=1 to NUM_ELTS
for i=1 to 6
gi = global index of i
if node gi is free
for j=1 to 6
gj = global index of j
if node gj is free
nnz[i]++
हालाँकि, यह nnz को कम कर देता है क्योंकि कुछ नोड-नोड इंटरैक्शन कई तत्वों में हो सकते हैं।
मैंने इस बात पर विचार करने की कोशिश की है कि मुझे कौन सा, j इंटरैक्शन मिला है, लेकिन मैं इस बात को लेकर अनिश्चित हूं कि बिना मेमोरी का उपयोग किए यह कैसे किया जाए। मैं नोड्स पर भी लूप कर सकता हूं, और उस नोड पर केंद्रित आधार फ़ंक्शन का समर्थन पा सकता हूं, लेकिन फिर मुझे प्रत्येक नोड के लिए सभी तत्वों के माध्यम से खोजना होगा, जो अक्षम लगता है।
मुझे यह हालिया सवाल मिला , जिसमें कुछ उपयोगी जानकारी थी, खासकर स्टीफनो एम, जिन्होंने लिखा था
मेरी सलाह है कि इसे अजगर या सी में लागू करें, कुछ ग्राफ सैद्धांतिक अवधारणाओं को लागू करें, अर्थात मैट्रिक्स में तत्वों को एक ग्राफ में किनारों के रूप में मानें और आसन्न मैट्रिक्स की स्पार्सिटी संरचना की गणना करें। सूचियों की सूची या कुंजियों का शब्दकोश आम विकल्प हैं।
मैं इस बारे में अधिक जानकारी और संसाधनों की तलाश कर रहा हूं। मैं वास्तव में बहुत ग्राफ सिद्धांत नहीं जानता, और मैं उन सभी सीएस ट्रिक्स से परिचित नहीं हूं जो उपयोगी हो सकती हैं (मैं गणितीय पक्ष से यह आ रहा हूं)।
धन्यवाद!