LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
ode.h
浏览该文件的文档.
1
5#ifndef LMMC_ODE_H
6#define LMMC_ODE_H
7
8#include <stddef.h>
9#include "lmmc/numeric.h"
10#include "lmmc/diagnostic.h"
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
28 const lmmc_real_t* y,
29 lmmc_real_t* y_prime,
30 size_t dim,
31 void* user_data
32);
33
44
53
66 const lmmc_real_t* y,
67 lmmc_real_t* J,
68 size_t dim,
69 void* user_data
70);
83 const lmmc_real_t* y,
84 lmmc_real_t* dfdt,
85 size_t dim,
86 void* user_data
87);
88
89
103
106
126 lmmc_real_t t_start,
127 lmmc_real_t t_end,
128 size_t problem_dim,
129 lmmc_ode_config_t* out_cfg
130);
131
158 lmmc_ode_rhs_t rhs,
159 void* user_data,
160 size_t dim,
161 lmmc_real_t t_start,
162 lmmc_real_t t_end,
163 lmmc_real_t* y,
164 const lmmc_ode_config_t* cfg,
165 lmmc_ode_result_t* out_result
166);
167
194 lmmc_ode_rhs_t rhs,
195 void* user_data,
196 size_t dim,
197 lmmc_real_t t_start,
198 lmmc_real_t t_end,
199 lmmc_real_t* y,
200 const lmmc_ode_config_t* cfg,
201 lmmc_ode_result_t* out_result
202);
203
232 lmmc_ode_rhs_t rhs,
233 void* user_data,
234 size_t dim,
235 lmmc_real_t t_start,
236 lmmc_real_t t_end,
237 lmmc_real_t* y,
238 const lmmc_ode_config_t* cfg,
239 lmmc_ode_result_t* out_result
240);
241
244 lmmc_ode_rhs_t rhs,
245 void* user_data,
246 size_t dim,
247 lmmc_real_t t_start,
248 lmmc_real_t t_end,
249 lmmc_real_t* y,
250 const lmmc_ode_config_t* cfg,
251 lmmc_ode_result_t* out_result
252);
253
256 lmmc_ode_rhs_t rhs,
257 void* user_data,
258 size_t dim,
259 lmmc_real_t t_start,
260 lmmc_real_t t_end,
261 lmmc_real_t* y,
262 const lmmc_ode_config_t* cfg,
263 lmmc_ode_result_t* out_result
264);
265
273 lmmc_ode_rhs_t rhs,
274 void* user_data,
275 size_t dim,
276 lmmc_real_t t_start,
277 lmmc_real_t t_end,
278 lmmc_real_t* y,
279 const lmmc_ode_config_t* cfg,
280 lmmc_ode_result_t* out_result
281);
282
285 lmmc_ode_rhs_t rhs,
286 void* user_data,
287 size_t dim,
288 lmmc_real_t t_start,
289 lmmc_real_t t_end,
290 lmmc_real_t* y,
291 const lmmc_ode_config_t* cfg,
292 lmmc_ode_result_t* out_result
293);
294
295#ifdef __cplusplus
296}
297#endif
298
299#endif
double lmmc_real_t
Public and internal LMMC real type.
Unified diagnostic events for LMMC operations.
数值标量、特殊函数和 FFT 公共接口。
size_t num_rhs_evals
定义 ode.h:49
lmmc_status_t lmmc_ode_default_config(lmmc_real_t t_start, lmmc_real_t t_end, size_t problem_dim, lmmc_ode_config_t *out_cfg)
根据积分区间与维度生成合理的默认求解配置。
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_diagnostic_sink_t diagnostics
定义 ode.h:99
lmmc_real_t initial_step
定义 ode.h:92
const char * lmmc_ode_failure_string(lmmc_ode_failure_t reason)
获取失败原因对应的可读字符串。
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_ode_failure_t
ODE 求解失败原因。
定义 ode.h:35
@ LMMC_ODE_FAILURE_NUMERICAL_ISSUE
定义 ode.h:40
@ LMMC_ODE_FAILURE_INVALID_STEP
定义 ode.h:38
@ LMMC_ODE_FAILURE_TOLERANCE_INCONSISTENT
定义 ode.h:42
@ LMMC_ODE_FAILURE_NONE
定义 ode.h:36
@ LMMC_ODE_FAILURE_RHS_EVAL_FAILED
定义 ode.h:41
@ LMMC_ODE_FAILURE_INVALID_DIMENSION
定义 ode.h:37
@ LMMC_ODE_FAILURE_MAX_STEPS
定义 ode.h:39
lmmc_real_t final_t
定义 ode.h:50
lmmc_real_t abs_tol
定义 ode.h:95
lmmc_ode_dfdt_t time_derivative
定义 ode.h:101
lmmc_status_t lmmc_ode_rk4_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)
经典四阶 Runge-Kutta 法求解 (固定步长)。
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
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-稳定,二阶精度)。
lmmc_real_t rel_tol
定义 ode.h:96
lmmc_status_t lmmc_ode_rosenbrock_grk4t_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)
Rosenbrock-Wanner GRK4T 求解器(线性隐式,四阶,每步一次 LU)。
lmmc_ode_failure_t failure_reason
定义 ode.h:51
lmmc_status_t lmmc_ode_rk45_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)
自适应 Runge-Kutta-Fehlberg (RK45) 求解器。
lmmc_real_t max_step
定义 ode.h:94
lmmc_ode_jac_t jacobian
定义 ode.h:100
lmmc_status_t lmmc_ode_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 法求解常微分方程初值问题 。
lmmc_real_t adaptive_step_beta
定义 ode.h:98
lmmc_real_t min_step
定义 ode.h:93
lmmc_status_t(*) lmmc_ode_dfdt_t(lmmc_real_t t, const lmmc_real_t *y, lmmc_real_t *dfdt, size_t dim, void *user_data)
ODE 对时间偏导回调签名 .
定义 ode.h:81
lmmc_status_t lmmc_ode_sdirk4_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)
4 阶 SDIRK 求解器,采用嵌入误差估计和自适应步长。 非线性阶段按 abs_tol/rel_tol、当前及阶段状态计算 h*残差与 h*修正的加权 RMS。 迭代耗尽时保留最后接受的 y、fina...
ODE 求解配置。
定义 ode.h:91
ODE 求解结果统计。
定义 ode.h:46
lmmc_status_t
LMMC 库统一返回的状态码.