function[Xtp1, dXt]=Leguerinel(Xt,t,pourcentbruit,  ...
		      nomparam, nomparamS, paramS)
%Leguerinel Compute Leguerinel model
% INPUT/OUTPUT
% See BaranyiRoberts.m
%% ========================================================================


% Affectation des  paramètres à estimer 
lenp=length(nomparam);
for i=1:lenp
    var=Xt(i,:);
    eval([nomparam{i},'=var;'])
    clear var
end
clear lenp 
lens=length(nomparamS);
vect=ones(1,size(Xt,2));
for i=1:lens
    var=nomparamS{i};
    eval([var,'=paramS.(var).*vect;'])
end
clear vect lens 

Xtp1=Xt;
aux1= (pH - pHopt) ./ ZpH;
aux1 = aux1 .* aux1;
aux2 = (Aw - Awopt) ./ ZAw;
aux2 = aux2 .* aux2;
H = 10 .^(aux1 + aux2);

aux3 =  t ./ (delta .* H);
Xtp1(end,:)= K -  aux3 .^ p;

%% Calcul de derivee de Nt par rapport au temps dans dXt
%VOIR: le test par rapport a zero, eventuellement, faire idem dans la
%version C
if t>0
    dXt = -p .* aux3 .^ (p-1) .* (1 ./ (delta .* H));

else
    dXt = 0;
end

%% Bruiter Nt
if pourcentbruit>0
    pbruit=pourcentbruit/100;
    Xtp1(end,:)= normrnd(Xtp1(end, :), pbruit);
    clear pbruit
end
%% Ramener les réponses non valides:
% log10(Nt) doit etre >0
Xtp1(end, Xtp1(end,:) < 0) = 0;

