Microdata output initial release: 10 of December 2022
Microdata output initial release: 10 of December 2022
20221210 : v1.12.0
This is a first of multiple releases to support model entity microdata, it allow to output microdata into CSV files or model trace or database. New database tables added to store microdata and as result newly compiled models may not work under previous versions of openM++. It is a potentially BREAKING changes in database schema, but it is unlikely breaks compatibility unless you are using microdata. Next openM++ release would improve database compatibility. You can skip this release unless you want to start using model microdata values.
Please skip this release unless microdata is an important part of your model, use 23 of September 2022 release v1.11.1
Changes in that release:
- microdata output from model entities into CSV files or model trace or database
- c++ core: attribute visibility (see below)
- c++ core: changes to EventTrace (see below)
- c++ core: workaround to MSVC compiler error C1001 for models with many attributes (see below)
- c++ core: model notes syntax - Modgen and Markdown (see below)
- c++ core: added experimental model Align1 (see below)
- c++ core: model documentation enhancements (see below)
- c++ core: external names for classification enumerators (see below)
- Linux and MacOS: create optional views for Modgen schema compatibility
- Go back-end: initial version to handle old and db schemes (with and without microdata)
- UI: minor change: open new tab at leftmost position
Microdata Output
This release includes functionality for a model to output values of entity attributes during a run for later use.
Microdata output is controlled by run-time settings, build-time settings, and model code.
Run-time settings specify which attributes (if any) are output during a run.
If a model is enabled for microdata output by build-time settings, all attributes are available for selection at run-time without rebuilding the model.
Future OpenM++ functionality will allow tabulation of run microdata previously saved in the model database, including micro-level comparison operations between runs.
For more information, please see the wiki topic Microdata Output.
Attribute visibility
In this version, internal attributes generated by the OpenM++ compiler are by default not visible in EventTrace or Microdata. The option all_attributes_visible can be used to make all attributes visible by inserting the following statement into model code.
options all_attributes_visible = on;
Changes to EventTrace
Several changes and enhancements were made to EventTrace in this release.
- If EventTrace is enabled in a model, a warning message
"Warning : model can expose microdata at run-time with event_trace = on"
will be written to the log when the model is run. This warning can be disabled with a build-time option in model code. - EventTrace now reports entity time instead of global time in the
Time
column. This means that the time reported for initial values at the beginning of a run or case will be the starting entity time instead of-inf
. - A new ReportStyle
'csv'
was added to facilitate downstream processing of EventTrace output, e.g. in Excel.
For more information, please see the wiki topic: https://github.com/openmpp/openmpp.github.io/wiki/Event-Trace.
Workaround to MSVC compiler error C1001 for models with many attributes
The Microsoft C++ compiler in Visual Studio (MSVC) might crash with "Fatal Error C1001 Compiler internal error"
when building the Release version of a model with many attributes.
A workaround was implemented in the OpenM++ compiler.
The workaround disables MSVC optimization for 2 generated entity member functions.
The workaround is unlikely to significantly affect model run time.
The workaround is only active in environments where MSVC is used to build the model.
NOTE syntax - modgen and markdown
To instruct the OpenM++ compiler to not convert Modgen syntax in NOTE
statements to equivalent markdown syntax, include the following statement in model code:
options convert_modgen_note_syntax = off;
The default and previous behaviour is on
.
For more information, please see the wiki topic: https://github.com/openmpp/openmpp.github.io/wiki/model-documentation
Experimental model Align1
Align1 is an experimental time-based model which manipulates the event queue to align with external counts during a run.
For more information, please see the wiki topic: https://github.com/openmpp/openmpp.github.io/wiki/Illustrative-Model-Align1 .
Model documentation enhancements
The OpenM++ compiler now generates doxygen brief descriptions for model symbols.
This can help model developers by improving integration with the Visual Studio IDE, and with doxygen.
For information on model documentation, please see the wiki topic: https://github.com/openmpp/openmpp.github.io/wiki/model-documentation
External names for classification enumerators
In this release, external names can be specified for enumerators of classifications, and classification enumerators can participate in heuristic name generation.
For more information on external names, please see the wiki topic: Export Names · openmpp/openmpp.github.io Wiki · GitHub https://github.com/openmpp/openmpp.github.io/wiki/export-names.
Download source code and binaries:
- Windows
- Linux: Debian-11, Ubuntu 22.04, Ubuntu 20.04, RedHat 9
- Linux old stable: Debian 10, RedHat 8
- MacOS Intel
- MacOS Arm
Download release documentation archive:
Download cluster version (MPI):
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.