# AWE Simulation Toolchain

### Project details
**Applicant:** Jelle Poland
**Faculty:** Aerospace Engineering
**DCC Members:** Elviss Dvinskis, Maurits Kok (contact)
**Support Period:** February 2024 - September 2024
**Repository/Archive:** [GitHub Repository](https://github.com/awegroup)
### Research Background
Airborne wind energy (AWE) uses tethered airborne devices to harness high-altitude wind resources inaccessible to traditional turbines. The largest [AWE research group](https://www.tudelft.nl/lr/organisatie/afdelingen/flow-physics-and-technology/wind-energy/research/kite-power), based at TU Delft, focuses on sharing knowledge with the community and collaborates with industry startups. The goal is to aid AWE system development and accelerate sector growth using an integrated open-source toolchain, contributing to faster energy harvesting and the energy transition.
### Project Description
The researchers requested support on the following topics:
1. Integrate codebases into a **modular** and **open-source toolchain**
*Each researcher in the group works on a specific computational tool or method. The methods are developed in isolation, but form part of a larger simulation toolchain.*
2. Establish repository **maintenance workflow** and **contribution guidance** with author credits
*Some of the developed software tools are attracting attention from external collaborators. The researchers want to establish a robust workflow for external contributions.*
3. Ensure **user-friendly coding practices**
*The researchers want to ensure that new developers can easily onboard on existing projects and prevent legacy projects from becoming unreusable.*
4. APIs for model integration, OOP and **CI/CD testing environment**
*Technical solutions for integration and coupling of the separate software projects through software architecture, design patterns, and continuous integration workflows.*
### Project Results
The DCC developed the following support steps:
1. Establish good software development practices in the group through weekly meetings and seminars.
2. Support the implementation of good practices and updates software design with four ongoing software projects through consultations and hands-on support.
3. Review the software architecture to enable modular chaining of existing software projects.
Through a series of 9 bi-weekly seminars, the DCC introduced the core software development practices, such as project management, collaborative development workflows, software testing, code quality, software documentation, and automation. The sessions were alternated with a group update on the implementation of these best practices. When needed, the researchers would schedule individual sessions to discuss issues in adopting the lessons in their project.
**Links to output**
- [Extensive developer guides](https://awegroup.github.io/developer-guide/)
- [Template repository - Python](https://github.com/awegroup/template-python)
- [Template repository - MATLAB](https://github.com/awegroup/template-matlab)
- [Software publication](https://zenodo.org/records/12166697) for [report](https://zenodo.org/records/10959930)
### Feedback from researchers
>"Nice structure through workshops/seminars, 6 months time-line works well."
>"Learning about best practices - how to organize things. I can now easily retrieve files and functions in my codebase."
>"Learned so many things."
>"I can clearly see how to roll this out to the entire section."
>"Working on the DCC project is a great team building contribution."
### Principal Investigator perspective
Key advantages of DCC support and our new development process:
>"Substantially improved software (and data) quality"
>"Increased efficiency, reliability and value of software (and data) based projects."
>"Particular focus on open science standards."
>"Increased collaboration, both internally and externally."
>"Increased transparency in team (through better collaboration)."
### Lessons learned
- Addressing common challenges on a group levels helps with embedding the solutions and developing a local software development community.
- Alternating between topic discussions/seminars and (individual) hands-on sprint sessions is an effective way to implement common best practices.