LMMC
Lamina Mathematic core
Toggle main menu visibility
载入中...
搜索中...
未找到
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
16
extern
"C"
{
17
#endif
18
20
typedef
enum
{
21
LMMC_PRECOND_NONE
= 0,
22
LMMC_PRECOND_JACOBI
= 1,
23
LMMC_PRECOND_ILU0
= 2,
24
LMMC_PRECOND_ILUT
= 3
25
}
lmmc_precond_type_t
;
26
36
typedef
struct
{
37
lmmc_precond_type_t
type
;
38
size_t
size
;
39
void
*
impl
;
40
int
owns_data
;
41
}
lmmc_precond_t
;
42
44
lmmc_status_t
lmmc_precond_create_none
(
size_t
size,
lmmc_precond_t
* out_precond);
45
63
lmmc_status_t
lmmc_precond_create_jacobi
(
const
lmmc_sparse_mat_t
* a,
lmmc_precond_t
* out_precond);
64
83
lmmc_status_t
lmmc_precond_create_ilu0
(
const
lmmc_sparse_mat_t
* a,
lmmc_precond_t
* out_precond);
84
93
lmmc_status_t
lmmc_precond_create_ilut
(
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
120
lmmc_status_t
lmmc_precond_apply
(
const
lmmc_precond_t
* precond,
const
lmmc_vec_t
* rhs,
lmmc_vec_t
* out);
121
132
void
lmmc_precond_destroy
(
lmmc_precond_t
* precond);
133
134
#ifdef __cplusplus
135
}
136
#endif
137
138
#endif
lmmc_real_t
double lmmc_real_t
Public and internal LMMC real type.
定义
config.h:28
dense.h
lmmc_vec_t
一维稠密向量。
定义
dense_types.h:31
lmmc_precond_t::impl
void * impl
定义
precond.h:39
lmmc_precond_create_none
lmmc_status_t lmmc_precond_create_none(size_t size, lmmc_precond_t *out_precond)
创建恒等预处理子(仅记录尺寸,apply 时直接复制)。
定义
precond.c:28
lmmc_precond_create_jacobi
lmmc_status_t lmmc_precond_create_jacobi(const lmmc_sparse_mat_t *a, lmmc_precond_t *out_precond)
由稀疏矩阵的对角线创建 Jacobi 预处理子:M = diag(A)。
定义
precond.c:58
lmmc_precond_apply
lmmc_status_t lmmc_precond_apply(const lmmc_precond_t *precond, const lmmc_vec_t *rhs, lmmc_vec_t *out)
应用预处理子:求解 M*out = rhs。
定义
precond.c:120
lmmc_precond_t::owns_data
int owns_data
定义
precond.h:40
lmmc_precond_t::type
lmmc_precond_type_t type
定义
precond.h:37
lmmc_precond_create_ilu0
lmmc_status_t lmmc_precond_create_ilu0(const lmmc_sparse_mat_t *a, lmmc_precond_t *out_precond)
创建 ILU(0) 预处理子(零填充不完全 LU 分解)。
定义
precond_ilu0.c:99
lmmc_precond_destroy
void lmmc_precond_destroy(lmmc_precond_t *precond)
销毁预处理子,释放内部资源。
定义
precond.c:86
lmmc_precond_type_t
lmmc_precond_type_t
预处理子类型标识。
定义
precond.h:20
LMMC_PRECOND_NONE
@ LMMC_PRECOND_NONE
定义
precond.h:21
LMMC_PRECOND_JACOBI
@ LMMC_PRECOND_JACOBI
定义
precond.h:22
LMMC_PRECOND_ILU0
@ LMMC_PRECOND_ILU0
定义
precond.h:23
LMMC_PRECOND_ILUT
@ LMMC_PRECOND_ILUT
定义
precond.h:24
lmmc_precond_create_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 预处理子。
定义
precond_ilut.c:195
lmmc_precond_t::size
size_t size
定义
precond.h:38
lmmc_precond_t
通用预处理子句柄。
定义
precond.h:36
sparse.h
lmmc_sparse_mat_t
通用稀疏矩阵(CSR / CSC 共用同一结构)。
定义
sparse_types.h:34
status.h
LMMC 通用状态码定义.
lmmc_status_t
lmmc_status_t
LMMC 库统一返回的状态码.
定义
status.h:22
lmmc
precond.h
生成于
, 为 LMMC使用
1.18.0