espressomd / espresso

The ESPResSo package
https://espressomd.org
GNU General Public License v3.0
222 stars 183 forks source link

Feature Catalytic Reactions in Espresso #1889

Closed jonaslandsgesell closed 6 years ago

jonaslandsgesell commented 6 years ago

The description of the feature seems odd to me since one can constantly introduce energy into the system with this freature (till time infinity). With a fixed number of reactants it is in reality not possible to create an infinite amount of energy. Therefore this feature violates energy conservation and is not thermodynamically correct. I would at the very least warn the users that this is not a feature which produces correct thermodynamics.

The problem from another point of view: The problem lies in the fact that catalyzers cannot influence the side on which the chemical equilibrium lies. Therefore if catalyzer C+ on average catalyzes A->B the catalyzer C- also has to catalyze on average A->B. There is no other option if thermodynamics is to be correct. Actually the documentation of the feature tries to neglects this. Please warn the user about this (to me odd behaviour) in the documentation.

fweik commented 6 years ago

Therefore if catalyzer C+ on average catalyzes A->B the catalyzer C- also has to catalyze on average > A->B.

What?

hmenke commented 6 years ago

Reference http://espressomd.org/html/doc/advanced_methods.html#catalytic-reactions

Please keep in mind that this feature is used to study non-equilibrium phenomena, like surface reaction induced self propulsion of an anisotropic colloid. Therefore it is not really valid to argue about conservation of energy anyway.

jonaslandsgesell commented 6 years ago

Still I do not see how real catalyzers would behave in that way. Calling it a catalyzer is to my mind not correct. The feature does something artificial and cannot be derived from the behaviour of a catalyzer.

kosovan commented 6 years ago

@jonaslandsgesell what is the problem wit this reaction? This really works as described in the documentation, see e.g. https://www.nature.com/articles/srep42264 or many other articles on the topic.

In the experiment, the energy is stored in H2O2, and the presence of the catalyst lowers the activation barrier to release this energy by a chemical reaction. The amount of H2O2 in the system is sufficient to be considered infinite. I think that "pumping" energy into the system is the working principle of all active matter.

When Georg first implemented this feature, he called it "reaction". I argued that this name was too generic while the implementation addressed only one specific type of a reaction. Then we agreed to call it a "catalytic reaction". At that time we already planned to work on the reaction ensemble so I wanted to avoid conflict of names. Perhaps you can suggest a better name.

jonaslandsgesell commented 6 years ago

Hi Peter reading the documentation http://espressomd.org/html/doc/advanced_methods.html#catalytic-reactions I conclude there are janus particles which have one catalyst C+ on the top and one catalyst C- on the bottom. Further there is a chemical reaction involved that can convert species A into species B. A<-> B A catalyst cannot change the position of chemical equilibrium. If A is to be preferably converted into B, then this is so (with or without catalyst). If one catalyst wants to convert A to B, the other catalyst cannot preferably convert B to A. A catalyst is inert. Further a catalyst does not change the extent of the reaction. There is no effect on the chemical equilibrium of the reaction that a catalyst would exert.

Having said this I do not see how the two catalyzers C+ and C- can convert on one side A to B and on the other side B to A. If that really happens with equal rates one is to my understanding in chemical equilibrium. But in chemical equilibrium there is no net change in concentrations of A and B and there is no further net conversion of chemical energy into other forms of energy. Therefore no net energy which could propulse an active swimmer can be created if the system reached thermodynamic equilibrium.

The difference to the experiment is that in experiment the system is so much out of equilibrium that 2 H2O2 (A) is "constantly" split into 2 H2O and O2 (lets call this B). I.E. A is generating B, but not B is generating A. The generation of B is converting chemical energy (bound in A) which is used to propulse the active particle. If H2O2 is depleted (and chemical equilibrium is reached) in experiment the particle will stop to move.

kosovan commented 6 years ago

This is a non-equilibrium system. The catalyst changes the rate at which the system approaches equilibrium. Without catalyst this rate is close to zero, with catalyst the rate is finite but still small enough that the system remains out of equilibrium on a macroscopic time scale.

jonaslandsgesell commented 6 years ago

Non-equilibrium or not. I never saw that a catalyst (at the same environment where another catalyst splits 2H2O into 2H2O and O2) generates 2 H2O2 out of O2 and 2 H2O. This would be awesome and would solve a lot of energy problems humanity has.

kosovan commented 6 years ago

@hmenke is right, you cannot apply equilibrium arguments to this system. Or, at least, you have to apply them very cautiously.

@jonaslandsgesell is also right that the reactions should run (in principle) in both directions.

