Crate fmi

Crate fmi 

Source
Expand description

The fmi crate implements a Rust interface to FMUs (Functional Mockup Units) that follow FMI Standard. This version of the library supports FMI 2.0 and 3.0. See http://www.fmi-standard.org/

§Examples

§Loading an FMI 2.0 FMU

use fmi::{fmi2::import::Fmi2Import, import, traits::{FmiImport, FmiInstance}};

// Load an FMU from a file path
let import: Fmi2Import = import::from_path("path/to/model.fmu").unwrap();
assert_eq!(import.model_description().fmi_version, "2.0");

// Create a Model Exchange instance
let me = import.instantiate_me("inst1", false, true).unwrap();
assert_eq!(me.get_version(), "2.0");

§Loading an FMI 3.0 FMU

use fmi::{fmi3::{import::Fmi3Import, Fmi3Model}, import, traits::{FmiImport, FmiInstance}};

// Load an FMU from a file path
let import: Fmi3Import = import::from_path("path/to/model.fmu").unwrap();
assert_eq!(import.model_description().fmi_version, "3.0");

// Create a Model Exchange instance
let me = import.instantiate_me("inst1", false, true).unwrap();
assert_eq!(me.get_version(), "3.0");

§Checking FMU version before loading

use fmi::{import, schema::{MajorVersion, traits::FmiModelDescription}};

// Peek at the FMU metadata without fully extracting it
let model_desc = import::peek_descr_path("path/to/model.fmu").unwrap();
let version = model_desc.major_version().unwrap();
match version {
    MajorVersion::FMI2 => {
        // Load as FMI 2.0
        let import: fmi::fmi2::import::Fmi2Import = import::from_path("path/to/model.fmu").unwrap();
        // ... use import
    }
    MajorVersion::FMI3 => {
        // Load as FMI 3.0  
        let import: fmi::fmi3::import::Fmi3Import = import::from_path("path/to/model.fmu").unwrap();
        // ... use import
    }
    _ => panic!("Unsupported FMI version"),
}
  • fmi2 (enabled by default) — Enable support for FMI 2.0
  • fmi3 (enabled by default) — Enable support for FMI 3.0
  • arrow (enabled by default) — Enable support for Apache Arrow Schema

Re-exports§

pub use fmi_schema as schema;

Modules§

built_info
fmi2
FMI 2.0 API
fmi3
FMI 3.0 API
import
FMU Import Module
traits
Traits for generic FMI handling that apply to both FMI2 and FMI3.

Enums§

Error