შიგთავსზე გადასვლა

!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 და შემდგომი სტრიქონები **

(მე-2 სტრიქონი) NITER, iterPREmax, NREST, NCOLOR_IN, RECYCLEPRE
ცვლადის სახელი ტიპი აღწერა
NITER I იტერაციების რაოდენობა (ნაგულისხმევი: 100)
iterPREmax I Additive Schwarz-ით პრეკონდიცირების განმეორებების რაოდენობა (ნაგულისხმევი: 1)
(რეკომენდებული მნიშვნელობაა 1; პარალელურ გამოთვლებში ზოგჯერ 2 შეიძლება ეფექტური იყოს)
NREST I კრილოვის ქვესივრცის ზომა (ნაგულისხმევი: 10)
(მოქმედებს მხოლოდ GMRES-ის ამოხსნის მეთოდად არჩევისას)
NCOLOR_IN I მრავალფერიანი დალაგების სამიზნე ფერების რაოდენობა (ნაგულისხმევი: 10)
(მოქმედებს მხოლოდ მაშინ, როდესაც OpenMP ნაკადების რაოდენობა 2 ან მეტია)
RECYCLEPRE I პრეკონდიციონერის აწყობის ინფორმაციის ხელახალი გამოყენების რაოდენობა (ნაგულისხმევი: 3)
(მოქმედებს მხოლოდ არაწრფივ ანალიზში)
(მე-3 სტრიქონი) RESID, SIGMA_DIAG, SIGMA
ცვლადის სახელი ტიპი აღწერა
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-ზე

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

გამოიყენეთ GMRES მეთოდი SSOR პრეკონდიციონერით; კრილოვის ქვესივრცის ზომა დააყენეთ 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

CG მეთოდის პრეკონდიციონერად გამოიყენეთ ML-ის AMG მეთოდი

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

CG მეთოდის პრეკონდიციონერად გამოიყენეთ ML-ის AMG მეთოდი, ხოლო უხეში ბადის ამომხსნელად — MUMPS (რთულად ამოსახსნელი ამოცანებისთვის)

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

CG მეთოდის პრეკონდიციონერად გამოიყენეთ ML-ის AMG მეთოდი, ხოლო მრავალბადიანი ციკლი — W-cycle (რთულად ამოსახსნელი ამოცანებისთვის)

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

CG მეთოდის პრეკონდიციონერად გამოიყენეთ ML-ის AMG მეთოდი, უხეში ბადის ამომხსნელად — MUMPS, ხოლო დონეების მაქსიმალური რაოდენობა — 2 (ძალიან რთულად ამოსახსნელი ამოცანებისთვის)

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

CG-ის პრეკონდიციონერად გამოიყენეთ HEC-MW-ში ჩაშენებული SA-AMG

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

CG-ის პრეკონდიციონერად გამოიყენეთ SA-AMG, ხოლო უხეში ბადის ამომხსნელად — 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