LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
precond.h
浏览该文件的文档.
1
7#ifndef LMMC_PRECOND_H
8#define LMMC_PRECOND_H
9
10#include <stddef.h>
11#include "lmmc/dense.h"
12#include "lmmc/sparse.h"
13#include "lmmc/status.h"
14
15#ifdef __cplusplus
16extern "C" {
17#endif
18
26
36typedef struct {
38 size_t size;
39 void* impl;
42
45
64
84
94 const lmmc_sparse_mat_t* a,
95 lmmc_real_t drop_tol,
96 size_t max_fill_per_row,
97 lmmc_precond_t* out_precond
98);
99
121
133
134#ifdef __cplusplus
135}
136#endif
137
138#endif
double lmmc_real_t
Public and internal LMMC real type.
一维稠密向量。
lmmc_status_t lmmc_precond_create_none(size_t size, lmmc_precond_t *out_precond)
创建恒等预处理子(仅记录尺寸,apply 时直接复制)。
lmmc_status_t lmmc_precond_create_jacobi(const lmmc_sparse_mat_t *a, lmmc_precond_t *out_precond)
由稀疏矩阵的对角线创建 Jacobi 预处理子:M = diag(A)。
lmmc_status_t lmmc_precond_apply(const lmmc_precond_t *precond, const lmmc_vec_t *rhs, lmmc_vec_t *out)
应用预处理子:求解 M*out = rhs。
lmmc_precond_type_t type
lmmc_status_t lmmc_precond_create_ilu0(const lmmc_sparse_mat_t *a, lmmc_precond_t *out_precond)
创建 ILU(0) 预处理子(零填充不完全 LU 分解)。
void lmmc_precond_destroy(lmmc_precond_t *precond)
销毁预处理子,释放内部资源。
lmmc_precond_type_t
预处理子类型标识。
@ LMMC_PRECOND_NONE
@ LMMC_PRECOND_JACOBI
@ LMMC_PRECOND_ILU0
@ LMMC_PRECOND_ILUT
lmmc_status_t lmmc_precond_create_ilut(const lmmc_sparse_mat_t *a, lmmc_real_t drop_tol, size_t max_fill_per_row, lmmc_precond_t *out_precond)
创建 ILUT 预处理子。
通用预处理子句柄。
通用稀疏矩阵(CSR / CSC 共用同一结构)。
LMMC 通用状态码定义.
lmmc_status_t
LMMC 库统一返回的状态码.