Click or drag to resize

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

Example
                    <
                    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.

Example
                    <
                    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>