ข้ามไปที่เนื้อหา

Translation update pending

The Thai translation may be out of date because the Japanese source has changed. The existing translation remains available while it is being updated.

!SOLVER

การควบคุมตัวแก้สมการ

ข้อมูลควบคุมที่จำเป็น

พารามิเตอร์

METHOD =    วิธีแก้ (CG, BiCGSTAB, GMRES, GPBiCG, CR, PipeCG, GroppCG, DIRECT, DIRECTmkl, MUMPS)
            DIRECT     : วิธีตรงสำหรับกรณีที่ไม่ใช่การวิเคราะห์การสัมผัส (เฉพาะการประมวลผลแบบลำดับ) (ขณะนี้ใช้งานไม่ได้)
            DIRECTmkl  : วิธีตรงโดยใช้ Intel MKL
            MUMPS      : วิธีตรงโดยใช้ MUMPS
            เมื่อเลือกวิธีตรง บรรทัดข้อมูลจะถูกละเว้น
            วิธีทำซ้ำสามารถใช้การประมวลผลแบบขนานด้วยเธรดผ่าน OpenMP

PRECOND =   วิธีพรีคอนดิชันสำหรับตัวแก้แบบวนซ้ำ (1, 2, 3, 5, 10, 11, 12, 22)
            1, 2       : (Block) SSOR (มีการจัดลำดับหลายสี)
            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
            หรือ Block ILU (10, 11, 12) สำหรับปัญหา 3 องศาอิสระ

ITERLOG =   ระบุว่าจะส่งออกประวัติการลู่เข้าของตัวแก้แบบวนซ้ำหรือไม่          (YES/NO)(ค่าเริ่มต้น: NO)

TIMELOG =   ระบุว่าจะส่งออกเวลาคำนวณของตัวแก้สมการหรือไม่                (YES/NO/VERBOSE)(ค่าเริ่มต้น: NO)

LOGLEVEL =  ระดับการส่งออกข้อมูลวินิจฉัยของพรีคอนดิชัน (จำนวนเต็ม)(ค่าเริ่มต้น: ไม่ส่งออก)
            ระบุแยกจาก ITERLOG และ TIMELOG
            เมื่อมีค่า 1 ขึ้นไป จะส่งออกโครงสร้างลำดับชั้นและข้อมูลอื่นของพรีคอนดิชันแบบ AMG (PRECOND=5, 22)
            เมื่อมีค่า 2 ขึ้นไป จะส่งออกข้อมูลที่ละเอียดขึ้นอีก (เช่น การใช้หน่วยความจำ)

USEJAD =    ระบุว่าจะใช้การจัดลำดับสำหรับเครื่องเวกเตอร์หรือไม่          (YES/NO)(ค่าเริ่มต้น: NO)
            ใช้ได้เฉพาะเมื่อใช้วิธีทำซ้ำ

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
            รอบการคำนวณใหม่ของ GroppCG ถูกกำหนดคงที่เป็น 50 และจะไม่ใช้การตั้งค่านี้
            วิธีทำซ้ำจะอัปเดตเวกเตอร์เศษเหลือด้วยความสัมพันธ์เวียนเกิด จึงทำให้ความคลาดเคลื่อนจากการปัดเศษสะสม
            ทุกช่วงการวนซ้ำตามจำนวนที่ระบุ จะคำนวณเวกเตอร์เศษเหลือใหม่จาก {b}-[A]{x}
            เมื่อระบุ 0 จะใช้ค่าเริ่มต้นของแต่ละวิธี (CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50)
            เมื่อระบุค่าลบ จะไม่ทำการคำนวณใหม่เป็นระยะ
            เมื่อผ่านเกณฑ์การลู่เข้า จะทำการคำนวณใหม่เพื่อยืนยันเสมอโดยไม่ขึ้นกับการตั้งค่านี้
            หากกำหนดช่วงสั้นเกินไป ไม่เพียงแต่จะเพิ่มการคูณเมทริกซ์กับเวกเตอร์เท่านั้น แต่ยังอาจ
            ทำให้การลู่เข้าแย่ลงหรือทำให้คำตอบไม่ลู่เข้าอีกต่อไป
            หลังจากเปลี่ยนการตั้งค่านี้จากค่าเริ่มต้น ให้ตรวจสอบประวัติการลู่เข้าและเศษเหลือสัมพัทธ์สุดท้าย

METHOD2 =   วิธีแก้รอง (BiCGSTAB, GMRES, GPBiCG) (ทดลอง)
            ใช้ได้เฉพาะเมื่อระบุ CG, PipeCG หรือ GroppCG ให้ METHOD
            หากวิธีที่ระบุใน METHOD ลู่ออก จะสลับไปยังวิธีรองโดยอัตโนมัติและแก้ปัญหาต่อ
            พารามิเตอร์อื่นและข้อมูลในบรรทัดข้อมูลใช้ค่าเดียวกัน

CONTACT_ELIM = ระบุว่าจะทำการกำจัดองศาอิสระในการวิเคราะห์การสัมผัสหรือไม่ (0,1)
               0: ทำการกำจัดองศาอิสระเฉพาะเมื่อใช้วิธีทำซ้ำ (ค่าเริ่มต้น)
               1: ทำการกำจัดองศาอิสระเสมอ (รวมถึงเมื่อใช้วิธีตรง)

