Skip to content

Information on OCT release notes🔗

OPTIMICA Compiler Toolkit (OCT)🔗

The OPTIMICA Compiler Toolkit (OCT) is the calculation engine (both compiler and solver) used by Modelon Impact. It comes with a Modelica compiler with capabilities beyond dynamic simulation by offering unique features for optimization and steady-state computations.

Release Notes🔗

Welcome to the release information of OPTIMICA Compiler Toolkit (OCT). There is continuous development related to compiler changes, runtime improvements, API improvements, optimization improvements, python package improvements and diagnostics information.

Release notes for the OPTIMICA Compiler Toolkit version 1.64🔗

Compiler🔗

Improvements🔗

  • Added compiler option for changing connection set causality errors into warnings.

Bug fixes🔗

  • Fixed a crash related to records with multiple layers of inheritance.

Python Packages🔗

PyFMI:🔗

The PyFMI version has been updated from 2.18.0 to 2.18.3. Notable changes are:

  • Fixed a caching issue in ResultDymolaBinary.get_variables_data().
  • Removed deprecation of get_variable_data from PyFMI 2.18.0, it is recommended to use get_trajectory anyways.
  • Fixed a bug introduced in PyFMI 2.18.0 causing incorrect result storing for boolean and enum variables with result_handling = "binary" (default).

Assimulo:🔗

The Assimulo version has been updated from 3.7.1 to 3.7.2.

DynamicDiagnostics:🔗

  • New function get_log_warnings_and_errors_counts: Creates dictionary with counts of different error sources, e.g., AssertionError, ModelicaWarning, ..., in simulation log.

Release notes for the OPTIMICA Compiler Toolkit version 1.60🔗

Compiler🔗

Improvements🔗

  • The jar files util.jar, separateProcess.jar and OptimicaCompiler.jar have been removed. That means that they no longer need to be on the classpath. Their entry points have been moved into ModelicaCompiler.jar. As long as an integrating application doesn't check for their existance, this change should not require any action.
  • Added caching for external function call evaluations at compile time. This reduces compile times for certain models.
  • Added a typeCheck method to InstanceComponent which validates the size and type compared to the components binding equation.
  • Added a getSize method to Value and Expression.
  • The dependency json will now also include paths needed by external functions and paths loaded by loadResource.
  • Added error check for duplicated components with different input/output prefixes.
  • Improved the error message for variables and other elements not allowed in ExternalObject class declaration.

Breaking Changes🔗

  • Added error check for when constants and parameters are incorrectly assigned in the algorithm section of functions.
  • Changed some parsing rules to be more compliant with the specification. As a result some invalid grammar is no longer accepted by the compiler. E.g. a - -b and {a = b}.

Bug fixes🔗

  • Fixed a crash that could happen when modifying attributes for array members in expandable connectors.
  • Fixed a crash during scalarization for certain functions with record array members.
  • Fixed evaluation error for constant records that depend on functions with input of unknown array size.
  • Fixed intermittent crash when removing and re-adding modifier using compiler API.
  • Fixed an issue where non-trivial expressions passed as arguments to the String-operator could lead to unexpected behavior.
  • Fixed a bug that in some cases prevented convertModifier from being applied on extended classes.
  • Fixed crash when updating libraries with circular short class declarations.
  • Fixed bug with convertModifier that could lead to invalid modifiers being generated.
  • Fixed a bug with convertElement and convertModifiers causing conversions to be applied incorrectly.

Compiler API🔗

Improvements🔗

  • Added a checkType method to InstanceComponent which validates the size and type compared to assigned expression.

Bug fixes🔗

  • Fixed a bug that caused convertModifiers to produce invalid modifiers, if a required default value in the conversion rule was missing.
  • Fixed an issue with the class location for error messages when failing to evaluate certain annotations.
  • Fixed an exception when evaluating dynamic select expression with package constant.

Python Packages🔗

PyFMI:🔗

The PyFMI version has been updated from 2.17.0 to 2.18.0. Notable changes are:

  • Fixed an issue for dynamic_diagnostics, where failures to evaluate the Jacobian would result in invalid XML.
  • Added new abstract base class pyfmi.common.io.ResultReader as base for ResultCSVTextual, ResultStorageMemory, ResultDymolaTextual and ResultDymolaBinary.
  • pyfmi.common.io.ResultReader new features: Get variable names via get_variable_names and get multiple trajectories via get_trajectories.
  • Deprecated pyfmi.common.io.ResultStorage, use pyfmi.common.io.ResultReader instead.
  • Deprecated name property to retrieve variables for ResultDymolaTextual and ResultDymolaBinary, use get_variable_names function instead.
  • Deprecated get_variable_data function for ResultCSVTextual, ResultStorageMemory, ResultDymolaTextual and ResultDymolaBinary, use get_trajectory instead.

Assimulo🔗

The Assimulo version has been updated from 3.7.0 to 3.7.1. Notable changes are:

  • Fixed an issue with events close to (large) final times.

DynamicDiagnostics🔗

  • New function get_all_log_warnings_and_errors: Returns list of all errors and warnings in the XML log.
  • New function from_result_reader: Create DynamicDiagnostics instances using pyfmi.common.io.ResultReader instances as trajectory source.

