# [SciPy-user] odeint with digital data

Ryan Krauss ryanlists@gmail....
Mon Jun 4 12:23:44 CDT 2007

```So, my system is an impact test machine that is being used for
something slightly different than it was designed for and we are
having to do some calculations to get the information we really want.

There is a foam sample which I am trying to verify a stress-strain
curve for.  The problem is that the mass of the impactor and the
compliance of the load cell lead to ringing in the data.  m_1, m_2,
and the load cell all initially are moving downward together with the
same velocity, which is measured just before impacting the foam.  Once
the impact occurs, there is some relative motion between m_1 and m_2.
F_measure (or F_meas) is the load cell force measured at constant
sampling frequency (I think it is 10kHz).  The force from the foam
specimen should be a (theoretically known) function of the
displacement x_1.

Sorry, my arrows are showing a bad sign convention for x_1 and x_2.
The displacement will be downward at least for the first half of the
impact event because the initial velocity is downward.  The
accelerations are shown in the right direction, but are in the
opposite direction of the initial velocity and the displacement.

So, I think the states are
y1 = x1
y2 = x2
y3 = x1dot
y4 = x2dot

and I was planning to set it up like this

Fmeasured = Fmeasured(t) #but only known at discrete time intervals of 10kHz
Ffoam = Ffoam(y1) #I have a function to find Ffoam based on y1 using a
piecewise linear function

y1dot = y3
y2dot = y4
y3dot = 1/m_1*(Ffoam-Fmeasured)
y4dot = 1/m_2*Fmeasured

If I could set this up in PyDSTool properly handling the fact that
Fmeasured is known at discrete times and integrate from one of those
times to the next, I would be very happy.

A plot of y1dot vs. Ffoam should get me my stress-strain curve back.

Thanks,

Ryan

On 6/4/07, Ryan Krauss <ryanlists@gmail.com> wrote:
> set this up in PyDSTool.  I will send a schematic description of the
> system in a few minutes.
>
> On 6/4/07, Rob Clewley <rhc28@cornell.edu> wrote:
> > Hi Ryan,
> >
> > To my knowledge you cannot do this with odeint unless you change a
> > constant value on the RHS (i.e. technically change your system) to
> > reflect the changing input value after every time-step, but it is very
> > easy to do in PyDSTool. There you can also force integration to be
> > only at the discrete mesh points of your input signal (and would
> > linearly interpolate in-between otherwise). I am certainly happy to
> > help you set up your script to do this if you wish to try it in
> > PyDSTool.
> >
> > HTH!
> > Rob
> >
> > On 04/06/07, Ryan Krauss <ryanlists@gmail.com> wrote:
> > > I have a vector of experimental data that I need to use as part of a
> > > system of ode's.  I would like to solve this system using
> > > integrate.odeint.  Can odeint be forced to solve only at the discrete
> > > points in time where the experimentally measured signal is available?
> > > Or do I need to set up some interpolation function to find the
> > > measured signal at any time?  If that signal is the only thing that
> > > explictly depends on time and I set up a digital look-up table that
> > > returns the same constant value for the range from t to t+dt, would I
> > > effectively force odeint to do what I want?  Am I making any sense?
> > > Is there a better way?
> > >
> > > Thanks,
> > >
> > > Ryan
> > > _______________________________________________
> > > SciPy-user mailing list
> > > SciPy-user@scipy.org
> > > http://projects.scipy.org/mailman/listinfo/scipy-user
> > >
> > _______________________________________________
> > SciPy-user mailing list
> > SciPy-user@scipy.org
> > http://projects.scipy.org/mailman/listinfo/scipy-user
> >
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: system_description.pdf
Type: application/pdf
Size: 52175 bytes
Desc: not available
Url : http://projects.scipy.org/pipermail/scipy-user/attachments/20070604/9f2426d1/attachment-0001.pdf
```