# MUSEN MUSEN is an open-source DEM simulation framework. For more information, please check the https://msolids.net/documentation. If you want refer to MUSEN please use contribution of [Dosta et al., 2020](https://doi.org/10.1016/j.softx.2020.100618). For new versions and updates, please check https://msolids.net/musen/download. Application examples: https://www.youtube.com/channel/UCndqDrPpwcRqLeruavGmbbQ/videos # Requirements MUSEN should install and work on all latest versions of Windows or Linux (Ubuntu or Red Head). Requires Visual C++ Redistributable for Visual Studio 2017 to run. # Compilation for Windows A fully functional version can be compiled and built with Microsoft Visual Studio 2017. Requirements on Windows: - Microsoft Visual Studio 2017 - Qt 5.12.3 msvc2017_64 - Qt Visual Studio Tools for Visual Studio 2017 - Git - CUDA 10 - cmake How to build for Windows using Microsoft Visual Studio 2017: 1) Download and install cmake on your computer https://cmake.org/download/ 2) Execute two files .\MUSEN\ExternalLibraries\RunZLibCompile.bat .\MUSEN\ExternalLibraries\RunProtobufCompile.bat 3) Download and install CUDA 10 4) Download and install Qt 5.12.3 5) Open MUSEN.sln file with Visual Studio and start compilation # Compilation for Linux Requirements on Linux: - cmake 3.11.2 - gcc-7, g++-7 Build on Linux (Ubuntu version 18.04 or higher): 1) Move to ./MUSEN_Linux/ 2) Run sudo ./install_prerequisites_local.sh 3) Run sudo ./linux_copy_files.sh 4) Run sudo ./make_musen_local.sh 5) Compiled version can be found ./MUSEN_build/ # Code organization - Databases - agglomerates, geometries and materials databases - ExternalLibraries - external libraries used in MUSEN (zlib and protobuf) - GeneralFunctions - main functions and types used in MUSEN - GeneralFunctions\SimResultsStorage - low-level functions for data handling (load and save data) - MUSEN - MUSEN\CMusen - command-line version of MUSEN - MUSEN\Models - contact models (particle-particle, particle-wall, solid bonds, ...) - MUSEN\Modules - MUSEN\Modules\BondsGenerator - generate bonds between particles - MUSEN\Modules\ContactAnalyzer - general functions for fast contacts detection - MUSEN\Modules\FileManager - set of functions to convert, merge or modify .mdem files with simulation results - MUSEN\Modules\ObjectsGenerator - dynamically generates particles or agglomerates during simulation - MUSEN\Modules\PackageGenerator - generate packing of particles prior simulation - MUSEN\Modules\ResultsAnalyzer - analyzer of simulation results (export necessary data to csv files) - MUSEN\Modules\ScriptInterface - analyze input scripts for command-line version - MUSEN\Modules\SimplifiedScene - simplified entity generated from SystemStructure and which is used during simulation - MUSEN\Modules\Simulator - CPU and GPU simulators - MUSEN\Modules\SystemStructure - main entity which stores the information about whole scene - MUSEN\QTDialog - Qt dialog for main window - MUSEN_Linux - set of scripts to compile MUSEN for linux - QTDialogs - different Qt-based dialogs of GUI # Third-party tools and libraries - [Qt 5.12.3](https://www.qt.io/) – The Qt Company - [LGPL v3](https://doc.qt.io/qt-5/lgpl.html) - [Protobuf 3.9.1](https://github.com/protocolbuffers/protobuf/) – Google Inc. - [BSD License](https://github.com/protocolbuffers/protobuf/blob/master/LICENSE) - [zlib v1.2.11](https://www.zlib.net/) – Jean-loup Gailly and Mark Adler - [zlib License](https://www.zlib.net/zlib_license.html) - [CUDA 10.0](https://developer.nvidia.com/cuda-zone) – Nvidia Corporation - [NVIDIA License](https://developer.download.nvidia.com/compute/cuda/10.0/Prod/docs/sidebar/EULA.pdf)