modelo cstr

16
Solución de Ecuaciones Diferenciales Ordinarias Ing. Martín Rivera Toledo 1. Problemas con valores iniciales Las ecuaciones diferenciales ordinarias no sólo es una de las partes más bellas de las matemáticas, sino que también es una herramienta esencial para modelar muchas situaciones físicas: el flujo de un reactivo en un reactor químico de tipo tubular, el cambio de temperatura en una barra inmersa en un fluido a menor temperatura, la respuesta dinámica y de control de un proceso, ... etc. La importancia de las ecuaciones diferenciales ordinarias en matemáticas aplicadas se debe al hecho que la mayor parte de las leyes científicas se expresan más fácilmente en términos de razones de cambio, por ejemplo, el enfriamiento de una aleta: ( 4 / 5 60 27 . 0 - - = T dt dT con su condición inicial 0 0 T T t = = Muchos sistemas físicos presentan ordenes de magnitud muy diferentes entre sus valores propios, esto provoca un comportamiento conocido como “rigidez” (stiff), por ejemplo: Código ejemplo 1 [ ] y A y = ' con = 2 1 y y y y la condición inicial = = 1 2 y 0 t y [] - - = 5 . 500 5 . 499 5 . 499 5 . 500 A FIGURA 1 cuya solución está dada por t t e e y 1000 5 . 0 5 . 0 5 . 1 5 . 1 - - - = dado que los valores propios son 1000 1 - = l y 1 2 - = l

Upload: claudio-ayala-bravo

Post on 03-Oct-2015

54 views

Category:

Documents


1 download

DESCRIPTION

Describe un modelo de un reactor continuamente agitado

TRANSCRIPT

  • Solucin de Ecuaciones Diferenciales Ordinarias Ing. Martn Rivera Toledo

    1. Problemas con valores iniciales Las ecuaciones diferenciales ordinarias no slo es una de las partes ms bellas de las matemticas, sino que tambin es una herramienta esencial para modelar muchas situaciones fsicas: el flujo de un reactivo en un reactor qumico de tipo tubular, el cambio de temperatura en una barra inmersa en un fluido a menor temperatura, la respuesta dinmica y de control de un proceso, ... etc. La importancia de las ecuaciones diferenciales ordinarias en matemticas aplicadas se debe al hecho que la mayor parte de las leyes cientficas se expresan ms fcilmente en trminos de razones de cambio, por ejemplo, el enfriamiento de una aleta:

    ( ) 4/56027.0 --= TdtdT

    con su condicin inicial 0 0 TTt == Muchos sistemas fsicos presentan ordenes de magnitud muy diferentes entre sus valores propios, esto provoca un comportamiento conocido como rigidez (stiff), por ejemplo: Cdigo ejemplo 1

    [ ]yAy =' con

    =

    2

    1

    yy

    y

    y la condicin inicial

    ==

    12

    y 0t y [ ]

    -

    -=

    5.5005.4995.4995.500

    A FIGURA 1

    cuya solucin est dada por

    tt eey 10005.0

    5.05.15.1 --

    -

    +

    = dado que los valores propios son 10001 -=l y 12 -=l

  • Estructura para resolver ODES con MATLAB

    Tipos de rutinas

  • Problemas

    1. La profundidad h del agua al vaciarse un tanque cilndrico vertical por un agujero en su fondo est descrita por

    ghAA

    dtdh

    w

    20-= con 22.32 sft

    g =

    en donde Aw y Ao son las reas transversales del tanque y del agujero, respectivamente. Resuelva la ecuacin con una profundidad inicial del agua de 20 ft, Aw = 50 ft2 y Ao = 0.5 ft2. En qu momento queda vaco el tanque?

    2. Resuelva la ecuacin diferencial ordinaria de segundo orden

    )2cos(3)2(5422

    ttsenxdt

    xd+-=+ con las condiciones iniciales 1)0( -=x y 1)0(' =x

    3. Resuelva el sistema de ecuaciones diferenciales ordinarias siguiente

    tydtdx

    =+ 04 =+dtdy

    x con las condiciones iniciales 1)0( =x y 2)0( =y

    Ejemplo 2

    El modelo matemtico de un CSTR descrito por Shacham, Brauner y Cutlip (1994) Chem. Eng. Educ. est dado por las expresiones siguientes V dCa/dt = Fo (Cao - Ca) V k Ca r Cp V dT/dt = r Cp Fo (To - T) l V k Ca U A (T - Tj) rj Cpj Vj dTj/dt = rj Cpj Fj (Tjo - Tj) + U A (T - Tj) donde

    k = a exp [ -E / (R T)]

    PARMETRO VALOR

    Fo 40 ft3/h Cao 0.50 mol/ft3

    V 48 ft3 Fj 49.9 ft3/h R 1.99 BTU/mol R Vj 3.85 ft3 a 7.08*1010 1/h E 30000 BTU/mol

    U 150 BTU/ hft2 F l -30000 BTU/mol A 250 ft2

    Tjo 530 R To 530 R Cp 0.75 BTU/lb R Cpj 1.0 BTU/lb R r 50 lb/ft3 r j 62.3 lb/ft3

  • Reporte a. Los tres estados estacionarios b. La simulacin dinmica usando

    los valores nominales de CA, T y Tj en el estado estacionario

    c. La simulacin dinmica usando los valores nominales de CA, T 5 % y Tj en el estado estacionario

    d. La simulacin dinmica usando un valor de Fj 5% los valores

    nominales de CA, T y Tj en el estado estacionario

    e. La simulacin dinmica usando un valor de F0 5% los valores nominales de CA, T y Tj en el estado estacionario

    Solucin a. Estados estacionarios: Cdigo i. Ca = 0.0591 mol/ft3 T = 651.0596 R Tj = 641.7920 R ii. Ca = 0.4717 mol/ft3 T = 537.1114 R Tj = 536.5670 R iii. Ca = 0.2437 mol/ft3 T = 600.1893R Tj = 594.8160 R La simulacin dinmica, partiendo de las condiciones iniciales es la siguiente Cdigo

  • b. La simulacin dinmica usando los valores nominales de CA, T y Tj en el estado estacionario Ca = 0.2437 mol/ft3 T = 600.1893R Tj = 594.8160 R es

  • d. La simulacin dinmica usando un valor de Fj 5% los valores nominales de CA, T y Tj en el estado estacionario

    e. La simulacin dinmica usando un valor de F 5% los valores nominales de CA, T y Tj en el estado estacionario

  • Problemas de Tarea [Para entregar el jueves 1 4 de Julio de 2005]

    Problema 1

    Para la ecuacin diferencial siguiente

    0)1( 2 =-= yttdtdy

    Se tiene la solucin analtica dada por 61

    23

    23+-=

    tty Trace las grficas para

    las respuestas de las soluciones analtica y numrica, Problema 2

    El modelo matemtico de un circuito elctrico se da por la ecuacin

    tQdtdQ

    dt

    Qd10sen245065.0 2

    2=++

    Con 0 en e 0 === tdtdQ

    IQ Exprselo como un sistema de dos ecuaciones de primer orden y trace su respuesta

  • 2. Solucin de sistemas de ecuaciones diferenciales y algebraicas [DAES]

    La forma ms general de un DAE es 0)',,( =yytF en donde F puede ser singular, un caso especial de una representacin semi-implcita de un DAE o un ODE con restricciones es

    ),,(' zxtfx =

    Para la rutinas de solucin de ecuaciones diferenciales ordinarias y algebraicas en MATLAB, se considera una representacin con la forma siguiente

    [ ] ),(),( ytfdt

    ydytM = en donde [ ]),( ytM es la matriz de masa,

    la cual tiene valores de 1 en la diagonal principal si le corresponde una ecuacin diferencial, de lo contrario tendr un valor de cero para una ecuacin algebraica, por ejemplo, para el sistema DAE siguiente: Ejemplo 1 Trace la respuesta del sistema algebro-diferencial siguiente

    31 y

    dtdy

    = 02 =

    dtdy

    tyyyy --+= )1(0 2321 con las condiciones iniciales t = 0 y1 = 1, y2 = 0 & y3 = 1 tome en cuenta que su correspondiente

    matriz de masa ser [ ]

    =

    000010001

    ),( ytM

    Solucin del problema DAE 1 Cdigo

    ),,(0 zxtg=

  • Problemas de tarea

    Problema 3. Reactor de flujo continuo no isotrmico

    La reaccin orgnica elemental irreversible en fase lquida

    A + B > C

    se llevar a cabo en un reactor de flujo continuo, las especies A & B se alimentan al reactor a una temperatura de 50C y 20C, respectivamante, con un flujo de 10 mol/min cada una

    Reporte: A. Las concentraciones de los componentes A, B, C y la temperatura a la salida para CSTR con un

    volumen de 100 dm3 para los casos: a. Con enfriamiento a travs de una interfase metlica con un coeficiente UA = 1000 cal / min K y una

    temperatura ambiente de 50C. b. Adiabtico

  • Datos: k = 0.01 dm3 / mol min a 300 K con Ea = 10 kcal/mol Vo = 50 dm3 Q = 1 dm3/min CAo = CBo = 10 mol / dm3 CpA = 15 cal/ mol K CpB = 15 cal/ mol K CpC = 30 cal/ mol K HAo = -20 kcal/ mol HBo = -15 kcal/ mol HCo = -41 kcal/ mol Solucin

    1. Representacin esquemtica y modelo

    BAA CkCr -= AB rr = AC rr -=

    A. CSTR [Cdigo MATLAB]

    AAAA r

    CCdt

    dC+

    -=

    t0

    BBBB r

    CCdt

    dC+

    -=

    t0

    CcCC r

    CCdt

    dC+

    -=

    t0

    con QV=t

    ( ) ( ) ( )[ ] ( )( )

    CCBBAA

    ABBBAAAa

    CpCCpCCpC

    rHrxnTTCpCTTCpCV

    TTUA

    dtdT

    ++

    -D-+-+-+-

    =0000

    1t

    CI 000 C 0 CCBBAA CCCCCt ==== 0TT =

  • Problema 4. Flujo por gravedad [Cdigo]

    En cunto tiempo se vaciar el tanque? Formule sus modelos y resulvalos a travs del uso de las herramientas matemticas de MATLAB Caractersticas del sistema:

    L1: 34 m L2: 100 m D: 1 acero comercial ced. 40 ZA: 37 m

    Kentrada: 0.5 Ksalida: 1.0

    L/D codo:30 e: 1.5*10-4

    Dint: 1.049 in Dext: 1.315 in

    De la ecuacin diferencial de balance de masa se tiene

    BA mmdtdm && -= y tomando en cuenta que se pueden expresar los flujos en masa

    en funcin de los flujos volumtricos AA Qm r=& , BB Qm r=& & 42 ZD

    m Ap

    =

    sta se simplifica como ( )

    2

    4

    A

    BA

    D

    QQdtdZ

    p

    r -= y su condicin inicial t = 0 Z = ZA

    Considerado una condicin quasi-estacionaria para el balance de energa mecnica entre los puntos A & B la ecuacin de Bernoulli ser

    ( )

    +++=- salent

    BB KKDL

    fgc

    vgc

    gZZ1

    2

    2

    con la ecuacin de Colebrook-White

    +-=

    fDf Re51.2

    7.3log0.2

    1 e para calcular el factor de friccin y el nmero de Reynolds como

    mrBDv=Re y finalmente el flujo volumtrico

    4

    2BvDQ

    p=

  • Bibliografa 1. Ascher, U.M. & Petzold, L.R. (1998), Computer Methods for Ordinary Differential Equations

    and Diferencia-Algebraic Equations, Ed. SIAM 2. Gerald,C.F. & Wheatley, P.O. (1999), Anlisis Numrico con Aplicaciones 6a Edicin

    Prentice-Hall Mxico

    3. Zill, D. (1997) ecuaciones Diferenciales con Aplicaciones de Modelado, 6 Edicin , International Thomson Editor

    4. Seinfield, J. H. , Lapidus, L. & Hwang, M. (1970) Review of Numerical Integration

    Techniques for Stiff Ordinary Differential Equations, Ind. Eng. Chem. Fundam. 9(2) pp.266-275

    5. Flores, T. (2002), http://200.13.98.241/~antonio

    Cdigo ejemplo 1 regresar % inicio del archivo odestiff.m % archivo para resolver un par de ecuaciones diferenciales % ordinarias de primer orden con valores iniciales % y' = [A] y con ci t=0 y=y0 % donde A=[-500.5 499.5; % 499.5 -500.5]; % y = [y1 y2]' & y0 = [2 1]' % % inicio de la funcion odestiff %-------------------------------- function odestiff %------------------------------ -- clc; clear all; format compact; tspan = linspace(0,0.1); y0=[2 1]; [t,y]=ode45(@edostiff1,tspan,y0) y1=y(:,1);y2=y(:,2); y1a = 1.5*exp(-tspan)+0.5*exp(-1000*tspan);

    y2a = 1.5*exp(-tspan)-0.5*exp(-1000*tspan); figure(1),plot(t,y1,t,y2,'--'),xlabel('t'),ylabel('y') legend('y_{1}','y_{2}') figure(2),plot(tspan,y1a,tspan,y2a,'--'),xlabel('t'),ylabel('y') legend('y_{1}','y_{2}') % fin de la funcion odestiff % inicio de la funcion de edostiff1 %-------------------------------- function dydt = edostiff1(t,y) %-------------------------------- A=[-500.5 499.5; 499.5 -500.5]; dydt = A*y; % fin de la funcion de edostiff % fin del archivo odestiff.m

  • Cdigo ejemplo 2 regresar % inicio del archivo pshacham.m clc; clear all; format compact; format long; global F0 Ca0 V Fj R Vj alfa E U lambda A Tj0 T0 Cp Cpj rho rhoj % parametros del modelo F0=40; % ft3/h Ca0=0.50*1.1; %mol/ft3 V=48; %ft3 Fj=49.9; %ft3/h R=1.99; %BTU/mol-R Vj=3.85; %ft3 alfa=7.08e10; % 1/h E=3e4; %BTU/mol U=150; %BTU/ h-ft2-R lambda=-3e4; %BTU/mol A=250; %ft2 Tj0=530; %R T0=530; %R Cp=0.75; %BTU/bl-R Cpj=1.0; %BTU/bl-R rho=50; %lb/ft3 rhoj=62.3; %lb/ft3 x0=[Ca0,T0,Tj0]; [x,fval,flag]=fsolve('eshacham',x0) Ca=x(1) T=x(2)

    Tj=x(3) % fin del archivo pshacham.m % inicio del archivo eshacham.m function [f]=eshacham(x) global F0 Ca0 V Fj R Vj alfa E U lambda A Tj0 T0 Cp Cpj rho rhoj Ca=x(1); T=x(2); Tj=x(3); % reasignacion de variables RT=R*T; k=alfa*exp( -E/RT); VkCa=V*k*Ca; rhoCpF0=rho*Cp*F0; lambdaVkCa=lambda*VkCa; UA=U*A; rhoCpV=rho*Cp*V; rhojCpjVj=rhoj*Cpj*Vj; rhojCpjFj=rhoj*Cpj*Fj; % expresiones del balance de masa y energia f(1)=(F0*(Ca0-Ca)-VkCa)/V; f(2)=(rhoCpF0*(T0-T)-lambdaVkCa-UA*(T -Tj))/rhoCpV; f(3)=(rhojCpjFj*(Tj0-Tj)+UA*(T-Tj))/rhojCpjVj; % fin del archivo eshacham.m

    Cdigo para respuesta dinmica del CSTR regresar % inicio del archivo pshacham.m clc; clear all; format compact; format long; global F0 Ca0 V Fj R Vj alfa E U lambda A Tj0 T0 Cp Cpj rho rhoj % parametros del modelo F0=40; % ft3/h Ca0=0.50; %mol/ft3 V=48; %ft3 Fj=49.9; %ft3/h R=1.99; %BTU/mol-R Vj=3.85; %ft3 alfa=7.08e10; % 1/h E=3e4; %BTU/mol U=150; %BTU/ h-ft2-R lambda= -3e4; %BTU/mol A=250; %ft2 Tj0=530; %R T0=530; %R Cp=0.75; %BTU/bl-R

    Cpj=1.0; %BTU/bl-R rho=50; %lb/ft3 rhoj=62.3; %lb/ft3 Ca10 = 0.2437; % mol/ft3 T10 = 600.1893;%R Tj10 = 594.8160;%R %tr=linspace(0,10); % h tiempo de operacion tr=[0,10]; x0=[Ca10,T10,Tj10]; [t,x]=ode15s('shacham',tr,x0); Ca=x(:,1); T=x(:,2); Tj=x(:,3); figure(1) plot(t,Ca,'o-') grid xlabel('Tiempo [ h ]') ylabel('Ca [ lbmol/ft3 ]') title('Concentracion vs Tiempo') figure(2) plot(t,T,'o-',t,Tj,'*-')

  • grid legend('T','Tj') xlabel('Tiempo [ h ]') ylabel('T [ R ]') title('Temperatura vs Tiempo') % fin del archivo pshacham.m % inicio del archivo shacham.m function [dfdt]=shacham(t,x) global F0 Ca0 V Fj R Vj alfa E U lambda A Tj0 T0 Cp Cpj rho rhoj Ca=x(1); T=x(2); Tj=x(3); % reasignacion de variables RT=R*T; k=alfa*exp(-E/RT);

    VkCa=V*k*Ca; rhoCpF0=rho*Cp*F0; lambdaVkCa=lambda*VkCa; UA=U*A; rhoCpV=rho*Cp*V; rhojCpjVj=rhoj*Cpj*Vj; rhojCpjFj=rhoj*Cpj*Fj; % expresiones del balance de masa y energia dCadt=(F0*(Ca0-Ca)-VkCa)/V; dTdt=(rhoCpF0*(T0-T)-lambdaVkCa-UA*(T -Tj))/rhoCpV; dTjdt=(rhojCpjFj*(Tj0-Tj)+UA*(T-Tj))/rhojCpjVj; dfdt=[dCadt dTdt dTjdt]'; % fin del archivo shacham.m

    Cdigo para resolver el DAE regresar % inicio del archivo daesex1.m % ---------------------- function daesex1 % ---------------------- clc; clear all; format compact; % declaracion de la matriz de masa mass_matrix = [1 0 0; 0 1 0 ; 0 0 0]; % condiciones iniciales y0 = [1; 0 ; 1]; % intervalo de integracion tspan = [0 10]; % declaracion de los parametros para odeset options = odeset ('Mass',mass_matrix,'RelTol',1e-4,'AbsTol',... [1e-6 1e-10 1e-6]); % integracion del conjunto DAE [t,y] = ode15s (@daes1,tspan,y0,options); % trazo de los resultados figure(1), plot(t,y), xlabel('tiempo'), ylabel('y'), legend('y_{1}','y_{2}','y_{3}',3) title ('solucion del DAE') % ----------------------------- function dydt_g = daes1 (t,y) % ----------------------------- %reasignacion de variables y1 = y(1); y2 = y(2); y3 = y(3); % declaracion de las ecuaciones diferenciales % y algebraicas dy1dt = y3; dy2dt = 0; g = y1*y2 - y3*(1-y2)-t; dydt_g = [dy1dt dy2dt g]'; % fin del archivo daesex1.m

    Cdigo MATLAB caso CSTR dinmico regresar % inicio del archivo pcstrni.m % problema 9.5b fogler pag 575, 3a ed % septiembre 2004 martin rivera toledo uia clc; clear all; format compact; global Cpa Cpb Cpc ha0 hb0 hc0 Tr R kTr Tk Ea... Ca0 Cb0 Cc0 Ta0 Tb0 Q UA Ta V tau %------------------------------------------------------ % datos del problema %------------------------------------------------------ Cpa = 15; % cal/ mol K Cpb = 15; % cal/ mol K Cpc = 30; % cal/ mol K ha0 = -20e3;% % cal/ mol hb0 = -15e3;% cal/ mol hc0 = -41e3;% cal/ mol Tr = 273; % K R = 1.982; % cal / mol K Ea = 10e3; % cal/ mol Fa0 = 10; % mol/min Fb0 = 10; % mol/min Fc0 = 0; % mol/min Ta0 = 20 + 273.15; % K Tb0 = 50 + 273.15; % K Q = 1; % dm3/min %UA = 1000; % cal / min K UA=0; V = 100; % dm3 tau =V/Q; % min tiempo de residencia Ta = 50 + 273.15; % temperatura ambiente Tk=300;%K temperatura del coeficiente cinetico

  • kTr=0.01;% dm3 / mol min %------------------------------------------------------------ % condiciones iniciales del sistema %------------------------------------------------------------ Ca0 = Fa0/Q;% mol Cb0 = Fb0/Q;% mol Cc0 = Fc0/Q;% mol T0 = 25 + 273.15; % K x0 = [Ca0 Cb0 Cc0 T0]; %------------------------------------------------------ % calculo de la operacion en regimen dinamico %------------------------------------------------------ t0 = linspace(0,10); [t xr] = ode15s('cstrni',t0,x0); Ca=xr(:,1); Cb=xr(:,2); Cc=xr(:,3); T=xr(:,4); % reasignacion de variables %------------------------------------------------------ % respuesta grafica %------------------------------------------------------ figure(1), plot(t,Ca,t,Cb,t,Cc) xlabel ('tiempo [min]'),ylabel ('Ci [ mol i /dm^{3}]') legend ('C_{A}','C_{B}','C_{C}') figure(2), plot(t,T) xlabel ('tiempo [min]'),ylabel ('Temperatura [ K ]') % fin del archivo pcstrni.m % inicio del archivo cstrni.m % problema 9.5b fogler pag 575, 3a ed % septiembre 2004 martin rivera toledo uia %------------------------------------------------------ function [dfdt]=cstrni(t,x) %------------------------------------------------------ global Cpa Cpb Cpc ha0 hb0 hc0 Tr R kTr Tk Ea... Ca0 Cb0 Cc0 Ta0 Tb0 Q UA Ta V tau Ca=x(1 ); Cb=x(2); Cc=x(3); T=x(4); % reasignacion de variables % Qr = UA*(Ta-T); % remocion de calor CiCpi = Ca*Cpa+Cb*Cpb+Cc*Cpc; dhr0 = hc0-(ha0+hb0);% calor de reaccion a Tr dcp = Cpc-(Cpa+Cpb); % diferencia de capacidad calorifica dhr = dhr0+dcp*(T -Tr); % calor de reaccion a la temperatura de reaccion k = kTr*exp(Ea/R*(1/Tk-1/T)); % coeficiente cinetico a la temperatura de reaccion %------------------------------------------------------ % expresiones de rapidez %------------------------------------------------------ ra = -k*Ca*Cb; % rapidez de reaccion para componente A rb = ra; % rapidez de reaccion para componente B

    rc = -ra; % rapidez de reaccion para componente C %------------------------------------------------------ % ecuaciones del modelo %------------------------------------------------------ dCadt = (Ca0-Ca)/tau + ra; % balance de masa para especie A dCbdt = (Cb0-Cb)/tau + rb; % balance de masa para especie B dCcdt = (Cc0-Cc)/tau + rc; % balance de masa para especie C dTdt = ( Qr/V + (Ca0*Cpa*(Ta0 -T) + Cb0*Cpb*(Tb0 -T))/tau... + (-dhr)*(-ra) ) / CiCpi; % balance de energia %dTdt = 0; %------------------------------------------------------ % vector resultante de ecuaciones diferenciales %------------------------------------------------------ dfdt=[dCadt dCbdt dCcdt dTdt]'; % fin del archivo cstrni.m Codigo flujo por gravedad [regresar] % inicio del archivo Eetanque.m %---------------------- function eetanque %---------------------- % programa principal para la respuesta dinamica del modelo % de flujo por gravedad % elaborado por martin rivera % clc;clear all; format compact; %declaracion de variables globales A B C ... etc global Da Db L h Qa Qb E visc ro g gc %---------------------------------------------------- % declaracion de los parametros del sistema %---------------------------------------------------- Da = 1.0; %m diametro del tanque Db = 0.05; %m diametro del tanque L = 7; %m longitud del tubo de descarga E = 4.921e-4;%m rugosidad absoluta visc = 0.001;%kg /m s viscosidad del fluido ro = 998.2; %kg/m3 densidad del fluido g = 9.81; %m/s2 aceleracion de la gravedad gc = 9.81; %kgm/s2/kgf factor conversion gravitatorio a absoluto h = 3; %m altura del nivel del liquido del tanque Qa = 0; %m3/s flujo volumetrico de alimentacion %----------------------------------------------------

  • % definicion de l a matriz de masa %---------------------------------------------------- mass_matrix=eye(3); mass_matrix(2,2)=0;mass_matrix(3,3)=0; abstolv(1:3)=1e-6; % vector de tolerancia absoluta para las variables options = odeset ('Mass',mass_matrix,'RelTol',1e-4,'AbsT ol',abstolv); %---------------------------------------------------- % condiciones iniciales %---------------------------------------------------- h0=3; Q0=0.01; f0=0.03; x0=[h0, Q0, f0]; % condiciones iniciales tr=linspace(0,250); % definicion del tiempo de integracion %---------------------------------------------------- [t,x]=ode15s(@ode_tanque,tr,x0,options); %---------------------------------------------------- h=x(:,1); Q=x(:,2); f=x(:,3); figure(1), plot(t,h) xlabel ('tiempo [ s ]'), ylabel ('altura nivel [m]') title('nivel tanque vs tiempo') figure(2), plot(t,Q) xlabel ('tiempo [ s ]'), ylabel ('Q [m^{3}/s]') title('flujo volumetrico vs tiempo') figure(3), plot(t,f) xlabel ('tiempo [ s ]'), ylabel ('factor de friccion ') title('factor de friccion vs tiempo ') %fin del archivo dtanque.m % inicio del archivo ode_tanque.m %---------------------------------------------------- function [dfdt_g]= ode_tanque(t,x) %---------------------------------------------------- %declaracion de variables globales A B C ... etc global Da Db L h Qa E visc ro g gc % reasignacion de variables originales var(i)=x(i); h = x(1); % altura del nivel del liquido Qb=x(2); % flujo columetrico fb=x(3); % factor de friccion % calculo del numero de Reynolds Re=4*Qb*ro/(pi*Db*visc); Er=E/Db; % rugosidad relativa % expresiones del modelo f(i) = expresion; dhdt = 4*(Qa - Qb)/(pi*Da^2); % balance de masa g1 = (h + L)*g/gc - 8*Qb^2*(1+fb*L/Db)/(pi^2*gc*Db^4);% balance de energia mecanica

    %g2 = 1/fb^0.5+2*log10(E/(3.7*Db)+2.51*pi*Db*visc/(4*Qb*ro*fb^0.5)); % colebrook-white g2=10-(3.7*fb^0.5*Re/(Er*fb^0.5*Re+3.7*2.51))^(2.0*fb^0.5); dfdt_g = [dhdt g1 g2]'; % fin del archivo ode_tanque.m