LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
itersolve_gmres.c 文件参考
itersolve_gmres.c 的引用(Include)关系图:

浏览该文件的源代码.

函数

lmmc_status_t lmmc_gmres_solve (const lmmc_sparse_mat_t *a, const lmmc_vec_t *b, const lmmc_precond_t *precond, const lmmc_itersolve_config_t *cfg, lmmc_vec_t *x, lmmc_itersolve_result_t *out_result)
 重启型 GMRES 求解一般非对称稀疏系统 A*x = b。

函数说明

◆ lmmc_gmres_solve()

lmmc_status_t lmmc_gmres_solve ( const lmmc_sparse_mat_t * a,
const lmmc_vec_t * b,
const lmmc_precond_t * precond,
const lmmc_itersolve_config_t * cfg,
lmmc_vec_t * x,
lmmc_itersolve_result_t * out_result )

重启型 GMRES 求解一般非对称稀疏系统 A*x = b。

使用 Arnoldi 过程构建 Krylov 子空间,Givens 旋转求解最小残差。 重启长度由 cfg->restart 控制(默认 30)。

参数
[in]a稀疏矩阵(不被修改)。
[in]b右端向量(不被修改)。
[in]precond预处理子,可为 NULL。
[in]cfg配置参数,可为 NULL。cfg->restart 控制重启长度。
[in,out]x初始猜测 / 输出解向量。
[out]out_result迭代统计结果,可为 NULL。
返回
同 ::lmmc_cg_solve。
副作用
  • 就地修改 x->data。
  • 分配 (restart+1) 个长度为 n 的 Arnoldi 基向量 + Hessenberg 矩阵等工作空间。

在文件 itersolve_gmres.c 第 131 行定义.

引用了 lmmc_gmres_state_t::basis, lmmc_gmres_solve(), lmmc_gmres_workspace(), lmmc_itersolve_do_log(), lmmc_itersolve_finish(), lmmc_itersolve_initial(), lmmc_itersolve_validate(), lmmc_memory_free(), LMMC_STATUS_OK, lmmc_itersolve_config_t::max_iter, lmmc_gmres_state_t::norm, lmmc_itersolve_config_t::restart, lmmc_vec_t::size , 以及 lmmc_gmres_state_t::threshold.

被这些函数引用 lmmc_gmres_solve().

函数调用图:
这是这个函数的调用关系图: