LMMC
Lamina Mathematic core
Toggle main menu visibility
载入中...
搜索中...
未找到
itersolve.h
浏览该文件的文档.
1
10
#ifndef LMMC_ITERSOLVE_H
11
#define LMMC_ITERSOLVE_H
12
13
#include <stddef.h>
14
#include "
lmmc/numeric.h
"
15
#include "
lmmc/diagnostic.h
"
16
#include "
lmmc/precond.h
"
17
#include "
lmmc/sparse.h
"
18
19
#ifdef __cplusplus
20
extern
"C"
{
21
#endif
22
26
typedef
struct
{
27
int
converged
;
28
size_t
num_iter
;
29
lmmc_real_t
initial_residual_norm
;
30
lmmc_real_t
final_residual_norm
;
31
}
lmmc_itersolve_result_t
;
32
43
typedef
lmmc_status_t
(*
lmmc_matvec_op_t
)(
44
const
lmmc_vec_t
* x,
lmmc_vec_t
* y,
void
* user_data);
45
53
typedef
struct
{
54
lmmc_real_t
abs_tol
;
55
lmmc_real_t
rel_tol
;
56
size_t
max_iter
;
57
size_t
restart
;
58
lmmc_diagnostic_sink_t
diagnostics
;
59
lmmc_matvec_op_t
apply_op
;
60
void
*
op_user_data
;
61
lmmc_matvec_op_t
apply_transpose_op
;
62
}
lmmc_itersolve_config_t
;
63
79
lmmc_status_t
lmmc_itersolve_default_config
(
size_t
problem_size,
lmmc_itersolve_config_t
* out_cfg);
80
103
lmmc_status_t
lmmc_cg_solve
(
104
const
lmmc_sparse_mat_t
* a,
105
const
lmmc_vec_t
* b,
106
const
lmmc_precond_t
* precond,
107
const
lmmc_itersolve_config_t
* cfg,
108
lmmc_vec_t
* x,
109
lmmc_itersolve_result_t
* out_result
110
);
111
129
lmmc_status_t
lmmc_bicgstab_solve
(
130
const
lmmc_sparse_mat_t
* a,
131
const
lmmc_vec_t
* b,
132
const
lmmc_precond_t
* precond,
133
const
lmmc_itersolve_config_t
* cfg,
134
lmmc_vec_t
* x,
135
lmmc_itersolve_result_t
* out_result
136
);
137
157
lmmc_status_t
lmmc_gmres_solve
(
158
const
lmmc_sparse_mat_t
* a,
159
const
lmmc_vec_t
* b,
160
const
lmmc_precond_t
* precond,
161
const
lmmc_itersolve_config_t
* cfg,
162
lmmc_vec_t
* x,
163
lmmc_itersolve_result_t
* out_result
164
);
165
183
lmmc_status_t
lmmc_minres_solve
(
184
const
lmmc_sparse_mat_t
* a,
185
const
lmmc_vec_t
* b,
186
const
lmmc_precond_t
* precond,
187
const
lmmc_itersolve_config_t
* cfg,
188
lmmc_vec_t
* x,
189
lmmc_itersolve_result_t
* out_result
190
);
191
211
lmmc_status_t
lmmc_lsqr_solve
(
212
const
lmmc_sparse_mat_t
* a,
213
const
lmmc_vec_t
* b,
214
const
lmmc_itersolve_config_t
* cfg,
215
lmmc_vec_t
* x,
216
lmmc_itersolve_result_t
* out_result
217
);
218
219
#ifdef __cplusplus
220
}
221
#endif
222
223
#endif
lmmc_real_t
double lmmc_real_t
Public and internal LMMC real type.
定义
config.h:28
lmmc_vec_t
一维稠密向量。
定义
dense_types.h:31
diagnostic.h
Unified diagnostic events for LMMC operations.
lmmc_diagnostic_sink_t
定义
diagnostic.h:37
lmmc_itersolve_config_t::abs_tol
lmmc_real_t abs_tol
定义
itersolve.h:54
lmmc_itersolve_config_t::diagnostics
lmmc_diagnostic_sink_t diagnostics
定义
itersolve.h:58
lmmc_itersolve_config_t::max_iter
size_t max_iter
定义
itersolve.h:56
lmmc_itersolve_config_t::apply_transpose_op
lmmc_matvec_op_t apply_transpose_op
定义
itersolve.h:61
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。
定义
itersolve_gmres.c:131
lmmc_minres_solve
lmmc_status_t lmmc_minres_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)
MINRES 求解对称(可能不定)稀疏系统 A x = b 。
定义
itersolve_minres.c:215
lmmc_itersolve_config_t::restart
size_t restart
定义
itersolve.h:57
lmmc_itersolve_config_t::op_user_data
void * op_user_data
定义
itersolve.h:60
lmmc_itersolve_result_t::final_residual_norm
lmmc_real_t final_residual_norm
定义
itersolve.h:30
lmmc_itersolve_result_t::converged
int converged
定义
itersolve.h:27
lmmc_itersolve_result_t::num_iter
size_t num_iter
定义
itersolve.h:28
lmmc_matvec_op_t
lmmc_status_t(*) lmmc_matvec_op_t(const lmmc_vec_t *x, lmmc_vec_t *y, void *user_data)
矩阵-向量乘法算子回调类型(matrix-free 模式)。
定义
itersolve.h:43
lmmc_itersolve_default_config
lmmc_status_t lmmc_itersolve_default_config(size_t problem_size, lmmc_itersolve_config_t *out_cfg)
根据问题规模生成迭代求解器默认配置。
定义
itersolve.c:57
lmmc_itersolve_result_t::initial_residual_norm
lmmc_real_t initial_residual_norm
定义
itersolve.h:29
lmmc_cg_solve
lmmc_status_t lmmc_cg_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)
共轭梯度法(CG)求解对称正定稀疏系统 A*x = b。
定义
itersolve_cg.c:113
lmmc_itersolve_config_t::apply_op
lmmc_matvec_op_t apply_op
定义
itersolve.h:59
lmmc_bicgstab_solve
lmmc_status_t lmmc_bicgstab_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)
稳定双共轭梯度法(BiCGSTAB)求解一般非对称稀疏系统 A*x = b。
定义
itersolve_bicgstab.c:186
lmmc_itersolve_config_t::rel_tol
lmmc_real_t rel_tol
定义
itersolve.h:55
lmmc_lsqr_solve
lmmc_status_t lmmc_lsqr_solve(const lmmc_sparse_mat_t *a, const lmmc_vec_t *b, const lmmc_itersolve_config_t *cfg, lmmc_vec_t *x, lmmc_itersolve_result_t *out_result)
LSQR 求解最小二乘问题 min ||Ax - b||_2 。
定义
itersolve_lsqr.c:232
lmmc_itersolve_config_t
迭代求解器配置。
定义
itersolve.h:53
lmmc_itersolve_result_t
迭代求解的结果统计。
定义
itersolve.h:26
numeric.h
数值标量、特殊函数和 FFT 公共接口。
precond.h
迭代求解器使用的预处理子接口。
lmmc_precond_t
通用预处理子句柄。
定义
precond.h:36
sparse.h
lmmc_sparse_mat_t
通用稀疏矩阵(CSR / CSC 共用同一结构)。
定义
sparse_types.h:34
lmmc_status_t
lmmc_status_t
LMMC 库统一返回的状态码.
定义
status.h:22
lmmc
itersolve.h
生成于
, 为 LMMC使用
1.18.0