Skip to content

Releases: openmpp/main

Pre-release version, January 2022

08 Jan 02:39
Compare
Choose a tag to compare
Pre-release

Pre-release version of January 2022

Only RedHat version is published, the rest will be released after January 10.

Download source code and binaries:

IMPORTANT:
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.

Minor release 30 of November 2021

01 Dec 02:21
Compare
Choose a tag to compare

Minor release 30 of November 2021

20211130 : v1.9.4

This release include:

  1. Support for Visual Studio 2022

  2. New option for dbcopy utility to create CSV output faster:

dbcopy -m RisksPaths -dbcopy.To csv      -dbcopy.NoAccumulatorsCsv
dbcopy -m RisksPaths -dbcopy.To csv-all -dbcopy.NoAccumulatorsCsv

If NoAccumulatorsCsv is true then CSV output does not contain output tables accumulators but only output tables expression values (a.k.a. measures). For large models it may help to produce CSV output files faster and save some disk space.

  1. OpenM++ UI: ability to download parameter as CSV file.

  2. OpenM++ UI: compare model runs to see list of different model parameters and output tables.

Please see screenshots at our UI wiki page: https://github.com/openmpp/openmpp.github.io/wiki/Ompp-UI-User-Interface

Download source code and binaries:

Download release documentation archive:

Download cluster version (MPI):

Linux downloads:

  • Desktop version build on Debian-10 and expected to work on any modern Linux, including Ubuntu 20.04 and CentOS 8
  • Ubuntu downloads would allow you to build or debug your model on Ubuntu Linux (Ubuntu 20.04)
  • Current stable Debian version is Debian 11 which you may want to use if you installing new Linux worksation or server.
  • Cluster (MPI) Debian-10 version expected to work on any modern Linux with Open MPI version 3+ installed, including CentOS 8.
  • Cluster (MPI) CentOS-8 version require Open MPI 4.x and it would not work on RedHat / CentOS below 8.2 version.

IMPORTANT:
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.

Additional feature for dbcopy utility

12 Nov 21:23
Compare
Choose a tag to compare

Additional feature for dbcopy utility

Additional functionality for dbcopy utility:

dbcopy -m RisksPaths -dbcopy.To csv      -dbcopy.NoAccumulatorsCsv
dbcopy -m RisksPaths -dbcopy.To csv-all -dbcopy.NoAccumulatorsCsv

If NoAccumulatorsCsv is true then CSV output does not contain output tables accumulators but only output tables expression values (a.k.a. measures). For large models it may help to produce CSV output files faster and save some disk space.

Download dbcopy executrable:

Linux downloads:

  • Dbcopy version build on Debian-10 and expected to work on any modern Linux, including Ubuntu 20.04, CentOS 8, Debian 11

Please consult our wiki for more information:

Minor release 01 of November 2021

02 Nov 02:39
Compare
Choose a tag to compare

Minor release 01 of November 2021, v1.9.3
20211101 : v1.9.3

This release include:

  • c++ core changes: prohibit invalid use of time-like attributes in tables and events
  • c++ core changes: simplified and detailed UI, hide and show statements in model code
  • UI to create new input scenrio or edit existing scenarios
  • UI to create or edit model run notes, scenario notes and parameter notes using Markdown WYSWIG editor

Download source code and binaries:

Download release documentation archive:

Download cluster version (MPI):

Linux downloads:

  • Desktop version build on Debian-10 and expected to work on any modern Linux, including Ubuntu 20.04 and CentOS 8
  • Ubuntu downloads would allow you to build or debug your model on Ubuntu Linux (Ubuntu 20.04)
  • Current stable Debian version is Debian 11 which you may want to use to install new Linux workstation or server.
  • Cluster (MPI) Debian-10 version expected to work on any modern Linux with Open MPI version 3+ installed, including CentOS 8.
  • Cluster (MPI) CentOS-8 version require Open MPI 4.x and it would not work on RedHat / CentOS below 8.2 version.

IMPORTANT:
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.

Minor release 05 of October 2021

05 Oct 07:32
Compare
Choose a tag to compare

Minor release 05 of October 2021
20211005 : v1.9.2

This release include Ubuntu LTS (Ubuntu 20.04) binary downloads and also:

  • UI to create new incremental scenario to run the model
  • UI to create or edit model run notes using Markdown WYSWIG editor
  • model command line options to attach run notes

Download source code and binaries:

Download release documentation archive:

Download cluster version (MPI):

