[Go to previous section: 5.12]

[ Go to CENG301 Homepage][ CENG301 Notes Table of Contents]


5.13 The Reactor Function: reacten

 

Here is a listing of reacten:

  function hdif=reacten(s,tmp,in,out,rs,t)
  % Reacten: General purpose reactor module
  % function hdif=reacten(s,tmp,in,out,rs,t)
  % General purpose reactor module:
  % The number of inlet and exit streams can be any integer >0.
  % Argument List:
  % Argument    Gives
  %    s       vector of states of the exit stream(s).
  %            ('v', 'l', or 's')
  %    tmp     temperatures of exit streams in Tdeg.
  %    in      the indices of the inlet stream(s).
  %    out     the indices of the exit stream(s).
  %    rs      the reaction rates.
  %    t       The fraction of each compound in the product
  %            that goes into each stream, except that the
  %            last stream need not be given. Each row should
  %            correspond to one exit stream.  If tmp and out
  %            are scalars, t does not need to be given.
  %  reacten returns the sum of the enthalpies of the 
  %     exit streams minus the sum of the enthalpies 
  %     of the inlet streams.
  % Ex: reacten('vs',[312 25],1:2,3:4,[.94 0.21],[1 1 0]);
  %
  % JWD, SHD & OKB, TYLC
  %
  global ne stoic
  nstr=length(out);
  if nstr==1
  % If there is only one exit stream, use reacte.
     if length(tmp)~=1
  % Check first to see that there is exactly one exit temperature
        disp('The number of streams out is one, but the length of tmp is:')
        disp(length(tmp))
        return
     end
     hdif=reacte(s,tmp,in,out,rs)
     return
  end
  if nargin<=5
     disp('Your number of exit streams is:')
     disp(nstr)
     disp('You must give the fraction of each compound out for all except')
     disp('the last of those streams as a sixth argument.')
  end
  [nrt,nct]=size(t);
  if nrt==nstr-1 & nrt>0
  % the zeros in the line below are included so that sum sums columns
  % when t is a vector and there are two exits.
     t=[t;1-sum([t;zeros(1,nct)])];
  end
  sne=size(ne);
  nc=sne(2)-3;
  % these zeros are needed for the same reason as above
  NS=sum([ne(in,4:(nc+3));zeros(1,nc)]);
  nout=NS+(rs*stoic);
  k=find(abs(nout)>eps);
  str=ne(in(1),:);
  setne(s(1),in(1),tmp(1),nout(k),k)
  if nstr>1
     for j=2:nstr
        sepe(s(j),s(1),tmp(j),tmp(1),in(1),out([j 1]),t(j,:));
     end
     rem=nout.*t(1,:);
     l=find(abs(rem)>eps);
     setne(s(1),out(1),tmp(1),rem(l),l);
     ne(in(1),:)=str;
  end
  hdif=sum(ne(out,3))-sum(ne(in,3));

Also see The Reactor Functions: reacte, reacten. Back to Chapter 5.


[ Go to previous section: 5.12]

[ Go to CENG301 Homepage][ CENG301 Notes Table of Contents]