... | ... | @@ -6,7 +6,7 @@ In this page you'll find some ideas for projects to be developed in the context |
|
|
|
|
|
\*\* 2022 GSoC Edition Update \*\* In the 2022 GSoC Edition, contributors will have the choice to submit proposals for short (175 hours) or long (350 hours). From most of the ideas you see in this list, projects of both types can be carved out. Contact us in the [Issues](https://public.gitlab.polimi.it/DAER/mbdyn/-/issues) section and we will discuss together how to structure your MBDyn GSoC project!.
|
|
|
|
|
|
\*\* 2024 GSoC Edition Update \*\* In the 2024 GSoC Edition, contributors will have even more flexibility in submitting proposals. Projects can be carried out in short (90 hours), intermediate (175 hours) and long (300 hours) versions. As always, from the ideas that you see in this list, projects of all sized can be carved out, so the important thing is that you get in contact with us as soon as possible, in the [Issues](https://public.gitlab.polimi.it/DAER/mbdyn/-/issues) to discuss together how to best structure your proposal.
|
|
|
\*\* 2024 GSoC Edition Update \*\* In the 2024 GSoC Edition, contributors will have even more flexibility in submitting proposals. Projects can be carried out in short (90 hours), intermediate (175 hours) and long (350 hours) versions. As always, from the ideas that you see in this list, projects of all sized can be carved out, so the important thing is that you get in contact with us as soon as possible, in the [Issues](https://public.gitlab.polimi.it/DAER/mbdyn/-/issues) to discuss together how to best structure your proposal.
|
|
|
|
|
|
Furthermore, for the 2024 GSoC edition we completely re-structured the project proposals, learning from past experience.
|
|
|
|
... | ... | @@ -30,35 +30,47 @@ Furthermore, for the 2024 GSoC edition we completely re-structured the project p |
|
|
|
|
|
### Python Preprocessor development
|
|
|
|
|
|
The [MBDyn Python Preprocessor](https://public.gitlab.polimi.it/DAER/mbdyn/tree/develop/contrib/PythonPreprocessor) is a tool that is currently intended to support and speed up the generation of input files, integrating the standard MBDyn input syntax with Python code. The preprocessor parses an input file searching for Python code wrapped by `#beginpreprocess` and `#endpreprocess` tags, and processes it generating portions of the final input file.
|
|
|
The [MBDyn Python Preprocessor](https://public.gitlab.polimi.it/DAER/mbdyn/tree/develop/contrib/PythonPreprocessor) is a tool that is currently intended to support and speed up the generation of input files, integrating the standard MBDyn input syntax with Python code. The preprocessor parses an input file searching for Python code wrapped by `#beginpreprocess` and `#endpreprocess` tags, and processes it generating portions of the final input file. See the examples in [contrib/PythonPreprocessor/examples](contrib/PythonPreprocessor/examples).
|
|
|
|
|
|
Several different possible areas of improvement are available:
|
|
|
The aim is to enable the user to write a complete MBDyn model, from scratch, only using Python. The development process can be incremental:
|
|
|
|
|
|
- complete the Preprocessor, adding support for all the missing entities;
|
|
|
- extend the Preprocessor capabilities, in particular those of the `MBDynLib` module that the preprocessor relies on, in order to make it able to write a complete input file.
|
|
|
|
|
|
1. extending the library of entities supported by the Preprocessor to cover all the available entities:
|
|
|
- drive callers
|
|
|
- constitutive laws
|
|
|
- drivers
|
|
|
- nodes
|
|
|
- elements
|
|
|
2. adding classes that manage the MBDyn input file blocks defining the general behavior of the model and simulation:
|
|
|
- initial value
|
|
|
- control data
|
|
|
3. adding a class to hold an entire MBDyn Model
|
|
|
|
|
|
The development of other preprocessing tools, for example GUI-based, will then be greatly facilitated.
|
|
|
|
|
|
The work will rely on the existing [MBDyn Python Preprocessor](https://public.gitlab.polimi.it/DAER/mbdyn/tree/develop/contrib/PythonPreprocessor) code and on the code written by [Aditya Baghat](https://gitlab.com/adityabhagat99) during the 2019 Google Summer of Code, that intended to build the groundworks for a FreeCAD GUI preprocessor. The repository holding Adityia code can be found [here](https://gitlab.com/zanoni-mbdyn/mbdynfreecadgui).
|
|
|
NOTE: the work will start from on the existing [MBDyn Python Preprocessor](https://public.gitlab.polimi.it/DAER/mbdyn/tree/develop/contrib/PythonPreprocessor) code and possibly on the code written by [Aditya Baghat](https://gitlab.com/adityabhagat99) during the 2019 Google Summer of Code, that intended to build the groundworks for a FreeCAD GUI preprocessor. The repository holding Adityia code can be found [here](https://gitlab.com/zanoni-mbdyn/mbdynfreecadgui).
|
|
|
|
|
|
**Category**: [User Interface](#user-interface)\
|
|
|
**Programming Languages**: Python\
|
|
|
**Keywords**: UI, pre-process **Priority**: Medium/High\
|
|
|
**Difficulty**: Low/Intermediate\
|
|
|
**Mentors**: Andrea Zanoni, Alberto Savino, Andrea Colli\
|
|
|
**ENTRY TEST**: Complete step 1 of standard MBDyn GSoC [entry test](https://gitlab.polimi.it/Pub/mbdyn/wikis/Google-Summer-of-Code/Entry-Test), then write a simple parametric input file leveraging the Python Preprocessor.
|
|
|
**ENTRY TEST**: Complete step 1 of standard MBDyn GSoC [entry test](https://gitlab.polimi.it/Pub/mbdyn/wikis/Google-Summer-of-Code/Entry-Test), compiling MBDyn from the `preprocess` branch, then write a simple parametric input file leveraging the Python Preprocessor. If you can, try to add support for a new MBDyn entity (e.g. a Drive Caller, see Section 2.6 of the Input Manual).
|
|
|
|
|
|
---
|
|
|
|
|
|
## Modeling Capabilities
|
|
|
### Genetic Optimization Module
|
|
|
|
|
|
**TODO**
|
|
|
The purpose of this project is to develop and MBDyn [module](https://public.gitlab.polimi.it/DAER/mbdyn/-/wikis/home#what-are-run-time-loadable-modules-and-how-do-they-work) which implements a [genetic algorithm](https://en.wikipedia.org/wiki/Genetic_algorithm) (GA) which will solve optimization problems inside an MBDyn simulation run.
|
|
|
|
|
|
The module will implement a *super-element*, i.e. an element that will take inputs from a series of drives (which, in turn, can expose other entities private data) and output one or more optimized variables to another set of drives. The main structure will be similar to the one of the [hfelem module](modules/module-hfelem/module-hfelem.cc).
|
|
|
|
|
|
In their basic form, GAs are extremely simple to implement, therefore the preferred way in this GSoC project will be to develop one from scratch and keep external dependencies to a minimum. Linking of external GA optimization libraries will be considered only after a satisfactory level of functionality is reached with the *in-house* code.
|
|
|
|
|
|
**Category**: [Modeling Capabilities](#modeling-capabilities)\
|
|
|
**Programming Languages**: C++\
|
|
|
**Keywords**: Optimization, Genetic Algorithms
|
|
|
**Difficulty**: Intermediate\
|
|
|
**Difficulty**: Intermediate/Advanced\
|
|
|
**Mentors**: Andrea Zanoni\
|
|
|
|
|
|
---
|
... | ... | @@ -73,26 +85,25 @@ However, [Blendyn](https://github.com/zanoni-mbdyn/blendyn), based on [Blender]( |
|
|
|
|
|
See some example [videos](https://youtu.be/x5n0OgskIMc?list=PLTtFbiep140gc-f-x14ltv0N7YZNzvioF) of its output and the [tutorials](https://github.com/zanoni-mbdyn/blendyn/wiki/Tutorials) to understand better what Blendyn is about.
|
|
|
|
|
|
It is simple to use and generates 3D animations that represent the exact model movement and joints. Blendyn has got a great push in the development in the 2017 edition of the GSoC by the work of [Reddy Janga](https://github.com/janga1997), but some desirable features are still missing and several other need completion of fixing. For example:
|
|
|
It is simple to use and generates 3D animations that represent the exact model movement and joints. Blendyn has got a great push in the development in the 2017 edition of the GSoC by the work of [Reddy Janga](https://github.com/janga1997) and the 2022 edition by [Do Tieng Dung](https://github.com/BryanGsep), but some desirable features are still missing and several other need completion of fixing. For example:
|
|
|
|
|
|
- only fixed timestep simulation output is currently supported, variable timestep should be allowed also
|
|
|
- support the live plotting of MBDyn signals, for example leveraging the NetCDF output `sync` feature
|
|
|
- support the plotting of signals derived from arbitrary compositions of MBDyn signals (e.g. the sum of two signals)
|
|
|
- support for the visualization of modal elements should be introduced (see the next project)
|
|
|
|
|
|
- the introduction of `matplotlib` or `bokeh`, as optional engines for data plotting, would be desirable;
|
|
|
- the [Live Animation](https://github.com/zanoni-mbdyn/blendyn/projects/5) project, that aims to allow running MBDyn directly from the Blender interface and animate the results in realtime;
|
|
|
- the internal forces and stress/strain fields visualization of deformable components during the animation;
|
|
|
- the visualization of modal elements is still to be introduced (see the next project);
|
|
|
- several UI improvements and fixes aimed at improving the user experience.
|
|
|
The last point is the one requiring the largest effort, which is why it has been extrapolated to a [standalone project](#modal-element-visualization). This is to highlight the flexibility we have with the projects: this aspect can be part of a large (350 hours) project, or it can be a standalone mid-sized (175 hours) project.
|
|
|
|
|
|
**Category**: [User Interface](#user-interface)\
|
|
|
**Programming Languages**: Python\
|
|
|
**Keywords**: Blender, UI, post-process\
|
|
|
**Priority**: Medium/High\
|
|
|
**Difficulty**: Low/Intermediate\
|
|
|
**Size**: either 175 h or 350 h\
|
|
|
**Mentors**: Andrea Zanoni, Louis Gagnon\
|
|
|
**Mentors**: Andrea Zanoni\
|
|
|
**ENTRY TEST**: Complete step 1 of standard MBDyn GSoC [entry test](https://gitlab.polimi.it/Pub/mbdyn/wikis/Google-Summer-of-Code/Entry-Test), then use the Blender Python API (or console) to create a simple Blender model
|
|
|
|
|
|
---
|
|
|
|
|
|
### Modal element graphical interface
|
|
|
### Modal element visualization
|
|
|
|
|
|
MBDyn's modal joint implements a Component Mode Synthesis (CMS) deformable body. The CMS element interacts with the multibody model only in specific nodes (interface nodes). The full dynamics of the body is condensed into the superposition of the responses of its modes of vibrations, that it outputs in the form of the time histories of its modal coordinates, together with the rigid body motion of a specific node used to define the floating reference frame, the modal node.
|
|
|
|
... | ... | @@ -121,7 +132,11 @@ Currently, the post processing (i.e. the visualization of the superposition of t |
|
|
|
|
|
### Introduce ZeroMQ support
|
|
|
|
|
|
**TODO**
|
|
|
MBDyn offers several possibilities to communicate with external processes: UNIX sockets, RTAI mailboxes or standard TCP/UDP sockets can be used to exchange data.
|
|
|
|
|
|
The purpose of this project is to add the support to [ZeroMQ](https://zeromq.org), an universal messaging library supporting the creation of high-level network structures and patterns.
|
|
|
|
|
|
The desired output is the implementation of a new `zeromq` `socket type` for the `Stream` `File Driver` and the `Stream Output`, which can allow to set up the desired pattern for the inboard or outboard data flow (Request/Reply, Pub/Sub, Pipeline, etc...)
|
|
|
|
|
|
**Category**: [Modeling Capabilities](#modeling-capabilities)\
|
|
|
**Programming Languages**: C/C++\
|
... | ... | @@ -138,12 +153,4 @@ Currently, the post processing (i.e. the visualization of the superposition of t |
|
|
**Keywords**: Inter-Process Communication, Co-Simulation
|
|
|
**Difficulty**: Intermediate/Advanced\
|
|
|
**Mentors**: Andrea Zanoni, Alberto Savino, Andrea Colli\
|
|
|
|
|
|
**TODO**
|
|
|
|
|
|
**Category**: [Modeling Capabilities](#modeling-capabilities)\
|
|
|
**Programming Languages**: C/C++\
|
|
|
**Keywords**: Inter-Process Communication, Sockets
|
|
|
**Difficulty**: Intermediate\
|
|
|
**Mentors**: Andrea Zanoni\
|
|
|
--- |