** ตั้งแต่บรรทัดที่ 2 เป็นต้นไป **

(บรรทัดที่ 2) NITER, iterPREmax, NREST, NCOLOR_IN, RECYCLEPRE
ชื่อตัวแปร คุณลักษณะ เนื้อหา
NITER I จำนวนการวนซ้ำ (ค่าเริ่มต้น: 100)
iterPREmax I จำนวนรอบของพรีคอนดิชันแบบ Additive Schwarz (ค่าเริ่มต้น: 1)
(ค่าที่แนะนำคือ 1; ในการคำนวณแบบขนานบางกรณี 2 อาจมีประสิทธิผล)
NREST I จำนวนซับสเปซ Krylov (ค่าเริ่มต้น: 10)
(ใช้ได้เฉพาะเมื่อเลือก GMRES เป็นวิธีแก้)
NCOLOR_IN I จำนวนสีเป้าหมายในการจัดลำดับหลายสี (ค่าเริ่มต้น: 10)
(ใช้ได้เฉพาะเมื่อจำนวนเธรด OpenMP ตั้งแต่ 2 ขึ้นไป)
RECYCLEPRE I จำนวนครั้งที่ใช้ข้อมูลการตั้งค่าพรีคอนดิชันซ้ำ (ค่าเริ่มต้น: 3)
(ใช้ได้เฉพาะในการวิเคราะห์ไม่เชิงเส้น)
(บรรทัดที่ 3) RESID, SIGMA_DIAG, OMEGA
ชื่อตัวแปร คุณลักษณะ เนื้อหา
RESID R ค่าคลาดเคลื่อนตัดทอน (ค่าเริ่มต้น: 1.0e-8)
SIGMA_DIAG R ตัวคูณที่ใช้กับสมาชิกแนวทแยงเมื่อคำนวณเมทริกซ์พรีคอนดิชัน (ค่าเริ่มต้น: 1.0)
(หากเกิดการหารด้วยศูนย์หรือลู่ออกด้วยพรีคอนดิชัน ILU อาจแก้ได้โดยกำหนดค่ามากกว่า 1.0)
(ใช้ได้เฉพาะกับพรีคอนดิชัน ILU และพรีคอนดิชันแบบ Diagonal Scaling โดย SSOR ใช้ OMEGA)
OMEGA R พารามิเตอร์การผ่อนคลายของพรีคอนดิชัน SSOR (ค่าเริ่มต้น: 1.0)
(ค่า 1.0 เทียบเท่ากับพรีคอนดิชัน SSOR แบบเดิม)
(ช่วงที่ใช้ได้คือต้องมากกว่า 0 และน้อยกว่า 2 ค่านอกช่วง และค่าที่มีผลต่างจาก 0 หรือ 2 น้อยกว่าเอปไซลอนของเครื่อง จะถือเป็น 1.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

!SOLVER, METHOD=CG, PRECOND=1, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0

ใช้วิธี GMRES พร้อมพรีคอนดิชัน SSOR และตั้งจำนวนซับสเปซ Krylov เป็น 40 จำนวนสีเป้าหมายสำหรับการจัดลำดับหลายสีเป็น 100

!SOLVER, METHOD=GMRES, PRECOND=1, ITERLOG=YES, TIMELOG=YES
  10000, 1, 40, 100
  1.0e-8, 1.0, 0.0

ใช้วิธี CG พร้อมพรีคอนดิชัน ILU(0) และตั้งตัวคูณที่ใช้กับสมาชิกแนวทแยงเมื่อคำนวณเมทริกซ์พรีคอนดิชันเป็น 1.1

!SOLVER, METHOD=CG, PRECOND=10, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.1, 0.0

ใช้ AMG โดย ML เป็นพรีคอนดิชันสำหรับ CG

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0

ใช้ AMG โดย ML เป็นพรีคอนดิชันสำหรับ CG และใช้ MUMPS เป็นตัวแก้กริดหยาบ (สำหรับปัญหาที่แก้ยาก)

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  3

ใช้ AMG โดย ML เป็นพรีคอนดิชันสำหรับ CG และใช้ W-cycle เป็นรอบมัลติกริด (สำหรับปัญหาที่แก้ยาก)

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  1, 1, 2

ใช้ AMG โดย ML เป็นพรีคอนดิชันสำหรับ CG ใช้ MUMPS เป็นตัวแก้กริดหยาบ และตั้งจำนวนระดับสูงสุดเป็น 2 (สำหรับปัญหาที่แก้ยากมาก)

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  3, 1, 1, 2

ใช้ SA-AMG ที่ติดตั้งใน HEC-MW เป็นพรีคอนดิชันสำหรับ CG

!SOLVER, METHOD=CG, PRECOND=22, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0

ใช้ SA-AMG เป็นพรีคอนดิชันสำหรับ CG และใช้ MUMPS เป็นตัวแก้กริดหยาบ

!SOLVER, METHOD=CG, PRECOND=22, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  3

สำหรับการวิเคราะห์การสัมผัสแบบเสียดทาน ให้ใช้ BiCGSTAB พร้อมพรีคอนดิชัน SA-AMG และส่งออกลำดับชั้นของพรีคอนดิชัน AMG

!SOLVER, METHOD=BiCGSTAB, PRECOND=22, ITERLOG=YES, TIMELOG=YES, LOGLEVEL=1
  10000, 1
  1.0e-8, 1.0, 0.0