[scilab-Users] No reaction
Adrien Vogt-Schilb
vogt at centre-cired.fr
Mon Oct 31 23:40:04 CET 2011
Hi Jaundre Venter
your code runs just fine
you just ploted y(9) and y(8) instead of y(9,:) and y(8,:) !
it happens that when M is a matrix, say a 3x4 matrix, things like M($),
M(1), M(7) or M([1 3 5 9]) are legal scilab statements, so you don't
have any error message.
see the documentation: help extraction
*scilab team*, maybe you could put an option for displaying warnings
when tables are accessed with less arguments than their dimensions, what
do you think?
On 31/10/2011 21:10, Jaundre Venter wrote:
> Hi Adrien
>
> Sorry for late response but had some issues on other projects that i
> had to attend.
>
> i am still getting no reactions what so ever for the last three
> curves. see attached the new code. i don't know it is showing 0 or at
> the initial values! i have checked the mass balance if some input
> values are wrong that is causing the no reaction but the constant etc
> is correct.
>
> On Thu, Oct 6, 2011 at 2:07 PM, Adrien Vogt-Schilb
> <vogt at centre-cired.fr <mailto:vogt at centre-cired.fr>> wrote:
>
> Hi
>
> Maybe you should look at x (the output of ode) without ploting it.
> That way you'll make sure if the problem comes from the plot or not
>
> Can you attach a file with the new code?
>
>
> On 06/10/2011 10:00, Jaundre Venter wrote:
>> Hi
>>
>> okay i have made the changes and the reaction curves are looking
>> better but for some reason i still get no reaction on the last
>> three curves. It is just showing a straight line. can it be that
>> i have choosen to plot the wrong type of graph? Maybe because of
>> a time value or to much ODE"s?
>>
>> On Wed, Oct 5, 2011 at 10:24 PM, Jaundre Venter
>> <jaundreventer at gmail.com <mailto:jaundreventer at gmail.com>> wrote:
>>
>> Thank you very much Adrien.
>>
>> always nice if someone can explain to you where your problems
>> are and why. Thanks
>>
>> Was there any other problems you saw that i have to be aware of?
>>
>>
>> On Wed, Oct 5, 2011 at 5:38 PM, Adrien Vogt-Schilb
>> <vogt at centre-cired.fr <mailto:vogt at centre-cired.fr>> wrote:
>>
>> Hi
>>
>> When you use ode, it's ok, if say, dx(1) depends on dx(4).
>> but you still have say that to scilab properly, something
>> like:
>>
>> function dx = f(t,x)
>> dx(6)=((F+Fab+Floss)*(x(2))), // culture Volume V
>> dx(1)=(((mu)*(x(1)))-(((x(1))/(x(6)))*((dx(6))))*(CO)*(x(2)))),
>> //biomass concentration X
>> and so one
>>
>> note that because i had to know dx(6) to compute dx(1) i
>> just computed dx(6) before dx(1): no problem. and note
>> that i used x(2). The idea of the ode is to compute dx
>> from x!
>>
>> make sure you understand that using dx_6 instead of
>> dx(6), your ODE solver is not updating dx_6 at each time
>> step, it is using the initial and only dx_6 forever.
>> That's why your last varaibles do not move, somehow their
>> speeds are never updated.
>> for instance, dx(6)=((F+Fab+Floss)*(HION)), // culture
>> Volume V is constance in time (i guess)
>>
>>
>>
>> On 05/10/2011 15:00, Jaundre Venter wrote:
>>> Hi Adrien
>>>
>>> i am new to SCILAB! I just want to say that.
>>>
>>> Yes dx_1 is equal to dx1 but the only reason why i have
>>> programmed it like that is becasue the ODE's looks as
>>> follows - (see word file attached that can explain the
>>> ODE"s better. with regards to the HION and CO it
>>> actually refers to [H+] and CO2 as you said. the only
>>> reason why n multiplied HION and CO wit hsome ODE's is
>>> because some does have a influence on some ODE's.
>>>
>>> This is the first time i am working with SCILAB thus i
>>> am struggling to understand how SCILAB wants the code so
>>> that all 9 ODE's are shown and so that the ODE's that is
>>> having a effect on other does happen. I though if you
>>> refer to dx(1) for example in a other ODE it means that
>>> SCILAb will know the dx(1) has a influence on the other ODE.
>>>
>>> The main goal of my assesment is to deliver similar
>>> results obtained from MATLAB on SCILAB. all i got was
>>> how the grpahs should look like and the ODE's.
>>>
>>> On Wed, Oct 5, 2011 at 2:43 PM, Adrien Vogt-Schilb
>>> <vogt at centre-cired.fr <mailto:vogt at centre-cired.fr>> wrote:
>>>
>>> Hi
>>>
>>> Try to isalote your problem
>>> if i understood well, the following code
>>>
>>>
>>> // initial values
>>> x0=[0.1, 1e-5, 0, 15, 1.16, 100,0,297,0.5]';
>>> t=0:0.005:400;
>>> y=ode(x0, 0, t, f);
>>>
>>> returns y such that sum(y(6:9,:)>x0) == 0 ?
>>> if this is true, we do not need the plots to solve
>>> the problem
>>> can you check that ?
>>>
>>> I believe the f function is erroneous.
>>> It seems that dx_1 should be equal to dx(1) at each
>>> time step, and that HION should be equal to x(2) at
>>> each time step, etc.
>>>
>>> in other terms, some of your phisical variables seem
>>> to be represented by to variables (i am guessing
>>> HION=[H+] and x(2)=[H+] also) but scilab does not
>>> have any chance to know that.
>>> if my guess is right, you have to rewrite the f
>>> function in a way that eliminates all references to
>>> HION, dx_1, dx_6 and so on
>>>
>>>
>>> On 05/10/2011 14:27, Jaundre Venter wrote:
>>>> Hi all
>>>>
>>>> Can someone please explain to me the following:
>>>>
>>>> I am busy with a project of simulation the
>>>> production of penicillin in a bio reactor. Now i
>>>> have 9 ODE's which i want to simulate.
>>>>
>>>> now for some reason the last three graphs i am
>>>> getting doesn't show any response what so ever. i
>>>> am using the following code.
>>>>
>>>> dx(1)=(((mu)*(x(1)))-(((x(1))/(x(6)))*((dx_6)))*(CO)*(HION)),
>>>> //biomass concentration X
>>>> dx(2)=((z*(((mu)*(x(1)))-(((F)*(x(1)))/(x(6)))))+(QQ)),
>>>> //hydrogen ion concentration H+
>>>> dx(3)=((((mupp)*(x(1)))-((K)*(x(3)))-((x(3))/(x(6)))*(dx_6))*(HION)),
>>>> //Penicilin concentration P
>>>> dx(4)=((-((mu)/(Yxs))*(x(1)))-(((mupp)/(Yps))*(x(1)))-((mx)*(x(1)))+((Fsf)/(x(6)))-((x(4)/(x(6)))*(dx_6))),
>>>> //Substrate concentration S
>>>> dx(5)=(-(((mu)/(Yxo))*(x(1)))-(((mupp)/(Ypo))*(x(1)))-(((mo))*(x(1)))+((kla)*(cll-(x(5))))-(((x(5))/(x(6)))*(dx_6))),
>>>> //dissolved oxygen
>>>> dx(6)=((F+Fab+Floss)*(HION)), // culture Volume V
>>>> dx(7)=(((rq1)*(dx_1)*(x(6)))+(rq2)*(x(1))*(x(6))),
>>>> //Heat generation Qrxn
>>>> dx(8)=((((F)/(sf))*(Tf-(x(8))))+(1/((x(6))*(pcp)))*(QT)),
>>>> // Temperature T
>>>> dx(9)=(((a1)*(dx_1))+((a2)*(x(1)))+(a3)), // CO2
>>>> evolution, CO2
>>>> endfunction
>>>>
>>>> now when i ask for plotting the graphs i am using
>>>> the following.:
>>>>
>>>> // initial values
>>>> x0=[0.1, 1e-5, 0, 15, 1.16, 100,0,297,0.5]';
>>>> t=0:0.005:400;
>>>> y=ode(x0, 0, t, f);
>>>>
>>>> // the plots of each variable
>>>> da.title.text="BIOMASS CONCENTRATION"
>>>> da.x_label.text="Time, hours";
>>>> da.y_label.text="X,g/l ";
>>>> scf(1);clf; //Opens and clears figure 1
>>>> plot(t,y(1,:))
>>>>
>>>> da.title.text="HYDROGEN ION H+ CONCENTRATION"
>>>> da.y_label.text="H+,mol/l ";
>>>> scf(2);clf; //Opens and clears figure 2
>>>> plot(t,y(2,:))
>>>>
>>>> da.title.text="PENICILLIN CONCENTRATION"
>>>> da.y_label.text="P,g/l ";
>>>> scf(3);clf; //Opens and clears figure 3
>>>> plot(t,y(3,:))
>>>>
>>>> da.title.text="SUBSTRATE CONCENTRATION"
>>>> da.y_label.text="S,g/l ";
>>>> scf(4);clf; //Opens and clears figure 4
>>>> plot(t,y(4,:))
>>>>
>>>> da.title.text="DISSOLVED OXYGEN CONCENTRATION"
>>>> da.y_label.text="C_l,g/l ";
>>>> scf(5);clf; //Opens and clears figure 5
>>>> plot(t,y(5,:))
>>>>
>>>> da.title.text="CULTURE VOLUME"
>>>> da.y_label.text="V,l";
>>>> scf(6);clf; //Opens and clears figure 6
>>>> plot(t,y(6,:))
>>>>
>>>> da.title.text="HEAT OF REACTION"
>>>> da.y_label.text="Qrxn,cal";
>>>> scf(7);
>>>> clf; //Opens and clears figure 7
>>>> plot(t,y(7),:)
>>>>
>>>> da.title.text="TEMPERATURE"
>>>> da.y_label.text="T,Kelvin";
>>>> scf(8);
>>>> clf; //Opens and clears figure 8
>>>> plot(t,y(8),:)
>>>>
>>>> da.title.text="CO2 EVOLUTION"
>>>> da.y_label.text="CO2,mmol/l/";
>>>> scf(9);
>>>> clf; //Opens and clears figure 9
>>>> plot(t,y(9),:)
>>>>
>>>> Am i doing something wrong? before the ODE's i have
>>>> just programmed the initial values and constants :
>>>>
>>>> funcprot(0);
>>>> function dx = f(t,x)
>>>> K1=1.0e-10 //mol/l
>>>> K2=7.0e-05 //mol/l
>>>> Kx=0.15 // Contois saturation constant, g/l
>>>> Kox=2e-02 // oxygen limitation constant
>>>> mux=0.092 // maitenance coefficient on
>>>> subsrate
>>>> p=3 //constant
>>>> Kp=0.0002 // inhibition constant
>>>> Kop=2e-02 // oxygen limitation constant
>>>> K=0.04 // Penicillin hydrolysis constant, per h
>>>> Yxs=0.45 // yield constant,g biomass/g glucose =
>>>> dimensionless
>>>> Yps=0.90 // yield constant, g pinicillin/ g
>>>> glucose = dimensionless
>>>> mx= 0.014 // Maintenance coefficient on
>>>> substrate, per h
>>>> Yxo=0.04 // yield constant, g biomass/g oxygen =
>>>> dimensionless
>>>> Ypo=0.20 // yield constant, g penicillin/g
>>>> oxygen= dimensionless
>>>> mo= 0.467 // maintenance coefficient of oxygen,
>>>> per h
>>>> mup=0.0005 // specific rate of penicilline
>>>> production (per h)
>>>> sf=600 // Feed substrate concentration, g/l
>>>> kla=23 // function of agitation power input and
>>>> oxugen flow rate, dimensional
>>>> cll=1.16 // dissolved oxygen concentration, g/l
>>>> Cab=3 // concentrations in both solutions
>>>> Fa=5 // acid flow rate, l/h !!
>>>> Fb=5 // base flow rate, l/h !!
>>>> delta_t=0.01 // time step in digital PID
>>>> controller - arbitrary value!!!
>>>> z=10e-5 // constant
>>>> F=0.042 // feed substrate flow rate l/h
>>>> T0=273 // temperature at freezing, K
>>>> Tv=373 // temperature at boiling
>>>> T=298 // feed temp of substrate
>>>> h=(2.5e-4) // constant
>>>> Floss=(x(6)*(h)*(exp(5)*((T-T0)/(Tv-T0))))
>>>> Fab=Fa+Fb // volume increase due to influx of acid
>>>> Fa and base Fb
>>>> Fsf=((sf)*(F))
>>>> kg= 7e-3 // Arrhenius constant for growth
>>>> kd=10e33 // Arrhenius constant for cell death
>>>> Eg= 5100 // Activation energy for growth, cal/mol
>>>> Ed= 50000 // Activation energy for cell death,
>>>> cal/mol
>>>> R= 1.987 // gas constant, cal/mol k
>>>> T= 297 // Temperature
>>>> RT= R*T
>>>> alpa= 70 // constant in Kla
>>>> betha= 0.4 // constant in Kla
>>>> Pw= 30 // Agitation power input, W
>>>> fg= 8.6 // Flow rate of oxygen
>>>> V=100 // Volume
>>>> QE= ((kg*exp(-(Eg/RT)))-(kd*exp(-(Ed/RT))))
>>>> kla= alpa*((sqrt(fg)*(Pw/x(6)))^betha)
>>>> mu
>>>> =(((mux)/(1+((K1)/(x(2)))+((x(2))/(K2))))*((x(3))/(((Kx)*(x(1)))+(x(3))))*((x(5))/(((Kox)*(x(1)))+(x(5))))*(QE))
>>>> // Specific growth rate
>>>> mupp =
>>>> ((mup)*((x(4))/((Kp)+(x(4))+(x(4)^2)/(K1)))*((x(5)^p)/((Kop)*(x(1)))+(x(5)^p)))
>>>> // Specific penicillin production rate
>>>> B
>>>> =(((1e-14/x(2)-x(2))*x(6)-Cab*(Fa+Fb)*delta_t)/(x(6)+(Fa+Fb)*delta_t))
>>>> QQ =((-B+sqrt(B^2+4e-14))/2-(x(2)))*(1/delta_t)
>>>> dx_6 = (F+Fab+Floss) //Culture Volume V
>>>> dx_1 = (((mu)*(x(1)))-((x(1))/(x(6)))*(dx_6))
>>>> //biomass concentration X
>>>> rq1 = 60 // yield of heat generation, cal/g biomass
>>>> rq2 = 1.6783e-4 // Constant, cal/g biomass h
>>>> Tf = 296 // substrate feed temperature, Kelvin
>>>> a = 1000 // heat transfer coefficient of
>>>> cooling/heating liquid, cal/h degree C
>>>> b = 0.60 // constant
>>>> Fc=0.1 // Cooling water flow rate, not sure
>>>> about value, l/h
>>>> pcCpc = 1/2000 // Density times heat capacity of
>>>> cooling liquid, per l degree C
>>>> pcp = 1/1500 // density times heat capacity of
>>>> medium
>>>> QT =
>>>> ((x(7)-(((a)*(Fc^b+1))/((Fc)+((a)*(Fc^b))/2*pcCpc))))
>>>> a1=0.143 // constant relating CO2 to growth, mmol
>>>> CO2/g biomass
>>>> a2=4e-7 // Constant relating CO2 to mainteneance
>>>> energy, mmol CO2/g biomass h
>>>> a3=1e-4 // Constant relating CO2 to penicillin
>>>> production, mmol CO2/l h
>>>> CO= (((a1)*(dx_1))+((a2)*(x(1)))+(a3)), // CO2
>>>> evolution, CO2
>>>> HION=((z*(((mu)*(x(1)))-(((F)*(x(1)))/(x(6)))))+(QQ))
>>>>
>>>> Thanks.
>>>
>>>
>>> --
>>> Adrien Vogt-Schilb (Cired)
>>> Tel: (+33) 1 43 94 *73 77*
>>>
>>>
>>
>>
>> --
>> Adrien Vogt-Schilb (Cired)
>> Tel: (+33) 1 43 94 *73 77*
>>
>>
>>
>
>
> --
> Adrien Vogt-Schilb (Cired)
> Tel: (+33) 1 43 94 *73 77*
>
>
--
Adrien Vogt-Schilb (Cired)
Tel: (+33) 1 43 94 *73 77*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20111031/1be251b7/attachment.htm>
More information about the users
mailing list