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