Linux downloads:

  • Desktop version build on Debian-10 and expected to work on any modern Linux, including Ubuntu 20.04 and CentOS 8
  • Ubuntu downloads may be convinient if you need to build or debug your model on Ubuntu Linux (Ubuntu 20.04)
  • Cluster (MPI) Debian-10 version expected to work on any modern Linux with Open MPI version 3+ installed, including CentOS 8.
  • Cluster (MPI) CentOS-8 version require Open MPI 4.x and it would not work on RedHat / CentOS below 8.2 version.

IMPORTANT:
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.

Minor release 03 of September 2021

03 Sep 23:54
Compare
Choose a tag to compare

Minor release 03 of September 2021
20210903 : v1.9.1

  • Code cleanup in order to reduce excessive c++ compilation warnings
  • UI: add model download feature to get model run results or input scenario(s)
  • UI: add an ability to delete model run results, input scenario(s) or download files

Download source code and binaries:

Download release documentation archive:

Download cluster version (MPI):

Linux downloads:

  • Desktop version build on Debian-10 and expected to work on any modern Linux, including Ubuntu 20.04 and CentOS 8
  • Cluster (MPI) Debian-10 version expected to work on any modern Linux with Open MPI version 3+ installed, including CentOS 8.
  • Cluster (MPI) CentOS-8 version require Open MPI 4.x and it would not work on RedHat / CentOS below 8.2 version.

IMPORTANT:
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.

Minor release 02 of August 2021

02 Aug 20:56
Compare
Choose a tag to compare

Minor release 02 of August 2021
20210802 : v1.9.0

  • breaking change: Change SimulationSeed from int to long long in Framework.odat
  • Raise runtime error on out-of-bounds assignment to range, classification, partition
  • Raise runtime error on invalid indices in GetTableValue or SetTableValue
  • Raise runtime error on assignment to attribute in event time function
  • openM++ UI cloud: allow download model, model run results, model input scenario
  • model sql function: fix bug in aggregation functions: VAR, SD, SE, CV
  • model sql function: add OM_IF() to provide if-then-else operator
  • model sql function: add OM_DENOM() to protect from divide by zero
  • ini-file: better handling of line \ continuation
  • on MacOS release executable signed and notarized by Apple

Download source code and binaries:

Download release documentation archive:

Download cluster version (MPI):

Linux downloads:

  • Desktop version build on Debian-10 and expected to work on any modern Linux, including Ubuntu 20.04 and CentOS 8
  • Cluster (MPI) Debian-10 version expected to work on any modern Linux with Open MPI version 3+ installed, including CentOS 8.
  • Cluster (MPI) CentOS-8 version require Open MPI 4.x and it would not work on RedHat / CentOS below 8.2 version.

IMPORTANT:
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.

Notes:

1.This release contains many improvements in model core which may help to catch the bugs and diagnose potential problems.
2.There is a first beta version of model data download UI, which is very convenient if you are hosting openM++ in cloud.
3.This release includes a separate documentation archive, which you can download to use an offline version of openM++ documentation. We do recommend using our online documentation which contains the most recent information.

Breaking change

Change SimulationSeed from int to long long in Framework.odat

The combined seed in the parameter SimulationSeed allows one to reproduce a single case in isolation in a case-based model after identifying a case of interest in a large simulation with multiple replicates. Unfortunately, the integer type of SimulationSeed in the framework (int) does not contain sufficient bits to hold the combined seed on all platforms. In this release, the type of SimulationSeed has been changed to long long. This change will cause existing models to fail during build with an error about mismatched types for SimulationSeed. To resolve the error, edit the file parameters/Default/Framework.odat and change

int SimulationSeed = 1;

to

long long SimulationSeed = 1;

This change has been done for all example models in the distribution.

Raise runtime error on out-of-bounds assignment to range, classification, partition

In this ompp release, if model code attempts to assign an out-of-bounds value to a range, classification, or partition, a run-time exception will be issued, with a message similar to:

Simulation error: attempt to assign 20 to range RNG_0_19 which has limits [0,19] when current time is 16.56686851293702 in entity_id 1 in or after event HappinessReversalEvent in simulation member 0 with combined seed 1

In Debug mode, the exception can be trapped, and the cause explored in an IDE.

In previous ompp releases, assignments to range, classification, or partition were silently clamped to allowed limits.

This behaviour can be changed by specifying, in model code

options bounds_errors = off;

Modgen specific: In Release mode, a Modgen model always silently clamps values to allowed limits. In Debug mode, a Modgen model raises a runtime exception on an out-of-bounds assignment. The option bounds_errors can be used to change this behaviour but applies only to Debug mode in Modgen. In Release mode, Modgen models do not perform bounds checking.

Raise runtime error on attempt to change an attribute during event time recalculation

In OpenM++, the time of a future event is recalculated by the framework as attributes change during the simulation. Logically, the calculation of a future event time must not change any attribute of any entity, because the event has not occurred - only a possible future time of the event is being calculated.

