ฉันใช้ตัวแก้ไขมัลติ - กริด V-Cycle โดยใช้ทั้งการแก้ไขข้อบกพร่องเชิงเส้น (LDC) และโครงร่างการประมาณแบบเต็ม (FAS)
ปัญหาของฉันคือต่อไปนี้: การใช้ LDC ที่เหลือจะลดลงโดยปัจจัย ~ 0.03 ต่อรอบ การปรับใช้ FAS จะรวมเข้ากับปัจจัยเชิงเส้นด้วยเช่นกัน แต่ปัจจัยเพียง 0.58 เท่านั้น ดังนั้น FAS ต้องการประมาณ 20 เท่าของจำนวนรอบ
ส่วนใหญ่ของรหัสที่ใช้ร่วมกันความแตกต่างเพียงอย่างเดียวคือการคำนวณขึ้น / ลง, LDC ใช้
ลง:
ขึ้น:
และ FAS ใช้
ลง:
ขึ้น:
การตั้งค่าการทดสอบของฉันมาจาก "A Multigrid Tutorial, Second Edition" ของ Brigg 64 มีวิธีวิเคราะห์
กับ
และสมการก็คือใช้ทั่วไปเชิงเส้น 5 จุดลายฉลุเป็น Laplace-Operator Lเดาแรกคือ 0
การเปลี่ยนการตั้งค่าการทดสอบเช่นเป็นเกร็ดเล็กเกร็ดน้อยโดยใช้การคาดเดาเริ่มต้นของส่งผลให้ปัจจัยการลู่เข้าเกือบเหมือนกัน
เนื่องจากรหัสดาวน์ / อัพแตกต่างกันเท่านั้นผลลัพธ์ของ LDC ก็สอดคล้องกับหนังสือและ FAS อย่างน้อยก็ดูเหมือนว่าจะใช้ได้เช่นกันฉันจึงไม่คิดเลยว่าทำไมมันจึงช้ากว่ามากในการตั้งค่าแบบเชิงเส้นเดียวกัน
มีพฤติกรรมแปลก ๆ หนึ่งทั้งใน LDC และ FAS ที่ฉันไม่สามารถอธิบายได้เลยว่าจะเกิดขึ้นถ้าเดาเริ่มต้นที่ไม่ดี (เช่นแต่ยังอยู่ในการทดลอง multigrid ของฉันเต็มไปที่การแก้ไขไปยังตารางปรับใหม่เพิ่มที่เหลือจากถึง ): ถ้าฉันเพิ่มจำนวนการผ่อนคลายการแก้ไขภายหลังเป็นจำนวนที่สูงมากซึ่งวิธีแก้ปัญหาจะแก้ไขความแม่นยำของเครื่องจักรบนกริดหยาบมันจะสูญเสียตัวเลขเกือบทั้งหมดเมื่อขึ้นหนึ่งก้าว ไปที่กริดถัดไป
เนื่องจากรูปภาพพูดมากกว่าคำพูด:
// 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)
ฉันไม่แน่ใจว่าจะมีเพียงไม่กี่หลักที่ได้รับต่อรอบหรือถ้านี่แสดงถึงข้อผิดพลาดในระหว่างการแก้ไขกับตารางที่ดี หากเป็นกรณีหลัง LDC จะสามารถบรรลุอัตราส่วนที่เหลือโดยการทำหนังสือได้เท่ากับ 0.03 เมื่อใช้การผ่อนคลาย 2 ครั้งเสมออย่างไร