applications example code: test_blender.pyΒΆ

[source code]

#1BPY
"""
Name:  'sun-earth'
Blender: 249
Group:'Add'
Tooltip: 'Amuse example'
"""
from amuse.community.hermite0.interface import HermiteInterface, Hermite
from amuse.units import nbody_system
from amuse.units import units
from amuse.ext.blender import blender #get blender API
import numpy as np

from amuse import datamodel
class SunEarth(object):

    def new_system_of_sun_and_earth(self):
        stars = datamodel.Stars(2)
        sun = stars[0]
        sun.mass = units.MSun(1.0)
        sun.position = units.m(np.array((0.0,0.0,0.0)))
        sun.velocity = units.ms(np.array((0.0,0.0,0.0)))
        sun.radius = units.RSun(1.0)

        earth = stars[1]
        earth.mass = units.kg(5.9736e24)
        earth.radius = units.km(6371)
        earth.position = units.km(np.array((149.5e6,0.0,0.0)))
        earth.velocity = units.ms(np.array((0.0,29800,0.0)))

        return stars

    def evolve_model(self):
        convert_nbody = nbody_system.nbody_to_si(1.0 | units.MSun, 149.5e6 | units.km)

        hermite = Hermite(convert_nbody)
        hermite.initialize_code()

        hermite.parameters.epsilon_squared = 0.0 | units.AU**2

        stars = self.new_system_of_sun_and_earth()
        earth = stars[1]
        sun = stars[0]
        Earth = blender.Primitives.sphere(10,10,0.1)# Make the earth avatar
        Sun = blender.Primitives.sphere(32,32,1)# Make the sun avatar
        hermite.particles.add_particles(stars)

        for i in range(1*365):
            hermite.evolve_model(i | units.day)
            hermite.particles.copy_values_of_all_attributes_to(stars)
            #update avatar positions:
            Earth.loc = (1*earth.position.value_in(units.AU)[0],1*earth.position.value_in(units.AU)[1],earth.position.value_in(units.AU)[2])
            Sun.loc = (1*sun.position.value_in(units.AU)[0],1*sun.position.value_in(units.AU)[1],sun.position.value_in(units.AU)[2])
            blender.Redraw()

        hermite.print_refs()
        hermite.stop()

if __name__ == '__main__':
    I = SunEarth()
    I.evolve_model()

Keywords: python, amuse, astrophysics, matplotlib, pylab, example, codex (see how-to-search-examples)

This Page