function xprime=multicomA_lv(t,X) 
% sample usage:   [t,x]=ode15s('multicomA_lv',[0 20000],0.5*ones(1,NC*NT));
% keep record of results: lengthx=size(x); Xinit=x(lengthx(1),:)';

% multicomA_lv - Subroutine for simulation with LV-configuration.
%           It calls the model multicomA, and 
%           includes control of condenser and reboiler level 
%           using two P-controllers with the LV-configuration. 
%
%           Inputs are reflux (LT) and boilup (VB). Disturbances
%           are feedrate and feed composition. These are set by directly
%           altering 'multicomA_lv.m'. Outputs are liquid compositions 
%           for light and intermediate components and
%           liquid hold up for stages 1 through NT, given in x. 

% Number of stages in the column
NT=41;

%Number of components
NC=4;

% Inputs and disturbances
LT=2.70629;                          % Reflux
VB=3.20629;                          % Boilup
F=1.0 + 0.00;                        % Feedrate
qF=1.0;                              % Feed liquid fraction
zF=[0 0.5 0.5 0];  % Feed compositions for component A to component NC 
%zF=[0.05 0.45 0.45 0.05];  % Feed compositions for component A to component NC 
%zF=[0.25 0.25 0.25 0.25];  % Feed compositions for component A to component NC 


% P-Controllers for control of reboiler and condenser hold up.
KcB=10;  KcD=10;                     % controller gains
MDs=0.5; MBs=0.5;                    % Nominal holdups - these are rather small  
Ds=0.5; Bs=0.5;                      % Nominal flows
MB=X((NC-1)*NT+1);  MD=X(NC*NT);     % Actual reboiler and condenser holdup
D=Ds+(MD-MDs)*KcD;                   % Distillate flow
B=Bs+(MB-MBs)*KcB;                   % Bottoms flow     

% Store all inputs and disturbances
U(1)=LT; U(2)=VB; U(3)=D; U(4)=B; U(5)=F; U(6)=qF; A=zF; U=[U A];

xprime=multicomA(t,X,U);

