Skip to content

Minor release, 21 of June 2024

Choose a tag to compare
@amc1999 amc1999 released this 21 Jun 10:39
· 3 commits to master since this release

Minor release, 21 of June 2024


This is a minor release and it is recommended to all model developers.

Following included in this release:

  • c++ core: option index_errors validates array indices at runtime
  • UI and go back-end: add filters by value for output tables, parameters and microdata
  • UI and go back-end: allow to use any INI file to run the model
  • UI and go back-end: user files (e.g. INI files) management on server: view, delete, upload, download.
  • UI and go oms: add bulk delete capacities
  • UI: start UI from UNC location on Windows
  • multiple small improvements in UI

Option index_errors validates array indices at runtime

In this release, the option index_errors can be turned on by inserting the following in model code, e.g. in code/ompp_options.ompp:

options index_errors = on;

If on, this option will verify that indices of multi-dimensional parameters and indices of entity array members in model code respect the bounds of the enumerations used as dimensions. If an invalid index is encountered during a run, the run fails with a runtime error like the following:

Simulation error: invalid index 42 in 0-based dimension 0 of AgeBaselinePreg1 with bounds [0,11] when current time is 26.53781272839055 in entity_id 1 in or after event FirstPregEvent in simulation member 0 with combined seed 1 at module Fertility.mpp[78]

If index_errors is on, model build may take noticeably more time. A possible subsequent implementation of index_errors may be more efficient.

Unlike Modgen, index_errors in OpenM++ works in both Debug and Release mode.

In preliminary tests, the Release mode implementation of index_errors appeared to be very efficient, with little impact on model run time in several large models tested.

For more, please see the wiki topic Enumerations · openmpp/ Wiki · GitHub (WIP).

Thanks to the PASSAGES team for highlighting the importance of this feature, and for pointing out that this Modgen functionality was not implemented in OpenM++.

UI: Filter model run results by value

Now it is possible to filter model run results not only by selecting dimension items, but also by applying conditions to output table values or microdata values. Screenshot below is RiskPaths output table Fertility rates by age group filtered by:

  • excluding from Age Interval dimension first 3 age groups, where age is below 20;
  • apply filter to see only data where Fertility > 0.5.


Please see our wiki for more information: Filter run results by value. Value filters are also fully supported by oms API and you can use R, Python, Perl, etc. to analyze model run output values and input parameter values.

INI files support in UI

It is possible now to choose an INI file in the UI to run the model. Also you can view INI files on the server, download it, upload, delete and organize in folders. We are planning to improve those capabilities in the next release and allow upload / download CSV parameter files as well.

Thank you to the PASSAGES team to encourage us, without your friendly demands it would never be done.


Download source code and binaries:

Download release documentation archive:

Download cluster version (MPI):

Full version of OpenM++ source code always included into "Download" links above.
Please do NOT use "Source code (zip)" or "Source code (tar.gz)" archives from "Assets" links below.
It is auto-generated by GitHub release tools and contains only half of OpenM++ source code.