%------------------------------+---------------------------------------+
%   Inmatning:
%
%       arsenik(pH,steglängd)
%
%   Beräknar steglängden mellan pH 7.5 och 'pH' med steglängden h.
%
%   Scriptfil som beräknar koncentrationen av Arsenik med avseende på pH.
%   Den använder sig av newtons metod för att lösa ekvationen. Output i
%   form av text och en figur.
%------------------------------+---------------------------------------
%   Date created: 2003-12-05
%
%   Author: Henrik Skärnell 
%------------------------------+---------------------------------------+

global pH

h      = -1e-1;
pH_min = 5;
pH_max = 7.5;

k = 0;
x = [1e-10 5e-10 0 1e-6 0 0]';

for i = pH_max:h:pH_min
    k = k + 1;
    pH = i;
    x = newton('arsenik_ekvationer', x, 1e-10);
    
    Cr     = x(1);
    AsO4   = x(2);
    H3AsO4 = x(3);
    H      = x(4);
    H2AsO4 = x(5);
    HAsO4  = x(6);

    m_As     = 74.92;
    m_AsO4   = m_As+4*15.999;
    m_HAsO4  = m_AsO4+1.008;
    m_H2AsO4 = m_AsO4+1.008*2;
    m_H3AsO4 = m_AsO4+1.008*3;
    
    mtot_As2 = m_As*sum([AsO4 HAsO4 H2AsO4 H3AsO4]); %g/dm^3
    output(k,:)   = [i mtot_As2.*1e6]; %pH och As i mg/m^3
end

disp(' ')
disp('pH    "Fri Arsenik"')
for i = 1:k
    string = sprintf('%1.1f    %0.5f mg/m^3',output(i,1),output(i,2));
    disp(string)
end

pH_intervall = [pH_max:h:pH_min];
c = output(:,2)';
ph = linspace(pH_max,pH_min,100);
C  = spline(pH_intervall,c,ph);
clf
plot(ph,C)
hold on
plot(pH_intervall,c,'r+')
title('Arsenikhaltens pH-beroende')
xlabel('pH')
ylabel('mg/m^3')
legend('Fri Arsenik','Beräknade datapunkter')
grid