跳转至

!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)
             1, 2       : (Block) SSOR(仅3自由度问题带多色排序)
            3          : (块)对角缩放
             5          : 使用多重网格预处理包 ML 的 AMG
            10         : 块 ILU(0)
            11         : 块 ILU(1)
            12         : 块 ILU(2)
             10、11、12 仅可用于3自由度问题
             使用 OpenMP 线程并行时推荐 SSOR、Diagonal Scaling 或 ML

ITERLOG =   是否输出迭代求解器收敛历史          (YES/NO)(默认值:NO)

TIMELOG =   是否输出求解器计算时间                (YES/NO/VERBOSE)(默认值:NO)

USEJAD =    是否使用面向向量机的排序          (YES/NO)(默认值:NO)
             仅在3自由度问题使用迭代法时有效

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、2、3)
             1: 罚函数法(使用直接法时的默认值)
             2: MPC-CG 法(不推荐)
             3: 显式自由度消元法(使用迭代法时的默认值)

ESTCOND =   条件数估计频率(试验性)
             在每个指定迭代次数以及迭代结束时进行条件数估计
             为0时不进行估计

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 Krylov 子空间维数(默认值: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 指定为其他值时,第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)

使用示例

使用带 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