[AcidBase.org]
  
 
 
[Analysis Module start] · [Search the Database] · [Warning] · [Glossary] · [downloads] · [write to us] ·  ·  ·  · [intensive care and emergency medicine ultrasound]



according to Peter Stewart the pH of a plasma-like fluid can be calculated by solving six basic chemistry formulae with six unknown variables

(adapted from Lara Hopley's and Jo van Schalkwyk's website: IONZ)

Peter Stewart's six simultaneous equations:
Equation #1, the dissociation equilibrium for water
[H+] * [OH-] = KW'
Equation #2, the dissociation equilibrium for the weak acids
[H+] * [A-] = KA * [HA]
Equation #3, mass conservation for the total amount of weak acids
[HA] + [A-] = [ATOT]
Equation #4, the dissociation equilibrium for carbonic acid to bicarbonate
[H+] * [HCO3-] = KC * PCO2
Equation #5, the dissociation equilibrium for bicarbonate to carbonate
[H+] * [CO32-] = K3 * [HCO3-]
Equation #6, the requirement for electrical neutrality:
[SID] + [H+] - [HCO3-] - [A-] - 2*[CO32-] - [OH-] = 0

substituting from the first five equations into the 6th:
[SID] + [H+] - KC * PCO2/ [H+] - KA*[Atot] / (KA + [H+]) - K3 * KC*PCO2/[H+]2 - Kw' / [H+] = 0

this can be written as a fourth order polynomial:
H4 + a*H3 + b*H2 + c*H + d
H = [H+]=10-pH
a = [SID] + KA
b = KA*([SID]-[Atot])-K'w-KC*PCO2
c = -(KA*(K'w+KC*PCO2)-K3*KC*PCO2)
d = -KA*K3*KC*PCO2

the reaction constants at 37 °C (and normal body fluid ionic strength):
A good value for KC is 2.6 * 10-11 (mol/l)2/mmHg
A typical value for K3 is 6 * 10-11 mol/l
The value of KH is 9 * 10-8 mol/l
K'w = 10-13.6 (mol/l)2
Ka = 0.80*10-7mol/l, pKa = 7.1

(using albumin in g/l as Atot, according to: Henry R. Staempfli and Peter D. Constable Experimental determination of net protein charge and Atot and Ka of nonvolatile buffers in human plasma J Appl Physiol, Aug 2003; 95: 620 - 630.)



and this is how the reiterative calculation works:

PROGRAM STARTS:
     TOO_SMALL = 4.4 * 10-14
     TOO_BIG = 1.0
     CLOSE_ENOUGH = 0.000001
BEGIN:
     MY_GUESS = ROOT ( TOO_SMALL * TOO_BIG )
     RESULT = F(MY_GUESS)
     IF ABS(RESULT) LESS THAN CLOSE_ENOUGH THEN RETURN MY_GUESS
     IF RESULT IS POSITIVE THEN
           TOO_BIG = MY_GUESS
     OTHERWISE
           TOO_SMALL = MY_GUESS
     GO TO BEGIN
PROGRAM ENDS: