A familiar problem
We know it… You started by searching if anyone had already coupled your favorite solver with preCICE. You found a paper from long ago, with authors kind enough to link to a GitHub repository of their work. For preCICE v1.6.0. With comments in a language you do not speak. And a few dependencies not specified, so you cannot really run the code. You spend a lot of work fixing a few bugs, and you decide to share this updated adapter with the community (you are awesome!). You open a pull request to one of the preCICE repositories, and then (eventually) you get a lot of feedback, which would have been better to know when you started working on this.
The preECO project
This is the age of open science and reproducible research: we can certainly do better than the situation described above! And the German Research Foundation (DFG) is backing our efforts via the project preECO. However, this is not a problem we can solve alone: we need your help!
The preCICE ecosystem includes already a lot. Today, the preCICE Distribution includes eight adapters that we accept to be in a vague “good-enough” state. The (certainly outdated) list of adapters mentions 30 adapters, be it official, third-party, or abandoned. The preCICE organization on GitHub includes more than 40 repositories, most of which we actively maintain. The tutorials repository already counts more than 30 examples, many of which offer several solver options for each participant. The community projects forum category also includes a handful of cases you have taken extra care to share with the rest of the community.
Now, imagine that you go to the preCICE website and easily get a quick and up-to-date overview of what adapters and test cases the community is working on. Not only you can find what you need, but you can easily evaluate its quality, you can easily get and run it, and you know how to reuse it for your own needs. Does this sound FAIR? It should be!
Our plan
Over this three-year project (for which we are hiring), we will work on the following:
- WP1: Simplify application case and adapter development
- WP1.1: Simplify application case development through configuration tools:
You already know of the config visualizer and the offline config checker. We aim to make the checker smarter (“Do I exchange redundant data? How can I fix my config?”) and to add a tool that can give you aprecice-config.xml
and the respective adapter configs from a high-level description. Something like:precice-tools generate -input topology.yaml
. - WP1.2: Simplify adapter development by providing a mocked preCICE interface:
Some of you have already created a mock preCICE object for simplifying your unit tests (you do write unit tests, right?). This is nice, but it is not a portable solution. We aim to create a “fake preCICE” that would behave like the real one (providing pre-defined data), but would not need to start another participant. That would make developing a new adapter or writing unit tests much, much easier.
- WP1.1: Simplify application case development through configuration tools:
- WP2: Compile adapter and application case quality checklists with the community:
We want to identify, together with you, how a good adapter and a good application case contribution looks like. You can then apply best development practices, and you can compare community contributions based on a standard set of criteria. A tier system (bronze, silver, gold) will let you show how “preCICE-conforming” your code is. - WP3: Implement adapter and application case standards:
After we create the checklists, we need to actually apply the new standards to our existing collection of adapters and tutorials. It is clear that many of these are not gold-level yet. - WP4: Extend the preCICE course:
What if you could actually get a course that teaches you not only how to use preCICE, but actually how to make a good adapter and how to prepare your case to be FAIR?
Next to the various tools, you would eventually get something like this:
How you can help us
Our project has milestones, which revolve around the upcoming preCICE Workshops. In this year’s workshop, we want to present our plan, get feedback from you, and work together on defining the standards. We are tracking our progress in GitHub issues, and we have already drafted first checklists for adapters and application cases. Please think how your work fits into these levels, what is realistic for you to achieve, what is missing, and leave feedback already in the issues.
We are, of course, also looking for excited early adopters.
What’s in it for you?
A lot:
- You get tools that help you set up simulations much faster.
- You get more visibility and correct citations for your work.
- You know what good practices to aim for early on. These will improve the quality and the sustainable development of your work.
- You get a badge of recognition for the quality of your work: “preCICE conforming”.
- You can write in funding proposals what quality level you are aiming for, and you can prove you are doing good work.
- You find community contributions more easily, and you can actually reuse them.
- You get components that follow the same standard, so they can work together (e.g., run the same application case with a different adapter, developed by someone else).
- You can be confident that new versions of preCICE still work with your adapter (because we check).
- Even if you cannot maintain your work anymore, having it in a standard format means that the preCICE team or someone else from the community can more easily fix bugs or update to new preCICE versions.
Timeline
We have just started with this project and we are currently working to prepare the WP1.1 (tools) and WP2 (checklists) for discussion in the upcoming preCICE Workshop 2024. After the workshop, we will incorporate your feedback and discuss the first version of these checklists (v0.1). After several asynchronous discussions and improvements, we plan to release a v1.0 of these checklists (together with accompanying templates), as well as a first release of the new tools (WP1.2) in the preCICE Workshop 2025. In the workshop 2026, you will be able to attend a course (WP4) on how to make your adapters and application cases preCICE-conforming, implementing the standard into the existing components (WP3).
Will you be part of the discussions that will shape the future of preCICE?