Hi Maciej,
This is a good question. We do document what SimBiology does here. Let me try to give some insight into "why" in this post. (And let me add a disclaimer that this is just my guess/opinion, because I wasn't working on the product at the time the these decisions were made.) I guess the short answer is this:
SimBiology doesn't do the volume correction you expect because it was not designed to analyze the mathematical form of reactions rates associated with unknown kinetic laws.
And here's a more detailed answer:
When a user creates a reaction that uses mass action kinetics, we can be reasonably confident of their modeling intent. SimBiology can then programmatically build up the reaction rate, adding volume corrections as appropriate. (I personally would like to change SimBiology's behavior to make these volume corrections more transparent to our users by having the reaction rate always display the volume corrections, instead of just showing them in the equation view.)
On the other hand, when a user can write the reaction rate using arbitrary MATLAB code, we must decide how much analysis we will do in order to recognize the user's intent. We decided that the only analysis we will do on reaction rates is dimensional analysis to (1) check for dimensional consistency and (2) determine whether the rate is in amount per time or concentration per time. If the analysis indicates that the reaction is in concentration per time, we then convert to amount per time using only the reactant volume, with the above exception of reversible mass action kinetics.
-Arthur
Best Answer