function J=sys_deri(xx,par,nx,np,v)
% kappa beta a12 a21 tau1 tau2 tau_s
%%%% ks ksl kv kvl tau
J=[];
if length(nx)==1 & length(np)==0 & isempty(v)
% first order derivatives wrt state variables
if nx==0 % derivative wrt x(t)
J(1,2)=1;
J(2,2)=0;
elseif nx==1 % derivative wrt x(t-tau)
J(2,1)=-(par(1)+par(2));
J(2,2)=-(par(3)+par(4));
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
elseif length(nx)==0 & length(np)==1 & isempty(v)
% first order derivatives wrt parameters
if np==1 % derivative wrt kappa (notre cas ks)
J(1,1)=0;
J(2,1)=-xx(1,2);
elseif np==2 % derivative wrt beta (notre cas ksl)
J(1,1)=0;
J(2,1)=-xx(1,2);
elseif np==3 % derivative wrt a12 (notre cas kv)
J(1,1)=0;
J(2,1)=-xx(2,2);
elseif np==4 % derivative wrt a21 (notre cas kvl)
J(1,1)=0;
J(2,1)=-xx(2,2);
elseif np==5 % derivative wrt tau (tj tau pas ext mais in var)
J=zeros(2,1); %(la encore)
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
elseif length(nx)==1 & length(np)==1 & isempty(v)
% mixed state, parameter derivatives
if nx==0 % derivative wrt x(t)
J=zeros(2);
%end;
elseif nx==1 % derivative wrt x(t-tau)
if np==1 % derivative wrt ks
J(2,1)=-1;
J(2,2)=0;
elseif np==2 % dervivative wrt ksl
J(2,1)=-1;
J(2,2)=0;
elseif np==3 % dervivative wrt kv
J(2,1)=0;
J(2,2)=-1;
elseif np==4 % dervivative wrt kvl
J(2,1)=0;
J(2,2)=-1;
else
J=zeros(2);
end; % end des np
else
J=zeros(2);
end; %end du nx dans mixed
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
elseif length(nx)==2 & length(np)==0 & ~isempty(v)
% second order derivatives wrt state variables
if nx(1)==0 % first derivative wrt x(t)
J=zeros(2); %(la encore)
elseif nx(1)==1 % first derivative wrt x(t-tau)
J=zeros(2);
end;
end;
if isempty(J)
err=[nx np size(v)]
error('SYS_DERI: requested derivative could not be computed!');
end;
return;