%--------------------------------------------------------
% separation.m är ett MATLAB-script som simulerar en 
% separationsprocess. Programmet har beteckningar för 
% Anilin men kan enkelt ändras till NP genom att ändra
% Kow och KA i sepfunk.m. Deras kemiska förlopp är på
% intet sätt kopplade till varandra i den här modellen
% varför de inte behöver att lösas samtidigt.
%--------------------------------------------------------

global pH AnilinAQ0 Anilinjon0 AnilinOKT0 

pH = 7;  %Vätejonkoncentrationen i kolonnen
n = 10;  %Antalet separationssteg

AnilinAQ0  = 1e-3;  %Begynnelsekoncentrationen i vattenfasen
AnilinOKT0 = 0;     %Begynnelsekoncentrationen i oktanolfasen
Anilinjon0 = 0;     %Begynnelsekoncentrationen av joner i 
                    %vattenfasen

%--------------Separationsprocessen-----------------%


for i = 1:n 
   
   x = newton('sepfunk',[1 1 10^-pH 1]',1e-10); %Löser jämviktsproblemet
   
   AnilinAQ1(i)  = x(2);       %Koncentrationen i vattenfasen för steg i
   AnilinOKT1(i) = x(1);       %Koncentrationen i oktanolfasen för steg i
   Anilinjon1(i) = x(4);       %Jonkoncentrationen i vattenfasen för steg i
   
   AnilinAQ0     = AnilinAQ1(i);    %Inkoncentration till steg i+1
   Anilinjon0    = Anilinjon1(i);   %Inkoncentration till steg i+1
end

Anilin_ut(1) = AnilinAQ1(n)+Anilinjon1(n);  %Koncentrationen efter separations-
                                            %kolonnen
                                            
                                            
%---------------Tvättningsprocessen------------------%
                                            

for k = 1:350          %Antal tvättar
   
   AnilinAQ0  = 0;     %Begynnelsekoncentrationen i lösningsmedlet
   Anilinjon0 = 0;     %Begynnelsekoncentrationen i lösningsmedlet
   
   for i = 1:n
      AnilinOKT0   = AnilinOKT1(i);   %Koncentrationen i oktanolfasen från cykel k-1
      
      x = newton('sepfunk',[1 1 10^-pH 1]',1e-10);  %Löser jämviktsproblemet
      
      AnilinAQ(i)  = x(2);            %Koncentrationen i vattenfasen för steg i
      Anilinjon(i) = x(4);            %Koncentrationen i oktanolfasen för steg i
      AnilinOKT(i) = x(1);            %Jonkoncentrationen i vattenfasen för steg i
      
      AnilinAQ0    = AnilinAQ(i);     %Inkoncentration till steg i+1
      Anilinjon0   = Anilinjon(i);    %Inkoncentration till steg i+1
   end
   
   Anilin_ut(k+1) = AnilinAQ(n)+Anilinjon(n);    %Koncentrationen efter separationskolonnen
   AnilinOKT1 = AnilinOKT;                       %Koncentrationen i oktanolfasen efter  
                                                 %k:te tvättningscykeln
end

plot(Anilin_ut,'--')
ylabel('M')
xlabel('Tid (antal sköljningscykler)')
grid