In this release, a model will raise a runtime error exception if this rule is broken during the simulation. The runtime error message provides information to help localize the source of the error, e.g.

Simulation error: Attempt to modify the attribute dont_touch_this by the event time function of `event BlowHornEvent` in entity_id 1 when current time is 1.000000000000000 after `event FirstBirthdayEvent` in entity_id 1 in simulation member 0 with combined seed 1

If the model is run in Debug mode, the runtime exception can be trapped and the exact code location identified.

There is some overhead associated with this runtime verification. An analysis of a large model estimated it to be about 3% of elapsed time. That performance analysis is an example in the test_models section of the OpenM++ wiki at Test Models * openmpp/openmpp.github.io Wiki.

The run-time check prohibiting changes to attributes by event time functions can be disabled by specifying

options verify_attribute_modification = off;

in model code. If this is done, a warning message to that effect will be written to the log when the model is run.

Modgen-specific: When compiling a model Modgen attempts to detect code in event time functions which changes attributes. To make that analysis feasible, Modgen attempts to prohibit some kinds of code in event time functions, e.g. links and calls to member functions. OpenM++ imposes no restrictions on code in event time functions.

Raise runtime error on invalid indices in GetTableValue or SetTableValue

The function GetTableValue is used to read a table cell and the function SetTableValue is used to set a table cell in a derived table.
In previous openM++ releases, GetTableValue returned NaN if the index arguments were invalid, and SetTableValue ignored the assignment.
Starting with this version, an openM++ model will raise a runtime exception by default if the indices are invalid.

If the number of indices supplied does not match the table rank, the message will be similar to:

Simulation error: Derived table API - table ErrorTest1 has rank 1 but number of indices is 2 in simulation member 0

If the value of any index is invalid for the shape of the table, the message will be similar to:

Simulation error: Derived table API - table ErrorTest1 index 0 must be in [0,19] but is 20 in simulation member 0

If run in Debug mode, the exception can be trapped, allowing one to see the exact code location responsible for the error.

Modgen specific: If invalid indices are supplied to GetTableValue, Modgen emits a single error message on the first occurrence, returns 0.0, and continues.

Patch for Windows version 20210629

21 Jul 19:14
Compare
Choose a tag to compare

Patch for Windows version 20210629 (v1.8.10)

This is a patched version of Windows executable files, to make it compatible with Modgen 32 bit version and Microsoft 32 bit version of Access database components. If you are using Modgen 32 bit version then it is recommended to install this patch.

Issue

If you are running test_models.exe utility to compare Modgen model results with openM++ then Modgen fails with error message:

OLE exception from "ADODB.Connection
Provider cannot be found. It may not be properly installed.

Fix

  • Download:
    Windows patch 1 for v1.8.10 2021-06-29

  • Extract it into your openM++ bin directory, for example into C:\openmpp_win_20210629\bin.

  • Use test_models32.exe for Modgen 32 bit

  • Use test_models.exe for Modgen 64 bit

Minor release 29 of June 2021

29 Jun 07:46
Compare
Choose a tag to compare

Minor release 29 of June 2021

Download source code and binaries:

Download release documentation archive:

Download cluster version (MPI):

Linux downloads:

  • Desktop version build on Debian-10 and expected to work on any modern Linux, including Ubuntu 20.04 and CentOS 8
  • Cluster (MPI) Debian-10 version expected to work on any modern Linux with Open MPI version 3+ installed, including CentOS 8.
  • Cluster (MPI) CentOS-8 version require Open MPI 4.x and it would not work on RedHat / CentOS below 8.2 version.

IMPORTANT:
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.

NOTES:

This is a minor release to improve parameters CSV files support and allow to supply parameter value notes in Markdown format.
Also this release provides various improvements for model development process.

Parameters CSV files and parameters value notes Markdown files

It is possible to supply scenario parameters in CSV or TSV files during model build or during model run time. Starting from current release it is also possible to supply parameters value notes in Markdown format:

  • during model development openM++ model compiler can read parameter values CSV and MD notes files;
  • model can read input parameter values CSV and MD notes files;
  • new CsvToDat utility can create parameters DAT files from scenario in openM++ database;
  • user can edit parameters in openM++ UI and copy-paste CSV values;
  • UI can display parameter value notes formatted in Markdown;
  • dbcopy utility can export parameter values into CSV files and notes into MD files from database.

New experimental utility CsvToDat

