use fmi::schema::MajorVersion;
use fmi_sim::options::{CoSimulationOptions, CommonOptions, FmiSimOptions, Interface};
use fmi_test_data::ReferenceFmus;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut ref_fmus = ReferenceFmus::new().unwrap();
let fmu_file = ref_fmus
.extract_reference_fmu("BouncingBall", MajorVersion::FMI3)
.unwrap();
let interface = Interface::CoSimulation(CoSimulationOptions {
common: CommonOptions {
start_time: Some(0.0),
output_interval: Some(0.1),
..Default::default()
},
event_mode_used: true,
..Default::default()
});
let options = FmiSimOptions {
interface,
model: fmu_file.path().to_path_buf(),
..Default::default()
};
let (outputs, stats) = fmi_sim::simulate(&options)?;
println!("Simulation statistics: {stats:?}");
println!(
"{}",
arrow::util::pretty::pretty_format_batches(&[outputs]).unwrap()
);
Ok(())
}