But this system is intentionally designed to remain off-equilibrium as long as possible. It is far enough from equilibrium that the other direction can be neglected. In the experiment, O2 (gas) is being constantly removed from the system before it can react back. This ensures that it stays out of equilibrium until all H2O2 has been consumed. In the other case, H+ is supplied by a buffer which acts as a quasi-infinite reservoir. Constant removal of a product or supply of a reactant is a common chemical trick to reach high conversion.

In my opinion the implementation and the description are correct. They both address a real experimental system, so I see no reason why it should be artificial. Please, check some literature on self-propelled Janus particles and you will find answers to your concerns.

jonaslandsgesell commented 6 years ago

Let s say on the way to equilibrium A would be converted mainly to B. Starting from a non-equilibrium situation (mainly A, no B) a real system would create more and more B since it tends to reach equilibrium. In experiment there is so much A that gets converted to B which will create energy for the janus particle to move.

Regarding the simulation: If A would be constantly added and B removed from the system it would be alright to me. (One would have to think about the correct conditions to do that to simulate the non-equilibrium system one wants to simulate) The problem especially is that the usage of the word "catalyst" is not correct here. A catalyst cannot perform the same way as constant addition of particles fo type A and removal of particles of type B does.

Also in experiment H2O2 is only split by the catalyzer and not regenerated.

pdebuyl commented 6 years ago

As far as "particle-based simulations of catalytically self-propelled colloids with explicit solvent" go, there are two main methods:

  1. "resetting": if the catalyst acts as "A+C -> B+C", change B to A far away enough from the colloids. This the method used in Rückner & Kapral 2007 https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.98.150603
  2. bulk counter-reaction (B->A with well-defined rate that relates directly to reaction-diffusion kinetics), see Thakur & Kapral 2011 http://aip.scitation.org/doi/10.1063/1.3607408

Method "1" is ad hoc in that it tries to mimic an infinite reservoir of fuel. Method "2" offers a simpler interpretation in terms of reaction-diffusion behavior.

In both case, one imposes via the resetting or the counter reaction the nonequilibrium state of the system.

From reading the documentation at http://espressomd.org/html/doc/advanced_methods.html#catalytic-reactions it appears to act by exchanging an A and a B particle. The source seems to perform both changes independantly (both A->B and B->A but not as a swap).

In any case it is "nonequilibrium". The conservation of energy depends on performing the change of species either by not changing the interaction parameters of by changing the species outside of the interaction range.

jonaslandsgesell commented 6 years ago

Awesome. So we agree that resetting the particle species from the less energetic B (H2O and O2) to A (e.g. H2O2) is not happening in reality through means of a "catalytic" chemical reaction but by exchanging particles with a bulk. I was criticizing that resetting the particle of type B happens through a chemical reaction here. This suggests this behaviour was chemical reality (which it is not). Therefore this feature is an "ad hoc" model meaning it cannot be derived strictly. I will create a note in the user guide which warns new users of this fact. Why? Showing where current modeling hit s limits will encourage new users to make up their own mind and maybe come up with a better solution.

hmenke commented 6 years ago

@jonaslandsgesell Better change the names in the documentation and interface from “Catalytic Reactions” to “Chemical Reactions” and “catalyzer” to “converter”. I hope that makes it less ambiguous. I don't really care what it is called.

kosovan commented 6 years ago

@jonaslandsgesell I suggest that you talk to Georg before you start making changes there. I do not remember all the details but as far as I know, all approximations in the model seemed well justified to me at the time when we were discussing it. Note that "catalyst" (not catalyzer) is a well established term, "converter" is not.

@hmenke calling it "Chemical reactions" is too generic and could be misleading. There are chemical reactions in the reaction ensemble as well, in a completely different context. Here, we are dealing with kinetics of a very specific chemical reaction. The reaction ensemble deals with thermodynamic equilibrium of a much more general class of reactions.

jonaslandsgesell commented 6 years ago

@hmenke Well the warning is partially about the mechanism why the particle moves. If the energetic particle A (H2O2) is converted to B (H2O and O2) this releases Delta_R G in energy. This energy (or parts of it) are used in experiment to propel the active swimmer. However in this feature a back reaction on the other side is performed this conversion however would use up exactly Delta_R G in energy: A new high energetic particle A is created from the low energetic particle B. Therefore no energy for the propulsion of the active particle would be left. In experiment this back reaction is not present. In experiment new energetic particles A are diffusing to the active swimmer particle. This is a fundamental difference.

fweik commented 6 years ago

