v0.3.10 (2022-06-07)
Bug fixes
- Fix architecture for 32-bit x86 in init.py (#398)
- Enable compilation of FMI 3.0 FMUs in GUI (#396)
Enhancements
- Use Plotly as default in plot_result()
- Add markers option to plot_result()
- Add parameter intermediate_update to instantiate_fmu()
- Build macOS binaries as universal 2
v0.3.9 (2022-05-11)
Enhancements
- Update FMI API to v3.0
v0.3.8 (2022-04-27)
Bug fixes
- Handle FMI 3.0 Integer types in logging and Recorder
- Add default callbacks for FMI 1.0 and 2.0 (#384)
Enhancements
- Update FMI 3.0 headers and schema to v3.0-rc.2
v0.3.7 (2022-03-06)
Bug fixes
- Search for explicit versions in visual_studio_installation_paths() (#381)
Enhancements
- Update to FMI 3.0-beta.5
- Add initialize, terminate, and fmu_state parameters to simulate_fmu() to allow pausing and continuing simulations (#283)
v0.3.6 (2022-02-21)
Bug fixes
- Fix FMI logging of Integer arrays (#359)
- Remove instanceName from fmi3LogMessageCallback() and fix type hints in printLogMessage() (#365)
- Add logMessage parameter to FMI 3.0 constructors (#366)
- Fix getDirectionalDerivative() and getAdjointDerivative() (#367)
- Create documentation directory in add_cswrapper() if it does not exist (#369)
Enhancements
- Add --compiler-options switch to fmpy command (#232)
- Allow FMU compilation with Visual Studio 2022 (#371)
- Add version info to command line help text (#376)
- Allow Model Exchange FMU in FMU Container (#373, #375)
- Update FMI headers to v3.0-beta.4
v0.3.5 (2022-01-11)
Bug fixes
- Convert return values of get*Status() functions to Python types (#352)
- Handle fmi2Discard returned by fmi2DoStep() (#353)
- Add fmi2SetDebugLogging() to client_sm.cpp (#355)
- Allow setting start values in Initialization Mode (#356)
- Suppress exceptions in GetLongPathName() (#217)
Enhancements
- Update FMI headers to 3.0-beta.3
- Add parallelDoStep option to FMU Containter (#205)
v0.3.4 (2021-12-10)
Bug fixes
- Fix links to FMI Specs (#349)
- Fix validation of quoted variable names (#347)
- Set start values of Container FMU's variables (#345)
Enhancements
- Use Dash 2.0 and update dependencies (#339)
- Raise FMICallExeption when FMI calls fail (#346)
- Add shared memory implementation for remoting on Windows (#328)
- Check if start values can be set (#351)
v0.3.3 (2021-11-29)
Bug fixes
- Add type cast to arguments of QMainWindows.resize() (#344)
- return filename in download_file() if file already exists (#332)
- Decode UTF-8 string in fmi3.printLogMessage()
- Handle c_bool in _log_fmi_args()
- Add default "initial" for fixed structural parameters (#340)
- Update time before recording result in custom input example (#333)
- Update icons for FMI 3 and add type column (#295)
- Change type hint for Unit.displayUnits to List[DisplayUnit] (#336)
Enhancements
- Add Early Return and Event Mode for FMI 3.0 CS
- Calculate output_interval from fixedInternalStepSize
- Add type hint to FMU3Slave.doStep()
- Add unit and type definitions to Container FMU (#335)
v0.3.2 (2021-10-14)
Bug fixes
- Escape XML attributes in Container FMU (#216)
- Handle NULL pointers in fmi2Instantiate() in remoting client (#324)
- Add fmi2CancelStep() to remoting client (#325)
- Calculate t_next from n_fixed_steps (#318)
- Add trailing path separator to resourcePath in FMI 3.0 (#309)
- Don't plot multi-dimensional variables (#293)
- Fix type conversion in FMI 3.0 high level API (#300)
- Add attribute "interval" to ScalarVariable (#314)
Enhancements
- Log FMI calls to nested FMUs if loggingOn == true
- Add Configuration class for FMU Container (#321)
- Use FMI import framework in FMU Container (#327)
- Use the Reference FMU's import framework in remoting server (#326)
- Check uniqueness of value references in FMI 3.0 (#294)
- Check for backslashes in ZIP file entries (#297)
v0.3.1 (2021-07-21)
Bug fixes
- Fix type hint for parameter "input" in "simulate_fmu()" (#286)
- Set output arguments in fmi3.intermediateUpdate() (#273)
- Allow fixed and tunable structural parameters (#268)
- Fix model structure of Container FMU (#267)
- Add missing parameter "nValues" to getString() and getBinary() and decode byte strings (#263)
- Set stop time and handle negative start time in (#261)
Enhancements
- Update FMI 3.0 API to v3.0-beta.2
- Offer to open generated Jupyter notebook in GUI (#262)
- Add arguments of fmu_info() to dump() enhancement (#285)
- Improve Plotly plots of discrete signals (#284)
- Define variables of Container FMU independent of inner FMUs (#265)
- Validate that initial is not set for input and independent variables (#280)
- Return filename from fmpy.util.download_file() (#267)
- Add win64 on linux64 remoting w/ wine and linux64 on win64 remoting w/ WSL (experimental)
- Assert mandatory independent variable in FMI 3.0 (#272)
- Define model description classes with @attrs (#275)
- Detect drive letter in fmuResourceLocation on Windows
v0.3.0 (2021-04-20)
This release drops Python 2.7 support. The minimum required version is now Python 3.5.
Enhancements
- Update API to FMI 3.0-beta.1
- Add type hints to Model Description and simulate_fmu()
- Add "Hide All" and fix "Show All" columns in GUI
- Add target_platform parameter to compile_platform_binary()
- Link against libm when compiling platform binaries on Linux (#242)
- Add parameter set_input_derivatives to Input and simulate_fmu() (#240)
- Escape non-ASCII characters in XML attributes (#216)
v0.2.27 (2021-01-28)
Enhancements
- Scale icons on High DPI screens (#226)
- Add min and max columns and "Show All" action (#225)
- Update link to FMI 2.0.2 spec (#210)
- Handle missing documentation and model.png in web app (#187)
- Validate XML against schema in validate_fmu() (#223)
- Check for illegal start values (#224)
- Add "Validate FMU" action to GUI (#221)
- Set input derivatives for FMI 2.0 Co-Simulation (#214)
- Add "include" parameter to fmpy.extract() (#208)
- Handle missing "derivative" attribute in validate_fmu() (#206)
- Call SetProcessDpiAwareness(True) on Windows to avoid broken PyQtGraph plots (#201)
v0.2.26 (2020-11-27)
Enhancements
- Create "FMU Containers" with nested FMUs (experimental) (#193)
- Handle Scheduled Execution in instantiate_fmu() (#200)
- Add "create-jupyter-notebook" command to CLI (#192)
- Add all parameters to start_values in Jupyter Notebook (#190)
- Fix Boolean start values in Jupyter Notebooks (#188)
- Validate FMI 3 model description (#181)
- Remove assert statements from fmpy.sundials (#202)
- Update SSP schema to v1.0 and remove ssp.examples
v0.2.25 (2020-11-04)
Enhancements
- Add Dash based web app
- Add Jupyter Notebook generation
- Don't import NumPy in fmi1.py to allow reuse in projects with minimal dependencies (#184)
- Convert array indices in write_csv() to tuple to avoid FutureWarning
v0.2.24 (2020-10-14)
Enhancements
- Allow start values with units and display units
- Add FMI 3.0 Scheduled Execution API
v0.2.23 (2020-09-02)
Enhancements
- Add getAdjointDerivative() and fix getDirectionalDerivative()
- Validate results for FMI 3 Reference FMUs
- Add getClock() and setClock() to _FMU3
- Add FMU2Model.getNominalsOfContinuousStates()
Bug fixes
- Fix logging for FMI 3 (#159)
- Read start value of String variables in FMI 3
- Add missing fields to EventInfoReturnValue message (#160)
- Move enterEventMode() and newDiscreteStates() to _FMU3
- Fix variabilities for variable type "Clock"
v0.2.22 (2020-08-01)
- `FIXED' Forward fmi2NewDiscreteStates() in remoting client (#154)
FIXED
Fix createDesktopShortcut() and addFileAssociation() (#153)NEW
Update FMI 3 API to 3.0-alpha.5
v0.2.21 (2020-06-29)
FIXED
Set inputs in CVode root function before getting event indicators (#150)FIXED
Add scipy to required packages for fmpy[plot] (#146)FIXED
Activate conda environment in file open command and desktop shortcut (#131)FIXED
Evaluate terminateSimulation in simulation loop (#145)FIXED
Fix return value of FMU1Model.completedIntegratorStep()FIXED
Add Dimension class and calculate initial shape of FMI 3 model variablesFIXED
Raise an exception when a missing FMI function is called (#139)NEW
Update FMI 3 API to v3.0-alpha.4NEW
Validate model structure in read_model_description()NEW
Add "create-cmake-project" command to CLI (#129)NEW
Add Co-Simulation wrapper and build binaries in CI (#127)
v0.2.20 (2020-05-23)
FIXED
Fix fmi3Functions.h for compile_platform_binary()FIXED
Fix serialization in write_csv() (#138)FIXED
Check for existing documentation/licenses in add_remoting() (#126)FIXED
Fix function names in RPC calls (#125)CHANGED
Require pathlib only for Python version < 3.4NEW
Update FMI 3 API to a51b173NEW
Use defaultExperiment.tolerance as default in GUI (#133)NEW
Add "Tools" menu to GUI (#124)NEW
Make build configuration adjustable in build_remoting.py
v0.2.19 (2020-04-15)
FIXED
fmi2SetupExperiment() is now called again in FMI 2.0 for Co-SimulationFIXED
The working directory for the remoting server is now set to binaries/win32FIXED
ssp.simulation.set_value() has been fixed for Integer and Enumeration variablesNEW
A license file is now added to documentation/licenses when adding the remoting binaries to an FMUNEW
A stop_time parameter has been added to ssp.instantiate_fmu()CHANGED
The license has been changed to 2-clause BSD
v0.2.18 (2020-04-06)
FIXED
A list is now passed to np.stack() instead of an iterable and Iterable is now imported from collections.abc to avoid FutureWarnings.FIXED
Argument checksum of function fmpy.util.download_file() can now be upper case.FIXED
Start and stop time are now passed to initialize() in FMI 1.0.FIXED
Variadic arguments in log messages are now processed.NEW
The model.png is now displayed on the "Model Info" page of the GUI.NEW
32-bit FMUs can now be simulated in a 64-bit Python environment on Windows. Existing 32-bit FMUs can also be retro-fitted using the function fmpy.util.add_remoting(), the CLI (fmpy add-remoting ...) and the GUI (Help > Add 32-bit Remoting).NEW
The FMI headers and schema have been updated to version 2.0.1 and 3.0-alpha.3 respectively.NEW
The function instantiate_fmu() allows the instantiation and re-use of an FMU independent of the FMI version and type to reduce CPU time. Seeexamples/efficient_loops.py
for an example.REMOVED
The parameteruse_source_code
has been removed formsimulate_fmu()
(usefmpy.util.compile_platform_binary()
instead)
v0.2.17 (2020-02-04)
NEW
"Clear Plots" action has been added to the context menuIMPROVED
single quotes are now removed from name segments in the tree viewIMPROVED
a RuntimeError is raised when an errors occurs in CVodeIMPROVED
exceptions are raised for undefined declaredType, illegal combinations of causality and variability, and missing shared librariesIMPROVED
communicationPoint is now calculated as n_steps * step_size to avoid accumulation of numerical errors
v0.2.16 (2019-12-26)
FIXED
pre-compiled SUNDIALS libraries re-added
v0.2.15 (2019-12-18)
FIXED
validation of structured variable names with apostrophesFIXED
dimensions of variables in FMI 3NEW
validation of "flat" variable namesUPDATED
FMI 3 schema filesUPDATED
CVode 5.0IMPROVED
optional files added to CMake projects for source FMUsIMPROVED
NULL pointers are now ignored in freeMemory()IMPROVED
frequently used utility functions are now imported to fmpy moduleIMPROVED
parameter_variation adapted to new Dask versions
v0.2.14 (2019-10-23)
Improved validation & --visible option for CLI
FIXED
"Load Start Values" only enabled when FMU can be simulatedNEW
--visible option in CLINEW
XML line numbers added to validation messagesNEW
validation of variables names for naming convention "structured"IMPROVED
visible=fmi2True when simulating in GUI
v0.2.13 (2019-09-16)
Extended FMI 3.0 alpha 2 support & improved GUI
NEW
check for illegal filenames in FMU archivesNEW
reload button in GUIIMPROVED
extended FMI 3.0 alpha 2 supportCHANGED
increased max. filesize for Cross-Check FMUs
v0.2.12 (2019-07-15)
Support for FMI 3.0 Alpha 1, output interval in GUI
FIXED
compilation of platform binary on Windows 32-bitIMPROVED
support for FMI 3.0 Alpha 1IMPROVED
output interval can now be set in the GUIIMPROVED
output interval is now calculated based on stepSize attribute
v0.2.11 (2019-05-27)
FMPy 0.2.11: improved robustness and validation
FIXED
leading spaces in dependency list are now handled correctlyFIXED
input files with only one sample can now be handledIMPROVED
errors during cleanup of temporary directories are now ignoredIMPROVED
"Relative Tolerance" input field is now enabled for Co-Simulation FMUsIMPROVED
compilation of source code FMUs is now more robustIMPROVED
combinations of causality and variability are now validatedIMPROVED
assertions for required start values have been addedIMPROVED
assertions for unique variable names have been added
v0.2.10 (2019-02-26)
Experimental FMI 3.0 support, FMI Cross-Check validation scripts
FIXED
set start values before entering initialization modeNEW
experimental FMI 3.0 supportNEW
FMI Cross-Check validation scripts to validate FMUs and resultsIMPROVED
handling of reference signals with duplicate sample times
v0.2.9 (2019-02-07)
Improved logging, discrete inputs and tunable parameters
FIXED
handling of discrete inputsFIXED
set continuous states after solver stepNEW
set tunable parameters via inputIMPROVED
disable inactive root warnings for CVodeIMPROVED
error and log messagesIMPROVED
plotting of discrete signals
v0.2.8 (2018-12-24)
FIXED
Handle optional elements in ScalarVariable tagFIXED
Handle null pointers in FMI loggingFIXED
Relax type of attribute "version" in fmiModelDescription.xsd to "normalizedString"FIXED
Fix size of memory passed to fmi2DeSerializeFMUstate()NEW
Validate modelDescription.outputsNEW
Add compilation with Visual Studio 2017NEW
Add missing attributes to ScalarVariable and validate derivatives and unitsNEW
Change input extrapolation to "hold"
v0.2.7 (2018-11-13)
FIXED
Test files are now downloaded form GitHubFIXED
Compilation of model exchange FMUs works nowNEW
--relative-tolerance parameter is now passed to FMI 2.0 co-simulation FMUsNEW
Platform binary can now be compiled from within the GUI (Help > Compile Platform Binary)
v0.2.6 (2018-09-04)
NEW
CMake project generation for C code FMUsNEW
Read Enumeration items from modelDescription.xmlFIXED
GUI with Python 2.7
v0.2.5 (2018-06-17)
Improved handling of input signals
- input is now applied before initialization for co-simulation
- "time" column for input signals can now have an arbitrary name
v0.2.4 (2018-05-22)
NEW
Remaining FMI functions addedNEW
More options for command line interfaceNEW
More elements added to SSP parserNEW
Polished GUIFIXED
No more warning when starting GUI
v0.2.3 (2018-04-11)
NEW
Allow simulation of extracted FMUs and pre-loaded model descriptionsNEW
Re-load an FMU in the GUINEW
Load start values from an FMUNEW
Write changed start values back to the FMUNEW
Table editor for 1-d and 2-d array variablesNEW
Handle events in input signalsNEW
Plot eventsNEW
Regular time grid for model-exchange resultsNEW
Apply start values in the model descriptionNEW
Debug and FMI logging on the command line and in the GUINEW
Log filtering by type and message in the GUIFIXED
Logger callback for FMI 1.0FIXED
Handling ofNone
in setString()FIXED
Handling of time eventsFIXED
Conversion of Boolean start values
v0.2.2 (2018-03-13)
NEW
FMI 2.0 state serialization functions addedNEW
Graphical representation of the FMU's inputs and outputs added to settings pageNEW
Platform check when simulating FMUsNEW
MkDocs documentation addedFIXED
Record values at time == start_time when simulating model exchange FMUsFIXED
Correct source files are now used when compiling model exchange FMUsCHANGED
Required dependency on pypiwin32 changed to pywin32
v0.2.1 (2018-02-15)
NEW
About dialog in the GUI that shows version and environment infoNEW
Copy variable names and value references to the clipboard from the context menuNEW
Navigation buttons are new toggled to indicated selected pageFIXED
fmu_info() now works with FMUs where not all attributes are set in the modelDescription.xmlFIXED
Improved error message when the FMU does not support the selected FMI type
v0.2.0 (2018-01-29)
NEW
graphical user interfaceNEW
compilation of source code FMUsNEW
model structure elements: ModelDescription.outputs and ModelDescription.derivativesNEW
FMI functions: setRealInputDerivatives() and getRealOutputDerivatives()FIXED
constructor arguments for solver classes
v0.1.2 (2017-12-21)
CHANGED
'fmpy' command is now directly accessible from the command lineCHANGED
SSP schema updated to Draft20171219
v0.1.1 (2017-12-11)
NEW
dependency information in setup.pyNEW
platform check for parameter variation exampleFIXED
FMI call loggingFIXED
plot_result() now works with older matplotlib versionsCHANGED
timeout in cross-check removed
v0.1.0 (2017-11-24)
NEW
custom simulation loop and input exampleNEW
parameter variation example running on multiple coresNEW
experimental System Structure and Parameterization supportNEW
max. step size parameter for CVode solverFIXED
return values in completedIntegratorStep()
v0.0.9 (2017-10-13)
FIXED
set start values of type StringNEW
CVode variable-step solverNEW
cross-check API for external tools
v0.0.8 (2017-09-10)
FIXED
resourceLocation in FMU2.instantiate() now points to resources directory instead of unzip directoryNEW
FMI functions (fmi1Reset, fmi2Reset, fmi2GetFMUState, fmi2SetFMUState, fmi2FreeFMUState)