|
LMMC
Lamina Mathematic core
|
#include "itersolve_gmres_internal.h"函数 | |
| 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_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。 |
在文件 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().