并行数值求解器与算法:从岩土工程到生物系统的应用
立即解锁
发布时间: 2025-10-23 00:28:45 阅读量: 22 订阅数: 39 AIGC 

迈向百亿亿次科学计算
### 并行数值求解器与算法:从岩土工程到生物系统的应用
#### 1. 数值向上缩放的并行求解器
在数值向上缩放的研究中,涉及到多种并行求解器和预处理技术。
##### 1.1 GEM 两级加法 Schwarz 预处理器
存在一个粗空间上的 Galerkin 矩阵,其构建成本较低,因为它保留了规则的网格模式,仅通过对矩阵组件求和来计算,所以预处理阶段成本不高。粗网格问题通过内部共轭梯度(CG)迭代求解,使用较低的精度(如 ε = 0.01),并采用位移分解 - 不完全因式分解预处理技术。内部迭代的使用使得 B 成为可变预处理器,可通过显式正交化稳定外部迭代。
##### 1.2 Trilinos 的 ML 包构建预处理器
Trilinos 的 ML 包提供了构建多级 Schwarz 预处理器的可能性:
- **混合类型多级 Schwarz 预处理器(ML - DD)**:
```cpp
ML_Epetra::MultiLevelPreconditioner *MLDD = 0;
Teuchos::ParameterList DD_List;
ML_Epetra::SetDefaults( "DD", DD_List );
DD_List.set( "max levels", 10 );
DD_List.set( "aggregation: type", "MIS" );
// default: METIS
DD_List.set( "aggregation: nodes per aggregate", 128 );
if( NullSpaceActivated ) {
DD_List.set( "null space: type", "pre - computed" );
DD_List.set( "null space: dimension", v->NumVectors() );
DD_List.set( "null space: vectors", v->Values() );
}
MLDD = new ML_Epetra::MultiLevelPreconditioner( *A, DD_List, true );
```
- **基于平滑聚合和不同平滑器的多级预处理器(ML)**:
```cpp
ML_Epetra::MultiLevelPreconditioner *ML = 0;
Teuchos::ParameterList ML_List;
ML_Epetra::SetDefaults( "SA", ML_List );
ML_List.set("smoother:type(level0)","Chebyshev" );
ML_List.set("smoother:type(level1)","symmetricGauss - Seidel" );
ML_List.set("coarse: max size", 8192 );
if( NullSpaceActivated ) {
ML_List.set( "null space: type", "pre - computed" );
ML_List.set( "null space: dimension", v->NumVectors() );
ML_List.set( "null space: vectors", v->Values() );
}
ML = new ML_Epetra::MultiLevelPreconditioner( *A, ML_List, true );
```
##### 1.3 奇异系统的迭代求解
在求解与纯 Neumann 边界条件下弹性问题的有限元离散化对应的奇异系统时,理论上用 CG 等方法求解奇异且一致的系统没问题,但实际中由于舍入误差,系统可能病态或不一致,导致迭代收敛性差甚至发散。此时可使用投影到理论值域 R(A) 的方法,对于弹性问题,可由六个刚体模式构建投影 P:
\[Pv = \sum_{i = 1}^{6}\frac{(v, v_i)}{(v_i, v_i)}v_i\]
通过 P 求解投影系统 PAPu = Pb。另外,对于因 CT 扫描复杂微观结构的有限元离散化产生的弱悬挂单元导致的奇异性,可通过用人工软材料填充空隙有效消除。
##### 1.4 数值实验
实验在名为 Hubert 的 Linux 工作站上进行,该工作站配备 8 个四核 AMD Opteron 8830/2.5GHz 处理器(共 32 核)、128GB DDR2 RAM 和由 8 个 15000 RPM SAS 驱动器组成的 RAID10 磁盘子系统,使用 Trilinos 10.8 和 Intel Cluster Studio XE 2011。
- **GEM 和 Trilinos 求解器的比较**:
| 求解器 | #Sd | #It | T [s] |
| ---- | ---- | ---- | ---- |
| GEM - DD | 1 | 108 | 407.8 |
| GEM - DD | 2 | 111 | 193.3 |
| GEM - DD | 4 | 115 | 122.9 |
| GEM - DD | 8 | 123 | 71.6 |
| GEM - DD | 16 | 144 | 60.7 |
| GEM - DD + CG | 1 | 140 | 737.5 |
| GEM - DD + CG | 2 | 69 | 127.6 |
| GEM - DD + CG | 4 | 65 | 66.1 |
| GEM - DD + CG | 8 | 61 | 39.1 |
| GEM - DD + CG | 16 | 61 | 34.0 |
| Trilinos - ILU(Aztec) | 1 | × | - |
| Trilinos - ILU(Aztec)
0
0
复制全文


