Skip to content

Instantly share code, notes, and snippets.

@ZhangRunsen
Last active August 31, 2020 08:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ZhangRunsen/d522f018a7302455ea2abda4c66e7b02 to your computer and use it in GitHub Desktop.
Save ZhangRunsen/d522f018a7302455ea2abda4c66e7b02 to your computer and use it in GitHub Desktop.
Final submission for a GSoC2020 project " A user-defined run-time loadable module template for co-simulation with Chrono::Engine"

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

Project overview

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.

What I have done

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.

Usage

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];

My strace for GSoC 2020

Future study

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;
  • ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment