Dear GROMACS developers,
we (PLUMED developers) noticed that GROMACS now makes it possible to easily add plugins modifying forces. We would like to investigate if it makes sense for us to implement an interface for PLUMED in the spirit of the one introduced for the Colvars package in this commit:
Before starting we would like to have an answer to the following questions:
- Is it possible (or planned) to pass an intra-replica MPI communicator to the plugin so that PLUMED would be able to use its parallelization capabilities?
- Is it possible (or planned) to pass an inter-replica MPI communicator to the plugin so that PLUMED would be able to perform inter-replica communication?
- Is it possible (or planned) to call the plugin when computing acceptance probabilities for replica exchange, to enable inclusion of the plugin energy in the acceptance?
If answers to these questions are positive, we might be able to replicate almost all the features that are in the GROMACS patch that we are currently maintaining. One important exception would be the hrex implementation, which might need to be implemented natively in GROMACS, shipped separately or dismissed.
Finally, considering these points:
- we would like to keep PLUMED I/O separate from GROMACS (e.g., we prefer the
plumed.datfile to be read separately and not as additional options in the
mdpfile, and we want to continue to be able to write arbitrary files from PLUMED)
- we would not include the full PLUMED code base in GROMACS, but only a thin loader, so that PLUMED can be loaded at runtime with dlopen (as currently done e.g. in AMBER).
Would a native integration of PLUMED in GROMACS done in this way be considerable for inclusion in the official GROMACS version (possibly for GROMACS 2025)?
The last question is important because we might avoid investing time in the process if we know a priori that the result would not satisfy the proper criteria for inclusion.
Giovanni (on behalf of PLUMED developers)
PS I hope this is the right place to post this message, otherwise please apologise and re-rout it where it is most appropriate