From: Alina Stoian on
"Hello,

I'm trying to solve a system of 3 partial differential equations (3 diffusion equations, 2nd law of Fick) using ode15s! First of all, I transformed my system in an ODE system using the finite difference method to discretize each equation. After, I attached the boundary conditions , that after the discretization are become algebraic equations , and so in the end I' m obliged to solve a DAE system. From my readings I understood that I have to use ode15s to solve M*y'=f(t,y)! I defined the matrix M, by putting 0 where ever I have an algebraic equation, and I 've created a separate function file for f(t,y), in which I defined the coefficients of the variables. The function f(t,y) has the form B(n,n)*C(n), where B is the matrix with the variable's coefficients and C is the variable vector!
After the first run of the code I obtained negative results so I thought that it's best to adimensionalize the variables, and I did so, and now I'm confronting with a warning message :'Warning: Failure at t=3.124127e+00. Unable to meet integration tolerances without reducing the step
size below the smallest value allowed (7.105427e-15) at time t. '' . I know that the coefficient 's matrix is ill conditionned but what I don't know is how to handle this problem!""


I forgot to mention that the equations are coupled and that I'm trying to simulate the transfer of a specie through three different phases ( that's why I have 3 basic diffusion equations).
From: Torsten Hennig on
> "Hello,
>
> I'm trying to solve a system of 3 partial
> differential equations (3 diffusion equations, 2nd
> law of Fick) using ode15s! First of all, I
> transformed my system in an ODE system using the
> finite difference method to discretize each equation.
> After, I attached the boundary conditions , that
> after the discretization are become algebraic
> equations , and so in the end I' m obliged to solve a
> DAE system. From my readings I understood that I have
> to use ode15s to solve M*y'=f(t,y)! I defined the
> matrix M, by putting 0 where ever I have an algebraic
> equation, and I 've created a separate function file
> for f(t,y), in which I defined the coefficients of
> the variables. The function f(t,y) has the form
> B(n,n)*C(n), where B is the matrix with the
> variable's coefficients and C is the variable vector!
> After the first run of the code I obtained negative
> results so I thought that it's best to
> adimensionalize the variables, and I did so, and now
> I'm confronting with a warning message :'Warning:
> Failure at t=3.124127e+00. Unable to meet integration
> tolerances without reducing the step
> size below the smallest value allowed (7.105427e-15)
> at time t. '' . I know that the coefficient 's matrix
> is ill conditionned but what I don't know is how to
> handle this problem!""
>
>
> I forgot to mention that the equations are coupled
> and that I'm trying to simulate the transfer of a
> specie through three different phases ( that's why I
> have 3 basic diffusion equations).


Did you try MATLAB's pdepe ?

Best wishes
Torsten.
From: Torsten Hennig on
> > "Hello,
> >
> > I'm trying to solve a system of 3 partial
> > differential equations (3 diffusion equations, 2nd
> > law of Fick) using ode15s! First of all, I
> > transformed my system in an ODE system using the
> > finite difference method to discretize each
> equation.
> > After, I attached the boundary conditions , that
> > after the discretization are become algebraic
> > equations , and so in the end I' m obliged to solve
> a
> > DAE system. From my readings I understood that I
> have
> > to use ode15s to solve M*y'=f(t,y)! I defined the
> > matrix M, by putting 0 where ever I have an
> algebraic
> > equation, and I 've created a separate function
> file
> > for f(t,y), in which I defined the coefficients of
> > the variables. The function f(t,y) has the form
> > B(n,n)*C(n), where B is the matrix with the
> > variable's coefficients and C is the variable
> vector!
> > After the first run of the code I obtained
> negative
> > results so I thought that it's best to
> > adimensionalize the variables, and I did so, and
> now
> > I'm confronting with a warning message :'Warning:
> > Failure at t=3.124127e+00. Unable to meet
> integration
> > tolerances without reducing the step
> > size below the smallest value allowed
> (7.105427e-15)
> > at time t. '' . I know that the coefficient 's
> matrix
> > is ill conditionned but what I don't know is how
> to
> > handle this problem!""
> >
> >
> > I forgot to mention that the equations are coupled
> > and that I'm trying to simulate the transfer of a
> > specie through three different phases ( that's why
> I
> > have 3 basic diffusion equations).
>
>
> Did you try MATLAB's pdepe ?
>
> Best wishes
> Torsten.

