{"id":18978265,"url":"https://github.com/autodesk/sydevs","last_synced_at":"2025-04-19T17:36:17.346Z","repository":{"id":145540080,"uuid":"127196400","full_name":"Autodesk/sydevs","owner":"Autodesk","description":"Simulation-based analysis of complex systems involving people, devices, physical elements, and dynamic environments.","archived":false,"fork":false,"pushed_at":"2025-02-18T16:55:52.000Z","size":53271,"stargazers_count":39,"open_issues_count":0,"forks_count":12,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-03-29T10:51:20.978Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://autodesk.github.io/sydevs","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Autodesk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-28T20:44:43.000Z","updated_at":"2025-02-15T10:36:59.000Z","dependencies_parsed_at":"2024-12-18T17:37:00.828Z","dependency_job_id":null,"html_url":"https://github.com/Autodesk/sydevs","commit_stats":null,"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Autodesk%2Fsydevs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Autodesk%2Fsydevs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Autodesk%2Fsydevs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Autodesk%2Fsydevs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Autodesk","download_url":"https://codeload.github.com/Autodesk/sydevs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249235089,"owners_count":21235146,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T15:32:50.987Z","updated_at":"2025-04-16T11:31:47.731Z","avatar_url":"https://github.com/Autodesk.png","language":"C++","readme":"# SyDEVS\n\n[![Build and Deploy SyDEVS](https://github.com/Autodesk/sydevs/actions/workflows/ci.yml/badge.svg)](https://github.com/Autodesk/sydevs/actions/workflows/ci.yml)\n\nThe SyDEVS C++ library provides a framework for implementing complex systems simulation code in a modular and hierarchical fashion.\n\nThe framework combines three modeling paradigms: [discrete event simulation](https://en.wikipedia.org/wiki/Discrete_event_simulation), [agent-based modeling](https://en.wikipedia.org/wiki/Agent-based_model), and [dataflow programming](https://en.wikipedia.org/wiki/Dataflow_programming). The discrete event simulation aspect is based on [DEVS](https://en.wikipedia.org/wiki/DEVS), a well-regarded modeling formalism involving two types of models that correspond with the ***atomic*** and ***composite*** nodes of SyDEVS. SyDEVS also includes ***collection*** nodes, which extend DEVS with agent-based modeling capabilities, and ***function*** nodes, for dataflow programming. Atomic, composite, collection, and function nodes communicate through flow ports as part of a dataflow programming network. Atomic, composite, and collection nodes also communicate in a DEVS-like fashion through message ports.\n\nIn addition to supporting multiple modeling paradigms, the SyDEVS library provides comprehensive and reusable Modern C++ implementations of multidimensional arrays, Standard International (SI) units, a multiscale time representation, and other technical computing elements.\n\nThe main SyDEVS website is at [https://autodesk.github.io/sydevs](https://autodesk.github.io/sydevs).\n\nThe SyDEVS API reference is at [https://autodesk.github.io/sydevs/doc/html](https://autodesk.github.io/sydevs/doc/html).\n\n## Instructions\n\n### Using SyDEVS\n\nThe recommended way to use SyDEVS in a simulation project is to include the [latest release](https://github.com/Autodesk/sydevs/releases) as an external library, as described in the [Getting Started](https://autodesk.github.io/sydevs/getting_started/) tutorial.\n\n### Building SyDEVS using MSVC on Windows\n\nTo build the SyDEVS examples and tests using [CMake](http://www.cmake.org/) and [Visual Studio 2022](https://www.visualstudio.com), follow the instructions below. \n\n1. Open a command prompt and navigate to the `sydevs` project directory.\n1. `mkdir build`\n1. `cd build/`\n1. `cmake -G \"Visual Studio 17 2022\" -A x64 ..`\n1. Open `build/SyDEVS.sln` in Visual Studio\n1. Recommendation: In `Tools -\u003e Options -\u003e Text Editor -\u003e C/C++ -\u003e Tabs`, select `Insert spaces` with a `Tab size` and `Indent size` of `4`\n\n### Building SyDEVS using GCC on Windows\n\nTo build the SyDEVS examples and tests using [CMake](http://www.cmake.org/) and [TDM-GCC](https://jmeubank.github.io/tdm-gcc/), follow the instructions below. \n\n1. Install the 64+32-bit MinGW-w64 edition of TDM-GCC.\n1. Open a command prompt and navigate to the `sydevs` project directory.\n1. `mkdir bin`\n1. `cd bin/`\n1. `cmake -G \"MinGW Makefiles\" ..`\n1. `mingw32-make`\n\n### Testing SyDEVS\n\nUnit and regression tests are run automatically during the build process.\n\nThe unit testing framework used in SyDEVS is [Catch2](https://github.com/catchorg/Catch2). See the [documentation](https://github.com/catchorg/Catch2/tree/master/docs) for a tutorial and reference material. Catch2 is released under the Boost Software License 1.0.\n\nNote that the complete set of regression tests will only run if MSVC is used. If another compiler is used, the regression tests involving random distributions will be skipped, since different compilers are expected to generate different random samples.\n\n### Generating the API documentation\n\nTo build or update the documentation files with [Doxygen](https://www.doxygen.nl/), make sure you are in the top level directory where [doxygen.config](doxygen.config) is located, and execute the following command:\n\n* `doxygen doxygen.config`\n\nThis will build the documentation in the [`doc`](doc) directory. To view the documentation, go to `docs/html` and open `index.html` in your web browser.\n\nYou should update the documentation on a regular basis to keep it in sync with the code.\n\n### Releasing a new version of SyDEVS\n\nWhen releasing a new version of SyDEVS, remember to perform the following steps:\n\n1. Create the new release.\n1. Wait for the package `SyDEVS-[version].zip` to appear as a release asset.\n1. Unzip the package and copy the contents of `doc/html`.\n1. Checkout the `gh-pages` branch of the repo.\n1. In the `gh-pages` branch, replace the contents of `doc/html` with the contents copied above.\n\n## Documentation\n\n### Website\n\nThe [main SyDEVS website](https://autodesk.github.io/sydevs) includes an [Overview](https://autodesk.github.io/sydevs/overview.html), a [Getting Started](https://autodesk.github.io/sydevs/getting_started/) tutorial, a [User Manual](https://autodesk.github.io/sydevs/user_manual/), and the [API Reference](https://autodesk.github.io/sydevs/doc/html/) for the latest release.\n\n### Examples\n\nExamples of SyDEVS-based simulations are found in the [`src/examples`](src/examples) directory.\n\nThe best examples for learning the library are those in [`demo`](src/examples/demo).\n\nIn particular, the [`queueing`](src/examples/demo/queueing) project features one well-commented example of each of the four main types of nodes:\n\n- [`queueing_node.h`](src/examples/demo/queueing/queueing_node.h) (atomic)\n- [`two_stage_queueing_node.h`](src/examples/demo/queueing/two_stage_queueing_node.h) (composite)\n- [`parallel_queueing_node.h`](src/examples/demo/queueing/parallel_queueing_node.h) (collection)\n- [`plus_node.h`](src/examples/demo/queueing/plus_node.h) (function)\n\n## Contributing\n\nReview the [contributing guidelines](CONTRIBUTING.md) before you consider working on SyDEVS and proposing contributions.\n\n## License\n\nSPDX-License-Identifier: [Apache-2.0](LICENSE.md)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautodesk%2Fsydevs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fautodesk%2Fsydevs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautodesk%2Fsydevs/lists"}