option nolet
print
! serie : analytical chemistry (revision 1.0a,11092016)
print "************************************************"
print "* find : (S)olubility = S 'AgBr(solid)' *"
print "* calculation :complex formation with a ligand *"
print "* added to the 'AgBr(solid)'. *"
print "* AgBr(solid) solved with NH(3)='ligand'= X *"
print "************************************************"
print " M(p)A(q): example M = Ag(+),A = Br(-),p=1,q=1 *"
print "************************************************"
print " example: AgBr(solid) = Ag(+)+Br(-) ksp "
print " Ag(+)+NH(3) = Ag(NH(3))(+) k1 "
print " Ag(NH(3))(+)+NH(3)= Ag(NH(3))(2)(+) k2 "
print " general:k1,k2,k3 to kn (version 1.0a) "
print "************************************************"
print "------------------------------------------------"
print " [email protected] ,11/09/2016 "
print "------------------------------------------------"
!filename :COMPLEXFORMATIONWITHLIGANDFINALFINALversion1a.tru
print
print "***************************************************"
print "* M => beta_c(0) ? *"
print " [MX(+)] = k1*[M(+)][X],[MX(2)(+)] = k2*[MX(+)][x]*"
print " beta_c(0) = [M(+)]/([M(+)]+[MX(+)]+[MX(2)(+)]) *"
print " example : 'AgBr(solid)' k1,k2 *"
print " beta_c(0) = 1/(1+k1*[X]+k1*k2*[x]^2) *"
print "***************************************************"
print
print "********************************************************"
print "general : k1,k2,...kn 'n formations complexes with X' *"
print "beta_c(0) = 1/(1+k1*[X]+k1*k2*[x]^2+..+k1*k2..kn*[x]^n)*"
print "********************************************************"
print
print "*********"
print " given = "
print "*********"
print
Ksp = 5.25E-13 ! solubility product M(p)A(q) (solid)
print " Ksp = solubility product(equilibrium) = ";Ksp
print
print "!************************************************!"
print "! examples : AgBr => p=1,q=1,Ag(2)CrO4 => p=2,q=1!"
print "!************************************************!"
p=1
q=1
print " M(p)A(q), p = ";p;" q = ";q
! k1,k2.....kn => formation constant for complex
number_ligand = 2
print " number_ligand = ";number_ligand
dim dum(1),k(1)
mat redim dum(number_ligand)
mat redim k(number_ligand)
for i=1 to number_ligand
read k(i)
next i
print "*****************************************"
print "* equilibrium constant for the complexes*"
print "*****************************************"
for i=1 to number_ligand
print "k(";i;")= ";k(i)
next i
print "*******************************"
print "*ligand 'x' conc in M: X=NH(3)*"
print "*******************************"
x = 0.1
print " conc X in 'M' = ";x;" M"
print
print "**********"
print " result = "
print "**********"
print
call beta_complex_c0(number_ligand,k(),x,dum(),beta_c0)
print " beta0 'beta_c(0)' = ";beta_c0
call solubility(Ksp,p,q,beta_c0,s)
print " S = ' Solubility of M(p)A(q)(solid) ' => ";s;" M"
!**********************************
! data -statement ( read in by k())
!**********************************
data 1585,6761
end
sub solubility(Ksp,p,q,beta_c0,s)
tel = ksp
noem = p^p*q^q*(beta_c0)^p
ratio = tel/noem
root = p+q
s = (ratio)^(1/root)
end sub
sub beta_complex_c0(number_ligand,k(),x,dum(),beta_c0)
w = number_ligand+1
som = 1
for i=1 to w-1
prod = 1
for j=1 to i
prod = prod * x^(w-i)*k(j)
dum(j) = prod
next j
next i
for kk=1 to w-1
som = som + dum(kk)
next kk
!***** 1/som ****
beta_c0 = 1/som
end sub