syllabus example code: rad_minimal.pyΒΆ

[source code]

"""
   Minimalistic routine for running a radiative transfer code.
"""
from amuse.lab import *

def main(N=1000, Lstar=100|units.LSun, boxsize=10|units.parsec,
         rho=1.0 | (units.amu/units.cm**3), t_end=0.1 |units.Myr):

    internal_energy = (9. |units.kms)**2

    source=Particle()
    source.position = (0, 0, 0) |units.parsec
    source.flux = Lstar/(20. | units.eV)
    source.rho = rho
    source.xion = 0.0
    source.u = internal_energy

    from amuse.ext.molecular_cloud import ism_cube
    ism = ism_cube(N, boxsize/2., rho, internal_energy).result
    ism.rho = rho
    ism.flux = 0. | units.s**-1
    ism.xion = source.xion

    radiative = SimpleX()
    radiative.parameters.box_size=1.001*boxsize
    radiative.parameters.timestep=0.001 | units.Myr

    radiative.particles.add_particle(source)
    radiative.particles.add_particles(ism)

    radiative.evolve_model(t_end)
    print "min ionization:", radiative.particles.xion.min()
    print "average Xion:", radiative.particles.xion.mean()
    print "max ionization:", radiative.particles.xion.max()
    radiative.stop()

def new_option_parser():
    from amuse.units.optparse import OptionParser
    result = OptionParser()
    result.add_option("-N", dest="N", type="int", default = 1000,
                      help="number of stars [%default]")
    result.add_option("-t", unit=units.Myr,
                      dest="t_end", default = 0.1|units.Myr,
                      help="radiation time [%default]")
    result.add_option("-L", unit=units.LSun,
                      dest="Lstar", default = 100|units.LSun,
                      help="luminosity of ionizing source [%default]")
    result.add_option("-p", unit=units.amu/units.cm**3,
                      dest="rho", default = 1|units.amu/units.cm**3,
                      help="interstellar density [%default] amu/cm^3")
    result.add_option("-d", unit=units.parsec,
                      dest="boxsize", default = 100|units.parsec,
                      help="size of the density box [%default]")
    return result

if __name__ in ('__main__', '__plot__'):
    o, arguments  = new_option_parser().parse_args()
    main(**o.__dict__)

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

This Page