LMMC
Lamina Mathematic core
Toggle main menu visibility
载入中...
搜索中...
未找到
precond_internal.h
浏览该文件的文档.
1
#ifndef LMMC_PRECOND_INTERNAL_H
2
#define LMMC_PRECOND_INTERNAL_H
3
4
#include <math.h>
5
#include <string.h>
6
#include "
memory_bridge.h
"
7
#include "
internal.h
"
8
#include "
lmmc/precond.h
"
9
#include "
sparse_internal.h
"
10
11
typedef
struct
{
12
size_t
size
;
13
size_t
nnz
;
14
size_t
capacity
;
15
size_t
*
row_ptr
;
16
size_t
*
col_idx
;
17
lmmc_real_t
*
lu_values
;
18
size_t
*
diag_pos
;
19
lmmc_real_t
*
y_arr
;
20
}
lmmc_precond_ilu_impl_t
;
21
23
typedef
struct
{
24
lmmc_real_t
*
values
;
25
size_t
*
active
;
26
size_t
*
lower
;
27
size_t
*
upper
;
28
unsigned
char
*
present
;
29
unsigned
char
*
processed
;
30
size_t
count
;
31
}
lmmc_ilu_row_t
;
32
33
lmmc_status_t
lmmc_precond_validate_spd
(
const
lmmc_precond_t
* precond,
size_t
size);
34
int
lmmc_find_col_pos
(
const
size_t
* cols,
size_t
start,
size_t
end,
35
size_t
col,
size_t
* pos);
36
void
lmmc_ilu_impl_destroy
(
lmmc_precond_ilu_impl_t
* impl);
37
lmmc_status_t
lmmc_ilu_impl_create
(
size_t
size,
lmmc_precond_ilu_impl_t
** out);
38
lmmc_status_t
lmmc_ilu_impl_reserve
(
lmmc_precond_ilu_impl_t
* impl,
size_t
required);
39
lmmc_status_t
lmmc_ilu_row_bytes
(
size_t
n,
size_t
fill,
size_t
* bytes);
40
lmmc_status_t
lmmc_ilu_row_create
(
size_t
n,
size_t
fill,
size_t
bytes,
41
lmmc_ilu_row_t
* row);
42
void
lmmc_ilu_row_reset
(
lmmc_ilu_row_t
* row);
43
void
lmmc_ilu_select
(
const
lmmc_ilu_row_t
* row,
size_t
i,
int
lower,
44
lmmc_real_t
drop_tol,
size_t
max_keep,
size_t
* cols,
size_t
* count);
45
lmmc_status_t
lmmc_ilu_apply
(
const
lmmc_precond_t
* precond,
46
const
lmmc_vec_t
* rhs,
lmmc_vec_t
* out);
47
48
#endif
lmmc_real_t
double lmmc_real_t
Public and internal LMMC real type.
定义
config.h:28
lmmc_vec_t
一维稠密向量。
定义
dense_types.h:31
internal.h
LMMC 内部使用的公共工具(仅源文件可见).
memory_bridge.h
Private recoverable allocator for persistent LMMC ownership.
lmmc_precond_validate_spd
lmmc_status_t lmmc_precond_validate_spd(const lmmc_precond_t *precond, size_t size)
定义
precond.c:3
precond.h
迭代求解器使用的预处理子接口。
lmmc_precond_t
通用预处理子句柄。
定义
precond.h:36
lmmc_ilu_apply
lmmc_status_t lmmc_ilu_apply(const lmmc_precond_t *precond, const lmmc_vec_t *rhs, lmmc_vec_t *out)
定义
precond_apply.c:48
lmmc_precond_ilu_impl_t::capacity
size_t capacity
定义
precond_internal.h:14
lmmc_ilu_impl_reserve
lmmc_status_t lmmc_ilu_impl_reserve(lmmc_precond_ilu_impl_t *impl, size_t required)
定义
precond_workspace.c:50
lmmc_ilu_row_create
lmmc_status_t lmmc_ilu_row_create(size_t n, size_t fill, size_t bytes, lmmc_ilu_row_t *row)
定义
precond_row.c:28
lmmc_ilu_impl_create
lmmc_status_t lmmc_ilu_impl_create(size_t size, lmmc_precond_ilu_impl_t **out)
定义
precond_workspace.c:115
lmmc_ilu_row_t::active
size_t * active
定义
precond_internal.h:25
lmmc_precond_ilu_impl_t::nnz
size_t nnz
定义
precond_internal.h:13
lmmc_precond_ilu_impl_t::y_arr
lmmc_real_t * y_arr
定义
precond_internal.h:19
lmmc_precond_ilu_impl_t::diag_pos
size_t * diag_pos
定义
precond_internal.h:18
lmmc_precond_ilu_impl_t::col_idx
size_t * col_idx
定义
precond_internal.h:16
lmmc_precond_ilu_impl_t::lu_values
lmmc_real_t * lu_values
定义
precond_internal.h:17
lmmc_precond_ilu_impl_t::row_ptr
size_t * row_ptr
定义
precond_internal.h:15
lmmc_ilu_row_t::upper
size_t * upper
定义
precond_internal.h:27
lmmc_precond_ilu_impl_t::size
size_t size
定义
precond_internal.h:12
lmmc_ilu_row_t::processed
unsigned char * processed
定义
precond_internal.h:29
lmmc_ilu_impl_destroy
void lmmc_ilu_impl_destroy(lmmc_precond_ilu_impl_t *impl)
定义
precond_workspace.c:25
lmmc_ilu_row_t::values
lmmc_real_t * values
定义
precond_internal.h:24
lmmc_ilu_row_bytes
lmmc_status_t lmmc_ilu_row_bytes(size_t n, size_t fill, size_t *bytes)
定义
precond_row.c:3
lmmc_ilu_row_t::lower
size_t * lower
定义
precond_internal.h:26
lmmc_find_col_pos
int lmmc_find_col_pos(const size_t *cols, size_t start, size_t end, size_t col, size_t *pos)
定义
precond_workspace.c:3
lmmc_ilu_select
void lmmc_ilu_select(const lmmc_ilu_row_t *row, size_t i, int lower, lmmc_real_t drop_tol, size_t max_keep, size_t *cols, size_t *count)
定义
precond_row.c:83
lmmc_ilu_row_t::present
unsigned char * present
定义
precond_internal.h:28
lmmc_ilu_row_t::count
size_t count
定义
precond_internal.h:30
lmmc_ilu_row_reset
void lmmc_ilu_row_reset(lmmc_ilu_row_t *row)
定义
precond_row.c:47
lmmc_ilu_row_t
行工作区仅分配一次,以下指针均借用该内存。
定义
precond_internal.h:23
lmmc_precond_ilu_impl_t
定义
precond_internal.h:11
sparse_internal.h
稀疏矩阵模块内部共享辅助函数(仅源文件可见)。
lmmc_status_t
lmmc_status_t
LMMC 库统一返回的状态码.
定义
status.h:22
src
precond_internal.h
生成于
, 为 LMMC使用
1.18.0