@kosovan I think the original implementation is by @hmenke and @jdegraaf, not by Georg. @jonaslandsgesell If you update the docs anyhow can you please also rename the files from reaction.{hpp,cpp} to catalytic_reaction.{hpp,cpp} or whatever you settle on name-wise.

pdebuyl commented 6 years ago

The CATALYTIC_REACTION feature is documented best in tutorial 09 (by @hmenke and @jdegraaf ). It is designed for bimetallic types of swimmers and the mechanism is a bit different than what I mention in the references above in that the overall effect here is a swapping. There is thus no need to "refuel".

I don't know if ESPResSo plans for other types of catalytic reactions, in which case a specific name like swapping_catalytic_reaction might be appropriate.

The discussion on energy is a bit tricky as it is possible to have "potential energy neutral" reactions (see the work of Kapral) where what is provided to the system is chemical potential (by biasing the concentrations).

Anyway, the doc for espressomd.reaction.Reaction is a bit short and does not mention the swapping character of the reaction.

jonaslandsgesell commented 6 years ago

I think it s not appropriate to call it catalytic reaction. The backward reaction (creation of H2O2) is not happening spontaneously (on average) - if there is a catalyst or not. The feature however claims to perform a reaction that recreates H2O2 at one catalyst.

jdegraaf commented 6 years ago

Dear All,

Sorry for putting my two cents in at such a late point in the conversation.

The reaction feature was developed by Georg together with the Italian postdoc (Francesca Lugli?) who was at the ICP a long time ago. This was done for the purposes of modeling self-propelled particles. However, that project ultimately went nowhere and when I came to the ICP we rewrote it, broke it, and turned it inside out several times (later with Henri), to the point that it is not what it was originally. Now from a strict point of view, the catalytic reaction feature never did do catalytic reactions properly, even in its original form, but it was used as a model for active swimmers, made some brutal assumptions that made it easier to work in a system that conserved particles. You can imagine that anything that places particles back in the box to keep an out-of-equibrium reaction going, could introduce some additional bias in the swim direction (which is sensitive to species concentration variations), hence the choice for a swap move. This is also, of course, convenient if you have electrostatics, since then you don't have to worry about your box being momentarily charge non-neutral.

Just to reiterate. "Catalytic Reaction" was the label assigned to this feature, because in some sense that is what is being modeled a long time ago, not respecting the molecular details: obviously! Currently, the feature does not advertise that it does so. Pierre is right that the documentation for espressomd.reaction.Reaction is rather brief,however, the swapping character is mentioned. Besides, anyone who has done the tutorial should know perfectly well what the feature does and does not do.

This point of conversation also came up at the last summer school and the tutorial was rewritten to make it very clear what the feature does. I personally could not care less what this feature is called, if that is a massive stumbling block. Just call it 'swimmer_reaction' and be done with it. I see no intrinsic problem other than a labeling convention. It does exactly what it is supposed to do for those people originally involved in the development and should be maintained for their purposes. Don't start hacking in it, because you think the physics is broken. We made these choices for a good reason!

If you want to have a catalytic reaction that has all the properties that you think it should have, then just relabel the current feature, as suggested above and develop a catalytic reaction you are happy with. In terms of code-reuse, I think it would be better to start from scratch, as there are a lot of issues with the current version of the code. There should not be too much code duplication anyway, since as you said, the catalytic reactions feature, does not really do catalytic reactions. As far as implementing a proper catalytic reaction is concerned, you have my sympathies, because you will probably want to combine stochastic moves with MD respecting detailed balance and possibly couple that to a reservoir with insert moves. Good luck with that.

Best Wishes,

Joost

On 2 March 2018 at 17:13, Florian Weik notifications@github.com wrote:

@pdebuyl https://github.com/pdebuyl just to be clear on that: espressomd.reaction.Reaction is part of the reaction ensemble feature, which is not the type of reactions we're discussing here.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/espressomd/espresso/issues/1889#issuecomment-369967811, or mute the thread https://github.com/notifications/unsubscribe-auth/ACuLn17HkVzztUQnjkuAdSRNOrBUtlYfks5taW9MgaJpZM4SXHcV .

jonaslandsgesell commented 6 years ago

Indeed there reappeared plans to do some real catalytic reactions. Sounds like we want to discuss with you before touching anything further ;-) Renaming the feature to swimmer_reaction and touching the documentation a little, leaving a note would resolve the problems I had with this feature.

jonaslandsgesell commented 6 years ago

Closed with PR

fweik commented 6 years ago

Next time please just add a "Fixes/Closes ..." to the PR so it closes automatically with the PR.