数值并行求解器与算法的深入剖析
立即解锁
发布时间: 2025-10-20 01:01:07 阅读量: 14 订阅数: 36 AIGC 

迈向百亿亿次科学计算
### 数值并行求解器与算法的深入剖析
在科学计算领域,求解各类复杂的数学模型是一项关键任务。本文将聚焦于数值并行求解器以及并行数值算法,深入探讨它们在不同场景下的应用和性能表现。
#### 1. 并行求解器相关内容
在数值上采样的并行求解器方面,有多种方法和技术可供选择。
##### 1.1 预处理技术
有一种Galerkin矩阵,它在粗空间上具有独特的优势。由于它保留了规则的网格模式,并且仅通过对矩阵组件求和来计算,因此构建成本较低,预处理阶段也较为经济。粗网格问题通过内部CG迭代求解,使用较低的精度(如ε = 0.01),并采用位移分解 - 不完全分解预处理技术。
Trilinos的ML包提供了构建混合类型多级Schwarz预处理器的可能性。其平滑器采用一级Schwarz方法,粗空间校正以乘法方式添加。这两个步骤提供了非对称预处理器,可直接使用,也可通过添加第三个后平滑步骤进行对称化。在ML中,粗空间通过平滑聚合创建。以下是相关参数设置的代码示例:
```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 );
```
同时,Trilinos的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.2 奇异系统的迭代求解
在求解与纯Neumann边界条件的弹性问题有限元离散化对应的奇异系统时,理论上使用CG等方法求解奇异且一致的系统没有问题。但在实际中,由于舍入误差,求解的系统可能会出现病态情况,或者变得稍微不一致,导致迭代收敛性差甚至发散。
解决方法是使用投影到理论范围R(A),如果知道理论零空间N(A)的基,就可以构建该投影。对于弹性问题,这样的基可以由六个刚体模式{v1, ..., v6}构建,投影P : Rn →R(A)可以通过以下公式计算:
\[Pv = \sum_{i=1}^{6}\frac{(v, v_i)}{(v_i, v_i)}v_i\]
借助P,我们可以求解投影系统PAPu = Pb。
在实际应用中,还可能遇到另一种奇异性,即来自复杂微观结构CT扫描的有限元离散化中的弱悬挂元素。这种奇异性可以通过用人工的、非常软的材料填充空隙来有效消除。
0
0
复制全文


