option nolet
!chemistry analytical serie
! filename :mixturetwoweakacidstruebasicfinal.tru
print "******************************************"
print " mixture acids 'weak acids',version 1.0  *"
print " find :[H(+)] of mixture => pH           *"
print " [email protected],01/10/2016  *"
print "******************************************"
print "*********************************************************"
print "example :combination of 'two weak acids,both mono protic "
print "         k(number component)A(number anion solution)     "
print "       example : k(1)A(1) = k1A1                         "
print "*********************************************************"
print "****************************************************************"
print " first  : HA1=H(+) + A1(-) => k1a1 = ([H(+)]*[A1(-)])/[HA1] (1) "
print " ca1    = [HA1]+[A1(-)] = ha1 +a1                           (2) "
print "       example : k(2)A(2) = k2A2                        "
print " second : HA2=H(+) + A1(-) => k2a2 = ([H(+)]*[A2(-)])/[HA2] (3) "
print " ca2    = [HA2]+[A2(-)] = ha2 +a2                           (4) "
print " species solution : negative  oh=[OH(-)],a1=[A1(-)],a2=[A2(-)]  "
print "                  positive  h=[H(+)]                            "
print "  charge balance   : [H(+)] = [OH(-)]+[A1(-)]+[A2(-)]           "
print "total  balance   : [H(+)]tot = [H(+)]'aq'+[H(+)]'HA1'+[H(+)]'HA2"
print " result:           [H(+)]    = kw/[H(+)]+[A1(-)]+[A2(-)]        "
print " math                h       = kw/h + a1 + a2               (5) "
print " multiple bases:mono hydric bases : M1OH,M2OH,k1b1,k2b2,cb1,cb2 "
print "=>                                'mono hydric = mono hydroxy'  "
print "----------------------------------------------------------------"
print " [OH(-)]tot = [OH(-)]'aq'+[OH(-)]'M1OH'+[OH(-)]'M2OH'           "
print "****************************************************************"
print
print " input => "
print
ca1=0.01    ! concentration first weak acid ,mono protic acid
ca2=0.1     ! concentration second weak acid,mono protic acid
k1a1=0.0001 !equilibrium constant (first  weak acid)
k2a2=0.00001!equilibrium constant (second weak acid)
kw  = 1E-14 ! pH+pOH = 14 = pKw
print "concentration first  weak acid,ca1  = ";ca1;" M"
print "concentration second weak acid,ca1  = ";ca2;" M"
print "equilibrium constant,first, k1a1    = ";k1a1
print "equilibrium constant,second,k2a2    = ";k2a2
print
print " result => "
print
call first_approx(ca1,k1a1,ca2,k2a2,h)
print " first approximation = ";h;" M"
!  take kw <> 0
call mix_gen_weakacids(kw,ca1,k1a1,ca2,k2a2,h)
print
print " kw<>0,[H(+)] = ";h;" M"
print
print " pH  = ";-log(h)/log(10)
call first_approx(ca1,k1a1,ca2,k2a2,h)
!  take kw = 0
call mix_gen_weakacids(0,ca1,k1a1,ca2,k2a2,h)
print
print " kw=0, [H(+)] = ";h;" M"
print
print " pH  = ";-log(h)/log(10)
end

sub mix_gen_weakacids(kw,ca1,k1a1,ca2,k2a2,h)
first_weak  = (ca1*h*k1a1)/(k1a1+h)
second_weak = (ca2*h*k2a2)/(k2a2+h)
h=sqr(kw+first_weak+second_weak)
end sub

sub first_approx(ca1,k1a1,ca2,k2a2,h)
h=sqr(ca1*k1a1+ca2*k2a2)
end sub