function [ad,al,ar]=stiff(ni,x,d,Dd,c,r,k,bctype)
disp('stiff')
h=x(2:ni+1)-x(1:ni);
%
%setting constant in streamline diffusion test quantity: v+chv'
%
csd=zeros(size(c));
if max(h-d./(abs(c)+eps*ones(size(c))))>0;
csd=c./(abs(c)+eps*ones(size(c)))/2;
disp('using streamline diffusion modification');
end
%
ad(1)=d(1)/h(1)+c(1)/2+r(1)*h(1)/3;
ad(1)=ad(1)+csd(1)*(-Dd(1)+c(1)+r(1)*h(1)/2);
for i=2:ni-1;
ad(i-1)=ad(i-1)+d(i)/h(i)-c(i)/2+r(i)*h(i)/3;
ad(i-1)=ad(i-1)+csd(i)*(-Dd(i)+c(i)-r(i)*h(i)/2);
al(i-1)=-d(i)/h(i)-c(i)/2+r(i)*h(i)/6;
al(i-1)=al(i-1)+csd(i)*(Dd(i)-c(i)+r(i)*h(i)/2);
ar(i-1)=-d(i)/h(i)+c(i)/2+r(i)*h(i)/6;
ar(i-1)=ar(i-1)+csd(i)*(Dd(i)-c(i)-r(i)*h(i)/2);
ad(i)=d(i)/h(i)+c(i)/2+r(i)*h(i)/3;
ad(i)=ad(i)+csd(i)*(-Dd(i)+c(i)+r(i)*h(i)/2);
end
ad(ni-1)=ad(ni-1)+d(ni)/h(ni)-c(ni)/2+r(ni)*h(ni)/3;
ad(ni-1)=ad(ni-1)+csd(ni)*(-Dd(ni)+c(ni)-r(ni)*h(ni)/2);
%
if bctype(1)==1
ad=[d(1)/h(1)-c(1)/2+r(1)*h(1)/3+k(1)+csd(1)*(-Dd(1)+c(1)-r(1)*h(1)/2),ad];
al=[-d(1)/h(1)-c(1)/2+r(1)*h(1)/6+csd(1)*(Dd(1)-c(1)+r(1)*h(1)/2),al];
ar=[-d(1)/h(1)+c(1)/2+r(1)*h(1)/6+csd(1)*(Dd(1)-c(1)-r(1)*h(1)/2),ar];
end
if bctype(2)==1
ad=[ad,d(ni)/h(ni)+c(ni)/2+r(ni)*h(ni)/3+k(2)+csd(ni)*(-Dd(ni)+c(ni)+r(ni)*h(ni)/2)];
al=[al,-d(ni)/h(ni)-c(ni)/2+r(ni)*h(ni)/6+csd(ni)*(Dd(ni)-c(ni)+r(ni)*h(ni)/2)];
ar=[ar,-d(ni)/h(ni)+c(ni)/2+r(ni)*h(ni)/6+csd(ni)*(Dd(ni)-c(ni)-r(ni)*h(ni)/2)];
end
