|
LMMC
Lamina Mathematic core
|
隐式 ODE 求解器:隐式 Euler 与梯形法(Newton 迭代)。 更多...
#include <math.h>#include <string.h>#include "memory_bridge.h"#include "internal.h"#include "ode_internal.h"#include "lmmc/ode.h"#include "lmmc/optimize.h"#include "lmmc/dense.h"#include "lmmc/linear_algebra.h"结构体 | |
| struct | ode_implicit_euler_ctx_t |
| struct | ode_trapezoidal_ctx_t |
函数 | |
| lmmc_status_t | lmmc_ode_implicit_euler_solve (lmmc_ode_rhs_t rhs, void *user_data, size_t dim, lmmc_real_t t_start, lmmc_real_t t_end, lmmc_real_t *y, const lmmc_ode_config_t *cfg, lmmc_ode_result_t *out_result) |
| 隐式 Euler 法求解器(A-稳定,适用于刚性问题)。 | |
| lmmc_status_t | lmmc_ode_trapezoidal_solve (lmmc_ode_rhs_t rhs, void *user_data, size_t dim, lmmc_real_t t_start, lmmc_real_t t_end, lmmc_real_t *y, const lmmc_ode_config_t *cfg, lmmc_ode_result_t *out_result) |
| 梯形法求解器(A-稳定,二阶精度)。 | |
隐式 ODE 求解器:隐式 Euler 与梯形法(Newton 迭代)。
在文件 ode_implicit.c 中定义.
| struct ode_implicit_euler_ctx_t |
在文件 ode_implicit.c 第 16 行定义.
| 成员变量 | ||
|---|---|---|
| lmmc_ode_rhs_t | rhs | |
| void * | user_data | |
| lmmc_ode_jac_t | jac_cb | |
| lmmc_real_t | t_next | |
| lmmc_real_t | h | |
| const lmmc_real_t * | y_n | |
| size_t | dim | |
| lmmc_real_t * | jac_base_rhs | |
| lmmc_real_t * | jac_y_perturbed | |
| lmmc_real_t * | jac_rhs_perturbed | |
| size_t * | rhs_eval_count | |
| int | callback_failed | |
| struct ode_trapezoidal_ctx_t |
在文件 ode_implicit.c 第 188 行定义.
| 成员变量 | ||
|---|---|---|
| lmmc_ode_rhs_t | rhs | |
| void * | user_data | |
| lmmc_ode_jac_t | jac_cb | |
| lmmc_real_t | t_next | |
| lmmc_real_t | h | |
| const lmmc_real_t * | y_n | |
| lmmc_real_t * | f_n | |
| size_t | dim | |
| lmmc_real_t * | jac_base_rhs | |
| lmmc_real_t * | jac_y_perturbed | |
| lmmc_real_t * | jac_rhs_perturbed | |
| size_t * | rhs_eval_count | |
| int | callback_failed | |
| lmmc_status_t lmmc_ode_implicit_euler_solve | ( | lmmc_ode_rhs_t | rhs, |
| void * | user_data, | ||
| size_t | dim, | ||
| lmmc_real_t | t_start, | ||
| lmmc_real_t | t_end, | ||
| lmmc_real_t * | y, | ||
| const lmmc_ode_config_t * | cfg, | ||
| lmmc_ode_result_t * | out_result ) |
隐式 Euler 法求解器(A-稳定,适用于刚性问题)。
在文件 ode_implicit.c 第 124 行定义.
引用了 lmmc_ode_config_t::abs_tol, lmmc_optimize_config_t::abs_tol, ode_implicit_euler_ctx_t::callback_failed, lmmc_vec_t::data, ode_implicit_euler_ctx_t::dim, lmmc_ode_result_t::failure_reason, lmmc_ode_config_t::initial_step, ode_implicit_euler_ctx_t::jac_base_rhs, ode_implicit_euler_ctx_t::jac_cb, ode_implicit_euler_ctx_t::jac_rhs_perturbed, ode_implicit_euler_ctx_t::jac_y_perturbed, lmmc_ode_config_t::jacobian, lmmc_memory_alloc(), lmmc_memory_free(), lmmc_ode_do_log(), LMMC_ODE_FAILURE_INVALID_DIMENSION, LMMC_ODE_FAILURE_NUMERICAL_ISSUE, lmmc_ode_implicit_euler_solve(), lmmc_optimize_default_config(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_optimize_config_t::max_iter, lmmc_ode_config_t::max_step, lmmc_ode_config_t::min_step, lmmc_ode_result_t::num_rhs_evals, lmmc_vec_t::owns_data, lmmc_ode_config_t::rel_tol, lmmc_optimize_config_t::rel_tol, ode_implicit_euler_ctx_t::rhs, ode_implicit_euler_ctx_t::rhs_eval_count, lmmc_vec_t::size, ode_implicit_euler_ctx_t::user_data , 以及 validate_and_init_ode_config().
被这些函数引用 lmmc_ode_implicit_euler_solve().
| lmmc_status_t lmmc_ode_trapezoidal_solve | ( | lmmc_ode_rhs_t | rhs, |
| void * | user_data, | ||
| size_t | dim, | ||
| lmmc_real_t | t_start, | ||
| lmmc_real_t | t_end, | ||
| lmmc_real_t * | y, | ||
| const lmmc_ode_config_t * | cfg, | ||
| lmmc_ode_result_t * | out_result ) |
梯形法求解器(A-稳定,二阶精度)。
在文件 ode_implicit.c 第 308 行定义.
引用了 lmmc_ode_config_t::abs_tol, lmmc_optimize_config_t::abs_tol, ode_trapezoidal_ctx_t::callback_failed, lmmc_vec_t::data, ode_trapezoidal_ctx_t::dim, ode_trapezoidal_ctx_t::f_n, lmmc_ode_result_t::failure_reason, lmmc_ode_config_t::initial_step, ode_trapezoidal_ctx_t::jac_base_rhs, ode_trapezoidal_ctx_t::jac_cb, ode_trapezoidal_ctx_t::jac_rhs_perturbed, ode_trapezoidal_ctx_t::jac_y_perturbed, lmmc_ode_config_t::jacobian, lmmc_memory_alloc(), lmmc_memory_free(), lmmc_ode_do_log(), LMMC_ODE_FAILURE_INVALID_DIMENSION, LMMC_ODE_FAILURE_NUMERICAL_ISSUE, lmmc_ode_trapezoidal_solve(), lmmc_optimize_default_config(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, lmmc_optimize_config_t::max_iter, lmmc_ode_config_t::max_step, lmmc_ode_config_t::min_step, lmmc_ode_result_t::num_rhs_evals, lmmc_vec_t::owns_data, lmmc_ode_config_t::rel_tol, lmmc_optimize_config_t::rel_tol, ode_trapezoidal_ctx_t::rhs, ode_trapezoidal_ctx_t::rhs_eval_count, lmmc_vec_t::size, ode_trapezoidal_ctx_t::user_data , 以及 validate_and_init_ode_config().
被这些函数引用 lmmc_ode_trapezoidal_solve().