Miscellaneous:🔗

  • Deprecated pyjmi.optimization.collocation.ResultAliasMap.get_variable_data, use get_trajectory instead. This affects the init_traj option to pyjmi algorithms.
  • Deprecated pyjmi.symbolic_elimination.BLTResult.get_variable_data, use get_trajectory instead; This affects the return from pyjmi.symbolic_elimination.BLTOptimizationProblem.optimize().

Release notes for the OPTIMICA Compiler Toolkit version 1.58🔗

Compiler🔗

Bug fixes🔗

  • Fixed an issue where variables were incorrectly reported as circular.

Release notes for the OPTIMICA Compiler Toolkit version 1.56.2🔗

Compiler🔗

Bug fixes🔗

  • Fixed an issue with ConvertModifier which did not consider global dotted access.

Release notes for the OPTIMICA Compiler Toolkit version 1.56.1🔗

Compiler🔗

Bug fixes🔗

  • Fixed a number of crashes related to expandable connectors.
  • Fixed an issue where the CVode CoSimulation solver could get stuck on Modelica asserts.

Python Packages🔗

PyFMI🔗

The PyFMI version has been updated from 2.16.3 to 2.17.0. Notable changes are: - New function get_unpacked_fmu_path, returns the absolute path of loaded FMUs.

Assimulo🔗

The Assimulo version has been updated from 3.6.0 to 3.7.0. Notable changes are: - Fixed an issue where CVode could get stuck on Modelica asserts.

Release notes for the OPTIMICA Compiler Toolkit version 1.56🔗

Compiler🔗

Improvements🔗

  • Added automatic conversion of spaces to %20 when resolving URIs.
  • Added support for loadResource() for constants with compiler option load_resources_at_runtime enabled.
  • When compiler option load_resources_at_runtime is enabled, it's now possible to find which resource files the compiled model depends on by inspecting the FMU's modelDescription.xml file.
  • Improved the error message for size mismatch in connect equations.
  • Improved the error message for impure function calls in illegal context.
  • Removed the deprecation warning for the cardinality() operator, since some of its uses have no replacement in Modelica today.
  • Removed warning "Variable array index in equation can result in slow simulation time", since the slow simulation times have already been fixed in previous versions.
  • Independent parameters in functions are now converted to constants, which should improve simulation performance for certain models.
  • Fixed bug with setSourceText that caused the stored element order (package.order file) to erroneously be lost when the Modelica source was changed.

Breaking Changes🔗

  • Added error message for mismatching quantity attributes in connection sets. This behavior can be changed such that it instead produces a warning by setting quantity_mismatch_as_warning to true.
  • Added error checks for a number of annotations to verify that they are not defined multiple times.
  • When compiler option load_resources_at_runtime is enabled, variables which represent a URI, and are accessed in loadResource() calls will be suffixed with .annotation.uri in the FMU. This relates to how the file dependencies of the model now are exposed in the modelDescription.xml file.
  • Added an error for when attempting to compile a partial model.

Bug fixes🔗

  • Fixed an exception that could occur in some cases for function calls with record arguments of different classes.
  • Fixed an exception when modifying array members for components with missing class definition.
  • Fixed exceptions that occurred for certain complicated expandable connector connections.
  • Fixed an issue with memory handling for Modelica functions returning strings.
  • Fixed an issue that resulted in incorrect arrays when copying arrays of strings.
  • Fixed an issue where the warning for missing function purity would incorrectly show for some short class declarations.
  • Fixed an issue with the dependencies file not being written when using log_dependencies with target=check.
  • Fixed some issues with modifiers for generated expandable connector components.
  • Fixed a bug where resource files from a library were not included in the FMU if the only use of that library was in loadResource calls.
  • Fixed a null pointer exception that could occur for invalid record equations.
  • Fixed bug in variability propagation for expanded inStream expressions.
  • Fixed issue with sparse Jacobian for linear block in pre-propagation block.
  • Fixed an issue where variables were incorrectly reported as circular.
  • Fixed a crash for very long messages in Modelica.Utilities.Streams.print().

Updates to platform support🔗

With this release the support for Ubuntu 20.04 has ended, and Ubuntu 22.04 is now supported.

Python Packages🔗

DynamicDiagnostics🔗

  • DynamicDiagnostics is now usable for XML logs when simulated without the dynamic_diagnostics option.
  • Added a new function DynamicDiagnostics.print_number_of_times_state_limits_step_length_summary(), which provides a tabular overview of states with largest errors when ODE solver step-size is limited.
  • print_events_details and get_events_details no longer show variables that do not correspond to any model variables. This affects protected variables and internal temporary variables.

PyFMI🔗

The PyFMI version has been updated from 2.14.0 to 2.16.3. Notable changes are: - Added option to limit the size of the result ("result_max_size"), default set to 2GB. - Log file size limitations are now correctly 2GB instead of 2GiB which was incorrect. - Added prediction of the size of the result to get early feedback if it will reach the limit or not. - Added verification against the available free disk space when storing the result on disk (i.e., a protection against running out of disk space). - Added method ResultDymolaBinary.get_variables_data. The new method allows for retrieving partial trajectories, and multiple trajectories at once. - Changed custom result handling for the Master algorithm to instead use a single ResultHandler for each model. A dictionary of the form {model: ResultHandler} needs to be supplied to the option.

Assimulo🔗

The Assimulo version has been updated from 3.5.0 to 3.6.0. Notable changes are: - Fixed a bug where Radau5ODE would not count the state events in statistics.

Note

Send an email to support@modelon.com for detailed information of other releases.

Back to top