function N = nvdw(T, V, p, x)
% N = NVDW(T, V, p, x)
%
% Beregner totalt antall mol for en gassblanding av O2, He og N2 med temperatur
% T [°K], volum V [m3], trykk P [Pa] og molfraksjoner x ved en Van der Waals
% tilstandsligning.
%
% Skrevet av Olaf Trygve Berglihn <olafb@pvv.org> 5. mai 2005
% Beskyttet av GPL v2 lisens <http://www.gnu.org/licenses/gpl.txt>

% T er temperatur i grader Kelvin
% V er antall m3
% p er trykk i Pascal
% x er molbrøker
% returnerer N som er totalt antall mol gass i blandingen

% Van der Waals parametre og gasskonstant
a = [1.38e-1; 3.44e-3; 1.41e-1];
b = [3.18e-5; 2.37e-5; 3.85e-5];
R = 8.31;

% beregner nye Van der Waals coeffisienter for blandingen med enkle
% blandingsregler
ar = sum(sqrt(a).*x)^2;
br = sum(b.*x);


% løser ligning for N med Newtons algoritme
% bruker ideell gass som startverdi
N = p*V/(R*T);
reltol = 1e-5;
relres = reltol*10;
maxit = 100;
it = 0;
% 
while (relres > reltol) & (it < maxit)
	f = p - N*R*T/(V-N*br) + ar*(N/V)^2;
	df = - ( R*T*(V-N*br) - N*R*T*(-br) )/(V-N*br)^2 + 2*ar*(N/V);
	Ni = N - f/df;
	relres = abs(Ni-N)/N;
	N = Ni;
	it = it + 1;
end
