You are here:   Home > News
Google Summer of Code - update after final evaluation
August 24, 2015
Dear users and coders,

As a follow up from our previous announcement, we are glad to inform you that the Google Summer of Code 2015 for MBDyn has gone though final evaluation. This is a great opportunity as it is the first time that MBDyn is opening to the wider open-source community.

The three selected projects:

  1. implementation of collision detection and contact handling based on Bullet;
  2. enhancement and optimization of MBDyn internal libraries;
  3. revamping of the Blender interface to MBDyn to better meet the scientific user's expectations;
are at different stages of completion. Their progress can be followed in the Google group linked at the end of this email.
  • Project 1 (collision detection), after mid-term evaluation, seemed to have gotten back on the right track. However, eventually "life took over". The skeleton of a module, implementing a user-defined element, is currently available. It has been partially filled with the capability to deal with basic shapes and place them according to the kinematics of MBDyn's nodes. In the future it may represent a starting point for anyone who wants to complete the project (e.g. in a future GSoC)
  • Project 2 (internal enhancements) has successfully led to the implementation of an expression evaluator for mathematical expressions. Along with other enhancements and optimizations, it significantly improves the performance of "string" drive callers evaluation. The prototype passed all unit tests. As a side effect, the refactoring of that code revealed a few issues in the original parser; some have already been corrected, some still need to (basically, in the process of fixing existing flaws, we haven't decided yet what direction to take). Benchmarks with respect to the original code show impressive figures: for a very simple scalar problem, one abstract node loaded by an abstract force,
        1. * x = "(1. - cos(.01*Time))/2 - .1*model::node::abstract(0, "x")"
    a speedup of 4.5 was observed:
    input file name: drive_string
    number of steps: 1e6
    output: none
    multithread: no

    *** compiler options: -O2 -ftree-vectorize -funroll-loops -march=core2 -m64

    execution time
    original code: 29s
    new code: 6.4s

    *** compiler options: -O2 -ftree-vectorize -funroll-loops -march=core2 -m64 -pg

    execution time
    original code: 50s
    new code: 15.6s

    gprof output
    original code:
    index % time self children called name
    [7] 71.6 0.15 7.72 4407161 StringDriveCaller::dGet() const [7]

    new code:
    index % time self children called name
    [7] 29.8 0.04 0.69 4407161 StringDriveCaller::dGet() const [7]
    In the profiled version, the evaluation of the string drive caller went from requiring 72% of the execution time to a mere 30%, a speedup of 2.5 (3.2 in terms of wall clock time).

    The code will appear in the next release, MBDyn 1.7.0.

  • Project 3 (Blender-based GUI) sadly didn't pass mid-term evaluation, as already announced, and went out of GSoC. However, thanks to the revitalized interest and the invaluable collaboration of several people, including Doug Baldwin (the original developer of the tool), Louis Gagnon and Andrea Zanoni, the existing tool has been significantly improved. A "Blender and MBDyn" working prototype is already available on Github:
We want to thank everyone who contributed to this effort, starting from the selected students.

We also encourage you to visit the group's website.

Please do pitch in, either by contributing ideas, helping out on an issue, or providing your own lines of code!

Related story


Powered by CMSimple|