SolutionRule |
SolutionRule works with all mixtures in a lab. The main purpose is to emulate solution reactions happenning in real world.
There are two types of ReactionRules: Forward (default) and Equilibrium.
SolventType is a SubstanceType as well. Overall it is a way to write down the chemical/physical formula. For example H2O for water. Also CAS code can be used (eg. CAS code for water is 7732-18-5)
Example #1:
Dissolving NaCl in water: NaCl (s) --> Na+ (aq) + Cl- (aq)
NaCl (s) - solid
Na+(aq) and Cl-(aq) - solutes
Water - solvent
< Rules > <SolutionRule SolventType="H2O" SolubilityExpression="0.36"> <UndissolvedSolute SubstanceType="NaCl" /> <DissolvedSolute> <Reagent SubstanceType="Na+" /> <Reagent SubstanceType="Cl-" /> </DissolvedSolute> </SolutionRule> </Rules>
Example #2:
In order to emulate two substances dissolving in the same solvent but crystallized under different conditions we can adjust SolubilityExpression and MaximumSolubilityExpression attributes accordingly.
< SolutionRule SolventType="H2O" SolubilityExpression="{ConditionalSelector Condition={Calc Arg1={Binding Parent.Temperature}, Operation=Equals, Arg2=20}, True=0.01, False={ConditionalSelector Condition={Calc Arg1={Binding Parent.Temperature}, Operation=Equals, Arg2=100}, True=0.8, False=0 } }" MaximumSolubilityExpression="{ConditionalSelector Condition={Calc Arg1={Binding Parent.Temperature}, Operation=Equals, Arg2=20}, True=0.8, False={ConditionalSelector Condition={Calc Arg1={Binding Parent.Temperature}, Operation=Equals, Arg2=100}, True=0.9, False=0 } }" > <UndissolvedSolute SubstanceType="A-Solid" /> <DissolvedSolute> <Reagent SubstanceType="A-Dissolved" /> </DissolvedSolute> </SolutionRule> <SolutionRule SolventType="H2O" SolubilityExpression="{ConditionalSelector Condition={Calc Arg1={Binding Parent.Temperature}, Operation=Equals, Arg2=20}, True=0.01, False={ConditionalSelector Condition={Calc Arg1={Binding Parent.Temperature}, Operation=Equals, Arg2=100}, True=0.8, False=0 } }" MaximumSolubilityExpression="{ConditionalSelector Condition={Calc Arg1={Binding Parent.Temperature}, Operation=Equals, Arg2=20}, True=0.1, False={ConditionalSelector Condition={Calc Arg1={Binding Parent.Temperature}, Operation=Equals, Arg2=100}, True=0.9, False=0 } }" > <UndissolvedSolute SubstanceType="B-Solid" /> <DissolvedSolute> <Reagent SubstanceType="B-Dissolved" /> </DissolvedSolute> </SolutionRule>