Hi Julien,
The debug message occurs when the code sees that an energy expression contains a constant term, e.g.
E_total = E_clj + lambda
lambda in this case is the constant term, and is dimensionally incorrect (as it does not have units of energy). I've not made this an error as there may be some (admittedly strange) cases where the user may want to add a constant to the total energy. In your case the error occurs because, while removing and adding forcefields, you are temporarily changing the energy expression to have constant terms (E_{gridwaterff}^{CLJ} and E_{gridwater:otherff}^{CLJ}). When the system doesn't contain the "gridwaterff" or "gridwater:other" forcefields, Sire temporarily creates dummy symbols for them so that the energy expression will still be valid. These dummy symbols are constants, rather than energy symbols, and so they trigger the debug warning (once while removing the forcefields, and once while adding them). The messages are harmless in your case, so will not affect the results. You can comment out the warning statement in the code if the messages are annoying.
(1) You are not doing anything bad. The error comes because Sire cannot yet update forcefields in a system, and so you have to remove and then re-add them. Sire could be modified so that you can update forcefields like you can update molecules and molecule groups, which may be slightly faster than deleting and re-adding forcefields.
(2) You can cleanly remove forcefields from a system only when the energy expressions in the system don't refer to energy components from those forcefields. The simplest way to do this is to remove all energy expressions, then remove forcefields, and then add back energy expressions that don't involve those forcefields.
(3) Yes, perhaps this error should be a user warning, as anyone who knows what they are doing should be able to catch the warning if they truly want to have constant terms in their energy expressions.
Cheers,
Christopher