... and if you want to use your discretized form of the
equations, integrate up to t=3.124127e+00 and inspect
the solution. Maybe this will give you some hint
why the ODE integrator quits.

Best wishes
Torsten.
From: Alina Stoian on
Torsten Hennig <Torsten.Hennig(a)umsicht.fhg.de> wrote in message <735098493.260351.1275405399232.JavaMail.root(a)gallium.mathforum.org>...
> > "Hello,
> >
> > I'm trying to solve a system of 3 partial
> > differential equations (3 diffusion equations, 2nd
> > law of Fick) using ode15s! First of all, I
> > transformed my system in an ODE system using the
> > finite difference method to discretize each equation.
> > After, I attached the boundary conditions , that
> > after the discretization are become algebraic
> > equations , and so in the end I' m obliged to solve a
> > DAE system. From my readings I understood that I have
> > to use ode15s to solve M*y'=f(t,y)! I defined the
> > matrix M, by putting 0 where ever I have an algebraic
> > equation, and I 've created a separate function file
> > for f(t,y), in which I defined the coefficients of
> > the variables. The function f(t,y) has the form
> > B(n,n)*C(n), where B is the matrix with the
> > variable's coefficients and C is the variable vector!
> > After the first run of the code I obtained negative
> > results so I thought that it's best to
> > adimensionalize the variables, and I did so, and now
> > I'm confronting with a warning message :'Warning:
> > Failure at t=3.124127e+00. Unable to meet integration
> > tolerances without reducing the step
> > size below the smallest value allowed (7.105427e-15)
> > at time t. '' . I know that the coefficient 's matrix
> > is ill conditionned but what I don't know is how to
> > handle this problem!""
> >
> >
> > I forgot to mention that the equations are coupled
> > and that I'm trying to simulate the transfer of a
> > specie through three different phases ( that's why I
> > have 3 basic diffusion equations).
>
>
> Did you try MATLAB's pdepe ?
>
> Best wishes
> Torsten.


Hello,
So I did what you told me and the answer form matlab is :
''aliq =

