#模型 #ode #fmu #modelica #api-bindings #fmi

fmu-runner

遵循 FMI 2.0 标准的 FMU 执行的高层 Rust 包装器

8 个版本

0.4.3 2024 年 8 月 8 日
0.4.2 2024 年 7 月 15 日
0.4.1 2024 年 3 月 6 日
0.4.0 2023 年 10 月 18 日
0.1.1 2023 年 10 月 10 日

#73模拟

Download history 192/week @ 2024-04-26 29/week @ 2024-05-03 93/week @ 2024-05-10 220/week @ 2024-05-17 203/week @ 2024-05-24 476/week @ 2024-05-31 459/week @ 2024-06-07 358/week @ 2024-06-14 176/week @ 2024-06-21 335/week @ 2024-06-28 186/week @ 2024-07-05 228/week @ 2024-07-12 232/week @ 2024-07-19 246/week @ 2024-07-26 284/week @ 2024-08-02 218/week @ 2024-08-09

992 每月下载量

MIT/Apache

93KB
2.5K SLoC

Rust FMU 运行器库

Crates.io Documentation Crates.io

遵循 FMI 2.0 标准的 FMU 执行的高层 Rust 包装器。

此库包含对 fmi-standard 的绑定,并提供了解包、解析、加载和执行 FMU 的高层、安全的 API。

示例

use std::{collections::HashMap, path::Path};
use fmu_runner::{Fmu, FmuInstance, fmi2Type};

let fmu = Fmu::unpack(Path::new("./tests/fmu/bouncing_ball.fmu"))?
    .load(fmi2Type::fmi2CoSimulation)?;

let fmu_cs = FmuInstance::instantiate(&fmu, true)?;
let signals = fmu_cs.lib.variables();

fmu_cs.setup_experiment(0.0, None, None)?;

// Set initial height to 10m.
fmu_cs.set_reals(&HashMap::from([(&signals["h_start"], 10.0)]))?;

// Initialize model.
fmu_cs.enter_initialization_mode()?;
fmu_cs.exit_initialization_mode()?;

// Step model 1 second.
fmu_cs.do_step(0.0, 1.0, true)?;

// Get the current height.
let outputs = fmu_cs.get_reals(&[&signals["h_m"]])?;
println!("{}", fmu_runner::outputs_to_string(&outputs));

依赖项

~8–19MB
~254K SLoC