LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
itersolve_internal.h
浏览该文件的文档.
1#ifndef LMMC_ITERSOLVE_INTERNAL_H
2#define LMMC_ITERSOLVE_INTERNAL_H
3
4#include <math.h>
5#include <string.h>
6#include "memory_bridge.h"
7#include "internal.h"
8#include "lmmc/itersolve.h"
9
12 const size_t* sizes, size_t count, lmmc_real_t** storage);
15 lmmc_real_t* dot);
17 const lmmc_vec_t* rhs, lmmc_vec_t* out);
19 size_t iter, lmmc_real_t residual);
21 const lmmc_vec_t* b, const lmmc_precond_t* precond,
25 const lmmc_vec_t* b, const lmmc_itersolve_config_t* cfg,
26 const lmmc_vec_t* x, lmmc_itersolve_config_t* local);
28 const lmmc_itersolve_config_t* cfg, const lmmc_vec_t* x, lmmc_vec_t* y);
30 const lmmc_itersolve_config_t* cfg, const lmmc_vec_t* x, lmmc_vec_t* y);
34 int converged, size_t iterations, lmmc_real_t norm);
36 const lmmc_vec_t* b, const lmmc_vec_t* x, lmmc_vec_t* ax,
37 lmmc_vec_t* r);
39 const lmmc_itersolve_config_t* cfg, const lmmc_vec_t* b,
40 const lmmc_vec_t* x, lmmc_vec_t* r, lmmc_real_t* norm);
42 const lmmc_vec_t* b, const lmmc_vec_t* r, lmmc_real_t* norm,
43 lmmc_real_t* threshold);
44
45#endif
double lmmc_real_t
Public and internal LMMC real type.
一维稠密向量。
LMMC 内部使用的公共工具(仅源文件可见).
lmmc_status_t lmmc_vec_dot_checked(const lmmc_vec_t *a, const lmmc_vec_t *b, lmmc_real_t *out_dot)
lmmc_status_t lmmc_vec_norm2_checked(const lmmc_vec_t *v, lmmc_real_t *out_norm)
lmmc_status_t lmmc_itersolve_threshold(const lmmc_itersolve_config_t *cfg, const lmmc_vec_t *b, const lmmc_vec_t *r, lmmc_real_t *norm, lmmc_real_t *threshold)
lmmc_status_t lmmc_itersolve_true_residual(const lmmc_sparse_mat_t *a, const lmmc_itersolve_config_t *cfg, const lmmc_vec_t *b, const lmmc_vec_t *x, lmmc_vec_t *r, lmmc_real_t *norm)
lmmc_status_t lmmc_apply_precond_or_identity(const lmmc_precond_t *precond, const lmmc_vec_t *rhs, lmmc_vec_t *out)
lmmc_status_t lmmc_itersolve_transpose(const lmmc_sparse_mat_t *a, const lmmc_itersolve_config_t *cfg, const lmmc_vec_t *x_in, lmmc_vec_t *y_out)
lmmc_status_t lmmc_itersolve_validate(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_config_t *out_cfg, lmmc_itersolve_result_t *out_result)
lmmc_status_t lmmc_itersolve_workspace(lmmc_vec_t *const *vectors, const size_t *sizes, size_t count, lmmc_real_t **storage)
所有视图借用求解过程统一分配的存储区,最后一次日志回调后释放。
void lmmc_itersolve_finish(lmmc_itersolve_result_t *result, int converged, size_t iterations, lmmc_real_t norm)
lmmc_status_t lmmc_itersolve_residual(const lmmc_sparse_mat_t *a, const lmmc_vec_t *b, const lmmc_vec_t *x, lmmc_vec_t *ax, lmmc_vec_t *r)
void lmmc_itersolve_result_init(lmmc_itersolve_result_t *result)
lmmc_status_t lmmc_itersolve_matvec(const lmmc_sparse_mat_t *a, const lmmc_itersolve_config_t *cfg, const lmmc_vec_t *x_in, lmmc_vec_t *y_out)
通过无矩阵算子或稀疏矩阵计算 y = A*x。
void lmmc_itersolve_initial(lmmc_itersolve_result_t *result, lmmc_real_t norm)
lmmc_status_t lmmc_itersolve_dispatch_config(const lmmc_sparse_mat_t *a, const lmmc_vec_t *b, const lmmc_itersolve_config_t *cfg, const lmmc_vec_t *x, lmmc_itersolve_config_t *local)
void lmmc_itersolve_do_log(const lmmc_itersolve_config_t *cfg, size_t iter, lmmc_real_t residual_norm)
稀疏线性系统的迭代求解器(CG / BiCGSTAB / GMRES / MINRES / LSQR)。
迭代求解器配置。
迭代求解的结果统计。
Private recoverable allocator for persistent LMMC ownership.
通用预处理子句柄。
通用稀疏矩阵(CSR / CSC 共用同一结构)。
lmmc_status_t
LMMC 库统一返回的状态码.