1.0000e+00 1.0000e+00 1.0000e+00 1.0000e+00 1.0000e+00
1.0000e+00 1.0000e+00 1.0000e+00 9.9999e-01 9.9357e-01
1.0000e+00 1.0000e+00 1.0000e+00 9.9996e-01 9.8743e-01
1.0000e+00 1.0000e+00 1.0000e+00 9.9990e-01 9.8149e-01
1.0000e+00 1.0000e+00 1.0000e+00 9.9983e-01 9.7574e-01
1.0000e+00 1.0000e+00 1.0000e+00 9.9974e-01 9.7013e-01
1.0000e+00 1.0000e+00 1.0000e+00 9.9963e-01 9.6466e-01
1.0000e+00 1.0000e+00 1.0000e+00 9.9950e-01 9.5932e-01
1.0000e+00 1.0000e+00 9.9999e-01 9.9936e-01 9.5414e-01
1.0000e+00 1.0000e+00 9.9999e-01 9.9920e-01 9.4951e-01
== 1.0000e+00 1.0000e+00 9.9999e-01 9.9903e-01 9.5065e-01=== 11th time step
1.0000e+00 1.0000e+00 9.9999e-01 9.9894e-01 1.0235e+00
1.0000e+00 1.0000e+00 1.0000e+00 1.0166e+00 1.4504e+01
1.0000e+00 1.0000e+00 1.0003e+00 1.2295e+00 1.7303e+02
1.0000e+00 1.0000e+00 1.0039e+00 3.9296e+00 2.1823e+03
1.0000e+00 1.0001e+00 1.0499e+00 3.8166e+01 2.7658e+04''
it seems that is working well until it reach the 11th time step! Anyway I know that my J matrix is not stable because the rcond is 1.475e-10, but from my point of view my equations are written correctly.
I tried to use' pdepe ' but I have problems to impose two conditions at the same boundary ( that are the flow continuity and an equilibrium condition; the flow continuity is like : D_liq*dcliq/dx=D_gaz*dcgaz/dx (x= liquid height ) and cgaz=P*cliq, where P is a partition coefficient)!
Thank you very much for answering me and if you have any other ideas please tell me!
Best regards,
A. Stoian
From: Torsten Hennig on
> Torsten Hennig <Torsten.Hennig(a)umsicht.fhg.de> wrote
> in message
> <735098493.260351.1275405399232.JavaMail.root(a)gallium.
> mathforum.org>...
> > > "Hello,
> > >
> > > I'm trying to solve a system of 3 partial
> > > differential equations (3 diffusion equations,
> 2nd
> > > law of Fick) using ode15s! First of all, I
> > > transformed my system in an ODE system using the
> > > finite difference method to discretize each
> equation.
> > > After, I attached the boundary conditions , that
> > > after the discretization are become algebraic
> > > equations , and so in the end I' m obliged to
> solve a
> > > DAE system. From my readings I understood that I
> have
> > > to use ode15s to solve M*y'=f(t,y)! I defined the
> > > matrix M, by putting 0 where ever I have an
> algebraic
> > > equation, and I 've created a separate function
> file
> > > for f(t,y), in which I defined the coefficients
> of
> > > the variables. The function f(t,y) has the form
> > > B(n,n)*C(n), where B is the matrix with the
> > > variable's coefficients and C is the variable
> vector!
> > > After the first run of the code I obtained
> negative
> > > results so I thought that it's best to
> > > adimensionalize the variables, and I did so, and
> now
> > > I'm confronting with a warning message :'Warning:
> > > Failure at t=3.124127e+00. Unable to meet
> integration
> > > tolerances without reducing the step
> > > size below the smallest value allowed
> (7.105427e-15)
> > > at time t. '' . I know that the coefficient 's
> matrix
> > > is ill conditionned but what I don't know is how
> to
> > > handle this problem!""
> > >
> > >
> > > I forgot to mention that the equations are
> coupled
> > > and that I'm trying to simulate the transfer of a
> > > specie through three different phases ( that's
> why I
> > > have 3 basic diffusion equations).
> >
> >
> > Did you try MATLAB's pdepe ?
> >
> > Best wishes
> > Torsten.
>
>
> Hello,
> So I did what you told me and the answer form matlab
> is :
> ''aliq =
>
> 1.0000e+00 1.0000e+00 1.0000e+00 1.0000e+00
> +00 1.0000e+00
> 1.0000e+00 1.0000e+00 1.0000e+00 9.9999e-01
> -01 9.9357e-01
> 1.0000e+00 1.0000e+00 1.0000e+00 9.9996e-01
> -01 9.8743e-01
> 1.0000e+00 1.0000e+00 1.0000e+00 9.9990e-01
> -01 9.8149e-01
> 1.0000e+00 1.0000e+00 1.0000e+00 9.9983e-01
> -01 9.7574e-01
> 1.0000e+00 1.0000e+00 1.0000e+00 9.9974e-01
> -01 9.7013e-01
> 1.0000e+00 1.0000e+00 1.0000e+00 9.9963e-01
> -01 9.6466e-01
> 1.0000e+00 1.0000e+00 1.0000e+00 9.9950e-01
> -01 9.5932e-01
> 1.0000e+00 1.0000e+00 9.9999e-01 9.9936e-01
> -01 9.5414e-01
> 1.0000e+00 1.0000e+00 9.9999e-01 9.9920e-01
> -01 9.4951e-01
> == 1.0000e+00 1.0000e+00 9.9999e-01
> 9.9903e-01 9.5065e-01=== 11th time step
> 1.0000e+00 1.0000e+00 9.9999e-01 9.9894e-01
> -01 1.0235e+00
> 1.0000e+00 1.0000e+00 1.0000e+00 1.0166e+00
> 00 1.4504e+01
> 1.0000e+00 1.0000e+00 1.0003e+00 1.2295e+00
> +00 1.7303e+02
> 1.0000e+00 1.0000e+00 1.0039e+00 3.9296e+00
> +00 2.1823e+03
> 1.0000e+00 1.0001e+00 1.0499e+00 3.8166e+01
> +01 2.7658e+04''
> it seems that is working well until it reach the
> 11th time step! Anyway I know that my J matrix is not
> stable because the rcond is 1.475e-10, but from my
> point of view my equations are written correctly.
> I tried to use' pdepe ' but I have problems to impose
> two conditions at the same boundary ( that are the
> flow continuity and an equilibrium condition; the
> flow continuity is like :
> D_liq*dcliq/dx=D_gaz*dcgaz/dx (x= liquid height )
> and cgaz=P*cliq, where P is a partition
> n coefficient)!
> Thank you very much for answering me and if you have
> any other ideas please tell me!
> Best regards,
> A. Stoian

If I got it right, you have interface conditions
at the two phase boundaries. How did you discretize
them ?

Best wishes
Torsten.