% starttilstand.m
% Finner startverdier i PC

% $Id: starttilstand.m,v 1.1 2004/05/22 01:05:40 Ingrid Exp $

function NV0=starttilstand(b,c,d)

% CO2-siden:
T_co2 = c.T_pc(:,1);                % [K] Temperatur i hvert kontr.vol lik
p_co2 = c.p_pc(:,1);                % p settes

vvs = c.vvs;
vvf = c.vvf;
dvv = (vvf-vvs)/b.n;
vv = [vvs+dvv:dvv:vvf]';            % volumfraksj gass
Vv = b.V_pc(:,1).*vv;               % V settes
Vl = b.V_pc(:,1) - Vv;

Nv0 = p_co2.*Vv./(b.R*T_co2);       % [mol] (gjett for gass)

% Naturgass-siden:
T_ng = c.T_pc(:,2);
V_ng = b.V_pc(2);
p_ng = c.p_pc(:,2);

N0_ng= p_ng.*V_ng./(b.R*T_ng);

o=NaN*zeros(b.n,1); Nl=o;Nv=o;N_ng=o;
for i=1:length(p_co2)
    
    % Newtoniterasjoner, til N ved ønsket trykk finnes:
    Nv(i) = Nv0(i);
    dNv = Nv(i);
    while abs(dNv)>1e-6*Nv(i)
        Av = co2_sw([T_co2(i),Vv(i),Nv(i)]');
        dNv = (p_co2(i) + Av.g(2))/(-Av.H(2,3));
        Nv(i) = Nv(i) + dNv;
    end
    
    % Bytte ut denne med den forige rho.
    Nl(i) = d.rho_co2liq*Vl(i)/b.MW_pc(1);% (gjett for væske)
    dNl = Nl(i);
    while abs(dNl)>1e-6*Nl(i)
        Al = co2_sw([T_co2(i),Vl(i),Nl(i)]');
        dNl = (p_co2(i) + Al.g(2))/(-Al.H(2,3));
        Nl(i) = Nl(i) + dNl;
    end
    
    % Er det dumt å sette etan og propan lik null? Er de som nr 2 og 3?
    N_ng(i) = N0_ng(i);
    dN_ng = N_ng(i);
    while abs(dN_ng)>1e-6*N_ng(i)
        %A_ng = ng_pr([T_ng(i),V_ng(i),N_ng(i),0,0]');
        A_ng = ng_pr([T_ng(i),V_ng,N_ng(i),N_ng(i)*1e-6,N_ng(i)*1e-6]');
        dN_ng= (p_ng(i) + A_ng.g(2))/(-A_ng.H(2,3));
        N_ng(i) = N_ng(i) + dN_ng;
    end
end

% Startverdier for hver tilstand/meidum i hvert kontrollvolum:
% --------------------------------------------------------------------
NV0 = [Nl; Vl; Nv; Vv; N_ng];