This release contains a new utility CsvToDat which may be useful for cross-compatible models which use the csv format to supply one or more parameter values for the Default scenario when a model is built. Modgen supports only .dat parameter input files, not csv files. This utility can create .dat input files for parameter values supplied as csv, so that the Modgen version of the cross-compatible model builds and runs, without interfering with the OpenM++ version of the model. For more information including an example, please see the wiki page on CsvToDat at CsvToDat Utility * openmpp/openmpp.github.io Wiki https://github.com/openmpp/openmpp.github.io/wiki/CsvToDat-Utility

Raise runtime exception on disallowed null entity pointer use

Null entity links, eg lSpouse->income, are allowed in identity attributes and in tables. Elsewhere, for example in event time or event implement functions, use of null entity links has undefined results. To aid model developers in identifying erroneous use of null entity links, ompp now raises a runtime exception on such use, with an error message such as

Simulation error: Attempt to dereference null pointer when current time is 16.56686851293702 in entity_id 1 after event HappinessReversalEvent in simulation member 0 with combined seed 1

Changes to event trace

OpenM++ models can write detailed information to a "trace file" about event times and event occurrence during a run. Event trace capability is incorporated into a model by settings options event_trace = on; in model code. Several changes were made to event trace in this version of OpenM++.

  1. The number of lines written is now subject to a maximum, which is by default 100,000 lines. If this limit is exceeded a message is written to the trace file and no further lines are written. This maximum can be increased using the model development option EventTrace.MaximumLines.
  2. If a model is built with event trace capability, a warning message to that effect is written to the log file. This is to help prevent inadvertently using a model with event trace for production or analysis.

Hot fix release 12 of June 2021

12 Jun 09:32
Compare
Choose a tag to compare

Hot fix release 12 of June 2021

  • Bug fix: omc compiler error can occur with a parameter in csv format
  • New version 2.1 of test_models
  • adjust build and run scripts to develop and run models outside of OM_ROOT release folder
  • support model-specific root folder, allow to use it in model code
  • create model-specific run templates for OzProj sample models
  • add model localization macro for non-translated messages

Download source code and binaries:

Download release documentation archive:

Download cluster version (MPI):

Linux downloads:

  • Desktop version build on Debian-10 and expected to work on any modern Linux, including Ubuntu 20.04 and CentOS 8
  • Cluster (MPI) Debian-10 version expected to work on any modern Linux with Open MPI version 3+ installed, including CentOS 8.
  • Cluster (MPI) CentOS-8 version require Open MPI 4.x and it would not work on RedHat / CentOS below 8.2 version.

IMPORTANT:
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.

NOTES:

Bug fix - omc compiler error can occur with a parameter in csv format

This bug has been fixed in this release. It could manifest if values for a parameter were provided in csv format, if the parameter has a dimension type, eg a partition, which is not used in any other parameter or table in the model.

New version 2.1 of test_models

A number of bugs and corner conditions have been addressed.

The default significant digits used for table comparison has been reduced from 7 to 6. This reduction in default comparison tolerance to one part in a million can help reduce the number of differing tables reported by test_models while still identifying differences of substantive or logical significance. The default precision can be overridden using the command line option --significant_digits.

test_models uses digests to increase speed of table comparisons. This technique reliably identifies identical rounded tables but can produce false positives. False positives are tables which are the same to 1 part in a million but which due to vagaries of rounding have values which differ when rounded to 6 significant digits. False positives can be costly for analysts or model developers because they require verification, and persist in reports. test_models now eliminates these false positives by verifying differing rounded tables by comparing the original unrounded data. In practice, this verification is rapid. This behaviour can be disabled using the --nocells command line option. The --nocells option also disables the creation of original (unrounded) copies of tables.

Breaking change: make clean-all

Cosmetic change, which may break your model build on Linux or MacOS. If you have own custom script(s) to build the model(s) or you are using VSCode for model development then please replace existing:
make cleanall
with new:
make clean-all
For updated example of VSCode model build tasks please go to our wiki:

Other changes

There are multiple changes done to facilitate model development outside of openM++ release folder.

For example, on Windows you can have multiple current openM++ releases located at:

  • C:\openmpp_win_20210612
  • C:\openmpp_win_20210415
  • C:\openmpp_win_20210209
  • and your model at: C:\my-models\BestModel

In order to re-build or run the model with particular release you can either:

  • setx OM_ROOT=C:\openmpp_win_20210415
  • or open your model project file C:\my-models\BestModel\ompp\Model.vcxproj with Notepad and update OM_ROOT:
    • <OM_ROOT>C:\openmpp_win_20210415</OM_ROOT>

For Linux and MacOS do any of:

  • export OM_ROOT=~/openmpp_win_20210415
  • edit model ~/my-models/BestModel/makefile to set OM_ROOT = $HOME/openmpp_win_20210415

Because this is a hot fix release other changes may not be completed or fully documented.