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)
FIXEDFix createDesktopShortcut() and addFileAssociation() (#153)NEWUpdate FMI 3 API to 3.0-alpha.5
v0.2.21 (2020-06-29)
FIXEDSet inputs in CVode root function before getting event indicators (#150)FIXEDAdd scipy to required packages for fmpy[plot] (#146)FIXEDActivate conda environment in file open command and desktop shortcut (#131)FIXEDEvaluate terminateSimulation in simulation loop (#145)FIXEDFix return value of FMU1Model.completedIntegratorStep()FIXEDAdd Dimension class and calculate initial shape of FMI 3 model variablesFIXEDRaise an exception when a missing FMI function is called (#139)NEWUpdate FMI 3 API to v3.0-alpha.4NEWValidate model structure in read_model_description()NEWAdd "create-cmake-project" command to CLI (#129)NEWAdd Co-Simulation wrapper and build binaries in CI (#127)
v0.2.20 (2020-05-23)
FIXEDFix fmi3Functions.h for compile_platform_binary()FIXEDFix serialization in write_csv() (#138)FIXEDCheck for existing documentation/licenses in add_remoting() (#126)FIXEDFix function names in RPC calls (#125)CHANGEDRequire pathlib only for Python version < 3.4NEWUpdate FMI 3 API to a51b173NEWUse defaultExperiment.tolerance as default in GUI (#133)NEWAdd "Tools" menu to GUI (#124)NEWMake build configuration adjustable in build_remoting.py
v0.2.19 (2020-04-15)
FIXEDfmi2SetupExperiment() is now called again in FMI 2.0 for Co-SimulationFIXEDThe working directory for the remoting server is now set to binaries/win32FIXEDssp.simulation.set_value() has been fixed for Integer and Enumeration variablesNEWA license file is now added to documentation/licenses when adding the remoting binaries to an FMUNEWA stop_time parameter has been added to ssp.instantiate_fmu()CHANGEDThe license has been changed to 2-clause BSD
v0.2.18 (2020-04-06)
FIXEDA list is now passed to np.stack() instead of an iterable and Iterable is now imported from collections.abc to avoid FutureWarnings.FIXEDArgument checksum of function fmpy.util.download_file() can now be upper case.FIXEDStart and stop time are now passed to initialize() in FMI 1.0.FIXEDVariadic arguments in log messages are now processed.NEWThe model.png is now displayed on the "Model Info" page of the GUI.NEW32-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).NEWThe FMI headers and schema have been updated to version 2.0.1 and 3.0-alpha.3 respectively.NEWThe 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.pyfor an example.REMOVEDThe parameteruse_source_codehas 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 menuIMPROVEDsingle quotes are now removed from name segments in the tree viewIMPROVEDa RuntimeError is raised when an errors occurs in CVodeIMPROVEDexceptions are raised for undefined declaredType, illegal combinations of causality and variability, and missing shared librariesIMPROVEDcommunicationPoint is now calculated as n_steps * step_size to avoid accumulation of numerical errors
v0.2.16 (2019-12-26)
FIXEDpre-compiled SUNDIALS libraries re-added
v0.2.15 (2019-12-18)
FIXEDvalidation of structured variable names with apostrophesFIXEDdimensions of variables in FMI 3NEWvalidation of "flat" variable namesUPDATEDFMI 3 schema filesUPDATEDCVode 5.0IMPROVEDoptional files added to CMake projects for source FMUsIMPROVEDNULL pointers are now ignored in freeMemory()IMPROVEDfrequently used utility functions are now imported to fmpy moduleIMPROVEDparameter_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 CLINEWXML line numbers added to validation messagesNEWvalidation of variables names for naming convention "structured"IMPROVEDvisible=fmi2True when simulating in GUI
v0.2.13 (2019-09-16)
Extended FMI 3.0 alpha 2 support & improved GUI
NEWcheck for illegal filenames in FMU archivesNEWreload button in GUIIMPROVEDextended FMI 3.0 alpha 2 supportCHANGEDincreased max. filesize for Cross-Check FMUs
v0.2.12 (2019-07-15)
Support for FMI 3.0 Alpha 1, output interval in GUI
FIXEDcompilation of platform binary on Windows 32-bitIMPROVEDsupport for FMI 3.0 Alpha 1IMPROVEDoutput interval can now be set in the GUIIMPROVEDoutput interval is now calculated based on stepSize attribute
v0.2.11 (2019-05-27)
FMPy 0.2.11: improved robustness and validation
FIXEDleading spaces in dependency list are now handled correctlyFIXEDinput files with only one sample can now be handledIMPROVEDerrors during cleanup of temporary directories are now ignoredIMPROVED"Relative Tolerance" input field is now enabled for Co-Simulation FMUsIMPROVEDcompilation of source code FMUs is now more robustIMPROVEDcombinations of causality and variability are now validatedIMPROVEDassertions for required start values have been addedIMPROVEDassertions for unique variable names have been added
v0.2.10 (2019-02-26)
Experimental FMI 3.0 support, FMI Cross-Check validation scripts
FIXEDset start values before entering initialization modeNEWexperimental FMI 3.0 supportNEWFMI Cross-Check validation scripts to validate FMUs and resultsIMPROVEDhandling of reference signals with duplicate sample times
v0.2.9 (2019-02-07)
Improved logging, discrete inputs and tunable parameters
FIXEDhandling of discrete inputsFIXEDset continuous states after solver stepNEWset tunable parameters via inputIMPROVEDdisable inactive root warnings for CVodeIMPROVEDerror and log messagesIMPROVEDplotting of discrete signals
v0.2.8 (2018-12-24)
FIXEDHandle optional elements in ScalarVariable tagFIXEDHandle null pointers in FMI loggingFIXEDRelax type of attribute "version" in fmiModelDescription.xsd to "normalizedString"FIXEDFix size of memory passed to fmi2DeSerializeFMUstate()NEWValidate modelDescription.outputsNEWAdd compilation with Visual Studio 2017NEWAdd missing attributes to ScalarVariable and validate derivatives and unitsNEWChange input extrapolation to "hold"
v0.2.7 (2018-11-13)
FIXEDTest files are now downloaded form GitHubFIXEDCompilation of model exchange FMUs works nowNEW--relative-tolerance parameter is now passed to FMI 2.0 co-simulation FMUsNEWPlatform binary can now be compiled from within the GUI (Help > Compile Platform Binary)
v0.2.6 (2018-09-04)
NEWCMake project generation for C code FMUsNEWRead Enumeration items from modelDescription.xmlFIXEDGUI 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)
NEWRemaining FMI functions addedNEWMore options for command line interfaceNEWMore elements added to SSP parserNEWPolished GUIFIXEDNo more warning when starting GUI
v0.2.3 (2018-04-11)
NEWAllow simulation of extracted FMUs and pre-loaded model descriptionsNEWRe-load an FMU in the GUINEWLoad start values from an FMUNEWWrite changed start values back to the FMUNEWTable editor for 1-d and 2-d array variablesNEWHandle events in input signalsNEWPlot eventsNEWRegular time grid for model-exchange resultsNEWApply start values in the model descriptionNEWDebug and FMI logging on the command line and in the GUINEWLog filtering by type and message in the GUIFIXEDLogger callback for FMI 1.0FIXEDHandling ofNonein setString()FIXEDHandling of time eventsFIXEDConversion of Boolean start values
v0.2.2 (2018-03-13)
NEWFMI 2.0 state serialization functions addedNEWGraphical representation of the FMU's inputs and outputs added to settings pageNEWPlatform check when simulating FMUsNEWMkDocs documentation addedFIXEDRecord values at time == start_time when simulating model exchange FMUsFIXEDCorrect source files are now used when compiling model exchange FMUsCHANGEDRequired dependency on pypiwin32 changed to pywin32
v0.2.1 (2018-02-15)
NEWAbout dialog in the GUI that shows version and environment infoNEWCopy variable names and value references to the clipboard from the context menuNEWNavigation buttons are new toggled to indicated selected pageFIXEDfmu_info() now works with FMUs where not all attributes are set in the modelDescription.xmlFIXEDImproved error message when the FMU does not support the selected FMI type
v0.2.0 (2018-01-29)
NEWgraphical user interfaceNEWcompilation of source code FMUsNEWmodel structure elements: ModelDescription.outputs and ModelDescription.derivativesNEWFMI functions: setRealInputDerivatives() and getRealOutputDerivatives()FIXEDconstructor arguments for solver classes
v0.1.2 (2017-12-21)
CHANGED'fmpy' command is now directly accessible from the command lineCHANGEDSSP schema updated to Draft20171219
v0.1.1 (2017-12-11)
NEWdependency information in setup.pyNEWplatform check for parameter variation exampleFIXEDFMI call loggingFIXEDplot_result() now works with older matplotlib versionsCHANGEDtimeout in cross-check removed
v0.1.0 (2017-11-24)
NEWcustom simulation loop and input exampleNEWparameter variation example running on multiple coresNEWexperimental System Structure and Parameterization supportNEWmax. step size parameter for CVode solverFIXEDreturn values in completedIntegratorStep()
v0.0.9 (2017-10-13)
FIXEDset start values of type StringNEWCVode variable-step solverNEWcross-check API for external tools
v0.0.8 (2017-09-10)
FIXEDresourceLocation in FMU2.instantiate() now points to resources directory instead of unzip directoryNEWFMI functions (fmi1Reset, fmi2Reset, fmi2GetFMUState, fmi2SetFMUState, fmi2FreeFMUState)