webgme-dss
v0.1.1
Published
Design Studio for Dynamic Systems with Modelica as backend
Downloads
11
Maintainers
Readme
WebGME-DSS
WebGME Dynamic Systems Studio is a web-based collaborative framework for composing and simulating cyber-physical systems expressed as Modelica models. The framework is built on top WebGME that provides a git-like centralized model storage where each change is efficiently stored as commit inside a mongodb database.
In the current stage it supports simulation of the Modelica models using either JModelica.org or OpenModelica.
For more details about the application a paper was published under Modelica on the Web (page 220).
Some features
Leveraging the metamodeling capabilities of WebGME, the models are constrained to only allow (and indicate to end-user) compatible constructs.
Each system constitutes a project which can be viewed as a git repository where the evolution of the models are stored as commits inside a mongo database.
In the same way authorization of git-repositories can be managed via github, WebGME provides a basic user-management system with users and organizations.
Each state of the model can be retrieved at any time and versions can be compared.
Simulate the Modelica models using the stable open source tools JModelica.org and/or OpenModelica. As the simulation progresses on the server the output is transmitted to the end-user via websockets.
For each simulation the simulation artifacts are stored inside the model repository together with a snap-shot of the exact model that was simulated. This enables graphical feedback from the same context the model was composed when viewing the time-series.
Only domains requested are loaded into the browser and can later on be updated from the user interface.
Disclaimer
In its current state this application only supports a subset of Modelica in
terms of range of handpicked domains from Modelica Standard Library.
Modification of some parameter types such as packages
, maps
, tables
, etc. are not supported.
The current support is however more than sufficient for getting familiar with the component-based
features of Modelica and to compose actual cyber-physical systems from the curated domains.
Starting the application using docker-compose
With a single command (granted docker and docker-compose are installed) you can try out the application with JModelica.org as simulation backend.
Clone this repo:
git clone https://github.com/webgme/webgme-dss.git
Build images and start containers:
docker-compose up -d
Note that with the supplied compose files database files and artifacts are persisted inside the containers, so launching a new container will wipe out the files.
Developers
Dependencies
To run the server application on a local machine first install nodejs and mongodb
- For windows downloading the LTS from nodejs.org is a viable solution for linux nvm is recommended.
- WebGME uses mongodb as model storage and works well with the community-edition.
- In addition you'll need git to clone this repo and for installing some of the node_modules.
Build and start the application
Installing node_modules and building app
Clone this repo:
git clone https://github.com/webgme/webgme-dss.git
Next install the node_modules (defined as dependencies in package.json
).
npm install
Secondly build the front-end application
npm run webpack
Start mongod locally at the default port (27017) by default the models will be put inside multi
you can configure this
in ./config/config.default.js
which is the configuration for webgme.
windows (example)
"C:\Program Files\<mongodb>\bin\mongod" --dbpath "C:\dirToStoreFiles"
linux/macOS
mongodb --dbpath <dirToStoreFiles>
With mongodb running start the webgme-server
npm start
It will print out the url (by default localhost:8888)
Creating the Modelica Seed
- Follow the instructions in /scripts/py_modelica_exporter/README.md to generate
components.json
- From
src/common/
runnode preprocessComponents.js
(it consumescomponents.json
from step one)- If the PortMapping does not exist - the
ModelicaBaseSeed
andmetadata.json
need to be updated
- If the PortMapping does not exist - the
- Create a project from the ModelicaBaseSeed name it e.g.
SeedProject
- From root of repo run:
node node_modules\webgme-engine\src\bin\run_plugin.js SeedCreator SeedProject