!SOLVER¶
Điều khiển bộ giải
Dữ liệu điều khiển bắt buộc.
Tham số¶
METHOD = Phương pháp giải (CG, BiCGSTAB, GMRES, GPBiCG, CR, DIRECT, DIRECTmkl, MUMPS)
DIRECT : Phương pháp trực tiếp ngoại trừ phân tích tiếp xúc (chỉ xử lý tuần tự) (hiện không khả dụng)
DIRECTmkl : Phương pháp trực tiếp sử dụng Intel MKL
MUMPS : Phương pháp trực tiếp sử dụng MUMPS
Khi chọn phương pháp trực tiếp, các dòng dữ liệu bị bỏ qua.
Các phương pháp lặp cho bài toán 3 bậc tự do hỗ trợ thực thi song song theo luồng bằng OpenMP
PRECOND = Phương pháp tiền điều kiện cho bộ giải lặp (1, 2, 3, 5, 10, 11, 12, 22)
1, 2 : (Block) SSOR (chỉ có sắp thứ tự đa màu cho bài toán 3 bậc tự do)
3 : (Block) Diagonal Scaling
5 : AMG sử dụng gói tiền điều kiện đa lưới ML
10 : Block ILU(0)
11 : Block ILU(1)
12 : Block ILU(2)
22 : AMG sử dụng SA-AMG tích hợp trong HEC-MW (AMG kết tụ làm trơn)
10, 11 và 12 chỉ khả dụng cho bài toán 3 bậc tự do
22 chỉ khả dụng trong bản dựng đã bật LAPACK
Khi chạy song song theo luồng bằng OpenMP, nên dùng SSOR, Diagonal Scaling, ML hoặc SA-AMG
ITERLOG = Có xuất lịch sử hội tụ của bộ giải lặp hay không (YES/NO)(Mặc định: NO)
TIMELOG = Có xuất thời gian tính toán của bộ giải hay không (YES/NO/VERBOSE)(Mặc định: NO)
LOGLEVEL = Mức xuất thông tin chẩn đoán của bộ tiền điều kiện (số nguyên)(Mặc định: không xuất)
Được chỉ định độc lập với ITERLOG và TIMELOG
Từ 1 trở lên, xuất cấu trúc phân cấp và thông tin khác của bộ tiền điều kiện AMG (PRECOND=5,22)
Từ 2 trở lên, xuất thông tin chi tiết hơn (như mức sử dụng bộ nhớ)
USEJAD = Có dùng sắp thứ tự cho bộ xử lý vectơ hay không (YES/NO)(Mặc định: NO)
Chỉ có hiệu lực khi dùng phương pháp lặp cho bài toán 3 bậc tự do
SCALING = Có co giãn ma trận để các phần tử đường chéo bằng 1 hay không (YES/NO)(Mặc định: NO)
Chỉ có hiệu lực khi dùng phương pháp lặp cho bài toán 3 bậc tự do
DUMPTYPE = Định dạng dump ma trận (NONE, MM, CSR, BSR) (chủ yếu dùng để gỡ lỗi)
NONE : Không dump (Mặc định)
MM : Định dạng Matrix Market
CSR : Định dạng Compressed Sparse Row (CSR)
BSR : Định dạng Blocked CSR
DUMPEXIT = Kết thúc chương trình ngay sau khi dump ma trận (YES/NO)(Mặc định: NO)
MPCMETHOD = Phương pháp xử lý ràng buộc đa điểm (1, 3)
1: Phương pháp penalty (Mặc định khi dùng phương pháp trực tiếp)
3: Khử bậc tự do tường minh (Mặc định khi dùng phương pháp lặp)
Phương pháp MPC-CG ứng với 2 đã bị loại bỏ. Nếu chỉ định 2, hệ thống phát cảnh báo rồi xử lý bằng phương pháp mặc định.
ESTCOND = Tần suất ước lượng số điều kiện (thử nghiệm)
Ước lượng số điều kiện ở mỗi khoảng lặp được chỉ định và khi kết thúc các vòng lặp
Không thực hiện ước lượng khi chỉ định 0
RECOMPUTE_RESIDUAL = Tần suất tính lại vectơ phần dư
Chỉ có hiệu lực khi CG, BiCGSTAB, GPBiCG hoặc PipeCG được chỉ định cho METHOD
Các phương pháp lặp cập nhật vectơ phần dư bằng quan hệ truy hồi nên sai số làm tròn sẽ tích lũy
Cứ sau số vòng lặp được chỉ định, vectơ phần dư được tính lại từ {b}-[A]{x}
Khi chỉ định 0, sử dụng giá trị mặc định của từng phương pháp (CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50)
Khi chỉ định giá trị âm, không thực hiện tính lại theo chu kỳ
Việc tính lại để xác nhận hội tụ luôn được thực hiện khi thỏa tiêu chí hội tụ, bất kể thiết lập này
Chu kỳ quá ngắn không chỉ làm tăng số phép nhân ma trận-vectơ mà còn có thể
làm xấu đi chính khả năng hội tụ hoặc khiến quá trình giải không còn hội tụ
Sau khi thay đổi thiết lập này khỏi giá trị mặc định, hãy kiểm tra lịch sử hội tụ và phần dư tương đối cuối cùng
METHOD2 = Phương pháp giải thứ hai (BiCGSTAB, GMRES, GPBiCG) (thử nghiệm)
Chỉ có hiệu lực khi CG được chỉ định cho METHOD
Nếu CG phân kỳ, tự động chuyển sang phương pháp thứ hai và tiếp tục giải
Các giá trị tương tự được dùng cho những tham số và dòng dữ liệu khác
CONTACT_ELIM = Chỉ định có thực hiện khử bậc tự do trong phân tích tiếp xúc hay không (0,1)
0: Chỉ thực hiện khử bậc tự do khi dùng phương pháp lặp (Mặc định)
1: Luôn thực hiện khử bậc tự do (kể cả khi dùng phương pháp trực tiếp)
** Dòng thứ 2 và các dòng tiếp theo **
| Tên biến | Thuộc tính | Nội dung |
|---|---|---|
| NITER | I | Số vòng lặp (Mặc định: 100) |
| iterPREmax | I | Số vòng lặp tiền điều kiện Additive Schwarz (Mặc định: 1) (Giá trị khuyến nghị: 1; 2 có thể hiệu quả trong một số tính toán song song) |
| NREST | I | Số không gian con Krylov (Mặc định: 10) (Chỉ có hiệu lực khi GMRES được chọn làm phương pháp giải) |
| NCOLOR_IN | I | Số màu mục tiêu cho sắp thứ tự đa màu (Mặc định: 10) (Chỉ có hiệu lực khi số luồng OpenMP từ 2 trở lên) |
| RECYCLEPRE | I | Số lần tái sử dụng thông tin thiết lập bộ tiền điều kiện (Mặc định: 3) (Chỉ có hiệu lực trong phân tích phi tuyến) |
| Tên biến | Thuộc tính | Nội dung |
|---|---|---|
| RESID | R | Sai số cắt cụt (Mặc định: 1.0e-8) |
| SIGMA_DIAG | R | Hệ số tỷ lệ áp dụng cho các phần tử đường chéo khi tính ma trận tiền điều kiện (Mặc định: 1.0) (Nếu xảy ra chia cho không hoặc phân kỳ với tiền điều kiện ILU, bài toán có thể hội tụ khi chỉ định giá trị lớn hơn 1.0) |
| SIGMA | R | Không sử dụng (Mặc định: 0.0) |
Khi PRECOND=5 (tùy chọn)¶
Nếu PRECOND được đặt thành giá trị khác 5 hoặc 22, dòng thứ 4 bị bỏ qua.
(Dòng thứ 4) ML_CoarseSolver, ML_Smoother, ML_MGCycle, ML_MaxLevels, ML_CoarseningScheme, ML_NumSweep
| Tên biến | Thuộc tính | Nội dung |
|---|---|---|
| ML_CoarseSolver | I | Bộ giải lưới thô cho ML (1: dùng bộ làm trơn, 2: KLU (phương pháp trực tiếp tuần tự), 3: MUMPS (phương pháp trực tiếp song song)) (Mặc định: 1) (Khuyến nghị: 3 hoặc 2 cho bài toán khó, 1 cho bài toán thông thường) |
| ML_Smoother | I | Bộ làm trơn của ML (1: Chebyshev, 2: SymBlockGaussSeidel, 3: Jacobi) (Mặc định: 1) (Khuyến nghị: 1) |
| ML_MGCycle | I | Chu trình đa lưới ML (1: V-cycle, 2: W-cycle, 3: Full-V-cycle) (Mặc định: 1) (Khuyến nghị: 2 cho bài toán khó, 1 cho bài toán thông thường) |
| ML_MaxLevels | I | Số mức ML tối đa (Mặc định: 10) (Đối với bài toán đặc biệt khó, dùng bộ giải trực tiếp trên lưới thô và 2 mức (hoặc 3 nếu thiếu bộ nhớ); với bài toán thông thường, khuyến nghị 10) |
| ML_CoarseningScheme | I | Lược đồ làm thô ML (1: UncoupledMIS, 2: METIS, 4: Zoltan, 5: DD) (Mặc định: 1) (Khuyến nghị: 1 hoặc 5) |
| ML_NumSweep | I | Số lượt quét của bộ làm trơn ML (bậc đa thức đối với Chebyshev) (Mặc định: 2) (Khuyến nghị: 2 cho Chebyshev, 1 cho SymBlockGaussSeidel) |
Khi PRECOND=22 (tùy chọn)¶
Nếu PRECOND được đặt thành giá trị khác 22, dòng thứ 5 bị bỏ qua. Có thể bỏ toàn bộ dòng thứ 4 và dòng thứ 5; cũng có thể bỏ các mục ở cuối mỗi dòng. Giá trị mặc định được dùng cho mọi mục được chỉ định là 0.
Các mục từ 1 đến 7 trên dòng thứ 4 có cùng thứ tự với dòng tùy chọn PRECOND=5 (ML), vì vậy có thể dùng lại nguyên trạng dòng tùy chọn ML. Các mục từ 8 đến 10 dành riêng cho SA-AMG.
(Dòng thứ 4) SA_CoarseSolver, SA_Smoother, SA_MGCycle, SA_MaxLevels, (không sử dụng), SA_ChebyDegree, SA_CoarseSize, SA_MaxAggSize, SA_GalerkinLowMem, (không sử dụng)
| Tên biến | Thuộc tính | Nội dung |
|---|---|---|
| SA_CoarseSolver | I | Bộ giải lưới thô (0: tự động, 1: dùng bộ làm trơn, 2: phương pháp trực tiếp cho ma trận đặc, 3: MUMPS (phương pháp trực tiếp song song)) (Mặc định: 0) (Ở chế độ tự động, MUMPS được dùng trong bản dựng đã bật MUMPS; nếu không, phương pháp trực tiếp cho ma trận đặc được dùng) |
| SA_Smoother | I | Bộ làm trơn (0 hoặc 1: Chebyshev) (Mặc định: 0) (Chỉ hỗ trợ Chebyshev. Nếu chỉ định giá trị khác, cảnh báo được xuất và Chebyshev được dùng) |
| SA_MGCycle | I | Chu trình đa lưới (0: mặc định (W-cycle), 1: V-cycle, 2: W-cycle) (Mặc định: 0) (Không hỗ trợ Full-V-cycle) |
| SA_MaxLevels | I | Số mức tối đa (Mặc định: 20) |
| (không sử dụng) | I | Vị trí tương ứng với lược đồ làm thô ML. Vì SA-AMG luôn dùng kết tụ không ghép, giá trị khác 0 sẽ tạo cảnh báo và bị bỏ qua |
| SA_ChebyDegree | I | Bậc đa thức của bộ làm trơn Chebyshev (Mặc định: 2) |
| SA_CoarseSize | I | Kích thước ngưỡng của lưới thô (Mặc định: 50000 khi MUMPS được dùng làm bộ giải lưới thô; nếu không, 100) |
| SA_MaxAggSize | I | Kích thước kết tụ tối đa (Mặc định: 96) |
| SA_GalerkinLowMem | I | Phương thức tính ma trận lưới thô (0: thông thường (ưu tiên tốc độ), giá trị dương: tiết kiệm bộ nhớ) (Mặc định: 0) (Chỉ định giá trị dương nếu thiếu bộ nhớ trong quá trình thiết lập) |
| (không sử dụng) | I | Dành riêng cho phần mở rộng trong tương lai |
Dòng thứ 5 dành riêng cho SA-AMG và không được ML đọc.
(Dòng thứ 5) SA_Theta, SA_ChebyAlpha, SA_Safety, SA_TaperK, SA_AggOrder, SA_MinAggSize, SA_Verify, SA_DumpVTK
| Tên biến | Thuộc tính | Nội dung |
|---|---|---|
| SA_Theta | R | Ngưỡng xác định liên kết mạnh (Mặc định: 0.0) (Với 0.0, cấu trúc khác 0 của ma trận được dùng trực tiếp làm đồ thị) |
| SA_ChebyAlpha | R | Tỷ số xác định cận dưới của khoảng trị riêng mà bộ làm trơn Chebyshev nhắm tới (Mặc định: 20.0) |
| SA_Safety | R | Hệ số an toàn áp dụng cho trị riêng lớn nhất ước lượng (Mặc định: 1.1) |
| SA_TaperK | R | Hệ số K điều tiết làm thô (Mặc định: 100) (Từ mức 2 trở đi, quá trình làm thô được thực hiện từ từ hơn để còn lại ít nhất xấp xỉ K kết tụ. Giá trị âm vô hiệu hóa điều tiết) |
| SA_AggOrder | R | Thứ tự duyệt kết tụ (0: mặc định (thứ tự BFS), 1: thứ tự BFS, 2: thứ tự băm số hiệu nút (thử nghiệm), 3: thứ tự bậc tăng dần (thử nghiệm), 4: thứ tự bậc giảm dần (thử nghiệm), giá trị âm: thứ tự số hiệu nút) (Mặc định: 0) |
| SA_MinAggSize | R | Kích thước kết tụ tối thiểu (Mặc định: 3) |
| SA_Verify | R | Có chạy tự kiểm tra trong quá trình thiết lập hay không (0: không, giá trị dương: có) (Mặc định: 0) (chủ yếu để gỡ lỗi) |
| SA_DumpVTK | R | Có xuất kết tụ ở mức cao nhất theo định dạng VTK hay không (0: không xuất, giá trị dương: xuất) (Mặc định: 0) (chủ yếu để gỡ lỗi) |
Ví dụ sử dụng¶
Dùng CG với tiền điều kiện SSOR và đặt số vòng lặp tối đa là 10000, sai số cắt cụt là 1.0e-8
Dùng GMRES với tiền điều kiện SSOR, đặt số không gian con Krylov là 40 và số màu mục tiêu cho sắp thứ tự đa màu là 100
Dùng CG với tiền điều kiện ILU(0) và đặt hệ số tỷ lệ áp dụng cho các phần tử đường chéo khi tính ma trận tiền điều kiện là 1.1
Dùng AMG bằng ML làm bộ tiền điều kiện cho CG
Dùng AMG bằng ML làm bộ tiền điều kiện cho CG và dùng MUMPS làm bộ giải lưới thô (cho bài toán khó)
Dùng AMG bằng ML làm bộ tiền điều kiện cho CG và dùng W-cycle làm chu trình đa lưới (cho bài toán khó)
Dùng AMG bằng ML làm bộ tiền điều kiện cho CG, dùng MUMPS làm bộ giải lưới thô và đặt số mức tối đa là 2 (cho bài toán rất khó)
Dùng SA-AMG tích hợp trong HEC-MW làm bộ tiền điều kiện cho CG
Dùng SA-AMG làm bộ tiền điều kiện cho CG và dùng MUMPS làm bộ giải lưới thô
Trong phân tích tiếp xúc có ma sát, dùng BiCGSTAB với tiền điều kiện SA-AMG và xuất cấu trúc phân cấp của bộ tiền điều kiện AMG