-
-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Compile tentative adapter checklist #7
Comments
As @uekerman mentioned in precice/precice#1647, standardizing adapter profiling could also make sense.
We have the
We did some groundwork regarding logging when working on the Fluent adapter precice/precice#1305 and when integrating the logging with ASTE precice/aste#73. It is currently possible to configure logging without an API in preCICE by going through the boost.log core. |
Reasons why using preCICE for logging could still be advantageous:
|
Possible API designGeneral:
Function + EnumParticipant::log("component", Severity::Info, "message"); Only 1 function, but requires handling an enum in bindings. Function for severitiesParticipant::logDebug( "component", "message");
Participant::logInfo( "component", "message");
Participant::logWarning("component", "message");
Participant::logError( "component", "message"); Easier to handle in bindings, but many functions. |
This is pretty much what I had in mind. I guess we could even remove |
Specifying the component could make run scripts that start both solver easier to follow. |
I have the feeling this discussion should better be moved into a separate issue in I like the I assume that, if preCICE is built without debug messages, but the adapter is built with debug messages enabled, the user should still see debug messages from the adapter, right? As an adapter developer, if I use preCICE built in release mode (e.g., on a cluster, installed by an admin), I would still like to see the debug messages I add in my adapter.
Do we still have such scripts anywhere? Users might, but we generally discourage it, no? |
It can be convenient to quickly start both solvers. Especially when environment variables need to be set (including venv) or one is on a cluster. Realistically all of this should go into scripts though to make this easier to repeat. |
I would suggest to require data initialization to reach a certain level, because not having initial data makes the tutorials less flexible and can lead to bugs in the time stepping (degradation of convergence order). See precice/precice#2033. |
Outcome of the first discussion with @MakisH. Further discussion is planned for the coding days. Main ideaWhat is an adapter? An adapter can be an independent code, but can also mean solver + integrated adapter. Adapter can be a class, a patch, a library, or something else. But it needs to be something > 0. The "Nutils adapter" in this sense is no adapter as it is only a collection of application cases. We could even go one step further and include tools as well, i.e. everything that calls preCICE, or even everything that concerns preCICE. We distinguish between metadata and best practices. The latter has three level, i.e. bronze, silver, and gold. We list on the website every adapter that has all required metadata and at least bronze level. If an adapter has at least silver level, hosting under the preCICE GitHub organization is possible, but no must. MetadataThe usual things. Non-complete list:
Best practicesEach level has a main theme to simplify orientation. The lists are not complete yet, but should rather give some first impression. BronzeFindable and Accessible, i.e., the adapter is working and documented. Others can find, build, and run the code and they should understand what is does. The bare minimum. We need a low entry barrier.
SilverInteroperable and maintainable. The adapter plays well with other adapters from the community and feels part of the preCICE ecosystem. The preCICE maintainers are, if necessary, able to maintain the adapter (e.g. update it to newer preCICE versions).
GoldReusable, community-ready, and integrated. Others can easily reuse and extend the adapter for their own needs. Maintaining the adapter could be shared among many. We can integrate the adapter and corresponding application cases into our development workflows and make sure that we will not break it. All tooling works seamlessly.
|
Notes from the internal mini world-café: MetadataNo related comments. Bronze
Silver
Gold
Other notes
|
If we also want to use Nix to prepare stacks with the distribution (e.g., the VM, the live USB, etc), then we could also require that, at the gold level, each adapter is available as a Nix package. This would automatically disqualify any poorly maintained/exotic solvers, but could strengthen everything else. |
We should probably explicitly name this "minimal working example", to signify that we are not looking for a realistic case, which would then be complicated to run on a laptop. The question then is, what if the adapter has no MWE, but only a complicated published case. |
This issue has been mentioned on preCICE Forum on Discourse. There might be relevant details there: |
Next step: I will prepare a PR with such a checklist. |
Besides standard FAIR4RS criteria, one could include the following:
solver-internal solution exists (such the OpenFOAM dictionary for the OpenFOAM adapter),
supported
README.md template)
The text was updated successfully, but these errors were encountered: