I have published an Grade plugin for simplifying programmatic interaction with FMUs. The plugin is powered by FMI4j, which is compatible with FMI 2.0 for Co-simulation and Model Exchange.
Among other things, the plugin generates type safe getter and setters for all FMU variables – grouped by causality.
It also generates javadoc based on the information found in the modelDescription.xml.
FmiSimulation instance = ControlledTemperature.newInstance(); instance.init(); //throws on error //Variables are grouped by causality and have types! RealVariable tempRef = instance.getOutputs().temperature_Reference(); double stop = 10.0; double stepSize = 1E-2; while (instance.getSimulationTime() <= stop) { if (!instance.doStep(stepSize)) { break; } FmuRead<Double> read = tempRef.read(); System.out.println(tempRef.name + "=" + read.getValue()); } instance.terminate();
To add it to your project, simply add the following code to your build.gradle
plugins { id "no.mechatronics.sfi.fmi4j.FmuPlugin" version "0.4.1" }
The plugin will automatically add the required FMI4j dependency to your project.