|
LMMC
Lamina Mathematic core
|
#include <math.h>#include <string.h>#include "memory_bridge.h"#include "internal.h"#include "lmmc/itersolve.h"| 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_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_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_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().
| 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_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_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_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_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().
| 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().
| 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().
| 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_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_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_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().