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: