Module: chemistry/Solution

This class represents a single solution, and contains representations of the species and reactions contained therein. It invokes the balancing of the reactions, and handles mixing and pouring of solutions.

Solution heat capacity uses
   getSpecificHeat()
       calls SpecificHeatSolutionModel.getValue(this)
               SpecificHeatSolutionModel: a few possible models.
                               Is there any way to set which one?
                   SolventSolutionModeler: aqueous or non-aqueous
                       getSolventDensity
                       getSolventMW
                       getSolventSpecificHeat
                       (not really necessary - these can all be obtained
                        from the species information, as long as we make
                        sure to add in the values for water if they are not
                        provided in the json file)

                   SolventConcentrationSolutionModeler: solvent finite or
                       solvent infinite. This setting is set in the
                       KnowledgeBase (I think). This class could be
                       replaced by a simple true/false (waterFinite
                       or waterInfinite)...


   getSolutionWeight(): Note: This is the TOTAL weight (includes solids)
       calls WeightSolutionModeler.getValue(this)
           WeightSolutionModeler: Depends on whether it is solventFinite
               if solventFinite, just total weight of all species
               if solventInfinite, "estimate" weight of solvent assuming
               weightSolvent =
                   solution.liquidVolume * 1000 mL/L *
                       solventDensity (from SolventSolutionModeler)
               Then subtract off each aq or liquid substance's getWaterReplaced()
                   (which is a moles of water replaced by that substance,
                    defined by moles × waterReplacement [mol / mol ratio
                    from the substance archetype]
                    waterReplacement is usually zero, so the "normal" idea
                    is basically molality, that a 1 L solution contains
                    1000 g of water + any other stuff dissolved (which
                    just increases the solution's density without reducing
                    the amount of water present in the 1 L solution)

               solventInfinite is the "normal" model
   
   LiquidVolumeSolutionModeler is where solution.liquidVolume is updated...

Everything is set in configuration.json -> solutionModellers

// BP elevation, FP depression used in findEquilibrium code BoilingPointSolutionModeler.getValue(this) FreezingPointSolutionModeler.getValue(this)

Source:

Classes

Solution