!SOLVER¶
การควบคุมตัวแก้สมการ
ข้อมูลควบคุมที่จำเป็น
พารามิเตอร์¶
METHOD = วิธีแก้ (CG, BiCGSTAB, GMRES, GPBiCG, CR, DIRECT, DIRECTmkl, MUMPS)
DIRECT : วิธีตรงสำหรับกรณีที่ไม่ใช่การวิเคราะห์การสัมผัส (เฉพาะการประมวลผลแบบลำดับ) (ขณะนี้ใช้งานไม่ได้)
DIRECTmkl : วิธีตรงโดยใช้ Intel MKL
MUMPS : วิธีตรงโดยใช้ MUMPS
เมื่อเลือกวิธีตรง บรรทัดข้อมูลจะถูกละเว้น
วิธีทำซ้ำสำหรับปัญหา 3 องศาอิสระสามารถใช้การประมวลผลแบบขนานด้วยเธรดผ่าน OpenMP
PRECOND = วิธีพรีคอนดิชันสำหรับตัวแก้แบบวนซ้ำ (1, 2, 3, 5, 10, 11, 12, 22)
1, 2 : (Block) SSOR (มีการจัดลำดับหลายสีเฉพาะสำหรับปัญหา 3 องศาอิสระ)
3 : (Block) Diagonal Scaling
5 : AMG โดยใช้แพ็กเกจพรีคอนดิชันมัลติกริด ML
10 : Block ILU(0)
11 : Block ILU(1)
12 : Block ILU(2)
22 : AMG โดยใช้ SA-AMG (Smoothed Aggregation AMG) ที่ติดตั้งใน HEC-MW
10, 11, 12 ใช้ได้เฉพาะกับปัญหา 3 องศาอิสระ
22 ใช้ได้เฉพาะกับบิลด์ที่เปิดใช้ LAPACK
สำหรับการประมวลผลแบบขนานด้วยเธรด OpenMP แนะนำ SSOR, Diagonal Scaling, ML หรือ SA-AMG
ITERLOG = ระบุว่าจะส่งออกประวัติการลู่เข้าของตัวแก้แบบวนซ้ำหรือไม่ (YES/NO)(ค่าเริ่มต้น: NO)
TIMELOG = ระบุว่าจะส่งออกเวลาคำนวณของตัวแก้สมการหรือไม่ (YES/NO/VERBOSE)(ค่าเริ่มต้น: NO)
LOGLEVEL = ระดับการส่งออกข้อมูลวินิจฉัยของพรีคอนดิชัน (จำนวนเต็ม)(ค่าเริ่มต้น: ไม่ส่งออก)
ระบุแยกจาก ITERLOG และ TIMELOG
เมื่อมีค่า 1 ขึ้นไป จะส่งออกโครงสร้างลำดับชั้นและข้อมูลอื่นของพรีคอนดิชันแบบ AMG (PRECOND=5, 22)
เมื่อมีค่า 2 ขึ้นไป จะส่งออกข้อมูลที่ละเอียดขึ้นอีก (เช่น การใช้หน่วยความจำ)
USEJAD = ระบุว่าจะใช้การจัดลำดับสำหรับเครื่องเวกเตอร์หรือไม่ (YES/NO)(ค่าเริ่มต้น: NO)
ใช้ได้เฉพาะเมื่อใช้วิธีทำซ้ำกับปัญหา 3 องศาอิสระ
SCALING = ระบุว่าจะสเกลเมทริกซ์ให้สมาชิกแนวทแยงเป็น 1 หรือไม่ (YES/NO)(ค่าเริ่มต้น: NO)
ใช้ได้เฉพาะเมื่อใช้วิธีทำซ้ำกับปัญหา 3 องศาอิสระ
DUMPTYPE = รูปแบบการดัมป์เมทริกซ์ (NONE, MM, CSR, BSR) (ใช้หลัก ๆ สำหรับการดีบัก)
NONE : ไม่ดัมป์ (ค่าเริ่มต้น)
MM : รูปแบบ Matrix Market
CSR : รูปแบบ Compressed Sparse Row (CSR)
BSR : รูปแบบ Blocked CSR
DUMPEXIT = จบโปรแกรมทันทีหลังดัมป์เมทริกซ์ (YES/NO)(ค่าเริ่มต้น: NO)
MPCMETHOD = วิธีประมวลผลข้อจำกัดหลายจุด (1, 3)
1: วิธีเพนัลตี (ค่าเริ่มต้นเมื่อใช้วิธีตรง)
3: การกำจัดองศาอิสระแบบชัดแจ้ง (ค่าเริ่มต้นเมื่อใช้วิธีทำซ้ำ)
วิธี MPC-CG หมายเลข 2 ถูกนำออกแล้ว หากระบุ 2 จะแสดงคำเตือนแล้วประมวลผลด้วยวิธีเริ่มต้น
ESTCOND = ความถี่ของการประมาณเลขเงื่อนไข (ทดลอง)
ประมาณเลขเงื่อนไขทุกช่วงการวนซ้ำที่ระบุ และเมื่อสิ้นสุดการวนซ้ำ
หากระบุ 0 จะไม่ทำการประมาณ
RECOMPUTE_RESIDUAL = ความถี่ในการคำนวณเวกเตอร์เศษเหลือใหม่
ใช้ได้เฉพาะเมื่อระบุ CG, BiCGSTAB, GPBiCG หรือ PipeCG ให้ METHOD
วิธีทำซ้ำจะอัปเดตเวกเตอร์เศษเหลือด้วยความสัมพันธ์เวียนเกิด จึงทำให้ความคลาดเคลื่อนจากการปัดเศษสะสม
ทุกช่วงการวนซ้ำตามจำนวนที่ระบุ จะคำนวณเวกเตอร์เศษเหลือใหม่จาก {b}-[A]{x}
เมื่อระบุ 0 จะใช้ค่าเริ่มต้นของแต่ละวิธี (CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50)
เมื่อระบุค่าลบ จะไม่ทำการคำนวณใหม่เป็นระยะ
เมื่อผ่านเกณฑ์การลู่เข้า จะทำการคำนวณใหม่เพื่อยืนยันเสมอโดยไม่ขึ้นกับการตั้งค่านี้
หากกำหนดช่วงสั้นเกินไป ไม่เพียงแต่จะเพิ่มการคูณเมทริกซ์กับเวกเตอร์เท่านั้น แต่ยังอาจ
ทำให้การลู่เข้าแย่ลงหรือทำให้คำตอบไม่ลู่เข้าอีกต่อไป
หลังจากเปลี่ยนการตั้งค่านี้จากค่าเริ่มต้น ให้ตรวจสอบประวัติการลู่เข้าและเศษเหลือสัมพัทธ์สุดท้าย
METHOD2 = วิธีแก้รอง (BiCGSTAB, GMRES, GPBiCG) (ทดลอง)
ใช้ได้เฉพาะเมื่อระบุ CG ให้ METHOD
หากวิธี CG ลู่ออก จะสลับไปยังวิธีรองโดยอัตโนมัติและแก้ปัญหาต่อ
พารามิเตอร์อื่นและข้อมูลในบรรทัดข้อมูลใช้ค่าเดียวกัน
CONTACT_ELIM = ระบุว่าจะทำการกำจัดองศาอิสระในการวิเคราะห์การสัมผัสหรือไม่ (0,1)
0: ทำการกำจัดองศาอิสระเฉพาะเมื่อใช้วิธีทำซ้ำ (ค่าเริ่มต้น)
1: ทำการกำจัดองศาอิสระเสมอ (รวมถึงเมื่อใช้วิธีตรง)
** ตั้งแต่บรรทัดที่ 2 เป็นต้นไป **
| ชื่อตัวแปร | คุณลักษณะ | เนื้อหา |
|---|---|---|
| NITER | I | จำนวนการวนซ้ำ (ค่าเริ่มต้น: 100) |
| iterPREmax | I | จำนวนรอบของพรีคอนดิชันแบบ Additive Schwarz (ค่าเริ่มต้น: 1) (ค่าที่แนะนำคือ 1; ในการคำนวณแบบขนานบางกรณี 2 อาจมีประสิทธิผล) |
| NREST | I | จำนวนซับสเปซ Krylov (ค่าเริ่มต้น: 10) (ใช้ได้เฉพาะเมื่อเลือก GMRES เป็นวิธีแก้) |
| NCOLOR_IN | I | จำนวนสีเป้าหมายในการจัดลำดับหลายสี (ค่าเริ่มต้น: 10) (ใช้ได้เฉพาะเมื่อจำนวนเธรด OpenMP ตั้งแต่ 2 ขึ้นไป) |
| RECYCLEPRE | I | จำนวนครั้งที่ใช้ข้อมูลการตั้งค่าพรีคอนดิชันซ้ำ (ค่าเริ่มต้น: 3) (ใช้ได้เฉพาะในการวิเคราะห์ไม่เชิงเส้น) |
| ชื่อตัวแปร | คุณลักษณะ | เนื้อหา |
|---|---|---|
| RESID | R | ค่าคลาดเคลื่อนตัดทอน (ค่าเริ่มต้น: 1.0e-8) |
| SIGMA_DIAG | R | ตัวคูณที่ใช้กับสมาชิกแนวทแยงเมื่อคำนวณเมทริกซ์พรีคอนดิชัน (ค่าเริ่มต้น: 1.0) (หากเกิดการหารด้วยศูนย์หรือลู่ออกด้วยพรีคอนดิชัน ILU อาจแก้ได้โดยกำหนดค่ามากกว่า 1.0) |
| SIGMA | R | ไม่ได้ใช้ (ค่าเริ่มต้น: 0.0) |
เมื่อ PRECOND=5 (ละได้)¶
หากระบุค่า PRECOND เป็นค่าอื่นนอกเหนือจาก 5 และ 22 บรรทัดที่ 4 จะถูกละเว้น
(บรรทัดที่ 4) ML_CoarseSolver, ML_Smoother, ML_MGCycle, ML_MaxLevels, ML_CoarseningScheme, ML_NumSweep
| ชื่อตัวแปร | คุณลักษณะ | เนื้อหา |
|---|---|---|
| ML_CoarseSolver | I | ตัวแก้สำหรับกริดหยาบของ ML (1: ใช้ตัวปรับเรียบแทน, 2: KLU (วิธีตรงแบบลำดับ), 3: MUMPS (วิธีตรงแบบขนาน)) (ค่าเริ่มต้น: 1) (แนะนำ 3 หรือ 2 สำหรับปัญหาที่แก้ยาก และ 1 สำหรับปัญหาทั่วไป) |
| ML_Smoother | I | ตัวปรับเรียบของ ML (1: Chebyshev, 2: SymBlockGaussSeidel, 3: Jacobi) (ค่าเริ่มต้น: 1) (แนะนำ 1) |
| ML_MGCycle | I | รอบมัลติกริดของ ML (1: V-cycle, 2: W-cycle, 3: Full-V-cycle) (ค่าเริ่มต้น: 1) (แนะนำ 2 สำหรับปัญหาที่แก้ยาก และ 1 สำหรับปัญหาทั่วไป) |
| ML_MaxLevels | I | จำนวนระดับสูงสุดของ ML (ค่าเริ่มต้น: 10) (สำหรับปัญหาที่แก้ยากเป็นพิเศษ ให้ใช้ตัวแก้กริดหยาบแบบวิธีตรงและ 2 ระดับ (หรือ 3 หากหน่วยความจำไม่พอ); สำหรับปัญหาทั่วไปแนะนำ 10) |
| ML_CoarseningScheme | I | สคีมการทำให้หยาบของ ML (1: UncoupledMIS, 2: METIS, 4: Zoltan, 5: DD) (ค่าเริ่มต้น: 1) (แนะนำ 1 หรือ 5) |
| ML_NumSweep | I | จำนวนรอบกวาดของตัวปรับเรียบของ ML (สำหรับ Chebyshev คือดีกรีของพหุนาม) (ค่าเริ่มต้น: 2) (แนะนำ 2 สำหรับ Chebyshev และ 1 สำหรับ SymBlockGaussSeidel) |
เมื่อ PRECOND=22 (ละได้)¶
หากระบุค่า PRECOND เป็นค่าอื่นนอกเหนือจาก 22 บรรทัดที่ 5 จะถูกละเว้น ทั้งบรรทัดที่ 4 และบรรทัดที่ 5 สามารถละได้ทั้งบรรทัด และสามารถละรายการท้ายบรรทัดได้ด้วย รายการที่ระบุเป็น 0 จะใช้ค่าเริ่มต้น
รายการที่ 1 ถึง 7 ในบรรทัดที่ 4 เรียงตามลำดับเดียวกับบรรทัดตัวเลือกของ PRECOND=5 (ML) จึงสามารถนำบรรทัดตัวเลือกของ ML มาใช้ได้โดยไม่ต้องแก้ไข รายการที่ 8 ถึง 10 เป็นรายการเฉพาะของ SA-AMG
(บรรทัดที่ 4) SA_CoarseSolver, SA_Smoother, SA_MGCycle, SA_MaxLevels, (ไม่ได้ใช้), SA_ChebyDegree, SA_CoarseSize, SA_MaxAggSize, SA_GalerkinLowMem, (ไม่ได้ใช้)
| ชื่อตัวแปร | คุณลักษณะ | เนื้อหา |
|---|---|---|
| SA_CoarseSolver | I | ตัวแก้กริดหยาบ (0: อัตโนมัติ, 1: ใช้ตัวปรับเรียบ, 2: วิธีตรงแบบเมทริกซ์หนาแน่น, 3: MUMPS (วิธีตรงแบบขนาน)) (ค่าเริ่มต้น: 0) (ในโหมดอัตโนมัติ บิลด์ที่เปิดใช้ MUMPS จะใช้ MUMPS มิฉะนั้นจะใช้วิธีตรงแบบเมทริกซ์หนาแน่น) |
| SA_Smoother | I | ตัวปรับเรียบ (0, 1: Chebyshev) (ค่าเริ่มต้น: 0) (รองรับเฉพาะ Chebyshev หากระบุค่าอื่น จะส่งคำเตือนและใช้ Chebyshev) |
| SA_MGCycle | I | รอบมัลติกริด (0: ค่าเริ่มต้น (W-cycle), 1: V-cycle, 2: W-cycle) (ค่าเริ่มต้น: 0) (ไม่รองรับ Full-V-cycle) |
| SA_MaxLevels | I | จำนวนระดับสูงสุด (ค่าเริ่มต้น: 20) |
| (ไม่ได้ใช้) | I | ตำแหน่งที่สอดคล้องกับสคีมการทำให้หยาบของ ML เนื่องจาก SA-AMG ใช้การรวมกลุ่มแบบไม่เชื่อมโยงเสมอ หากระบุค่าที่ไม่ใช่ 0 จะส่งคำเตือนและละเว้นค่านั้น |
| SA_ChebyDegree | I | ดีกรีของพหุนามสำหรับตัวปรับเรียบ Chebyshev (ค่าเริ่มต้น: 2) |
| SA_CoarseSize | I | ขนาดตัดทอนของกริดหยาบ (ค่าเริ่มต้น: 50000 เมื่อใช้ MUMPS เป็นตัวแก้กริดหยาบ มิฉะนั้นเป็น 100) |
| SA_MaxAggSize | I | ขนาดสูงสุดของกลุ่มรวม (ค่าเริ่มต้น: 96) |
| SA_GalerkinLowMem | I | วิธีคำนวณเมทริกซ์กริดหยาบ (0: ปกติ (เน้นความเร็ว), ค่าบวก: ประหยัดหน่วยความจำ) (ค่าเริ่มต้น: 0) (ระบุค่าบวกหากหน่วยความจำไม่เพียงพอระหว่างการตั้งค่า) |
| (ไม่ได้ใช้) | I | สำรองไว้สำหรับการขยายในอนาคต |
บรรทัดที่ 5 ใช้เฉพาะกับ SA-AMG และ ML จะไม่อ่านบรรทัดนี้
(บรรทัดที่ 5) SA_Theta, SA_ChebyAlpha, SA_Safety, SA_TaperK, SA_AggOrder, SA_MinAggSize, SA_Verify, SA_DumpVTK
| ชื่อตัวแปร | คุณลักษณะ | เนื้อหา |
|---|---|---|
| SA_Theta | R | ค่าเกณฑ์สำหรับพิจารณาการเชื่อมต่อที่แข็งแรง (ค่าเริ่มต้น: 0.0) (เมื่อเป็น 0.0 จะใช้โครงสร้างสมาชิกที่ไม่เป็นศูนย์ของเมทริกซ์เป็นกราฟโดยตรง) |
| SA_ChebyAlpha | R | อัตราส่วนที่กำหนดขอบล่างของช่วงค่าลักษณะเฉพาะที่ตัวปรับเรียบ Chebyshev ใช้เป็นเป้าหมาย (ค่าเริ่มต้น: 20.0) |
| SA_Safety | R | ตัวคูณความปลอดภัยที่ใช้กับค่าประมาณของค่าลักษณะเฉพาะสูงสุด (ค่าเริ่มต้น: 1.1) |
| SA_TaperK | R | สัมประสิทธิ์ K ของเทเปอร์การทำให้หยาบ (ค่าเริ่มต้น: 100) (ตั้งแต่ระดับ 2 เป็นต้นไป การทำให้หยาบจะค่อยเป็นค่อยไปเพื่อให้เหลือกลุ่มรวมอย่างน้อยประมาณ K กลุ่ม ค่าลบจะปิดใช้งานเทเปอร์) |
| SA_AggOrder | R | ลำดับการกวาดของการรวมกลุ่ม (0: ค่าเริ่มต้น (ลำดับ BFS), 1: ลำดับ BFS, 2: ลำดับแฮชของหมายเลขโหนด (ทดลอง), 3: ลำดับดีกรีจากน้อยไปมาก (ทดลอง), 4: ลำดับดีกรีจากมากไปน้อย (ทดลอง), ค่าลบ: ลำดับหมายเลขโหนด) (ค่าเริ่มต้น: 0) |
| SA_MinAggSize | R | ขนาดต่ำสุดของกลุ่มรวม (ค่าเริ่มต้น: 3) |
| SA_Verify | R | ระบุว่าจะตรวจสอบตนเองระหว่างการตั้งค่าหรือไม่ (0: ไม่ตรวจ, ค่าบวก: ตรวจ) (ค่าเริ่มต้น: 0) (ใช้หลัก ๆ สำหรับการดีบัก) |
| SA_DumpVTK | R | ระบุว่าจะส่งออกการรวมกลุ่มที่ระดับสูงสุดในรูปแบบ VTK หรือไม่ (0: ไม่ส่งออก, ค่าบวก: ส่งออก) (ค่าเริ่มต้น: 0) (ใช้หลัก ๆ สำหรับการดีบัก) |
ตัวอย่างการใช้งาน¶
ใช้วิธี CG พร้อมพรีคอนดิชัน SSOR และตั้งจำนวนการวนซ้ำสูงสุดเป็น 10000 ค่าคลาดเคลื่อนตัดทอนเป็น 1.0e-8
ใช้วิธี GMRES พร้อมพรีคอนดิชัน SSOR และตั้งจำนวนซับสเปซ Krylov เป็น 40 จำนวนสีเป้าหมายสำหรับการจัดลำดับหลายสีเป็น 100
ใช้วิธี CG พร้อมพรีคอนดิชัน ILU(0) และตั้งตัวคูณที่ใช้กับสมาชิกแนวทแยงเมื่อคำนวณเมทริกซ์พรีคอนดิชันเป็น 1.1
ใช้ AMG โดย ML เป็นพรีคอนดิชันสำหรับ CG
ใช้ AMG โดย ML เป็นพรีคอนดิชันสำหรับ CG และใช้ MUMPS เป็นตัวแก้กริดหยาบ (สำหรับปัญหาที่แก้ยาก)
ใช้ AMG โดย ML เป็นพรีคอนดิชันสำหรับ CG และใช้ W-cycle เป็นรอบมัลติกริด (สำหรับปัญหาที่แก้ยาก)
ใช้ AMG โดย ML เป็นพรีคอนดิชันสำหรับ CG ใช้ MUMPS เป็นตัวแก้กริดหยาบ และตั้งจำนวนระดับสูงสุดเป็น 2 (สำหรับปัญหาที่แก้ยากมาก)
ใช้ SA-AMG ที่ติดตั้งใน HEC-MW เป็นพรีคอนดิชันสำหรับ CG
ใช้ SA-AMG เป็นพรีคอนดิชันสำหรับ CG และใช้ MUMPS เป็นตัวแก้กริดหยาบ
สำหรับการวิเคราะห์การสัมผัสแบบเสียดทาน ให้ใช้ BiCGSTAB พร้อมพรีคอนดิชัน SA-AMG และส่งออกลำดับชั้นของพรีคอนดิชัน AMG