!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 : (ბლოკური) SSOR (მრავალფერიანი დალაგებით მხოლოდ 3 თავისუფლების ხარისხის ამოცანებისთვის)
3 : (Block) Diagonal Scaling
5 : AMG მრავალბადიანი პრეკონდიციონერი ML პაკეტის გამოყენებით
10 : Block ILU(0)
11 : Block ILU(1)
12 : Block ILU(2)
22 : AMG HEC-MW-ში ჩაშენებული SA-AMG-ით (Smoothed Aggregation AMG)
10, 11, 12 ხელმისაწვდომია მხოლოდ 3 თავისუფლების ხარისხის ამოცანებისთვის
22 ხელმისაწვდომია მხოლოდ LAPACK-ჩართული აგებებისთვის
OpenMP-ით ნაკადური პარალელიზმისას რეკომენდებულია SSOR, დიაგონალური მასშტაბირება, 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 : შეკუმშული იშვიათი სტრიქონების ფორმატი (CSR)
BSR : ბლოკური CSR ფორმატი
DUMPEXIT = პროგრამის დასრულება მატრიცის დამპისთანავე (YES/NO) (ნაგულისხმევი: NO)
MPCMETHOD = მრავალწერტილიანი შეზღუდვის პირობების დამუშავების მეთოდი (1, 3)
1: ჯარიმის მეთოდი (ნაგულისხმევი პირდაპირი მეთოდის გამოყენებისას)
3: თავისუფლების ხარისხების ცხადი ელიმინაციის მეთოდი (ნაგულისხმევი იტერაციული მეთოდის გამოყენებისას)
ადრე ხელმისაწვდომი MPC-CG მეთოდი წაშლილია; 2-ის მითითებისას გამოიცემა გაფრთხილება და გამოიყენება შესაბამისი ნაგულისხმევი მეთოდი.
ESTCOND = პირობითობის რიცხვის შეფასების სიხშირე (ექსპერიმენტული)
პირობითობის რიცხვი ფასდება მითითებულ ყოველ იტერაციაზე და ასევე იტერაციების დასრულებისას
თუ მნიშვნელობა 0-ია, შეფასება არ ტარდება
RECOMPUTE_RESIDUAL = ნაშთის ვექტორის ხელახლა გამოთვლის სიხშირე
მოქმედებს მხოლოდ მაშინ, როდესაც METHOD-ში მითითებულია CG, BiCGSTAB, GPBiCG ან PipeCG
იტერაციული მეთოდები ნაშთის ვექტორს რეკურენტული ფორმულით ანახლებს, რის გამოც დამრგვალების შეცდომები გროვდება
იტერაციების ყოველი მითითებული რაოდენობის შემდეგ ნაშთის ვექტორი {b}-[A]{x}-დან ხელახლა გამოითვლება
თუ მნიშვნელობა 0-ია, გამოიყენება თითოეული მეთოდის ნაგულისხმევი მნიშვნელობა (CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50)
უარყოფითი მნიშვნელობის მითითებისას პერიოდული ხელახალი გამოთვლა არ სრულდება
კრებადობის დასადასტურებლად ხელახალი გამოთვლა ამ პარამეტრისგან დამოუკიდებლად ყოველთვის სრულდება
თუ პერიოდი ზედმეტად მოკლეა, არა მხოლოდ მატრიცა-ვექტორის ნამრავლების რაოდენობა იზრდება
არამედ შეიძლება თვით კრებადობაც გაუარესდეს ან ამონახსნი საერთოდ არ კრებადობდეს
ნაგულისხმევი მნიშვნელობიდან შეცვლის შემთხვევაში შეამოწმეთ კრებადობის ისტორია და საბოლოო ფარდობითი ნაშთი
METHOD2 = მეორე ამოხსნის მეთოდი (BiCGSTAB, GMRES, GPBiCG) (ექსპერიმენტული)
მოქმედებს მხოლოდ მაშინ, როდესაც METHOD-ში მითითებულია CG
თუ CG მეთოდი დივერგირდება, ავტომატურად გადადის ამ მეთოდზე და აგრძელებს ამოხსნას
სხვა პარამეტრები და მონაცემთა სტრიქონების ინფორმაცია უცვლელად გამოიყენება
CONTACT_ELIM = კონტაქტურ ანალიზში თავისუფლების ხარისხების ელიმინაციის გამოყენების მითითება (0,1)
0: თავისუფლების ხარისხები ელიმინირდება მხოლოდ იტერაციული მეთოდის გამოყენებისას (ნაგულისხმევი)
1: თავისუფლების ხარისხები ყოველთვის ელიმინირდება (მათ შორის პირდაპირი მეთოდის გამოყენებისას)
** მე-2 და შემდგომი სტრიქონები **
| ცვლადის სახელი | ტიპი | აღწერა |
|---|---|---|
| NITER | I | იტერაციების რაოდენობა (ნაგულისხმევი: 100) |
| iterPREmax | I | Additive Schwarz-ით პრეკონდიცირების განმეორებების რაოდენობა (ნაგულისხმევი: 1) (რეკომენდებული მნიშვნელობაა 1; პარალელურ გამოთვლებში ზოგჯერ 2 შეიძლება ეფექტური იყოს) |
| NREST | I | კრილოვის ქვესივრცის ზომა (ნაგულისხმევი: 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-ით მითითებული ელემენტისთვის გამოიყენება ნაგულისხმევი მნიშვნელობა.
მე-4 სტრიქონის 1-დან 7-მდე ელემენტები იმავე თანმიმდევრობითაა განლაგებული, როგორც 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 პრეკონდიციონერით; კრილოვის ქვესივრცის ზომა დააყენეთ 40-ზე, ხოლო მრავალფერიანი დალაგების სამიზნე ფერების რაოდენობა — 100-ზე
გამოიყენეთ CG მეთოდი ILU(0) პრეკონდიციონერით და პრეკონდიცირების მატრიცის გამოთვლისას დიაგონალურ კომპონენტებზე გამრავლების კოეფიციენტი დააყენეთ 1.1-ზე
CG მეთოდის პრეკონდიციონერად გამოიყენეთ ML-ის AMG მეთოდი
CG მეთოდის პრეკონდიციონერად გამოიყენეთ ML-ის AMG მეთოდი, ხოლო უხეში ბადის ამომხსნელად — MUMPS (რთულად ამოსახსნელი ამოცანებისთვის)
CG მეთოდის პრეკონდიციონერად გამოიყენეთ ML-ის AMG მეთოდი, ხოლო მრავალბადიანი ციკლი — W-cycle (რთულად ამოსახსნელი ამოცანებისთვის)
CG მეთოდის პრეკონდიციონერად გამოიყენეთ ML-ის AMG მეთოდი, უხეში ბადის ამომხსნელად — MUMPS, ხოლო დონეების მაქსიმალური რაოდენობა — 2 (ძალიან რთულად ამოსახსნელი ამოცანებისთვის)
CG-ის პრეკონდიციონერად გამოიყენეთ HEC-MW-ში ჩაშენებული SA-AMG
CG-ის პრეკონდიციონერად გამოიყენეთ SA-AMG, ხოლო უხეში ბადის ამომხსნელად — MUMPS
ხახუნიანი კონტაქტური ანალიზისთვის გამოიყენეთ BiCGSTAB SA-AMG პრეკონდიცირებით და გამოიტანეთ AMG პრეკონდიციონერის იერარქია