option nolet
open #1:screen 0,0.5,0,1
open #2:screen .5,1,0,1
window #1
! serie :analytical chemistry
! filename :ionsaqsolfinal.tru
print
print "*********************************************"
print "* ions 'solutions',      version 1.0        *"
print "*  f = activity coefficient                 *"
print "*  c = concentration                        *"
print "*  a = f*c = acitity                        *"
print "*based :(e)xtend (D)ebye-(H)uckel(e)quation *"
print "*********************************************"
print "* [email protected],04/10/2016    *"
print "*********************************************"
print "* check :c = < 0.1 M aq sol,use:EDHE above  *"
print "*********************************************"
print " charge , d value ,table                     "
print "*********************************************"
print
nu = 2 ! number of products
print "**************************************************"
print " two products =  M1(p(1))A1(q(1)),M2(p(2))A2(q(2))"
print " concentration : conc(i),i=1..nu                  "
print "**************************************************"
dim p(1),q(1),M(1),A(1),conc(1),c_m(1),c_a(1)
mat redim p(nu),q(nu),m(nu),a(nu),conc(nu),c_m(nu),c_a(nu)
print " M = charge ,p =coef M,A = charge,q = coef A "
!*********************************************
! M(1)P(1)A(1)q(1) => HCl          = H(1)Cl(1)
!*********************************************
M(1) = 1         ! charge metal ion   product 1
p(1) = 1         ! coef of metal ion  product 1
A(1) = 1         ! charge anion       product 1
q(1) = 1         ! coef of anion      product 1
conc(1)=0.05     !concentration product 1
c_m(1) = p(1)*conc(1) !concentration metal ion,H
c_a(1) = q(1)*conc(1) !concentration anion
!********************************************
! M(2)P(2)A(2)q(2) => Ca(1)(NO3)(2)= Ca(NO3)2
!********************************************
M(2) = 2         ! charge metal ion   product 2
p(2) = 1         ! coef of metal ion  product 2
A(2) = 1         ! charge anion       product 2
q(2) = 2         ! coef of anion      product 2
conc(2) = 0.06   !concentration product 2
c_m(2) = p(2)*conc(2) !concentration metal ion,H
c_a(2) = q(2)*conc(2) !concentration anion
call ionic_strength(nu,c_m(),m(),c_a(),a(),I_strength)
print
print " mu = Ionic Strength = ";I_strength
print
! read coef depent on temperature (EDHE)
dim temp(13,4)
for i=1 to 13
 for j=1 to 4
     read temp(i,j)
 next j
next i
print "***************************************"
print " temperature : the ionic solution      "
print "***************************************"
print " values temperature 0,5,10,....60 °C = "
print "***************************************"
print " reason : only values avaible          "
print "***************************************"
print
t_c = 25  ! temperature ionic solution °C
print "  temperature ionic solution = ";t_c;" °C"
for i=1 to 13
  if temp(i,2) = t_c then
     aa = temp(i,3)
     bb = temp(i,4)
  end if
next i
print "**************************************"
print " depent constant on temperature ,EDHE "
print "**************************************"
print
print " aa = ";aa
print " bb = ";bb
print
print "******************************************"
print " input : d ,z value form table right part "
print " H(+) -> d = 9 (EDHE) , z=1 (charge H)    "
print "******************************************"
z=1  ! charge H(1+) 'number'
d=9  ! from table right side
print
print " charge z,want to get activity coef = ";z
print " d => values                        = ";d
print
call first_EDHE(aa,bb,z,d,I_strength,n_1)
print " rhs(EDHE) = ";n_1
n_1 = - n_1
print
print " activity coefficient f,(z,d) = ";10^(n_1)
window #2
print
print tab(1,1)," z ";" d "," elements,products ion "
print tab(2,1)," 4,11,Th(4+),Ce(4+),Sn(4+)"
print tab(3,1)," 1,9, H(+) "
print tab(4,1)," 3,9, Al(3+),Fe(3+),Cr(3+),Se(3+),La(3+),Sm(3+)"
print tab(5,1)," 2,8,Mg(2+),Be(2+)"
print tab(6,1)," 1,6,Li(+),C(6)H(5)COO(-)"
print tab(7,1)," 2,6,Ca,Cu,Zn,Sn,Mn,Fe,Ni,Co"
print tab(8,1)," 1,5,CCl3COO(-)"
print tab(9,1)," 2,5,Sr,Ba,Cd,Hg,Pb,CO3(2-),SO3(2-),S(2-),(COO)(2)(2-),Hcitrate(2-)"
print tab(10,1),"3,5,Citrate(3-)"
print tab(11,1),"4,5,Fe(CN)(6)(4-)"
print tab(12,1),"1,4,Na(+),IO3(-),H(2)PO4(-),HSO3(-),HAsO4(-),Ac(-)"
print tab(13,1),"2,4,Hg(2)(2+),SO4(2-),S(2)O(3)(2-),CrO4(2-),HPO4(2-),S(2)O(6)(2-)"
print tab(14,1),"3,4,PO4(3-),Fe(CN)(6)(3-),Co(NH3)(6)(3+)"
print tab(15,1),"1,3,OH(-),F(-),CNS(-),ClO4(-),IO4(-),MnO4(-),K(+),Cl(-),Br(-),I(-)"
print tab(16,1),"||,3,CN(-),NO3(-),Rb(+),Cs(+),NH4(+),Tl(+),Ag(+),HCOO(-),CH(3)NH3+"
print tab(17,1),"||,3,H(2)Citrate(-)"
print
print "number","temp(°C)"," AA"," BB"
mat print temp
print
print
print "*******************************************"
print " EDHE                                      "
print "*******************************************"
print " I_strength =1/2*(sum(c(i)*z(i)^2),i=1..nu "
print "                                           "
print "            (aa*z^2*sqr(I_strength))       "
print "  -log(f) = -------------------------      "
print "            (1+bb*d*sqr(I_strength))       "
print " log =log10,                               "
print "*******************************************"
! temperature ,aa,bb
data 1,0,0.4883,0.3241
data 2,5,0.4921,0.3249
data 3,10,0.4960,0.3258
data 4,15,0.5,0.3266
data 5,20,0.5042,0.3273
data 6,25,0.5085,0.3281
data 7,30,0.5130,0.3290
data 8,35,0.5175,0.3297
data 9,40,0.5221,0.3305
data 10,45,0.5270,0.3314
data 11,50,0.5319,0.3321
data 12,55,0.5371,0.3329
data 13,60,0.5425,0.3338
end

sub ionic_strength(nu,c_m(),m(),c_a(),a(),I_strength)
som = 0
for i=1 to nu
 som = som +(c_m(i)*(m(i))^2+c_a(i)*(a(i))^2)
next i
 I_strength = som/2
end sub

sub first_EDHE(aa,bb,z,d,I_strength,n_1)
 rr=I_strength
tel  = aa*z^2*sqr(rr)
noem = 1+bb*d*sqr(rr)
   n_1 = tel/noem
end sub