求解器与预处理¶
FrontISTR 的线性求解器通过选择直接法或迭代法来求解线性方程;使用迭代法时还要组合预处理器。MPC 处理方式和接触自由度消去,是决定包含多点约束或接触约束的线性系统以何种形式处理的辅助选项。
功能概览¶
求解器与预处理由以下选项构成。首先在线性求解器中选择迭代法或直接法;只有选择迭代法时才组合预处理器。
| 分类 | 主要选项 | 作用 |
|---|---|---|
| 迭代法 | CG, BiCGSTAB, GMRES, GPBiCG, GMRESR, GMRESREN |
以内存效率较高的方式求解大型稀疏矩阵。 |
| 迭代法预处理 | SSOR、对角缩放、BILU、AMG、SAINV、RIF | 改善迭代法的收敛性。直接法不使用。 |
| 直接法 | MUMPS, MKL |
通过矩阵分解稳健地求解线性方程。 |
| MPC 处理方式 | 罚函数法、MPC-CG 法、显式自由度消去法 | 将多点约束反映到线性系统中。 |
| 接触自由度消去 | 自动、始终启用 | 切换 SLAGRANGE 接触所增加的接触自由度的处理方式。 |
| 辅助功能 | 条件数估计、矩阵转储、日志输出 | 辅助调试、收敛性确认和性能评估。 |
并行执行时,可以将基于区域划分的 MPI 并行与 OpenMP 线程并行组合使用。迭代法是大规模并行分析的标准选择;直接法则用于已链接相应库且需要更稳健求解的环境。
求解器与预处理的选择¶
首先决定使用迭代法还是直接法;选择迭代法后,再选择预处理器。
| 判断因素 | 推荐思路 |
|---|---|
| 问题规模 | 中小规模问题中直接法稳定且易于使用。大规模问题中迭代法的内存效率更高。 |
| 矩阵对称性 | 对称正定问题可考虑 CG。非对称问题可考虑 BiCGSTAB、GMRES、GPBiCG 等。 |
| 并行环境 | MPI 并行下将迭代法与区域划分结合。OpenMP 并行下的预处理可考虑支持多色排序的 SSOR。 |
| 预处理(选择迭代法时) | 首先尝试默认的 SSOR,再考虑 AMG。收敛性良好时 SSOR 计算开销较小;复杂的大规模问题适合 AMG 预处理。 |
| 接触与 MPC | 包含接触分析或多点约束的分析中,MPC 处理方式与接触自由度消去的选择会影响收敛性和稳健性。 |
| 外部库 | MUMPS、MKL、AMG 可在链接相应库的构建中使用。 |
对于标准分析,收敛判据、最大迭代次数、预处理的对角修正系数等通常保持默认值即可。仅在收敛缓慢或发散时,依次重新检查迭代法、预处理、MPC 处理方式和接触自由度消去。参数值和格式参见关键字参考中的 !SOLVER。
迭代法¶
迭代法面向大型稀疏矩阵,通过反复进行矩阵-向量乘积和预处理来更新解。FrontISTR 可选择以下迭代法。
| 迭代法 | 适用参考 | 备注 |
|---|---|---|
CG |
对称正定问题 | 结构分析和热传导分析的标准候选。 |
BiCGSTAB |
非对称问题 | 接触或耦合导致非对称性较强时的候选。 |
GMRES |
非对称问题 | 指定 Krylov 子空间大小后使用。 |
GPBiCG |
非对称问题 | 作为 BiCGSTAB 系列的改进方法使用。 |
GMRESR |
非对称问题、高级用途 | 以嵌套方式使用 GMRES 的选项。 |
GMRESREN |
非对称问题、高级用途 | GMRESR 系列的递归版本。 |
CG 以矩阵对称正定为前提。若摩擦接触、非对称约束处理、耦合效应等导致强非对称性,可考虑 BiCGSTAB、GMRES、GPBiCG 等。对于 GMRES,增大 Krylov 子空间大小有时可改善收敛性,但同时也会增加内存使用量。
指定 METHOD2 后,当 CG 发散或失效时可切换到备用迭代法。该功能是在 CG 作为主求解器时的回退机制,其他设置值和数据行与主求解器共用。
预处理¶
预处理是为了改善迭代法的收敛性而变换系数矩阵的处理,仅在选择迭代法时应用。直接法不使用预处理。即使使用同一种迭代法,不同预处理器也会显著改变达到收敛所需的迭代次数和计算时间。
| 预处理器 | 特征 | 适用参考 |
|---|---|---|
| SSOR | 标准预处理器。支持多色排序。 | 首先尝试的候选,广泛用于结构分析。 |
| 对角缩放 | 使用对角分量的轻量级预处理。 | 希望降低计算成本时。 |
| BILU | 按块进行不完全 LU 分解。 | SSOR 难以收敛问题的候选。 |
| AMG | 使用 Trilinos-ML 的代数多重网格。 | 大规模问题或层次误差分量占主导问题的候选。 |
| SAINV | Sparse Approximate Inverse。 | 接触问题或分布式环境中的特殊预处理候选。 |
| RIF | Robust Incomplete Factorization。 | 不完全分解系列的另一候选。 |
SSOR 是标准选择,在 OpenMP 并行下使用多色排序版本。对角缩放计算轻量,但改善收敛的效果取决于问题。BILU 实现为块不完全 LU 分解,也支持具有一般自由度数的矩阵。对于 BILU 系列,当迭代法发散时存在自动增大对角修正系数 SIGMA_DIAG 后重试的路径;数值的指定方法参见关键字参考。
AMG 使用 Trilinos-ML,因此构建时必须启用 ML。可指定平滑器、多重网格循环、粗化方式等,具体数值参见关键字参考。若在包含接触问题或 MPC 的并行分析中使用 SAINV,区域划分时的重叠深度有时会影响收敛性。
直接法¶
直接法通过分解系数矩阵求解线性方程。由于不依赖迭代次数,具有较高稳健性,在包含接触分析或约束条件的分析中可以成为稳定的选择。另一方面,随着问题规模增大,内存使用量也会增加。
| 直接法 | 并行环境 | 用途 |
|---|---|---|
MUMPS |
MPI 并行 | 在分布式内存环境中用直接法求解稀疏矩阵。 |
MKL |
Intel MKL / OpenMP | Intel MKL 的直接法,内部使用 Intel PARDISO。多个 MPI 进程时使用 Cluster MKL 路径。DIRECTmkl 是 MKL 的别名。 |
直接法可用于对称矩阵和非对称矩阵。MUMPS 和 MKL 要求构建时链接相应库;没有这些库的环境无法使用,因此所需依赖库和 CMake 选项参见构建指南。
FrontISTR 也有不使用外部库的内置直接法路径,但在通常分析中选择直接法时,应优先考虑 MUMPS 或 MKL。
直接法不应用预处理。即使在 !SOLVER 中指定了预处理器,直接法路径也不会引用。
MPC 处理方式¶
MPC 处理方式决定如何将多点约束连接的自由度反映到线性方程中。即使输入中的约束方程相同,不同处理方式也会改变系数矩阵的性质和收敛性。
| MPC 处理方式 | 定位 | 默认用途 |
|---|---|---|
| 罚函数法 | 向约束方程加入较大的刚度以近似满足约束。 | 直接法的默认方式。 |
| MPC-CG 法 | 在迭代法内部处理包含约束的矩阵-向量乘积的旧有方式。 | 不推荐。 |
| 显式自由度消去法 | 消去受约束自由度,求解缩减后的线性系统。 | 迭代法的默认方式。 |
直接法默认采用罚函数法,迭代法默认采用显式自由度消去法。MPC-CG 法是为兼容性保留的旧选项,通常的新分析使用显式自由度消去法或所选直接法的默认方式。
MPC 处理方式可通过 !SOLVER 的 MPCMETHOD 显式指定。各值的含义和格式参见关键字参考。
接触自由度消去¶
接触自由度消去是在将线性系统交给线性求解器之前,对 SLAGRANGE 接触增加的接触自由度进行缩减处理的功能。消去接触自由度有时可以改善迭代法所处理线性系统的性质。
在默认的自动模式下,使用迭代法时执行接触自由度消去,使用直接法时不执行。直接法提供直接处理包含接触自由度的扩大系统的路径。
显式指定 CONTACT_ELIM 后,即使使用直接法也可以执行接触自由度消去。接触类型、接触对和接触算法等输入侧的选择参见接触与嵌入页面。
辅助功能¶
可使用条件数估计、矩阵转储和日志输出调查求解器的收敛性和性能。这些功能通常分析中并不需要,主要在调试或性能评估时启用。
| 功能 | 用途 | 备注 |
|---|---|---|
| 条件数估计 | 对 CG 和 GMRES 输出条件数指标。 |
在启用 LAPACK 的构建中可用。 |
| 矩阵转储 | 将传递给求解器的矩阵和右端保存到文件。 | 支持 Matrix Market、CSR、BSR 格式。 |
DUMPEXIT |
矩阵转储后结束分析。 | 仅提取矩阵供外部验证时使用。 |
ITERLOG |
输出迭代法的收敛历史。 | 用于确认残差变化。 |
TIMELOG |
输出求解器计算时间。 | VERBOSE 会输出更详细的分项。 |
STEPLOG |
输出步骤信息。 | 用于确认分析流程。 |
矩阵转储用于通过外部工具检查分析中组装的系数矩阵。启用 DUMPEXIT 后,在保存矩阵和右端时结束分析。条件数估计是可用于 CG 和 GMRES 的试验性功能,用于诊断收敛性。