ADDED mttroot/mtt/lib/examples/Chemical/Reactor/MakeFigure.m Index: mttroot/mtt/lib/examples/Chemical/Reactor/MakeFigure.m ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/Reactor/MakeFigure.m @@ -0,0 +1,42 @@ + + +par = Reactor_numpar; # Parameters +sym = Reactor_sympar; # Parameter indices + +F_s= [90:10:500]; # Range of flows + +Z_a = []; Z_b = []; P = []; +for f_s=F_s + par(sym.f_s) = f_s; + [A,B,C,D] = Reactor_sm(par); # Linearised system + + p = sort(eig(A)); + P = [P p]; + + C_a = C([1 3],:); # C vector for c_a and t + D_a = D([1 3],:); # D vector for c_a and t + z_a = tzero(A,B,C_a,D_a); # Transmission zeros for c_a and t + Z_a = [Z_a z_a]; + + C_b = C(2:3,:); # C vector for c_b and t + D_b = D(2:3,:); # D vector for c_b and t + z_b = tzero(A,B,C_b,D_b); # Transmission zeros for c_b and t + Z_b = [Z_b z_b]; +endfor + +grid; xlabel("f_s"); ylabel("p1,p2"); +plot(F_s,P(1:2,:)); +psfig("Reactor_pole_1_2"); + +grid; xlabel("f_s"); ylabel("p3"); +plot(F_s,P(3,:)); +psfig("Reactor_pole_3"); + +grid; xlabel("f_s"); ylabel("z_a"); +plot(F_s,Z_a); +psfig("Reactor_zero_a"); + +grid; xlabel("f_s"); ylabel("z_b"); +plot(F_s,Z_b); +psfig("Reactor_zero_b"); + ADDED mttroot/mtt/lib/examples/Chemical/Reactor/Makefile Index: mttroot/mtt/lib/examples/Chemical/Reactor/Makefile ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/Reactor/Makefile @@ -0,0 +1,13 @@ +## Makes the schematic diagram and the (trasmission) zero figure +all: Reactor_pic.ps Reactor_zero_b.ps + +Reactor_pic.ps: Reactor_pic.fig + fig2dev -Lps Reactor_pic.fig> Reactor_pic.ps + +Reactor_zero_b.ps: Reactor_abg.fig + mtt -q Reactor sm m + mtt -q Reactor numpar m; + mtt -q Reactor sympar m; + octave MakeFigure.m + + ADDED mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_abg.fig Index: mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_abg.fig ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_abg.fig @@ -0,0 +1,137 @@ +#FIG 3.2 +Portrait +Center +Inches +A4 +100.00 +Single +-2 +1200 2 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 3001 8701 3001 7801 3151 7951 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 1801 9001 2701 9001 2551 9151 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2701 8776 2701 9226 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 3301 9001 4201 9001 4051 9151 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4201 9301 3601 9901 3826 9901 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 5701 9001 4801 9001 4951 9151 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 1800 6000 2700 6000 2550 6150 +2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 1 + 10350 5025 +2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 + 1800 6000 1800 5775 +2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 + 1800 6225 1800 6000 +2 4 1 2 1 7 0 0 -1 4.000 0 0 7 0 0 5 + 11100 10200 600 10200 600 7500 11100 7500 11100 10200 +2 4 1 2 1 7 0 0 -1 4.000 0 0 7 0 0 5 + 11100 6600 600 6600 600 5400 11100 5400 11100 6600 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 2 + 5700 8775 5700 9225 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4425 9300 3975 9300 +2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 3 + 4500 4800 4500 8700 4650 8550 +2 1 0 2 0 7 100 0 -1 0.000 0 0 -1 0 0 3 + 6000 4800 4800 8700 5025 8625 +2 1 0 2 0 7 100 0 -1 0.000 0 0 -1 0 0 3 + 9000 4800 5100 8700 5400 8700 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4725 4800 4275 4800 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4725 4200 4275 4200 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6225 4800 5775 4800 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6225 4200 5775 4200 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 9225 4800 8775 4800 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 9225 4200 8775 4200 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 3000 7200 3000 6300 3150 6450 +2 1 0 2 0 7 100 0 -1 0.000 0 0 -1 0 0 3 + 10500 4800 3300 6000 3525 6075 +2 4 1 2 1 7 0 0 -1 4.000 0 0 7 0 0 5 + 11100 5100 600 5100 600 3300 11100 3300 11100 5100 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 4485 2395 4485 4130 4633 3841 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 2999 2395 2999 4130 3148 3841 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 5970 2395 5970 4130 6119 3841 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 10428 2397 10428 4132 10577 3843 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 8943 2397 8943 4132 9091 3843 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 1800 2100 2700 2100 2550 2250 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 3300 2100 4200 2100 4050 2250 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 4800 2100 5700 2100 5550 2250 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4200 1800 3600 1200 3600 1425 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2700 1875 2700 2325 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 8701 1801 8101 1201 8101 1426 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 9301 2101 10201 2101 10051 2251 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 6300 2100 7200 2100 7050 2250 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 7800 2100 8700 2100 8550 2250 +2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 + 4050 1950 4350 1650 +2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 + 8550 1950 8850 1650 +2 4 1 2 1 7 0 0 -1 4.000 0 0 7 0 0 5 + 11100 300 600 300 600 2700 11100 2700 11100 300 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 3000 4800 3000 5700 3150 5550 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 9301 1801 9901 1201 9901 1426 +2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 + 10050 1350 9900 1200 +2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 + 9900 1200 9750 1050 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4801 1801 5401 1201 5401 1426 +2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 + 5550 1350 5400 1200 +2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 + 5400 1200 5250 1050 +4 1 0 0 0 0 20 0.0000 4 210 1035 3075 4575 FMR:rfa\001 +4 1 0 0 0 0 20 0.0000 4 210 1065 4575 4575 Rate:AD\001 +4 1 0 0 0 0 20 0.0000 4 210 1050 6000 4575 Rate:AB\001 +4 2 0 0 0 0 20 0.0000 4 285 780 1651 9076 SS:t_0\001 +4 2 0 0 0 0 20 0.0000 4 285 690 3451 9976 C:h_r\001 +4 1 0 0 0 0 20 0.0000 4 210 150 3000 6075 1\001 +4 2 0 0 0 0 20 0.0000 4 210 480 1725 6075 SS:f\001 +4 1 0 0 0 0 20 0.0000 4 210 150 3001 9076 1\001 +4 1 0 0 0 0 20 0.0000 4 210 150 4501 9076 0\001 +4 1 0 0 0 0 20 0.0000 4 210 1005 9001 4576 Rate:BC\001 +4 1 0 0 0 0 20 0.0000 4 210 1050 10576 4576 FMR:rfb\001 +4 1 1 1 0 3 20 0.0000 4 210 2625 9600 7800 THERMAL MODEL\001 +4 1 1 1 0 3 20 0.0000 4 210 2940 9450 5700 HYDRAULIC MODEL\001 +4 1 0 0 0 0 20 0.0000 4 210 900 3000 7575 FMR:rt\001 +4 1 1 1 0 3 20 0.0000 4 210 2700 9675 3750 REACTION MODEL\001 +4 2 0 0 0 0 20 0.0000 4 285 825 1650 2175 SS:c_0\001 +4 1 0 0 0 0 20 0.0000 4 210 150 3000 2175 1\001 +4 1 0 0 0 0 20 0.0000 4 210 150 4500 2175 0\001 +4 1 0 0 0 0 20 0.0000 4 210 150 6000 2175 1\001 +4 1 0 0 0 0 20 0.0000 4 210 150 9001 2176 0\001 +4 1 0 0 0 0 20 0.0000 4 210 150 10501 2176 1\001 +4 1 0 0 0 0 20 0.0000 4 210 420 7500 2175 AF\001 +4 1 0 0 0 0 20 0.0000 4 285 795 8100 1050 C:m_b\001 +4 1 0 0 0 0 20 0.0000 4 285 780 3600 1050 C:m_a\001 +4 1 1 0 0 3 20 0.0000 4 210 3735 9075 600 CONCENTRATION MODEL\001 +4 1 0 0 0 0 20 0.0000 4 210 480 6151 9076 SS:t\001 +4 1 0 0 0 0 20 0.0000 4 285 825 9975 1050 SS:c_b\001 +4 1 0 0 0 0 20 0.0000 4 285 810 5475 1050 SS:c_a\001 ADDED mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_desc.tex Index: mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_desc.tex ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_desc.tex @@ -0,0 +1,62 @@ +% -*-latex-*- Put EMACS into LaTeX-mode +% Verbal description for system Reactor (Reactor_desc.tex) +% Generated by MTT on Fri Mar 3 12:43:33 GMT 2000. + +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% %% Version control history +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% %% $Id$ +% %% $Log$ +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\fig{Reactor_pic} +{Reactor_pic} {0.9} {System \textbf{Reactor}, Schematic} + +Figure \Ref{fig:Reactor_pic} is the schematic diagram od a chemical reactor. +The acausal bond graph of system \textbf{Reactor} is displayed in +Figure \Ref{fig:Reactor_abg.ps} and its label file is listed in +Section \Ref{sec:Reactor_lbl}. The subsystems are listed in Section +\Ref{sec:Reactor_sub}. + +This example of a (nonlinear) chemical reactor is due to Trickett and +Bogle\footnote{ K. J. Tricket, \emph{Quantification of Inverse + Responses for Controllability Assessment of Nonlinear Processes}, + PhD Thesis, University College London, 1994} is used in this +section. The reactor has two reaction mechanisms: $\text{A} +\rightarrow \text{B} \rightarrow \text{C}$ and $\text{2A} \rightarrow +\text{D}$. The reactor mass inflow and outflow $f_r$ are identical. +$q$ represents the heat inflow to the reactor. + +This is a two input, two-output unstable nonlinear system with unstable zero +dynamics. +The following figures illustrate the properties of the +\emph{linearised} system. + +\fig{Reactor_pole_1_2} +{Reactor_pole_1_2} {0.9} {System \textbf{Reactor}: poles 1 and 2 + v. steady-state flow $f_s$} + +\fig{Reactor_pole_3} +{Reactor_pole_3} {0.9} {System \textbf{Reactor}: pole 3 + v. steady-state flow $f_s$} + +\fig{Reactor_zero_a} +{Reactor_zero_a} {0.9} {System \textbf{Reactor}: zero of system with + $t$ and $c_a$ as output + v. steady-state flow $f_s$} + +\fig{Reactor_zero_b} +{Reactor_zero_b} {0.9} {System \textbf{Reactor}: pole 3 + v. steady-state flow $f_s$} + +\begin{itemize} +\item Figures \Ref{fig:Reactor_pole_1_2} and + \Ref{fig:Reactor_pole_3} show the three poles of the + \emph{linearised} system as the steady-state flow varies. +\item Figure \Ref{fig:Reactor_zero_a} shows the system zero (when $t$ and + $c_a$ are the two system outputs) as the + \emph{linearised} system as the steady-state flow varies. +\item Figure \Ref{fig:Reactor_zero_b} shows the system zero (when $t$ and + $c_b$ are the two system outputs) as the + \emph{linearised} system as the steady-state flow varies. +\end{itemize} ADDED mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_input.txt Index: mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_input.txt ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_input.txt @@ -0,0 +1,57 @@ +# -*-octave-*- Put Emacs into octave-mode +# Input specification (Reactor_input.txt) +# Generated by MTT at Fri Mar 3 11:52:23 GMT 2000 +############################################################### +## Version control history +############################################################### +## $Id$ +## $Log$ +############################################################### + +## Reduce steady-state parameter file (Reactor_sspar.r) +## as siso_sspar ecxept that inputs/states have different meaning +## Steady state for constant c_a, c_b and t=t_s and f=f_s + +## Unit volume Reactor: +v_r = 1; + + +## The exponentials. +e_1 = exp(-q_1/t_s); +e_2 = exp(-q_2/t_s); +e_3 = exp(-q_3/t_s); + +## Solve for the steady-state concentrations +## Solve for ca - a quadratic. +a = k_3*e_3; #ca^2 +b = k_1*e_1 + f_s; #ca^1 +c = -c_0*f_s; + +c_a = (-b + sqrt(b^2 - 4*a*c))/(2*a); + +## solve for c_b +c_b = c_a*k_1*e_1/(f_s+k_2*e_2); + + +#States (masses) +x1 = c_a*v_r; +x2 = c_b*v_r; + +#Thermal state +x3 = c_p*t_s*v_r; + + +#Steady-state input q needed to achieve steady-state t_s +q_s = -( (t_0-t_s)*c_p*f_s + e_1*h_1*k_1*x1 + e_2*h_2*k_2*x2 + e_3*h_3*k_3*x1^2); + +## The two inputs at steady-state +u1 = f_s; +u2 = q_s; + + +# Set the inputs +mttu(1) = u1 + 0.1*u1*(t>0.01); # f (Reactor) +mttu(2) = u2 + 0.1*u2*(t>0.05) ; # t (Reactor) + + + ADDED mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_lbl.txt Index: mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_lbl.txt ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_lbl.txt @@ -0,0 +1,69 @@ +%% Label file for system Reactor (Reactor_lbl.txt) +%SUMMARY Reactor: Simple reactor model +%DESCRIPTION Pseudo bond graph reactor model (based on ancient version) + +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% %% Version control history +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% %% $Id$ +% %% $Log$ +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%ALIAS Rate Chemical/Rate + +% Extra variables +%VAR t_s +%VAR f_s +%VAR t_0 +%VAR c_0 +%VAR rho +%VAR v_r +%VAR e_1 +%VAR e_2 +%VAR e_3 +%VAR a +%VAR b +%VAR c +%VAR c_A +%VAR c_B +%VAR x1 +%VAR x2 +%VAR x3 +%VAR q_S + +%VAR u1 +%VAR u2 + +% Port aliases + +% Argument aliases + +%% each line should be of one of the following forms: +% a comment (ie starting with %) +% component-name cr_name arg1,arg2,..argn +% blank + +% ---- Component labels ---- +% Component type C + m_a lin effort,1 + m_b lin effort,1 + h_r lin effort,c_p + +% Component type FMR + rfa lin effort,1 + rfb lin effort,1 + rt lin effort,c_p + +% Component type Rate + AB Rate k_1,q_1,h_1,1 + BC Rate k_2,q_2,h_2,1 + AD Rate k_3,q_3,h_3,2 + +% Component type SS + c_0 SS c_0,internal + c_a SS external,0 + c_b SS external,0 + f SS internal,external + t SS external,external + t_0 SS t_0,internal ADDED mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_numpar.txt Index: mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_numpar.txt ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_numpar.txt @@ -0,0 +1,79 @@ +# -*-octave-*- Put Emacs into octave-mode +# Numerical parameter file (Reactor_numpar.txt) +# Generated by MTT at Fri Mar 3 09:22:56 GMT 2000 + +# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +# %% Version control history +# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +# %% $Id$ +# %% $Log$ +# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +## Dummies +a = 0; # Dummy +b = 0; # Dummy +c = 0; # Dummy +c_0 = 0; # Dummy +c_a = 0; # Dummy +c_b = 0; # Dummy +c_p = 0; # Dummy +e_1 = 0; # Dummy +e_2 = 0; # Dummy +e_3 = 0; # Dummy +f_s = 0; # Dummy +h = 0; # Dummy +h_1 = 0; # Dummy +h_2 = 0; # Dummy +h_3 = 0; # Dummy +k = 0; # Dummy +k_1 = 0; # Dummy +k_2 = 0; # Dummy +k_3 = 0; # Dummy +n = 0; # Dummy +q = 0; # Dummy +q_1 = 0; # Dummy +q_2 = 0; # Dummy +q_3 = 0; # Dummy +q_s = 0; # Dummy +rho = 0; # Dummy +t_0 = 0; # Dummy +t_s = 0; # Dummy +v_r = 0; # Dummy +x1 = 0; # Dummy +x2 = 0; # Dummy +x3 = 0; # Dummy + +## The bulk liquid +rho = 900; # Density +c_p = 5.0; # Specific heat + +## Substance A +k_1 = 2.5e10; # Reaction rate constant +q_1 = 1e4; # Exotherm constant +h_1 = 1e4; # Heat of reaction + +## Substance B +k_2 = 2.65e12; # Reaction rate constant +q_2 = 1.2e4; # Exotherm constant +h_2 = 1.2e4; # Heat of reaction + +## Substance C +k_3 = 6e7; # Reaction rate constant +q_3 = 8e3; # Exotherm constant +h_3 = 3e4; # Heat of reaction + +## Inflow parameters +c_0 = 10; # Inflow conc +t_0 = 530; # Inflow temp + +## Steady-state values +t_s = 530; # Steady-state temp +f_s = 100; # Steady-state flow + + + + + + + + ADDED mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_pic.fig Index: mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_pic.fig ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_pic.fig @@ -0,0 +1,52 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +-2 +1200 2 +6 2400 3150 3225 3375 +2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 2625 3300 2925 3300 +4 0 -1 0 0 2 20 0.0000 4 210 210 2400 3375 A\001 +4 0 -1 0 0 2 20 0.0000 4 210 225 3000 3375 D\001 +-6 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 2100 2100 2100 3900 1500 3900 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 1500 4050 3900 4050 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 2.00 120.00 240.00 + 1500 4350 2100 4350 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 3600 2100 3600 3900 4200 3900 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 2.00 120.00 240.00 + 3600 4350 4200 4350 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3900 4050 4200 4050 +2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 + 2100 2400 3600 2400 +2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 2400 2925 2700 2925 +2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 3000 2925 3300 2925 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 2.00 120.00 240.00 + 2850 4800 2850 3750 +4 0 -1 0 0 2 20 0.0000 4 210 210 2175 3000 A\001 +4 0 -1 0 0 2 20 0.0000 4 210 195 2775 3000 B\001 +4 0 -1 0 0 2 20 0.0000 4 210 210 3375 3000 C\001 +4 0 -1 0 0 2 20 0.0000 4 210 150 2250 3375 2\001 +4 0 -1 0 0 3 12 0.0000 4 135 90 1875 4950 0\001 +4 0 -1 0 0 3 12 0.0000 4 135 90 2250 4950 0\001 +4 0 -1 0 0 3 20 0.0000 4 210 150 2775 5025 q\001 +4 0 -1 0 0 3 20 0.0000 4 285 765 1500 4800 f , c , t\001 +4 0 -1 0 0 3 20 0.0000 4 285 765 3600 4800 f , c , t\001 +4 0 -1 0 0 3 12 0.0000 4 135 90 3975 4950 b\001 +4 0 -1 0 0 3 12 0.0000 4 90 75 4350 4950 r\001 ADDED mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_rep.txt Index: mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_rep.txt ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_rep.txt @@ -0,0 +1,33 @@ +## -*-octave-*- Put Emacs into octave-mode +## Outline report file for system Reactor (Reactor_rep.txt) +## Generated by MTT on" Fri Mar 3 12:13:34 GMT 2000. + +############################################################### +## Version control history +############################################################### +## $Id$ +## $Log$ +############################################################### + +mtt Reactor abg tex # The system description +mtt Reactor cbg ps # The causal bond graph +## Uncomment the following lines or add others +mtt Reactor struc tex # The system structure +## mtt Reactor dae tex # The system dae +mtt Reactor ode tex # The system ode +mtt Reactor sspar tex # Steady-state parameters +mtt Reactor ss tex # Steady state +## mtt Reactor dm tex # Descriptor matrices (of linearised system) +mtt Reactor sm tex # State matrices (of linearised system) +## mtt Reactor tf tex # Transfer function (of linearised system) +## mtt Reactor lmfr ps # log modulus of frequency response (of linearised system) +mtt Reactor simpar tex # Simulation parameters +mtt Reactor numpar tex # Numerical simulation parameters +mtt Reactor input tex # Simulation input +mtt Reactor state tex # Simulation initial state + +## The system outputs +mtt -c Reactor odeso ps 'Reactor_c_a' +mtt -c Reactor odeso ps 'Reactor_c_b' +mtt -c Reactor odeso ps 'Reactor_t' + ADDED mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_simp.r Index: mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_simp.r ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_simp.r @@ -0,0 +1,21 @@ +%% Reduce comands to simplify output (mimo_sim.r) +m_r := rho*v_r; +%mttx1 := c_a*v_r; +%mttx2 := c_b*v_r; + +% THIS MUST BE CHANGED - probs with cp and FMRs +%c_p := 1; + +%let mttx3/c_p = t; + +let e^(q_1/(mttx3/c_p)) = 1/epsilon_1; +let e^(q_2/(mttx3/c_p)) = 1/epsilon_2; +let e^(q_3/(mttx3/c_p)) = 1/epsilon_3; + +let e^(q_1/t_s) = 1/epsilon_1; +let e^(q_2/t_s) = 1/epsilon_2; +let e^(q_3/t_s) = 1/epsilon_3; + +FACTOR mttx1,mttx2; + +END; ADDED mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_simpar.txt Index: mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_simpar.txt ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_simpar.txt @@ -0,0 +1,21 @@ +# -*-octave-*- Put Emacs into octave-mode +# Simulation parameters for system Reactor (Reactor_simpar.txt) +# Generated by MTT on Fri Mar 3 12:11:48 GMT 2000. +############################################################### +## Version control history +############################################################### +## $Id$ +## $Log$ +## Revision 1.1 2000/08/24 12:32:25 peterg +## Initial revision +## +############################################################### + + +LAST = 0.1; # Last time in simulation +DT = 0.0002; # Print interval +STEPFACTOR = 1; # Integration steps per print interval +WMIN = -1; # Minimum frequency = 10^WMIN +WMAX = 2; # Maximum frequency = 10^WMAX +WSTEPS = 100; # Number of frequency steps +INPUT = 1; # Index of the input ADDED mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_sspar.r Index: mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_sspar.r ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_sspar.r @@ -0,0 +1,57 @@ +%% Reduce steady-state parameter file (Reactor_sspar.r) +%% as siso_sspar ecxept that inputs/states have different meaning +%% Steady state for constant c_a, c_b and t=t_s and f=f_s + +%% Unit volume Reactor: +v_r := 1; + +%% Do the inputs first -- this avoids problems with reduce not +%% recognising that complicated expressions are zero + +%% The exponentials. +e_1 := e^(-q_1/t_s); +e_2 := e^(-q_2/t_s); +e_3 := e^(-q_3/t_s); + +%Steady-state input q needed to achieve steady-state t_s +q_s := -( + + (t_0-t_s)*c_p*f_s + + e_1*h_1*k_1*x1 + + e_2*h_2*k_2*x2 + + e_3*h_3*k_3*x1^2 + ); + +%% The two inputs at steady-state +MTTu1 := f_s; +MTTu2 := q_s; + +%States (masses) +x1 := c_a*v_r; +x2 := c_b*v_r; + +%Thermal state +x3 := c_p*t_s*v_r; + +%Load up the vectors +MTTx1 := x1; +MTTx2 := x2; +MTTx3 := x3; + +MTTy1 := c_b; +MTTy2 := t_s; + +%% Finally, solve for the steady-state concentrations +%% Solve for ca - a quadratic. +a := k_3*e_3; %ca^2 +b := k_1*e_1 + f_s; %ca^1 +c := -c_0*f_s; + +c_a := (-b + sqrt(b^2 - 4*a*c))/(2*a); + +%% solve for c_b +c_b := c_a*k_1*e_1/(f_s+k_2*e_2); + + +END; + + ADDED mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_state.txt Index: mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_state.txt ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/Reactor/Reactor_state.txt @@ -0,0 +1,58 @@ +# -*-octave-*- Put Emacs into octave-mode +# State specification (Reactor_state.txt) +# Generated by MTT at Fri Mar 3 11:52:23 GMT 2000 +############################################################### +## Version control history +############################################################### +## $Id$ +## $Log$ +############################################################### + +## Reduce steady-state parameter file (Reactor_sspar.r) +## as siso_sspar ecxept that states/states have different meaning +## Steady state for constant c_a, c_b and t=t_s and f=f_s + +## Unit volume Reactor: +v_r = 1; + + +## The exponentials. +e_1 = exp(-q_1/t_s); +e_2 = exp(-q_2/t_s); +e_3 = exp(-q_3/t_s); + +## Solve for the steady-state concentrations +## Solve for ca - a quadratic. +a = k_3*e_3; #ca^2 +b = k_1*e_1 + f_s; #ca^1 +c = -c_0*f_s; + +c_a = (-b + sqrt(b^2 - 4*a*c))/(2*a); + +## solve for c_b +c_b = c_a*k_1*e_1/(f_s+k_2*e_2); + + +#States (masses) +x1 = c_a*v_r; +x2 = c_b*v_r; + +#Thermal state +x3 = c_p*t_s*v_r; + + +#Steady-state state q needed to achieve steady-state t_s +q_s = -((t_0-t_s)*c_p*f_s + e_1*h_1*k_1*x1 + e_2*h_2*k_2*x2 + e_3*h_3*k_3*x1^2); + +## The two inputs at steady-state +u1 = f_s; +u2 = q_s; + +## Load up the states +mttx(1) = x1; +mttx(2) = x2; +mttx(3) = x3; + + + + Index: mttroot/mtt/lib/examples/Chemical/ReactorTF/MakeFigure.m ================================================================== --- mttroot/mtt/lib/examples/Chemical/ReactorTF/MakeFigure.m +++ mttroot/mtt/lib/examples/Chemical/ReactorTF/MakeFigure.m @@ -1,9 +1,9 @@ ## Makes the figures par = ReactorTF_numpar; # Parameters -sym = Reactor_sympar; # Parameter indices +sym = ReactorTF_sympar; # Parameter indices F_s= [90:10:500]; # Range of flows Z = []; for f_s=F_s ADDED mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_abg.fig Index: mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_abg.fig ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_abg.fig @@ -0,0 +1,130 @@ +#FIG 3.2 +Portrait +Center +Inches +A4 +100.00 +Single +-2 +1200 2 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 3001 8701 3001 7801 3151 7951 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 1801 9001 2701 9001 2551 9151 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2701 8776 2701 9226 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 3301 9001 4201 9001 4051 9151 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4201 9301 3601 9901 3826 9901 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 5701 9001 4801 9001 4951 9151 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 1800 6000 2700 6000 2550 6150 +2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 1 + 10350 5025 +2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 + 1800 6000 1800 5775 +2 4 1 2 1 7 0 0 -1 4.000 0 0 7 0 0 5 + 11100 10200 600 10200 600 7500 11100 7500 11100 10200 +2 4 1 2 1 7 0 0 -1 4.000 0 0 7 0 0 5 + 11100 6600 600 6600 600 5400 11100 5400 11100 6600 +2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 3 + 4500 4800 4500 8700 4650 8550 +2 1 0 2 0 7 100 0 -1 0.000 0 0 -1 0 0 3 + 6000 4800 4800 8700 5025 8625 +2 1 0 2 0 7 100 0 -1 0.000 0 0 -1 0 0 3 + 9000 4800 5100 8700 5400 8700 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4725 4800 4275 4800 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 4725 4200 4275 4200 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6225 4800 5775 4800 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 6225 4200 5775 4200 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 9225 4800 8775 4800 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 9225 4200 8775 4200 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 3000 7200 3000 6300 3150 6450 +2 1 0 2 0 7 100 0 -1 0.000 0 0 -1 0 0 3 + 10500 4800 3300 6000 3525 6075 +2 4 1 2 1 7 0 0 -1 4.000 0 0 7 0 0 5 + 11100 5100 600 5100 600 3300 11100 3300 11100 5100 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 4485 2395 4485 4130 4633 3841 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 2999 2395 2999 4130 3148 3841 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 5970 2395 5970 4130 6119 3841 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 10428 2397 10428 4132 10577 3843 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 8943 2397 8943 4132 9091 3843 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 1800 2100 2700 2100 2550 2250 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 3300 2100 4200 2100 4050 2250 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 4800 2100 5700 2100 5550 2250 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 4200 1800 3600 1200 3600 1425 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 2700 1875 2700 2325 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 8701 1801 8101 1201 8101 1426 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 9301 2101 10201 2101 10051 2251 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 9301 1801 9901 1201 9901 1426 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 6300 2100 7200 2100 7050 2250 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 7800 2100 8700 2100 8550 2250 +2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 + 4050 1950 4350 1650 +2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 + 10050 1350 9900 1200 +2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 + 9900 1200 9750 1050 +2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 + 8550 1950 8850 1650 +2 4 1 2 1 7 0 0 -1 4.000 0 0 7 0 0 5 + 11100 300 600 300 600 2700 11100 2700 11100 300 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 3 + 3000 4800 3000 5700 3150 5550 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 2 + 4800 8775 4800 9000 +2 1 0 2 0 0 0 0 -1 0.000 0 0 0 0 0 2 + 5700 9000 5700 9225 +2 1 0 2 -1 7 0 0 -1 0.000 0 0 -1 0 0 2 + 2700 6225 2700 6000 +4 1 0 0 0 0 20 0.0000 4 210 1035 3075 4575 FMR:rfa\001 +4 1 0 0 0 0 20 0.0000 4 210 1065 4575 4575 Rate:AD\001 +4 1 0 0 0 0 20 0.0000 4 210 1050 6000 4575 Rate:AB\001 +4 2 0 0 0 0 20 0.0000 4 285 780 1651 9076 SS:t_0\001 +4 2 0 0 0 0 20 0.0000 4 285 690 3451 9976 C:h_r\001 +4 1 0 0 0 0 20 0.0000 4 210 150 3000 6075 1\001 +4 2 0 0 0 0 20 0.0000 4 210 480 1725 6075 SS:f\001 +4 1 0 0 0 0 20 0.0000 4 210 150 3001 9076 1\001 +4 1 0 0 0 0 20 0.0000 4 210 150 4501 9076 0\001 +4 1 0 0 0 0 20 0.0000 4 210 1005 9001 4576 Rate:BC\001 +4 1 0 0 0 0 20 0.0000 4 210 1050 10576 4576 FMR:rfb\001 +4 1 1 1 0 3 20 0.0000 4 210 2625 9600 7800 THERMAL MODEL\001 +4 1 0 0 0 0 20 0.0000 4 210 900 3000 7575 FMR:rt\001 +4 1 1 1 0 3 20 0.0000 4 210 2700 9675 3750 REACTION MODEL\001 +4 2 0 0 0 0 20 0.0000 4 285 825 1650 2175 SS:c_0\001 +4 1 0 0 0 0 20 0.0000 4 210 150 3000 2175 1\001 +4 1 0 0 0 0 20 0.0000 4 210 150 4500 2175 0\001 +4 1 0 0 0 0 20 0.0000 4 210 150 6000 2175 1\001 +4 1 0 0 0 0 20 0.0000 4 210 150 9001 2176 0\001 +4 1 0 0 0 0 20 0.0000 4 210 150 10501 2176 1\001 +4 1 0 0 0 0 20 0.0000 4 210 420 7500 2175 AF\001 +4 1 0 0 0 0 20 0.0000 4 285 795 8100 1050 C:m_b\001 +4 1 0 0 0 0 20 0.0000 4 285 825 9975 1050 SS:c_b\001 +4 1 0 0 0 0 20 0.0000 4 285 780 3600 1050 C:m_a\001 +4 1 1 0 0 3 20 0.0000 4 210 3735 9075 600 CONCENTRATION MODEL\001 +4 1 0 0 0 0 20 0.0000 4 210 480 6151 9076 SS:t\001 +4 1 1 1 0 3 20 0.0000 4 210 2940 9450 5700 HYDRAULIC MODEL\001 ADDED mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_args.new Index: mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_args.new ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_args.new @@ -0,0 +1,1 @@ + ADDED mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_desc.tex Index: mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_desc.tex ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_desc.tex @@ -0,0 +1,50 @@ +% -*-latex-*- Put EMACS into LaTeX-mode +% Verbal description for system ReactorTF (ReactorTF_desc.tex) +% Generated by MTT on Fri Mar 3 12:43:33 GMT 2000. + +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% %% Version control history +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% %% $Id$ +% %% $Log$ +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\fig{ReactorTF_pic} +{ReactorTF_pic} {0.9} {System \textbf{ReactorTF}, Schematic} + +Figure \Ref{fig:ReactorTF_pic} is the schematic diagram of a chemical +reactor. + +The acausal bond graph of system \textbf{ReactorTF} is displayed in +Figure \Ref{fig:ReactorTF_abg.ps} and its label file is listed in +Section \Ref{sec:ReactorTF_lbl}. The subsystems are listed in Section +\Ref{sec:ReactorTF_sub}. + +This example of a (nonlinear) chemical reactor is due to Trickett and +Bogle\footnote{ K. J. Tricket, \emph{Quantification of Inverse + Responses for Controllability Assessment of Nonlinear Processes}, + PhD Thesis, University College London, 1994} is used in this +section. The reactor has two reaction mechanisms: $\text{A} +\rightarrow \text{B} \rightarrow \text{C}$ and $\text{2A} \rightarrow +\text{D}$. The reactor mass inflow and outflow $f_r$ are identical. +$q$ represents the heat inflow to the reactor. + +The control loop $t$/$f$ has been inverted. The resulting SISO +system has two interpretations: +\begin{enumerate} +\item the \emph{dynamics} of the $c_b$/$q$ loop when the $t$/$f$ loop + is under perfect control and +\item the \emph{inverse} dynamics of the $t$/$f$ loop. +\end{enumerate} + +\fig{ReactorTF_zero_1} {ReactorTF_zero_1} {0.9} +{System\textbf{ReactorTF}: zero 1 v flow} +\fig{ReactorTF_zero_2} {ReactorTF_zero_2} {0.9} +{System\textbf{ReactorTF}: zero 2 v flow} + +Figures \Ref{fig:ReactorTF_zero_1} and \Ref{fig:ReactorTF_zero_2} +shows the poles of the linearised system as the steady-state flow +varies: these are the \emph{zeros} of the $t$/$f$ control-loop when +the $c_b$/$q$ loop is \emph{open}. + + ADDED mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_input.txt Index: mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_input.txt ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_input.txt @@ -0,0 +1,52 @@ +# -*-octave-*- Put Emacs into octave-mode +# Input specification (ReactorTF_input.txt) +# Generated by MTT at Fri Mar 3 11:52:23 GMT 2000 +############################################################### +## Version control history +############################################################### +## $Id$ +## $Log$ +############################################################### + +## Reduce steady-state parameter file (ReactorTF_sspar.r) +## as siso_sspar ecxept that inputs/states have different meaning +## Steady state for constant c_a, c_b and t=t_s and f=f_s + +## Unit volume ReactorTF: +v_r = 1; + + +## The exponentials. +e_1 = exp(-q_1/t_s); +e_2 = exp(-q_2/t_s); +e_3 = exp(-q_3/t_s); + +## Solve for the steady-state concentrations +## Solve for ca - a quadratic. +a = k_3*e_3; #ca^2 +b = k_1*e_1 + f_s; #ca^1 +c = -c_0*f_s; + +c_a = (-b + sqrt(b^2 - 4*a*c))/(2*a); + +## solve for c_b +c_b = c_a*k_1*e_1/(f_s+k_2*e_2); + + +#States (masses) +x1 = c_a*v_r; +x2 = c_b*v_r; + +#Thermal state +#x3 = c_p*t_s*v_r; + + +#Steady-state input q needed to achieve steady-state t_s +q_s = -( (t_0-t_s)*c_p*f_s + e_1*h_1*k_1*x1 + e_2*h_2*k_2*x2 + e_3*h_3*k_3*x1^2); + +# Set the inputs +mttu(1) = q_s + 0.1*q_s*(t>0.01); # q (ReactorTF) + + + + ADDED mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_lbl.txt Index: mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_lbl.txt ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_lbl.txt @@ -0,0 +1,69 @@ +%% Label file for system ReactorTF (ReactorTF_lbl.txt) +%SUMMARY ReactorTF: Simple reactor model -- TF loop inverted +%DESCRIPTION Pseudo bond graph reactor model (based on ancient version) + +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% %% Version control history +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% %% $Id$ +% %% $Log$ +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%ALIAS Rate Chemical/Rate + +% Extra variables +%VAR t_s +%VAR f_s +%VAR t_0 +%VAR c_0 +%VAR rho +%VAR v_r +%VAR e_1 +%VAR e_2 +%VAR e_3 +%VAR a +%VAR b +%VAR c +%VAR c_A +%VAR c_B +%VAR x1 +%VAR x2 +%VAR x3 +%VAR q_S + + +% Port aliases + +% Argument aliases + +%% each line should be of one of the following forms: +% a comment (ie starting with %) +% component-name cr_name arg1,arg2,..argn +% blank + +% ---- Component labels ---- +% Component type C + m_a lin effort,1 + m_b lin effort,1 + h_r lin effort,c_p + +% Component type FMR + rfa lin effort,1 + rfb lin effort,1 + rt lin effort,c_p + +% Component type Rate + AB Rate k_1,q_1,h_1,1 + BC Rate k_2,q_2,h_2,1 + AD Rate k_3,q_3,h_3,2 + +% Component type SS + c_0 SS c_0,internal + c_b SS external,0 + f SS internal,internal + t SS t_s,external + t_0 SS t_0,internal + + + ADDED mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_numpar.m Index: mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_numpar.m ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_numpar.m @@ -0,0 +1,186 @@ +function mttpar = ReactorTF_numpar(); +% mttpar = ReactorTF_numpar(); +%System ReactorTF, representation numpar, language m; +%File ReactorTF_numpar.m; +%Generated by MTT on Thu Aug 24 14:28:46 BST 2000; +% + +#====== Set up the global variables ======# +global ... + a ... + b ... + c ... + c_0 ... + c_a ... + c_b ... + c_p ... + e_1 ... + e_2 ... + e_3 ... + f_s ... + h ... + h_1 ... + h_2 ... + h_3 ... + k ... + k_1 ... + k_2 ... + k_3 ... + n ... + q ... + q_1 ... + q_2 ... + q_3 ... + q_s ... + rho ... + t_0 ... + t_s ... + v_r ... + x1 ... + x2 ... + x3 ; +## Set parameters to zero + a = 0.0; + b = 0.0; + c = 0.0; + c_0 = 0.0; + c_a = 0.0; + c_b = 0.0; + c_p = 0.0; + e_1 = 0.0; + e_2 = 0.0; + e_3 = 0.0; + f_s = 0.0; + h = 0.0; + h_1 = 0.0; + h_2 = 0.0; + h_3 = 0.0; + k = 0.0; + k_1 = 0.0; + k_2 = 0.0; + k_3 = 0.0; + n = 0.0; + q = 0.0; + q_1 = 0.0; + q_2 = 0.0; + q_3 = 0.0; + q_s = 0.0; + rho = 0.0; + t_0 = 0.0; + t_s = 0.0; + v_r = 0.0; + x1 = 0.0; + x2 = 0.0; + x3 = 0.0; + % -*-octave-*- Put Emacs into octave-mode + % Numerical parameter file (ReactorTF_numpar.txt) + % Generated by MTT at Fri Mar 3 09:22:56 GMT 2000 + + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % %% Version control history + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + % %% $Id$ + % %% $Log$ + % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + % +a = 0; % Dummy +b = 0; % Dummy +c = 0; % Dummy +c_0 = 0; % Dummy +c_a = 0; % Dummy +c_b = 0; % Dummy +c_p = 0; % Dummy +e_1 = 0; % Dummy +e_2 = 0; % Dummy +e_3 = 0; % Dummy +f_s = 0; % Dummy +h = 0; % Dummy +h_1 = 0; % Dummy +h_2 = 0; % Dummy +h_3 = 0; % Dummy +k = 0; % Dummy +k_1 = 0; % Dummy +k_2 = 0; % Dummy +k_3 = 0; % Dummy +n = 0; % Dummy +q = 0; % Dummy +q_1 = 0; % Dummy +q_2 = 0; % Dummy +q_3 = 0; % Dummy +q_s = 0; % Dummy +rho = 0; % Dummy +t_0 = 0; % Dummy +t_s = 0; % Dummy +v_r = 0; % Dummy +x1 = 0; % Dummy +x2 = 0; % Dummy +x3 = 0; % Dummy + + % +rho = 900; % Density +c_p = 5.0; % Specific heat + + % +k_1 = 2.5e10; % Reaction rate constant +q_1 = 1e4; % Exotherm constant +h_1 = 1e4; % Heat of reaction + + % +k_2 = 2.65e12; % Reaction rate constant +q_2 = 1.2e4; % Exotherm constant +h_2 = 1.2e4; % Heat of reaction + + % +k_3 = 6e7; % Reaction rate constant +q_3 = 8e3; % Exotherm constant +h_3 = 3e4; % Heat of reaction + + % +c_0 = 10; % Inflow conc +t_0 = 500; % Inflow temp + + % +t_s = 530; % Steady-state temp +f_s = 100; % Steady-state flow + + + + + + + + +## Set up the parameter vector + mttpar(1) = a; + mttpar(2) = b; + mttpar(3) = c; + mttpar(4) = c_0; + mttpar(5) = c_a; + mttpar(6) = c_b; + mttpar(7) = c_p; + mttpar(8) = e_1; + mttpar(9) = e_2; + mttpar(10) = e_3; + mttpar(11) = f_s; + mttpar(12) = h; + mttpar(13) = h_1; + mttpar(14) = h_2; + mttpar(15) = h_3; + mttpar(16) = k; + mttpar(17) = k_1; + mttpar(18) = k_2; + mttpar(19) = k_3; + mttpar(20) = n; + mttpar(21) = q; + mttpar(22) = q_1; + mttpar(23) = q_2; + mttpar(24) = q_3; + mttpar(25) = q_s; + mttpar(26) = rho; + mttpar(27) = t_0; + mttpar(28) = t_s; + mttpar(29) = v_r; + mttpar(30) = x1; + mttpar(31) = x2; + mttpar(32) = x3; ADDED mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_numpar.txt Index: mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_numpar.txt ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_numpar.txt @@ -0,0 +1,79 @@ +# -*-octave-*- Put Emacs into octave-mode +# Numerical parameter file (ReactorTF_numpar.txt) +# Generated by MTT at Fri Mar 3 09:22:56 GMT 2000 + +# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +# %% Version control history +# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +# %% $Id$ +# %% $Log$ +# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +## Dummies +a = 0; # Dummy +b = 0; # Dummy +c = 0; # Dummy +c_0 = 0; # Dummy +c_a = 0; # Dummy +c_b = 0; # Dummy +c_p = 0; # Dummy +e_1 = 0; # Dummy +e_2 = 0; # Dummy +e_3 = 0; # Dummy +f_s = 0; # Dummy +h = 0; # Dummy +h_1 = 0; # Dummy +h_2 = 0; # Dummy +h_3 = 0; # Dummy +k = 0; # Dummy +k_1 = 0; # Dummy +k_2 = 0; # Dummy +k_3 = 0; # Dummy +n = 0; # Dummy +q = 0; # Dummy +q_1 = 0; # Dummy +q_2 = 0; # Dummy +q_3 = 0; # Dummy +q_s = 0; # Dummy +rho = 0; # Dummy +t_0 = 0; # Dummy +t_s = 0; # Dummy +v_r = 0; # Dummy +x1 = 0; # Dummy +x2 = 0; # Dummy +x3 = 0; # Dummy + +## The bulk liquid +rho = 900; # Density +c_p = 5.0; # Specific heat + +## Substance A +k_1 = 2.5e10; # Reaction rate constant +q_1 = 1e4; # Exotherm constant +h_1 = 1e4; # Heat of reaction + +## Substance B +k_2 = 2.65e12; # Reaction rate constant +q_2 = 1.2e4; # Exotherm constant +h_2 = 1.2e4; # Heat of reaction + +## Substance C +k_3 = 6e7; # Reaction rate constant +q_3 = 8e3; # Exotherm constant +h_3 = 3e4; # Heat of reaction + +## Inflow parameters +c_0 = 10; # Inflow conc +t_0 = 500; # Inflow temp + +## Steady-state values +t_s = 530; # Steady-state temp +f_s = 100; # Steady-state flow + + + + + + + + ADDED mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_pic.fig Index: mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_pic.fig ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_pic.fig @@ -0,0 +1,52 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +-2 +1200 2 +6 2400 3150 3225 3375 +2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 2625 3300 2925 3300 +4 0 -1 0 0 2 20 0.0000 4 210 210 2400 3375 A\001 +4 0 -1 0 0 2 20 0.0000 4 210 225 3000 3375 D\001 +-6 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 2100 2100 2100 3900 1500 3900 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 1500 4050 3900 4050 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 2.00 120.00 240.00 + 1500 4350 2100 4350 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 3 + 3600 2100 3600 3900 4200 3900 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 2.00 120.00 240.00 + 3600 4350 4200 4350 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 0 0 2 + 3900 4050 4200 4050 +2 1 1 2 -1 -1 0 0 -1 6.000 0 0 -1 0 0 2 + 2100 2400 3600 2400 +2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 2400 2925 2700 2925 +2 1 0 1 -1 -1 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 1.00 60.00 120.00 + 3000 2925 3300 2925 +2 1 0 2 -1 -1 0 0 -1 0.000 0 0 -1 1 0 2 + 0 0 2.00 120.00 240.00 + 2850 4800 2850 3750 +4 0 -1 0 0 2 20 0.0000 4 210 210 2175 3000 A\001 +4 0 -1 0 0 2 20 0.0000 4 210 195 2775 3000 B\001 +4 0 -1 0 0 2 20 0.0000 4 210 210 3375 3000 C\001 +4 0 -1 0 0 2 20 0.0000 4 210 150 2250 3375 2\001 +4 0 -1 0 0 3 12 0.0000 4 135 90 1875 4950 0\001 +4 0 -1 0 0 3 12 0.0000 4 135 90 2250 4950 0\001 +4 0 -1 0 0 3 20 0.0000 4 210 150 2775 5025 q\001 +4 0 -1 0 0 3 20 0.0000 4 285 765 1500 4800 f , c , t\001 +4 0 -1 0 0 3 20 0.0000 4 285 765 3600 4800 f , c , t\001 +4 0 -1 0 0 3 12 0.0000 4 135 90 3975 4950 b\001 +4 0 -1 0 0 3 12 0.0000 4 90 75 4350 4950 r\001 ADDED mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_rep.tex Index: mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_rep.tex ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_rep.tex @@ -0,0 +1,152 @@ + + +\section{\textbf{ReactorTF}: representation \textbf{abg}, language \textbf{tex}} +\label{sec:ReactorTF_abg.tex} +\index{\textbf{ReactorTF} -- abg} + + +MTT command: +\begin{verbatim} +mtt ReactorTF abg tex +\end{verbatim} + \input{/home/peterg/JUNK/Reactor/ReactorTF/MTT_work/ReactorTF_abg.tex} + + +\section{\textbf{ReactorTF}: representation \textbf{cbg}, language \textbf{ps}} +\label{sec:ReactorTF_cbg.ps} +\index{\textbf{ReactorTF} -- cbg} + + +MTT command: +\begin{verbatim} +mtt ReactorTF cbg ps +\end{verbatim} +This representation is given as Figure \Ref{fig:ReactorTF_cbg.ps}. +\fig{/home/peterg/JUNK/Reactor/ReactorTF/MTT_work/ReactorTF_cbg} + {ReactorTF_cbg.ps} + {0.9} + {System \textbf{ReactorTF}, representation cbg} + + +\section{\textbf{ReactorTF}: representation \textbf{struc}, language \textbf{tex}} +\label{sec:ReactorTF_struc.tex} +\index{\textbf{ReactorTF} -- struc} + + +MTT command: +\begin{verbatim} +mtt ReactorTF struc tex +\end{verbatim} + \input{/home/peterg/JUNK/Reactor/ReactorTF/MTT_work/ReactorTF_struc.tex} + + +\section{\textbf{ReactorTF}: representation \textbf{ode}, language \textbf{tex}} +\label{sec:ReactorTF_ode.tex} +\index{\textbf{ReactorTF} -- ode} + + +MTT command: +\begin{verbatim} +mtt ReactorTF ode tex +\end{verbatim} + \input{/home/peterg/JUNK/Reactor/ReactorTF/MTT_work/ReactorTF_ode.tex} + + +\section{\textbf{ReactorTF}: representation \textbf{sspar}, language \textbf{tex}} +\label{sec:ReactorTF_sspar.tex} +\index{\textbf{ReactorTF} -- sspar} + + +MTT command: +\begin{verbatim} +mtt ReactorTF sspar tex +\end{verbatim} + \input{/home/peterg/JUNK/Reactor/ReactorTF/MTT_work/ReactorTF_sspar.tex} + + +\section{\textbf{ReactorTF}: representation \textbf{ss}, language \textbf{tex}} +\label{sec:ReactorTF_ss.tex} +\index{\textbf{ReactorTF} -- ss} + + +MTT command: +\begin{verbatim} +mtt ReactorTF ss tex +\end{verbatim} + \input{/home/peterg/JUNK/Reactor/ReactorTF/MTT_work/ReactorTF_ss.tex} + + +\section{\textbf{ReactorTF}: representation \textbf{sm}, language \textbf{tex}} +\label{sec:ReactorTF_sm.tex} +\index{\textbf{ReactorTF} -- sm} + + +MTT command: +\begin{verbatim} +mtt ReactorTF sm tex +\end{verbatim} + \input{/home/peterg/JUNK/Reactor/ReactorTF/MTT_work/ReactorTF_sm.tex} + + +\section{\textbf{ReactorTF}: representation \textbf{simpar}, language \textbf{tex}} +\label{sec:ReactorTF_simpar.tex} +\index{\textbf{ReactorTF} -- simpar} + + +MTT command: +\begin{verbatim} +mtt ReactorTF simpar tex +\end{verbatim} + \input{/home/peterg/JUNK/Reactor/ReactorTF/MTT_work/ReactorTF_simpar.tex} + + +\section{\textbf{ReactorTF}: representation \textbf{numpar}, language \textbf{tex}} +\label{sec:ReactorTF_numpar.tex} +\index{\textbf{ReactorTF} -- numpar} + + +MTT command: +\begin{verbatim} +mtt ReactorTF numpar tex +\end{verbatim} + \input{/home/peterg/JUNK/Reactor/ReactorTF/MTT_work/ReactorTF_numpar.tex} + + +\section{\textbf{ReactorTF}: representation \textbf{input}, language \textbf{tex}} +\label{sec:ReactorTF_input.tex} +\index{\textbf{ReactorTF} -- input} + + +MTT command: +\begin{verbatim} +mtt ReactorTF input tex +\end{verbatim} + \input{/home/peterg/JUNK/Reactor/ReactorTF/MTT_work/ReactorTF_input.tex} + + +\section{\textbf{ReactorTF}: representation \textbf{state}, language \textbf{tex}} +\label{sec:ReactorTF_state.tex} +\index{\textbf{ReactorTF} -- state} + + +MTT command: +\begin{verbatim} +mtt ReactorTF state tex +\end{verbatim} + \input{/home/peterg/JUNK/Reactor/ReactorTF/MTT_work/ReactorTF_state.tex} + + +\section{\textbf{ReactorTF}: representation \textbf{odeso}, language \textbf{ps}} +\label{sec:ReactorTF_odeso.ps} +\index{\textbf{ReactorTF} -- odeso} + + +MTT command: +\begin{verbatim} +mtt ReactorTF odeso ps +\end{verbatim} +This representation is given as Figure \Ref{fig:ReactorTF_odeso.ps}. +\fig{/home/peterg/JUNK/Reactor/ReactorTF/MTT_work/ReactorTF_odeso} + {ReactorTF_odeso.ps} + {0.9} + {System \textbf{ReactorTF}, representation odeso} ADDED mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_rep.txt Index: mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_rep.txt ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_rep.txt @@ -0,0 +1,29 @@ +## -*-octave-*- Put Emacs into octave-mode +## Outline report file for system ReactorTF (ReactorTF_rep.txt) +## Generated by MTT on" Fri Mar 3 12:13:34 GMT 2000. + +############################################################### +## Version control history +############################################################### +## $Id$ +## $Log$ +############################################################### + +mtt ReactorTF abg tex # The system description +mtt ReactorTF cbg ps # The causal bond graph +## Uncomment the following lines or add others +mtt ReactorTF struc tex # The system structure +## mtt ReactorTF dae tex # The system dae +mtt ReactorTF ode tex # The system ode +mtt ReactorTF sspar tex # Steady-state parameters +mtt ReactorTF ss tex # Steady state +## mtt ReactorTF dm tex # Descriptor matrices (of linearised system) +mtt ReactorTF sm tex # State matrices (of linearised system) +## mtt ReactorTF tf tex # Transfer function (of linearised system) +## mtt ReactorTF lmfr ps # log modulus of frequency response (of linearised system) +mtt ReactorTF simpar tex # Simulation parameters +mtt ReactorTF numpar tex # Numerical simulation parameters +mtt ReactorTF input tex # Simulation input +mtt ReactorTF state tex # Simulation initial state +mtt -c ReactorTF odeso ps + ADDED mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_simp.r Index: mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_simp.r ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_simp.r @@ -0,0 +1,21 @@ +%% Reduce comands to simplify output (mimo_sim.r) +m_r := rho*v_r; +%mttx1 := c_a*v_r; +%mttx2 := c_b*v_r; + +% THIS MUST BE CHANGED - probs with cp and FMRs +%c_p := 1; + +%let mttx3/c_p = t; + +let e^(q_1/(mttx3/c_p)) = 1/epsilon_1; +let e^(q_2/(mttx3/c_p)) = 1/epsilon_2; +let e^(q_3/(mttx3/c_p)) = 1/epsilon_3; + +let e^(q_1/t_s) = 1/epsilon_1; +let e^(q_2/t_s) = 1/epsilon_2; +let e^(q_3/t_s) = 1/epsilon_3; + +FACTOR mttx1,mttx2; + +END; ADDED mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_simpar.txt Index: mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_simpar.txt ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_simpar.txt @@ -0,0 +1,18 @@ +# -*-octave-*- Put Emacs into octave-mode +# Simulation parameters for system ReactorTF (ReactorTF_simpar.txt) +# Generated by MTT on Fri Mar 3 12:11:48 GMT 2000. +############################################################### +## Version control history +############################################################### +## $Id$ +## $Log$ +############################################################### + + +LAST = 0.05; # Last time in simulation +DT = 0.0002; # Print interval +STEPFACTOR = 1; # Integration steps per print interval +WMIN = -1; # Minimum frequency = 10^WMIN +WMAX = 2; # Maximum frequency = 10^WMAX +WSTEPS = 100; # Number of frequency steps +INPUT = 1; # Index of the input ADDED mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_sm.m Index: mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_sm.m ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_sm.m @@ -0,0 +1,185 @@ +function [mtta,mttb,mttc,mttd] = ReactorTF_sm(mttpar); +% [mtta,mttb,mttc,mttd] = ReactorTF_sm(mttpar); +%System ReactorTF, representation sm, language m; +%File ReactorTF_sm.m; +%Generated by MTT on Thu Aug 24 14:45:50 BST 2000; +% +%====== Set up the global variables ======% +global ... +a ... +b ... +c ... +c_0 ... +c_a ... +c_b ... +c_p ... +e_1 ... +e_2 ... +e_3 ... +f_s ... +h ... +h_1 ... +h_2 ... +h_3 ... +k ... +k_1 ... +k_2 ... +k_3 ... +n ... +q ... +q_1 ... +q_2 ... +q_3 ... +q_s ... +rho ... +t_0 ... +t_s ... +v_r ... +x1 ... +x2 ... +x3 ; +a = mttpar(1); +b = mttpar(2); +c = mttpar(3); +c_0 = mttpar(4); +c_a = mttpar(5); +c_b = mttpar(6); +c_p = mttpar(7); +e_1 = mttpar(8); +e_2 = mttpar(9); +e_3 = mttpar(10); +f_s = mttpar(11); +h = mttpar(12); +h_1 = mttpar(13); +h_2 = mttpar(14); +h_3 = mttpar(15); +k = mttpar(16); +k_1 = mttpar(17); +k_2 = mttpar(18); +k_3 = mttpar(19); +n = mttpar(20); +q = mttpar(21); +q_1 = mttpar(22); +q_2 = mttpar(23); +q_3 = mttpar(24); +q_s = mttpar(25); +rho = mttpar(26); +t_0 = mttpar(27); +t_s = mttpar(28); +v_r = mttpar(29); +x1 = mttpar(30); +x2 = mttpar(31); +x3 = mttpar(32); +%a matrix% +mtta = zeros(2,2); +mtt_t1 = exp((2.0*q_1+q_3)/t_s)*abs(exp(q_1/t_s))^2*f_s^2*h_3; +mtt_t1 = mtt_t1+2.0*exp((2.0*q_1)/t_s)*abs(exp(q_1/t_s))^2*c_0*f_s*h_3*k_3; +mtt_t1 = mtt_t1-(exp((q_1+q_3)/t_s)*abs(exp(q_1/t_s))^2*f_s*h_1*k_1); +mtt_t1 = mtt_t1+2.0*exp((q_1+q_3)/t_s)*abs(exp(q_1/t_s))^2*f_s*h_3*k_1; +mtt_t1 = mtt_t1-(2.0*exp(q_1/t_s)*abs(exp(q_1/t_s))^2*c_0*h_1*k_1*k_3); +mtt_t1 = mtt_t1+2.0*exp(q_1/t_s)*abs(exp(q_1/t_s))^2*c_0*h_3*k_1*k_3; +mtt_t1 = mtt_t1-(exp(q_3/t_s)*abs(exp(q_1/t_s))^2*h_1*k_1^2); +mtt_t1 = mtt_t1+exp(q_3/t_s)*abs(exp(q_1/t_s))^2*h_3*k_1^2; +mtt_t3 = 2.0*exp((2.0*q_1+q_3)/t_s); +mtt_t2 = exp((2.0*q_1+q_3)/t_s)*f_s^2+4.0*exp((2.0*q_1)/t_s)*c_0*f_s*k_3; +mtt_t3 = mtt_t3*sqrt((mtt_t2+2.0*exp((q_1+q_3)/t_s)*f_s*k_1+exp(q_3/t_s)*k_1^2)/exp(q_3/t_s)); +mtt_t4 = 2.0*exp((2.0*q_1)/t_s); +mtt_t2 = exp((2.0*q_1+q_3)/t_s)*f_s^2+4.0*exp((2.0*q_1)/t_s)*c_0*f_s*k_3; +mtt_t4 = mtt_t4*sqrt((mtt_t2+2.0*exp((q_1+q_3)/t_s)*f_s*k_1+exp(q_3/t_s)*k_1^2)/exp(q_3/t_s)); +mtt_t1 = mtt_t1-(mtt_t3*abs(exp(q_1/t_s))*f_s*h_3)-(mtt_t4*abs(exp(q_1/t_s))*c_0*h_3*k_3); +mtt_t5 = 2.0*exp((2.0*q_1)/t_s); +mtt_t2 = exp((2.0*q_1+q_3)/t_s)*f_s^2+4.0*exp((2.0*q_1)/t_s)*c_0*f_s*k_3; +mtt_t5 = mtt_t5*sqrt((mtt_t2+2.0*exp((q_1+q_3)/t_s)*f_s*k_1+exp(q_3/t_s)*k_1^2)/exp(q_3/t_s)); +mtt_t3 = 2.0*exp((2.0*q_1)/t_s); +mtt_t2 = exp((2.0*q_1+q_3)/t_s)*f_s^2+4.0*exp((2.0*q_1)/t_s)*c_0*f_s*k_3; +mtt_t3 = mtt_t3*sqrt((mtt_t2+2.0*exp((q_1+q_3)/t_s)*f_s*k_1+exp(q_3/t_s)*k_1^2)/exp(q_3/t_s)); +mtt_t1 = mtt_t1-(mtt_t5*abs(exp(q_1/t_s))*c_p*k_3*t_0)+mtt_t3*abs(exp(q_1/t_s))*c_p*k_3*t_s; +mtt_t4 = exp((q_1+q_3)/t_s); +mtt_t2 = exp((2.0*q_1+q_3)/t_s)*f_s^2+4.0*exp((2.0*q_1)/t_s)*c_0*f_s*k_3; +mtt_t4 = mtt_t4*sqrt((mtt_t2+2.0*exp((q_1+q_3)/t_s)*f_s*k_1+exp(q_3/t_s)*k_1^2)/exp(q_3/t_s)); +mtt_t3 = 2.0*exp((q_1+q_3)/t_s); +mtt_t2 = exp((2.0*q_1+q_3)/t_s)*f_s^2+4.0*exp((2.0*q_1)/t_s)*c_0*f_s*k_3; +mtt_t3 = mtt_t3*sqrt((mtt_t2+2.0*exp((q_1+q_3)/t_s)*f_s*k_1+exp(q_3/t_s)*k_1^2)/exp(q_3/t_s)); +mtt_t1 = mtt_t1+mtt_t4*abs(exp(q_1/t_s))*h_1*k_1-(mtt_t3*abs(exp(q_1/t_s))*h_3*k_1); +mtt_t1 = mtt_t1+exp((4.0*q_1+q_3)/t_s)*f_s^2*h_3; +mtt_t1 = mtt_t1+4.0*exp((4.0*q_1)/t_s)*c_0*f_s*h_3*k_3; +mtt_t1 = mtt_t1+2.0*exp((3.0*q_1+q_3)/t_s)*f_s*h_3*k_1; +mtt_t1 = mtt_t1+exp((2.0*q_1+q_3)/t_s)*h_3*k_1^2; +mtt_t2 = 2.0*exp((2.0*q_1)/t_s)*abs(exp(q_1/t_s))^2*c_p*k_3*t_0; +mtta(1,1) = mtt_t1/(mtt_t2-(2.0*exp((2.0*q_1)/t_s)*abs(exp(q_1/t_s))^2*c_p*k_3*t_s)); +mtt_t1 = -(exp((q_1+q_3)/t_s)*abs(exp(q_1/t_s))*f_s*h_2*k_2); +mtt_t1 = mtt_t1-(2.0*exp(q_1/t_s)*abs(exp(q_1/t_s))*c_0*h_2*k_2*k_3); +mtt_t3 = exp((q_1+q_3)/t_s); +mtt_t2 = exp((2.0*q_1+q_3)/t_s)*f_s^2+4.0*exp((2.0*q_1)/t_s)*c_0*f_s*k_3; +mtt_t3 = mtt_t3*sqrt((mtt_t2+2.0*exp((q_1+q_3)/t_s)*f_s*k_1+exp(q_3/t_s)*k_1^2)/exp(q_3/t_s)); +mtt_t1 = mtt_t1-(exp(q_3/t_s)*abs(exp(q_1/t_s))*h_2*k_1*k_2)+mtt_t3*h_2*k_2; +mtt_t2 = 2.0*exp((q_1+q_2)/t_s)*abs(exp(q_1/t_s))*c_p*k_3*t_0; +mtta(1,2) = mtt_t1/(mtt_t2-(2.0*exp((q_1+q_2)/t_s)*abs(exp(q_1/t_s))*c_p*k_3*t_s)); +mtt_t1 = exp((2.0*q_1+q_2+q_3)/t_s)*abs(exp(q_1/t_s))^2*f_s^2*h_3*k_1; +mtt_t1 = mtt_t1+2.0*exp((2.0*q_1+q_2)/t_s)*abs(exp(q_1/t_s))^2*c_p*f_s*k_1*k_3*t_0; +mtt_t1 = mtt_t1-(2.0*exp((2.0*q_1+q_2)/t_s)*abs(exp(q_1/t_s))^2*c_p*f_s*k_1*k_3*t_s); +mtt_t1 = mtt_t1+2.0*exp((2.0*q_1)/t_s)*abs(exp(q_1/t_s))^2*c_p*k_1*k_2*k_3*t_0; +mtt_t1 = mtt_t1-(2.0*exp((2.0*q_1)/t_s)*abs(exp(q_1/t_s))^2*c_p*k_1*k_2*k_3*t_s); +mtt_t1 = mtt_t1-(exp((q_1+q_2+q_3)/t_s)*abs(exp(q_1/t_s))^2*f_s*h_1*k_1^2); +mtt_t1 = mtt_t1+2.0*exp((q_1+q_2+q_3)/t_s)*abs(exp(q_1/t_s))^2*f_s*h_3*k_1^2; +mtt_t1 = mtt_t1-(exp((q_2+q_3)/t_s)*abs(exp(q_1/t_s))^2*h_1*k_1^3); +mtt_t1 = mtt_t1+exp((q_2+q_3)/t_s)*abs(exp(q_1/t_s))^2*h_3*k_1^3; +mtt_t3 = 2.0*exp((2.0*q_1+q_2+q_3)/t_s); +mtt_t2 = exp((2.0*q_1+q_3)/t_s)*f_s^2+4.0*exp((2.0*q_1)/t_s)*c_0*f_s*k_3; +mtt_t3 = mtt_t3*sqrt((mtt_t2+2.0*exp((q_1+q_3)/t_s)*f_s*k_1+exp(q_3/t_s)*k_1^2)/exp(q_3/t_s)); +mtt_t4 = exp((q_1+q_2+q_3)/t_s); +mtt_t2 = exp((2.0*q_1+q_3)/t_s)*f_s^2+4.0*exp((2.0*q_1)/t_s)*c_0*f_s*k_3; +mtt_t4 = mtt_t4*sqrt((mtt_t2+2.0*exp((q_1+q_3)/t_s)*f_s*k_1+exp(q_3/t_s)*k_1^2)/exp(q_3/t_s)); +mtt_t1 = mtt_t1-(mtt_t3*abs(exp(q_1/t_s))*f_s*h_3*k_1)+mtt_t4*abs(exp(q_1/t_s))*h_1*k_1^2; +mtt_t5 = 2.0*exp((q_1+q_2+q_3)/t_s); +mtt_t2 = exp((2.0*q_1+q_3)/t_s)*f_s^2+4.0*exp((2.0*q_1)/t_s)*c_0*f_s*k_3; +mtt_t5 = mtt_t5*sqrt((mtt_t2+2.0*exp((q_1+q_3)/t_s)*f_s*k_1+exp(q_3/t_s)*k_1^2)/exp(q_3/t_s)); +mtt_t1 = mtt_t1-(mtt_t5*abs(exp(q_1/t_s))*h_3*k_1^2); +mtt_t1 = mtt_t1+exp((4.0*q_1+q_2+q_3)/t_s)*f_s^2*h_3*k_1; +mtt_t1 = mtt_t1+4.0*exp((4.0*q_1+q_2)/t_s)*c_0*f_s*h_3*k_1*k_3; +mtt_t1 = mtt_t1+2.0*exp((3.0*q_1+q_2+q_3)/t_s)*f_s*h_3*k_1^2; +mtt_t1 = mtt_t1+exp((2.0*q_1+q_2+q_3)/t_s)*h_3*k_1^3; +mtt_t2 = 2.0*exp((3.0*q_1+q_2)/t_s)*abs(exp(q_1/t_s))^2*c_p*f_s*k_3*t_0; +mtt_t2 = mtt_t2-(2.0*exp((3.0*q_1+q_2)/t_s)*abs(exp(q_1/t_s))^2*c_p*f_s*k_3*t_s); +mtt_t2 = mtt_t2+2.0*exp((3.0*q_1)/t_s)*abs(exp(q_1/t_s))^2*c_p*k_2*k_3*t_0; +mtta(2,1) = mtt_t1/(mtt_t2-(2.0*exp((3.0*q_1)/t_s)*abs(exp(q_1/t_s))^2*c_p*k_2*k_3*t_s)); +mtt_t1 = -(2.0*exp((2.0*q_1+2.0*q_2)/t_s)*abs(exp(q_1/t_s))*c_p*f_s^2*k_3*t_0); +mtt_t1 = mtt_t1+2.0*exp((2.0*q_1+2.0*q_2)/t_s)*abs(exp(q_1/t_s))*c_p*f_s^2*k_3*t_s; +mtt_t1 = mtt_t1-(4.0*exp((2.0*q_1+q_2)/t_s)*abs(exp(q_1/t_s))*c_p*f_s*k_2*k_3*t_0); +mtt_t1 = mtt_t1+4.0*exp((2.0*q_1+q_2)/t_s)*abs(exp(q_1/t_s))*c_p*f_s*k_2*k_3*t_s; +mtt_t1 = mtt_t1-(2.0*exp((2.0*q_1)/t_s)*abs(exp(q_1/t_s))*c_p*k_2^2*k_3*t_0); +mtt_t1 = mtt_t1+2.0*exp((2.0*q_1)/t_s)*abs(exp(q_1/t_s))*c_p*k_2^2*k_3*t_s; +mtt_t1 = mtt_t1-(exp((q_1+q_2+q_3)/t_s)*abs(exp(q_1/t_s))*f_s*h_2*k_1*k_2); +mtt_t1 = mtt_t1-(exp((q_2+q_3)/t_s)*abs(exp(q_1/t_s))*h_2*k_1^2*k_2); +mtt_t3 = exp((q_1+q_2+q_3)/t_s); +mtt_t2 = exp((2.0*q_1+q_3)/t_s)*f_s^2+4.0*exp((2.0*q_1)/t_s)*c_0*f_s*k_3; +mtt_t3 = mtt_t3*sqrt((mtt_t2+2.0*exp((q_1+q_3)/t_s)*f_s*k_1+exp(q_3/t_s)*k_1^2)/exp(q_3/t_s)); +mtt_t1 = mtt_t1+mtt_t3*h_2*k_1*k_2; +mtt_t2 = 2.0*exp((2.0*q_1+2.0*q_2)/t_s)*abs(exp(q_1/t_s))*c_p*f_s*k_3*t_0; +mtt_t2 = mtt_t2-(2.0*exp((2.0*q_1+2.0*q_2)/t_s)*abs(exp(q_1/t_s))*c_p*f_s*k_3*t_s); +mtt_t2 = mtt_t2+2.0*exp((2.0*q_1+q_2)/t_s)*abs(exp(q_1/t_s))*c_p*k_2*k_3*t_0; +mtta(2,2) = mtt_t1/(mtt_t2-(2.0*exp((2.0*q_1+q_2)/t_s)*abs(exp(q_1/t_s))*c_p*k_2*k_3*t_s)); +%b matrix% +mttb = zeros(2,1); +mtt_t1 = -(exp((q_1+q_3)/t_s)*abs(exp(q_1/t_s))*f_s); +mtt_t1 = mtt_t1-(2.0*exp(q_1/t_s)*abs(exp(q_1/t_s))*c_0*k_3); +mtt_t1 = mtt_t1-(exp(q_3/t_s)*abs(exp(q_1/t_s))*k_1); +mtt_t3 = exp((q_1+q_3)/t_s); +mtt_t2 = exp((2.0*q_1+q_3)/t_s)*f_s^2+4.0*exp((2.0*q_1)/t_s)*c_0*f_s*k_3; +mtt_t1 = mtt_t1+mtt_t3*sqrt((mtt_t2+2.0*exp((q_1+q_3)/t_s)*f_s*k_1+exp(q_3/t_s)*k_1^2)/exp(q_3/t_s)); +mtt_t4 = 2.0*exp(q_1/t_s)*abs(exp(q_1/t_s))*c_p*k_3*t_0; +mttb(1) = mtt_t1/(mtt_t4-(2.0*exp(q_1/t_s)*abs(exp(q_1/t_s))*c_p*k_3*t_s)); +mtt_t1 = -(exp((q_1+q_2+q_3)/t_s)*abs(exp(q_1/t_s))*f_s*k_1); +mtt_t3 = exp((q_1+q_2+q_3)/t_s); +mtt_t2 = exp((2.0*q_1+q_3)/t_s)*f_s^2+4.0*exp((2.0*q_1)/t_s)*c_0*f_s*k_3; +mtt_t3 = mtt_t3*sqrt((mtt_t2+2.0*exp((q_1+q_3)/t_s)*f_s*k_1+exp(q_3/t_s)*k_1^2)/exp(q_3/t_s)); +mtt_t1 = mtt_t1-(exp((q_2+q_3)/t_s)*abs(exp(q_1/t_s))*k_1^2)+mtt_t3*k_1; +mtt_t2 = 2.0*exp((2.0*q_1+q_2)/t_s)*abs(exp(q_1/t_s))*c_p*f_s*k_3*t_0; +mtt_t2 = mtt_t2-(2.0*exp((2.0*q_1+q_2)/t_s)*abs(exp(q_1/t_s))*c_p*f_s*k_3*t_s); +mtt_t2 = mtt_t2+2.0*exp((2.0*q_1)/t_s)*abs(exp(q_1/t_s))*c_p*k_2*k_3*t_0; +mttb(2) = mtt_t1/(mtt_t2-(2.0*exp((2.0*q_1)/t_s)*abs(exp(q_1/t_s))*c_p*k_2*k_3*t_s)); +%c matrix% +mttc = zeros(1,2); +mttc(1,2) = 1.0; +%d matrix% +mttd = zeros(1,1); ADDED mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_sspar.r Index: mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_sspar.r ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_sspar.r @@ -0,0 +1,55 @@ +%% Reduce steady-state parameter file (ReactorTF_sspar.r) +%% as siso_sspar ecxept that inputs/states have different meaning +%% Steady state for constant c_a, c_b and t=t_s and f=f_s + +%% Unit volume ReactorTF: +v_r := 1; + +%% Do the inputs first -- this avoids problems with reduce not +%% recognising that complicated expressions are zero + +%% The exponentials. +e_1 := e^(-q_1/t_s); +e_2 := e^(-q_2/t_s); +e_3 := e^(-q_3/t_s); + +%Steady-state input q needed to achieve steady-state t_s +q_s := -( + + (t_0-t_s)*c_p*f_s + + e_1*h_1*k_1*x1 + + e_2*h_2*k_2*x2 + + e_3*h_3*k_3*x1^2 + ); + +%% The input at steady-state +MTTu1 := q_s; + +%States (masses) +x1 := c_a*v_r; +x2 := c_b*v_r; + +%Thermal state +x3 := c_p*t_s*v_r; + +%Load up the vectors +MTTx1 := x1; +MTTx2 := x2; + +MTTy1 := c_b; +%MTTy2 := t_s; + +%% Finally, solve for the steady-state concentrations +%% Solve for ca - a quadratic. +a := k_3*e_3; %ca^2 +b := k_1*e_1 + f_s; %ca^1 +c := -c_0*f_s; + +c_a := (-b + sqrt(b^2 - 4*a*c))/(2*a); + +%% solve for c_b +c_b := c_a*k_1*e_1/(f_s+k_2*e_2); + + +END; + + ADDED mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_state.txt Index: mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_state.txt ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_state.txt @@ -0,0 +1,50 @@ +# -*-octave-*- Put Emacs into octave-mode +# State specification (ReactorTF_state.txt) +# Generated by MTT at Fri Mar 3 11:52:23 GMT 2000 +############################################################### +## Version control history +############################################################### +## $Id$ +## $Log$ +############################################################### + +## Reduce steady-state parameter file (ReactorTF_sspar.r) +## as siso_sspar ecxept that states/states have different meaning +## Steady state for constant c_a, c_b and t=t_s and f=f_s + +## Unit volume ReactorTF: +v_r = 1; + + +## The exponentials. +e_1 = exp(-q_1/t_s); +e_2 = exp(-q_2/t_s); +e_3 = exp(-q_3/t_s); + +## Solve for the steady-state concentrations +## Solve for ca - a quadratic. +a = k_3*e_3; #ca^2 +b = k_1*e_1 + f_s; #ca^1 +c = -c_0*f_s; + +c_a = (-b + sqrt(b^2 - 4*a*c))/(2*a); + +## solve for c_b +c_b = c_a*k_1*e_1/(f_s+k_2*e_2); + + +#States (masses) +x1 = c_a*v_r; +x2 = c_b*v_r; + +#Thermal state +#x3 = c_p*t_s*v_r; + +## Load up the states +mttx(1) = x1; +mttx(2) = x2; +mttx(3) = x3; + + + + ADDED mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_sympar.m Index: mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_sympar.m ================================================================== --- /dev/null +++ mttroot/mtt/lib/examples/Chemical/ReactorTF/ReactorTF_sympar.m @@ -0,0 +1,40 @@ +function sympar = ReactorTF_sympar(); +% sympar = ReactorTF_sympar(); +%System ReactorTF, representation sympar, language m; +%File ReactorTF_sympar.m; +%Generated by MTT on Thu Aug 24 14:45:51 BST 2000; +% +global ... +mtt_no_globals ; + sympar.a = 1; # ReactorTF + sympar.b = 2; # ReactorTF + sympar.c = 3; # ReactorTF + sympar.c_0 = 4; # ReactorTF + sympar.c_A = 5; # ReactorTF + sympar.c_B = 6; # ReactorTF + sympar.c_p = 7; # ReactorTF + sympar.e_1 = 8; # ReactorTF + sympar.e_2 = 9; # ReactorTF + sympar.e_3 = 10; # ReactorTF + sympar.f_s = 11; # ReactorTF + sympar.h = 12; # Rate + sympar.h_1 = 13; # ReactorTF + sympar.h_2 = 14; # ReactorTF + sympar.h_3 = 15; # ReactorTF + sympar.k = 16; # Rate + sympar.k_1 = 17; # ReactorTF + sympar.k_2 = 18; # ReactorTF + sympar.k_3 = 19; # ReactorTF + sympar.n = 20; # Rate + sympar.q = 21; # Rate + sympar.q_1 = 22; # ReactorTF + sympar.q_2 = 23; # ReactorTF + sympar.q_3 = 24; # ReactorTF + sympar.q_S = 25; # ReactorTF + sympar.rho = 26; # ReactorTF + sympar.t_0 = 27; # ReactorTF + sympar.t_s = 28; # ReactorTF + sympar.v_r = 29; # ReactorTF + sympar.x1 = 30; # ReactorTF + sympar.x2 = 31; # ReactorTF + sympar.x3 = 32; # ReactorTF