def initialise(self, componentName=None): """ As in a fairy tale, if the emse software is introduced """ self.component = Phreeqc() self.solver = self.component # To evolve to solver self.componentName = "phreeqc" # We only have phreeqc as solver. Thoughreact 1.5 isn't validated if self.componentName == "phreeqc": #self.dB = self.component.fileRecognition(self.dB) self.component.setDataBase(self.dB) pass self.component.setChemicalState(self.chemicalState) if self.activityLaw: self.component.setActivityLaw(self.activityLaw) pass if self.kineticLaws: self.component.setKineticLaws(self.kineticLaws) pass if self.outputs: self.component.setExpectedOutputs(self.outputs) pass if self.speciesBaseAddenda: self.component.setSpeciesBaseAddenda(self.speciesBaseAddenda) pass if self.timeStep: self.component.setTimeStep(self.timeStep) pass if isinstance(self.simulationTime, Time): self.component.setSimulationTime(self.simulationTime) if self.timeStep and self.simulationTime: self.component.batch == True return None
from __future__ import division from phreeqc import Phreeqc from species import molarMassStringEval from species import * import numpy as np import os chemistrySolver = Phreeqc() # databaseFile = os.getenv("PHREEQCDAT") + "/phreeqc.dat" molarMassDico = chemistrySolver.getMolarMassList(databaseFile, typ={}) # caCl2SSp = AqueousSecondarySpecies(symbol = "CaCl2",\ formationReaction = [("Ca++",1),("2Cl-",1)],\ logK25 = -0.64,\ logK = [1.56212e+03, 2.55796e-01, -8.58012e+04, -5.69819e+02, 5.22119e+06],\ name = "CaCl2",) molarMassCaCl2 = caCl2SSp.getMolarMass(molarMassDico) naClSSp = AqueousSecondarySpecies(symbol = "NaCl",\ formationReaction = [("1Cl-",1),("1Na+",1)],\ logK25 = -0.5,\ name = "NaCl",) molarMassNaCl = naClSSp.getMolarMass(molarMassDico) # h2OSSp = AqueousSecondarySpecies(symbol = "H2O",\ formationReaction = [("H+",2),("0--",1)],\ logK25 = 0.0,\ name = "H2O",) molarMassH2O = h2OSSp.getMolarMass(molarMassDico) # kClSSp = AqueousSecondarySpecies(symbol = "KCl",\ formationReaction = [("1Cl-",1),("1K+",1)],\