मैंने एक रैखिक दोष सुधार (LDC) और पूर्ण सन्निकटन योजना (FAS) दोनों का उपयोग करके एक वी-साइकिल मल्टीग्रिड सॉल्वर लागू किया है।
मेरी समस्या निम्नलिखित है: एलडीसी का उपयोग करके प्रति चक्र ~ 0.03 के कारक से अवशिष्ट को कम किया जाता है। एफएएस कार्यान्वयन एक रैखिक कारक के साथ भी परिवर्तित होता है, लेकिन कारक केवल ~ 0.58 है। इस प्रकार एफएएस को चक्रों की संख्या के 20 गुना की आवश्यकता होती है।
अधिकांश कोड साझा किए गए हैं, केवल अंतर नीचे / ऊपर की गणनाओं का है, एलडीसी का उपयोग करता है
नीचे:
यूपी:
और FAS का उपयोग करता है
नीचे:
यूपी:
मेरी परीक्षा सेटिंग ब्रिगेड के "ए मल्टीग्रिड ट्यूटोरियल, सेकंड एडिशन", पी से है। 64, विश्लेषणात्मक समाधान है
साथ में
और समीकरण है लाप्लास-ऑपरेटर के रूप में ठेठ रैखिक 5-पॉइंट स्टैंसिल का उपयोग करना । प्रारंभिक अनुमान है।
परीक्षण सेटिंग बदलना, जैसे तुच्छ के प्रारंभिक अनुमान का उपयोग करना परिणाम लगभग एक ही अभिसरण कारकों में।
चूंकि केवल डाउन / अप कोड अलग है, एलडीसी परिणाम पुस्तक का अनुपालन करते हैं और एफएएस कम से कम काम भी करने लगता है, मेरे पास कोई आइडिया नहीं है कि यह एक ही रैखिक सेटिंग में इतना धीमा क्यों है।
एलडीसी और एफएएस दोनों में एक अजीब व्यवहार है जिसे मैं अभी तक समझा नहीं सकता हूं कि केवल तब होता है जब प्रारंभिक अनुमान खराब होता है (जैसे लेकिन मेरे पूर्ण मल्टीग्रिड प्रयोगों में भी जहां नए ठीक ग्रिड के लिए प्रक्षेप से अवशिष्ट बढ़ जाता है सेवा ): अगर मैं पोस्ट सुधार सुधारों की संख्या को बहुत अधिक संख्या तक बढ़ाता हूं, जैसे कि मोटे ग्रिड पर मशीन परिशुद्धता के लिए हल किया जाता है, तो यह अगले ठीक ग्रिड तक एक कदम जाने पर लगभग सभी अंक खो देता है।
चूंकि एक चित्र शब्दों से अधिक कहता है:
// first cycle, levels 0-4
// DOWN
VCycle top 4, start res_norm 3.676520e+02 // initial residual
VCycle top 4, cycle 0, current 4, res_norm 3.676520e+02
VCycle top 4, cycle 0, current 4, res_norm 1.520312e+02 // relaxed (2 iterations)
VCycle tau_norm 2.148001e+01 (DEBUG calculation)
VCycle top 4, cycle 0, current 3, res_norm 1.049619e+02 // restricted
VCycle top 4, cycle 0, current 3, res_norm 5.050392e+01 // relaxed (2 iterations)
VCycle top 4, cycle 0, current 2, res_norm 3.518764e+01 // restricted
VCycle top 4, cycle 0, current 2, res_norm 1.759372e+01 // relaxed (2 iterations)
VCycle top 4, cycle 0, current 1, res_norm 1.234398e+01 // restricted
VCycle top 4, cycle 0, current 1, res_norm 4.728777e+00 // relaxed (2 iterations)
VCycle top 4, cycle 0, current 0, res_norm 3.343750e+00 // restricted
// coarsest grid
VCycle top 4, cycle 0, current 0, res_norm 0.000000e+00 // solved
// UP
VCycle top 4, cycle 0, current 1, res_norm 3.738426e+00 // prolonged
VCycle top 4, cycle 0, current 1, res_norm 0.000000e+00 // relaxed (many iterations)
VCycle top 4, cycle 0, current 2, res_norm 1.509429e+01 // prolonged (loosing digits)
VCycle top 4, cycle 0, current 2, res_norm 2.512148e-15 // relaxed (many iterations)
VCycle top 4, cycle 0, current 3, res_norm 4.695979e+01 // prolonged (loosing digits)
VCycle top 4, cycle 0, current 3, res_norm 0.000000e+00 // relaxed (many iterations)
VCycle top 4, cycle 0, current 4, res_norm 1.469312e+02 // prolonged (loosing digits)
VCycle top 4, cycle 0, current 4, res_norm 9.172812e-24 // relaxed (many iterations)
मुझे यकीन नहीं है कि प्रति चक्र केवल कुछ अंक प्राप्त हो सकते हैं या यदि यह ठीक ग्रिड के लिए प्रक्षेप के दौरान एक त्रुटि को इंगित करता है। यदि यह बाद का मामला है, तो एलडीसी हमेशा के लिए 2 विश्रामों का उपयोग करते समय ~ 0.03 की पुस्तक-संबंधी अवशिष्ट अनुपात कैसे प्राप्त कर सकता है?