function b=loads(ni,x,d,Dd,c,r,f,g,bctype);
disp('load')
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; 
end
%
b(1)=f(1)*(1/2+csd(1))*h(1);
for j=2:ni-1;
b(j-1)=b(j-1)+f(j)*(1/2-csd(j))*h(j);
b(j)=f(j)*(1/2+csd(j))*h(j);
end
b(ni-1)=b(ni-1)+f(ni)*(1/2-csd(ni))*h(ni);
%
if bctype(1)==0
b(1)=b(1)-(-d(1)/h(1)-c(1)/2+r(1)*h(1)/6)*g(1);
b(1)=b(1)-csd(1)*(Dd(1)-c(1)+r(1)*h(1)/2)*g(1);
else
b=[f(1)*(1/2-csd(1))*h(1)+g(1),b];
end
if bctype(2)==0
ndf=ni-1+bctype(1);
b(ndf)=b(ndf)-(-d(ni)/h(ni)+c(ni)/2+r(ni)*h(ni)/6)*g(2);
b(ndf)=b(ndf)-csd(ni)*(Dd(ni)-c(ni)-r(ni)*h(ni)/2)*g(2);
else
b=[b,f(ni)*(1/2+csd(ni))*h(ni)+g(2)];
end

