콘텐츠로 이동

Translation update pending

The Korean 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          : 멀티그리드 전처리 패키지 ML에 의한 AMG
            10         : Block ILU(0)
            11         : Block ILU(1)
            12         : Block ILU(2)
            22         : HEC-MW 내장 SA-AMG(평활화 집계 AMG)에 의한 AMG
            10、11、12는 3자유도 문제에서만 사용 가능
            22는 LAPACK을 활성화한 빌드에서만 사용 가능
            OpenMP 스레드 병렬화 시에는 SSOR, Diagonal Scaling, ML, SA-AMG,
            또는 3자유도 문제에서의 Block ILU(10, 11, 12)를 권장한다

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: 명시적 자유도 제거법(반복법 사용 시 기본값)
            2에 해당하는 MPC-CG법은 삭제되었다. 2를 지정하면 경고 후 기본 방식으로 처리한다.

ESTCOND =   조건수 추정 빈도 (시험적)
            지정된 반복 간격마다 및 반복 종료 시 조건수 추정 수행
            0인 경우 추정하지 않음

RECOMPUTE_RESIDUAL = 잔차 벡터 재계산 빈도
            METHOD에 CG, BiCGSTAB, GPBiCG, PipeCG를 지정한 경우에만 유효
            GroppCG의 재계산 주기는 50으로 고정되며 이 설정은 사용되지 않는다
            반복법은 잔차 벡터를 점화식으로 갱신하므로 반올림 오차가 누적됨
            지정된 반복 간격마다 잔차 벡터를 {b}-[A]{x}에서 다시 계산
            0인 경우 각 해법의 기본값(CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50)을 사용
            음수를 지정한 경우 주기적인 재계산을 수행하지 않음
            수렴 판정이 성립했을 때 확인을 위한 재계산은 이 설정과 관계없이 항상 수행
            주기를 지나치게 짧게 하면 행렬-벡터 곱이 늘어날 뿐만 아니라
            수렴성 자체가 악화되거나 수렴하지 않을 수 있음
            기본값에서 변경한 경우 수렴 이력과 최종 상대 잔차를 확인할 것

METHOD2 =   제2 해법 (BiCGSTAB、GMRES、GPBiCG) (시험적)
            METHOD에 CG, PipeCG 또는 GroppCG를 지정한 경우에만 유효하다
            METHOD로 지정한 해법이 발산하면 자동으로 전환하여 해를 구한다
            다른 매개변수와 데이터 행의 정보는 동일한 것을 사용

CONTACT_ELIM = 접촉 해석에서 자유도 제거를 수행할지 지정 (0,1)
               0: 반복법 사용 시에만 자유도 제거 수행(기본값)
               1: 항상(직접법 사용 시에도) 자유도 제거 수행

** 두 번째 행부터 **

(두 번째 행) 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)
(비선형 해석에서만 유효)
(세 번째 행) RESID, SIGMA_DIAG, OMEGA
변수명 유형 설명
RESID R 수렴 판정값(기본값: 1.0e-8)
SIGMA_DIAG R 전처리 행렬 계산 시 대각 성분에 곱하는 배율(기본값: 1.0)
(ILU 전처리에서 0으로 나누기 또는 발산이 발생하는 경우 1.0보다 큰 값을 설정하면 해를 구할 수 있는 경우가 있다)
(ILU 전처리 및 대각 스케일링 전처리에서만 유효하다. 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)
(권장값은 Chebyshev인 경우 2, SymBlockGaussSeidel인 경우 1)

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 조대 격자 절단 크기(기본값: 조대 격자용 솔버로 MUMPS를 사용하는 경우 50000, 그 외에는 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)(주로 디버깅용)

사용 예

SSOR 전처리된 CG법을 사용하고 최대 반복 횟수를 10000, 수렴 판정값을 1.0e-8로 설정한다

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

SSOR 전처리된 GMRES법을 사용하고 Krylov 부분공간 수를 40, 멀티컬러 오더링의 목표 색 수를 100으로 설정한다

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

ILU(0) 전처리된 CG법을 사용하고 전처리 행렬 계산 시 대각 성분에 곱하는 배율을 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