LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
itersolve_internal.h 文件参考
#include <math.h>
#include <string.h>
#include "memory_bridge.h"
#include "internal.h"
#include "lmmc/itersolve.h"
itersolve_internal.h 的引用(Include)关系图:
此图展示该文件被哪些文件直接或间接地引用了:

浏览该文件的源代码.

函数

lmmc_status_t lmmc_itersolve_workspace (lmmc_vec_t *const *vectors, const size_t *sizes, size_t count, lmmc_real_t **storage)
 所有视图借用求解过程统一分配的存储区,最后一次日志回调后释放。
lmmc_status_t lmmc_vec_norm2_checked (const lmmc_vec_t *v, lmmc_real_t *norm)
lmmc_status_t lmmc_vec_dot_checked (const lmmc_vec_t *a, const lmmc_vec_t *b, lmmc_real_t *dot)
lmmc_status_t lmmc_apply_precond_or_identity (const lmmc_precond_t *precond, const lmmc_vec_t *rhs, lmmc_vec_t *out)
void lmmc_itersolve_do_log (const lmmc_itersolve_config_t *cfg, size_t iter, lmmc_real_t residual)
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 *local, lmmc_itersolve_result_t *result)
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)
lmmc_status_t lmmc_itersolve_matvec (const lmmc_sparse_mat_t *a, const lmmc_itersolve_config_t *cfg, const lmmc_vec_t *x, lmmc_vec_t *y)
 通过无矩阵算子或稀疏矩阵计算 y = A*x。
lmmc_status_t lmmc_itersolve_transpose (const lmmc_sparse_mat_t *a, const lmmc_itersolve_config_t *cfg, const lmmc_vec_t *x, lmmc_vec_t *y)
void lmmc_itersolve_result_init (lmmc_itersolve_result_t *result)
void lmmc_itersolve_initial (lmmc_itersolve_result_t *result, lmmc_real_t norm)
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)
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_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_itersolve_workspace()

lmmc_status_t lmmc_itersolve_workspace ( lmmc_vec_t *const * vectors,
const size_t * sizes,
size_t count,
lmmc_real_t ** storage )

所有视图借用求解过程统一分配的存储区,最后一次日志回调后释放。

在文件 itersolve.c 第 157 行定义.

引用了 lmmc_itersolve_workspace(), lmmc_memory_alloc(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT , 以及 LMMC_STATUS_OK.

被这些函数引用 lmmc_bicgstab_solve(), lmmc_cg_solve(), lmmc_itersolve_workspace(), lmmc_lsqr_solve() , 以及 lmmc_minres_solve().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_vec_norm2_checked()

lmmc_status_t lmmc_vec_norm2_checked ( const lmmc_vec_t * v,
lmmc_real_t * norm )

在文件 itersolve.c 第 4 行定义.

引用了 lmmc_vec_t::data, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_NUMERICAL_FAILURE, LMMC_STATUS_OK, lmmc_vec_norm2(), lmmc_vec_norm2_checked() , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_gmres_arnoldi(), lmmc_itersolve_threshold(), lmmc_itersolve_true_residual() , 以及 lmmc_vec_norm2_checked().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_vec_dot_checked()

lmmc_status_t lmmc_vec_dot_checked ( const lmmc_vec_t * a,
const lmmc_vec_t * b,
lmmc_real_t * dot )

在文件 itersolve.c 第 27 行定义.

引用了 LMMC_STATUS_NUMERICAL_FAILURE, LMMC_STATUS_OK, lmmc_vec_dot() , 以及 lmmc_vec_dot_checked().

被这些函数引用 lmmc_gmres_arnoldi() , 以及 lmmc_vec_dot_checked().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_apply_precond_or_identity()

lmmc_status_t lmmc_apply_precond_or_identity ( const lmmc_precond_t * precond,
const lmmc_vec_t * rhs,
lmmc_vec_t * out )

在文件 itersolve.c 第 38 行定义.

引用了 lmmc_apply_precond_or_identity(), lmmc_precond_apply() , 以及 lmmc_vec_copy().

被这些函数引用 lmmc_apply_precond_or_identity() , 以及 lmmc_gmres_arnoldi().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_itersolve_do_log()

void lmmc_itersolve_do_log ( const lmmc_itersolve_config_t * cfg,
size_t iter,
lmmc_real_t residual )

在文件 itersolve.c 第 49 行定义.

引用了 lmmc_itersolve_config_t::diagnostics, lmmc_diagnostic_emit(), LMMC_DIAGNOSTIC_TRACE , 以及 lmmc_itersolve_do_log().

被这些函数引用 lmmc_bicgstab_solve(), lmmc_cg_solve(), lmmc_gmres_solve(), lmmc_itersolve_do_log(), lmmc_lsqr_solve() , 以及 lmmc_minres_solve().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_itersolve_validate()

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 * local,
lmmc_itersolve_result_t * result )

在文件 itersolve.c 第 111 行定义.

