On Sat, Jan 19, 2013 at 10:47 AM, Jose Amoreira <ljmamore...@gmail.com> wrote: > > I defined a class, CelestialBody, that describes objects that > represent planets in my simulation. These objects have three attributes: > position, velocity and mass (the first two are 3D-vectors; as such, the > number of attributes is actually 7). The many-body system is represented in > the simulation by a list of CelestialBody objects. > > The dynamical state of the system is represented by a 6N (N being the number > of planets) component array storing the components of the position and > linear momentum of each body, and the integration procedures (odeint in this > case) usually take this array as argument.
Working with views: >>> import numpy as np 2 planets: >>> system_state = np.zeros(12) Create a view for each planet: >>> mars, earth = [system_state[6*i:6*(i+1)] for i in range(2)] Modify the views, which also changes the original array: >>> mars += 1 >>> earth += 2 >>> system_state array([ 1., 1., 1., 1., 1., 1., 2., 2., 2., 2., 2., 2.]) So you can use a CelestialSystem that has the overall state array and CelestialBody objects that use a view on the latter. Velocity can be a property, computed from linear momentum and mass. _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor