yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #01451
Re: Time Series Forcing implementation in python
> There will be about 50 dynamic particles in the simulation, and at each
> time step, each particle should have a different force from the times
> series applied to it. There is only one component of the force. I have
> been working only with python so far, and I would prefer to use it
> instead of C++. What is the maximum number of data points that could be
> used with python?
>
> It would be helpful if you could tell me the syntax for using the
> InterpolatingSpiralEngine in python.
You can try in python first and then see if it is fast enough. One of
your engines will be
StandAloneEngine('PeriodicPythonRunner',{'iterPeriod':1,'command':'applyForces()'})
(note that this engine must be before NewtonsDampedLaw) and you do all
the rest in applyForces that you define somewhere before you call
O.run():
def applyForces():
bex=BexContainer()
for b in O.bodies:
f=... # your stuff
bex.addForce(b.id,f)
To see the performance impact, go
http://yade.wikia.com/wiki/Speed_profiling_using_TimingInfo_and_TimingDeltas_classes ; basically you say O.timingEnabled=True before running the simulation and
import yade.timing
timing.stats()
when finished.
----
For InterpolatingSpiralEngine, the syntax is like this:
velocities=[10.1,10.2,10.7,9.1,8.2,7.5,6.1] # velocities
times=[0.1,.3,.4,.6,.8,1.0,1.2] # t at which the velocities were measures
assert(len(velocities)==len(times))
subscribers=[0,1,2,3,4,5,6]
O.engines=[
#...
DeusExMachina('InterpolatingSpiralEngine',{'times':times,'angularVelocities':velocities,'wrap':True,'slope':thrAxRad,'subscribedBodies':subscribers,'axisPt':[0,0,0],'axis':[0,0,-1],'label':'driver'}),
#...
]
In your case, you would have to pass to your hypothetical engine a list
of readings for each body, probably as list of lists (but that is not
supported at this moment from python to yade, unless you play dirty
tricks that I can show you), and the time points. Reading the data from
file to memory at the point of engine construction would be another
option.
Vaclav
References