Final report of a MBDyn GSoC2020 project: A user-defined run-time loadable module template for co-simulation with Chrono::Engine
by Runsen ZHANG, August, 2020
The goal of the project is to enable the tight coupling co-simulation between MBDyn and another open-source software, Chrono::Engine (C::E). For that, a user-defined runtime loadable module template is provided. The template includes a MBDyn-C::E interface runtime module, by which users can built their own C::E models in the opaque object, and link it to the MBDyn’s module. Several demos are aslo provided as references.
Codes:(contributions within GSoC2020)
- Created an interface for single coupling node case;
- A run-time loadable module named as "module-chrono-interface" for MBDyn-side codes;
- Codes for C::E-side codes;
- Extended the codes to cases for arbitrary number of nodes;
Demos:(demos for module-chrono-interface)
- Provided three demos, "two-mass oscillator" case, "pendulum" case, and "multi-node" case, to test the module.
To use this module, users need to preinstall Chrono::Engine libraries and the develop version of MBDyn. After installation, Chrono::Engine models defined by users should be built with the interface for C::E-side, and be dynamically linked to MBDyn. The syntax in MBDyn is:
User defined:
Element_Number, ChronoInterface,
coupling, [none | tight],
iteration_number, [tolerance, ],
motor type, [setpoint | spline],
[length scale, Real, mass scale, Real, ]
nodes number, <Int>,
<nodes_ID>, [offset, <Vec3>], <CEBodies_ID>, output, [yes | no]
[ground, <C::E_ground_ID>, <Vec3>, <Matr3x3>],
verbose, [yes | no];
- Weekly reports
- Reports for the first and second evaluation
- Contributions with GSoC 2020
- List of commits
Although goals of GSoC have been achieved, algorithms for co-simulation between MBDyn and Chrono::Engine are still worth of futhur in-depth study, such as:
- Losse/explicit co-simulation scheme;
- Multirate co-simulation scheme;
- ...