LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
ode_internal.h
浏览该文件的文档.
1
8#ifndef LMMC_ODE_INTERNAL_H
9#define LMMC_ODE_INTERNAL_H
10
11#include <math.h>
12#include <string.h>
13
14#include "internal.h"
15#include "lmmc/ode.h"
16#include "lmmc/diagnostic.h"
17
33
34void lmmc_ode_do_log(const lmmc_ode_config_t* cfg, size_t step, lmmc_real_t t, const lmmc_real_t* y, size_t dim);
35
36void lmmc_ode_reset_result(lmmc_ode_result_t* out_result, lmmc_real_t t_start);
37
39 size_t dim,
40 lmmc_real_t t_start,
41 lmmc_real_t t_end,
42 const lmmc_ode_config_t* cfg,
43 lmmc_ode_config_t* out_cfg,
44 lmmc_ode_result_t* out_result
45);
46
50 const lmmc_real_t* y,
51 lmmc_real_t* y_prime,
52 size_t dim,
53 void* user_data,
54 size_t* io_eval_count,
55 int* out_callback_failed
56);
57
58int lmmc_ode_state_is_finite(const lmmc_real_t* y, size_t dim);
59
62 size_t dim,
63 lmmc_real_t t_start,
64 lmmc_real_t t_end,
65 const lmmc_real_t* y,
66 const lmmc_ode_config_t* cfg,
67 lmmc_ode_config_t* out_cfg,
68 lmmc_ode_result_t* out_result,
69 size_t* out_work_bytes
70);
71
73 const lmmc_real_t* error,
74 const lmmc_real_t* y_old,
75 const lmmc_real_t* y_new,
76 size_t dim,
77 lmmc_real_t abs_tol,
78 lmmc_real_t rel_tol,
79 lmmc_real_t* out_norm
80);
81
84 lmmc_real_t error_norm,
85 const lmmc_ode_config_t* cfg
86);
87
89 const lmmc_real_t* values,
90 size_t count
91);
92
94
95#endif
double lmmc_real_t
Public and internal LMMC real type.
Unified diagnostic events for LMMC operations.
LMMC 内部使用的公共工具(仅源文件可见).
常微分方程初值问题求解器:Euler、RK4、RK45(自适应)。
lmmc_status_t(*) lmmc_ode_rhs_t(lmmc_real_t t, const lmmc_real_t *y, lmmc_real_t *y_prime, size_t dim, void *user_data)
ODE 右端函数签名 。
定义 ode.h:26
lmmc_status_t(*) lmmc_ode_jac_t(lmmc_real_t t, const lmmc_real_t *y, lmmc_real_t *J, size_t dim, void *user_data)
ODE Jacobian 回调签名 。
定义 ode.h:64
ODE 求解配置。
定义 ode.h:91
ODE 求解结果统计。
定义 ode.h:46
lmmc_status_t lmmc_ode_rhs_eval(lmmc_ode_rhs_t rhs, lmmc_real_t t, const lmmc_real_t *y, lmmc_real_t *y_prime, size_t dim, void *user_data, size_t *io_eval_count, int *out_callback_failed)
lmmc_status_t lmmc_ode_jacobian_eval(const lmmc_ode_jacobian_request_t *request)
lmmc_real_t lmmc_ode_next_step(lmmc_real_t h, lmmc_real_t error_norm, const lmmc_ode_config_t *cfg)
lmmc_status_t lmmc_ode_values_are_finite(const lmmc_real_t *values, size_t count)
lmmc_status_t validate_and_init_ode_config(lmmc_ode_rhs_t rhs, size_t dim, lmmc_real_t t_start, lmmc_real_t t_end, const lmmc_real_t *y, const lmmc_ode_config_t *cfg, lmmc_ode_config_t *out_cfg, lmmc_ode_result_t *out_result, size_t *out_work_bytes)
void lmmc_ode_reset_result(lmmc_ode_result_t *out_result, lmmc_real_t t_start)
int lmmc_ode_state_is_finite(const lmmc_real_t *y, size_t dim)
lmmc_status_t lmmc_ode_load_and_validate_config(size_t dim, lmmc_real_t t_start, lmmc_real_t t_end, const lmmc_ode_config_t *cfg, lmmc_ode_config_t *out_cfg, lmmc_ode_result_t *out_result)
void lmmc_ode_do_log(const lmmc_ode_config_t *cfg, size_t step, lmmc_real_t t, const lmmc_real_t *y, size_t dim)
lmmc_status_t lmmc_ode_weighted_rms(const lmmc_real_t *error, const lmmc_real_t *y_old, const lmmc_real_t *y_new, size_t dim, lmmc_real_t abs_tol, lmmc_real_t rel_tol, lmmc_real_t *out_norm)
lmmc_status_t
LMMC 库统一返回的状态码.