Interpretation of case 48
I do not know why it is possible to get a simulation result for test case 48. We have
- an unsized zero dimensional compartment:
<compartment id="compartment" name="compartment" spatialDimensions="0" constant="true"/>, - a Species S1 that with
has_only_substance_units="false":<species id="S1" name="S1" compartment="compartment" initialAmount="0.015" substanceUnits="substance" hasOnlySubstanceUnits="false" boundaryCondition="false" constant="false"/>, and - a kineticLaw that contains S1:
<kineticLaw>
<math xmlns="http://www.w3.org/1998/Math/MathML">
<apply>
<times/>
<ci> k1 </ci>
<ci> S1 </ci>
</apply>
</math>
</kineticLaw>
Now I would think that this model cannot be solved, cause the concentration, not the amount of S1 needs to be plugged into the kineticLaw. However, we cannot know the concentration of S1, as we don't know the size of compartment. What am I getting wrong?
(Please let me know if there is a better channel to discuss this)
This is a fine place to discuss the issue.
There were many rules in place in SBML L1 and L2 about 0D compartments, but those rules were dropped for SBML L3. However, as you have discovered, this means that tests like this are no longer accurate.
I believe the way to fix this is to set hasOnlySubstanceUnits to 'true' for the L3 models. We should also make sure this happens when L2 models are translated to L3 in general.
https://github.com/sbmlteam/sbml-test-suite/pull/86
(Although the other option is to just drop the L3 versions of these tests.)
Thanks for clarifying, Lucian!