引用了 lmmc_itersolve_result_t::converged, lmmc_itersolve_result_t::final_residual_norm, lmmc_itersolve_result_t::initial_residual_norm, lmmc_itersolve_default_config(), lmmc_itersolve_validate(), LMMC_REAL_INIT, LMMC_REAL_SET_D, LMMC_STATUS_DIMENSION_MISMATCH, LMMC_STATUS_OK, lmmc_itersolve_result_t::num_iter, lmmc_precond_t::size , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_bicgstab_solve(), lmmc_cg_solve(), lmmc_gmres_solve() , 以及 lmmc_itersolve_validate().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_itersolve_dispatch_config()

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 )

在文件 itersolve.c 第 260 行定义.

引用了 lmmc_itersolve_config_t::apply_op, lmmc_vec_t::data, lmmc_itersolve_default_config(), lmmc_itersolve_dispatch_config(), LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_itersolve_dispatch_config().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_itersolve_matvec()

lmmc_status_t lmmc_itersolve_matvec ( const lmmc_sparse_mat_t * a,
const lmmc_itersolve_config_t * cfg,
const lmmc_vec_t * x,
lmmc_vec_t * y )

通过无矩阵算子或稀疏矩阵计算 y = A*x。

在文件 itersolve.c 第 285 行定义.

引用了 lmmc_itersolve_config_t::apply_op, lmmc_itersolve_matvec(), lmmc_sparse_mat_vec_mul() , 以及 lmmc_itersolve_config_t::op_user_data.

被这些函数引用 lmmc_itersolve_matvec() , 以及 lmmc_itersolve_true_residual().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_itersolve_transpose()

lmmc_status_t lmmc_itersolve_transpose ( const lmmc_sparse_mat_t * a,
const lmmc_itersolve_config_t * cfg,
const lmmc_vec_t * x,
lmmc_vec_t * y )

在文件 itersolve.c 第 342 行定义.

引用了 lmmc_itersolve_config_t::apply_transpose_op, lmmc_sparse_mat_t::format, lmmc_itersolve_transpose(), LMMC_SPARSE_CSR, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK , 以及 lmmc_itersolve_config_t::op_user_data.

被这些函数引用 lmmc_itersolve_transpose().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_itersolve_result_init()

void lmmc_itersolve_result_init ( lmmc_itersolve_result_t * result)

在文件 itersolve.c 第 182 行定义.

引用了 lmmc_itersolve_result_t::converged, lmmc_itersolve_result_t::final_residual_norm, lmmc_itersolve_result_t::initial_residual_norm, lmmc_itersolve_result_init() , 以及 lmmc_itersolve_result_t::num_iter.

被这些函数引用 lmmc_itersolve_result_init(), lmmc_lsqr_solve() , 以及 lmmc_minres_solve().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_itersolve_initial()

void lmmc_itersolve_initial ( lmmc_itersolve_result_t * result,
lmmc_real_t norm )

在文件 itersolve.c 第 191 行定义.

引用了 lmmc_itersolve_result_t::final_residual_norm, lmmc_itersolve_result_t::initial_residual_norm , 以及 lmmc_itersolve_initial().

被这些函数引用 lmmc_bicgstab_solve(), lmmc_cg_solve(), lmmc_gmres_solve(), lmmc_itersolve_initial(), lmmc_lsqr_solve() , 以及 lmmc_minres_solve().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_itersolve_finish()

void lmmc_itersolve_finish ( lmmc_itersolve_result_t * result,
int converged,
size_t iterations,
lmmc_real_t norm )

在文件 itersolve.c 第 198 行定义.

引用了 lmmc_itersolve_result_t::converged, lmmc_itersolve_result_t::final_residual_norm, lmmc_itersolve_finish() , 以及 lmmc_itersolve_result_t::num_iter.

被这些函数引用 lmmc_bicgstab_solve(), lmmc_cg_solve(), lmmc_gmres_solve(), lmmc_itersolve_finish(), lmmc_lsqr_solve() , 以及 lmmc_minres_solve().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_itersolve_residual()

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 )

在文件 itersolve.c 第 209 行定义.

引用了 lmmc_vec_t::data, lmmc_itersolve_residual(), lmmc_sparse_mat_vec_mul(), LMMC_STATUS_OK , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_itersolve_residual().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_itersolve_true_residual()

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 )

在文件 itersolve.c 第 221 行定义.

引用了 lmmc_vec_t::data, lmmc_itersolve_matvec(), lmmc_itersolve_true_residual(), LMMC_STATUS_NUMERICAL_FAILURE, LMMC_STATUS_OK, lmmc_vec_norm2_checked() , 以及 lmmc_vec_t::size.

被这些函数引用 lmmc_itersolve_true_residual().

函数调用图:
这是这个函数的调用关系图:

◆ lmmc_itersolve_threshold()

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 )

在文件 itersolve.c 第 244 行定义.

引用了 lmmc_itersolve_config_t::abs_tol, lmmc_itersolve_threshold(), LMMC_STATUS_NUMERICAL_FAILURE, LMMC_STATUS_OK, lmmc_vec_norm2_checked() , 以及 lmmc_itersolve_config_t::rel_tol.

被这些函数引用 lmmc_itersolve_threshold().

函数调用图:
这是这个函数的调用关系图: