LMMC
Lamina Mathematic core
载入中...
搜索中...
未找到
ode_rosenbrock.c 文件参考

Hairer ROS4 中 Kaps-Rentrop GRK4T 四阶 Rosenbrock-Wanner 求解器. 更多...

#include <math.h>
#include <string.h>
#include "memory_bridge.h"
#include "internal.h"
#include "ode_internal.h"
#include "lmmc/ode.h"
#include "lmmc/dense.h"
#include "lmmc/linear_algebra.h"
ode_rosenbrock.c 的引用(Include)关系图:

浏览该文件的源代码.

结构体

struct  ode_rosenbrock_state_t

宏定义

#define ROS_STAGES   4
#define ROS_VECTORS   13

函数

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)。

详细描述

Hairer ROS4 中 Kaps-Rentrop GRK4T 四阶 Rosenbrock-Wanner 求解器.

系数和阶段归一化对应 https://www.unige.ch/~hairer/prog/stiff/Oldies/ros4.f 的 GRK4T 路径. 每次尝试只分解一次 W=I/(h*gamma)-J.

在文件 ode_rosenbrock.c 中定义.


结构体说明

◆ ode_rosenbrock_state_t

struct ode_rosenbrock_state_t

在文件 ode_rosenbrock.c 第 101 行定义.

ode_rosenbrock_state_t 的协作图:
成员变量
lmmc_ode_rhs_t rhs
void * user_data
size_t dim
size_t work_bytes
lmmc_real_t * y
lmmc_ode_config_t local_cfg
lmmc_ode_result_t * out_result
lmmc_real_t t
lmmc_real_t h
lmmc_real_t * work
lmmc_real_t * matrix_data
size_t * pivots
lmmc_real_t * k[ROS_STAGES]
lmmc_real_t * f0
lmmc_real_t * f_stage
lmmc_real_t * y_stage
lmmc_real_t * y_pert
lmmc_real_t * f_pert
lmmc_real_t * rhs_vec
lmmc_real_t * dfdt
lmmc_real_t * y_new
lmmc_real_t * error
lmmc_mat_t W

宏定义说明

◆ ROS_STAGES

#define ROS_STAGES   4

在文件 ode_rosenbrock.c 第 18 行定义.

被这些函数引用 lmmc_ode_rosenbrock_grk4t_solve().

◆ ROS_VECTORS

#define ROS_VECTORS   13

在文件 ode_rosenbrock.c 第 19 行定义.

被这些函数引用 lmmc_ode_rosenbrock_grk4t_solve().

函数说明

◆ lmmc_ode_rosenbrock_grk4t_solve()

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)。

在文件 ode_rosenbrock.c 第 280 行定义.

引用了 ode_rosenbrock_state_t::dfdt, ode_rosenbrock_state_t::dim, ode_rosenbrock_state_t::error, ode_rosenbrock_state_t::f0, ode_rosenbrock_state_t::f_pert, ode_rosenbrock_state_t::f_stage, lmmc_ode_result_t::failure_reason, ode_rosenbrock_state_t::h, lmmc_ode_config_t::initial_step, ode_rosenbrock_state_t::k, lmmc_memory_alloc(), lmmc_ode_do_log(), LMMC_ODE_FAILURE_INVALID_DIMENSION, lmmc_ode_rosenbrock_grk4t_solve(), LMMC_STATUS_ALLOCATION_FAILED, LMMC_STATUS_INVALID_ARGUMENT, LMMC_STATUS_OK, ode_rosenbrock_state_t::local_cfg, ode_rosenbrock_state_t::matrix_data, lmmc_ode_config_t::max_step, lmmc_ode_config_t::min_step, ode_rosenbrock_state_t::out_result, ode_rosenbrock_state_t::pivots, ode_rosenbrock_state_t::rhs, ode_rosenbrock_state_t::rhs_vec, ROS_STAGES, ROS_VECTORS, ode_rosenbrock_state_t::t, ode_rosenbrock_state_t::user_data, validate_and_init_ode_config(), ode_rosenbrock_state_t::W, ode_rosenbrock_state_t::work, ode_rosenbrock_state_t::work_bytes, ode_rosenbrock_state_t::y, ode_rosenbrock_state_t::y_new, ode_rosenbrock_state_t::y_pert , 以及 ode_rosenbrock_state_t::y_stage.

被这些函数引用 lmmc_ode_rosenbrock_grk4t_solve().

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