Simultit

JBSim se contente de résoudre l'équation en fonction de [H+] (la concentration en ion hydrogène).

Pour une solution d'eau distillée on résout l'équation suivante :

[H+]=[OH-] ⇐⇒ [H+]-10E-14/[H+]=0

Si on rajoute un monoacide (HCl par exemple), il suffit de rajouter [Cl-]

[H+]=[OH-]+[Cl-] ⇐⇒ [H+]-10E-14/[H+]-Co=0

ou Co est la concentration de l'acide.

Chaque fois que l'on rajoute une espèce chimique dans la solution, on rajoute un terme a l'équation d'électroneutralité.

from scipy.optimize import fsolve #fonction pour résoudre une équation from math import log10 equation = 'x - (10 ** -14) / x' # électroneutralité def f(x): #fonction à résoudre pour trouver la concentration en ion hydrogène return eval(equation) c = input('Concentration acide fort ?') # on ajoute un acide fort de concentration c equation = equation + ' - ' + c #equation après ajout d'un acide fort print ('equation à résoudre : ' + equation) print(round(- log10(fsolve(f,0.5)),3)) #calcul du pH à partir de la concentration en ion hydogène #3 chiffres après la virgule

Electroneutralité :

'x - (10 ** -14) / x'

Acide fort :

'- C'

Base forte :

'+C'

Acide faible/Base faible

concentration AH : AH

concentration en A- : A

pKa : pKa

'- ( AH + A ) / ( x * 10 ** pKa + 1) + A'

Acide faible/Base faible avec 2 pKa

AH2 AH A2 pKa1 pKa2

'- ( ( AH2 + AH + A ) * x * 10 ** pKa2 + 2 * ( AH2 + AH + A ) ) / (x ** 2 * 10 ** ( pKa1 + pKa2 ) + x * 10 ** pKa2 + 1 ) + AH + A * 2'

Acide faible/Base faible avec 2 pKa

AH3 AH2 AH A3 pKa1 pKa2 pKa3

'- ( AH3 + AH2 + AH + A3 ) / 10 ** pKa1 * ( x ** 2 + 2 * x / 10 ** pKa2 + 3 / 10 ** pKa2 / 10 ** pKa3 ) / ( x ** 3 + x ** 2 /10 ** pKa1 + x / 10 ** pKa1 / 10 ** pKa2 + 1 / 10 ** ( pKa1 + pKa2 + pKa3 ) ) + AH2 + AH * 2 + AH * 3'