def test3(self): print "Test convert_SPH_to_stellar_model with particles_per_zone" model = convert_SPH_to_stellar_model(self.new_particles(), particles_per_zone=50) for variable in [ 'dmass', 'radius', 'rho', 'temperature', 'luminosity', 'X_H', 'X_He', 'X_C', 'X_N', 'X_O', 'X_Ne', 'X_Mg', 'X_Si', 'X_Fe' ]: self.assertTrue(hasattr(model, variable)) self.assertEqual(len(getattr(model, variable)), 10) self.assertTrue(numpy.all( model.radius[:-1] <= model.radius[1:])) # monotonically increasing self.assertTrue(numpy.all( model.mass[:-1] <= model.mass[1:])) # monotonically increasing self.assertTrue( numpy.all(model.temperature[:-1] >= model.temperature[1:])) self.assertTrue(numpy.all(model.rho[:-1] >= model.rho[1:])) self.assertTrue(numpy.all(model.X_H[:-1] <= model.X_H[1:])) lowres_model = convert_SPH_to_stellar_model(self.new_particles(), particles_per_zone=100) self.assertAlmostRelativeEqual(model.dmass.sum(), 1 | units.MSun, 3) self.assertAlmostRelativeEqual(lowres_model.dmass.sum(), 1 | units.MSun, 3) self.assertAlmostRelativeEqual(lowres_model.radius, model.radius[1::2], 7) self.assertAlmostRelativeEqual( lowres_model.X_H, (model.X_H[0::2] + model.X_H[1::2]) / 2.0, 7)
def slowtest5(self): print "Test convert_SPH_to_stellar_model result in EVtwin" stellar_evolution = EVtwin() stellar_evolution.parameters.verbosity = True stellar_evolution.particles.add_particle( Particle(mass=1.0 | units.MSun)) # reference particle stellar_evolution.evolve_model(100.0 | units.Myr) model = convert_SPH_to_stellar_model( self.new_particles()) # model is from center to surface stellar_evolution.new_particle_from_model(model, 0.0 | units.Myr) print stellar_evolution.particles self.assertAlmostEqual(stellar_evolution.particles.age, [100.0, 0.0] | units.Myr, 1) stellar_evolution.evolve_model(200.0 | units.Myr) print stellar_evolution.particles self.assertAlmostEqual(stellar_evolution.particles.age, [200.0, 100.0] | units.Myr, 1) self.assertAlmostRelativeEqual( stellar_evolution.particles[0].temperature, stellar_evolution.particles[1].temperature, 2) self.assertAlmostRelativeEqual( stellar_evolution.particles[0].luminosity, stellar_evolution.particles[1].luminosity, 2) stellar_evolution.stop()
def handle_collision(self, primary, secondary, stellar_evolution_code=None, gravity_code=None): particles = self.local_copy_of_particles(primary, secondary) self.collect_required_attributes(particles, gravity_code, stellar_evolution_code) self.backtrack_particles(particles) gas_particles = self.convert_stars(particles, stellar_evolution_code) self.simulate_collision(gas_particles) self.models = [convert_SPH_to_stellar_model(group, **self.sph_to_star_arguments) for group in self.groups_after_encounter] return self.new_particles_with_internal_structure_from_models()
def test3(self): print "Test convert_SPH_to_stellar_model with particles_per_zone" model = convert_SPH_to_stellar_model(self.new_particles(), particles_per_zone=50) for variable in ['dmass', 'radius', 'rho', 'temperature', 'luminosity', 'X_H', 'X_He', 'X_C', 'X_N', 'X_O', 'X_Ne', 'X_Mg', 'X_Si', 'X_Fe']: self.assertTrue(hasattr(model, variable)) self.assertEqual(len(getattr(model, variable)), 10) self.assertTrue(numpy.all(model.radius[:-1] <= model.radius[1:])) # monotonically increasing self.assertTrue(numpy.all(model.mass[:-1] <= model.mass[1:])) # monotonically increasing self.assertTrue(numpy.all(model.temperature[:-1] >= model.temperature[1:])) self.assertTrue(numpy.all(model.rho[:-1] >= model.rho[1:])) self.assertTrue(numpy.all(model.X_H[:-1] <= model.X_H[1:])) lowres_model = convert_SPH_to_stellar_model(self.new_particles(), particles_per_zone=100) self.assertAlmostRelativeEqual(model.dmass.sum(), 1|units.MSun, 3) self.assertAlmostRelativeEqual(lowres_model.dmass.sum(), 1|units.MSun, 3) self.assertAlmostRelativeEqual(lowres_model.radius, model.radius[1::2], 7) self.assertAlmostRelativeEqual(lowres_model.X_H, (model.X_H[0::2]+model.X_H[1::2])/2.0, 7)
def slowtest4(self): print "Test convert_SPH_to_stellar_model result in MESA" stellar_evolution = self.new_instance(MESA) stellar_evolution.particles.add_particle(Particle(mass=1.0|units.MSun)) # reference particle stellar_evolution.evolve_model(100.0|units.Myr) model = convert_SPH_to_stellar_model(self.new_particles()) # model is from center to surface stellar_evolution.new_particle_from_model(model, 0.0|units.Myr) print stellar_evolution.particles self.assertAlmostEqual(stellar_evolution.particles.age, [118.18, 0.0] | units.Myr, 1) stellar_evolution.evolve_model(200.0|units.Myr) print stellar_evolution.particles self.assertAlmostEqual(stellar_evolution.particles.age, [204.59, 103.02] | units.Myr, 1) self.assertAlmostRelativeEqual(stellar_evolution.particles[0].temperature, stellar_evolution.particles[1].temperature, 2) self.assertAlmostRelativeEqual(stellar_evolution.particles[0].luminosity, stellar_evolution.particles[1].luminosity, 2) stellar_evolution.stop()
def slowtest5(self): print "Test convert_SPH_to_stellar_model result in EVtwin" stellar_evolution = EVtwin() stellar_evolution.parameters.verbosity = True stellar_evolution.particles.add_particle(Particle(mass=1.0|units.MSun)) # reference particle stellar_evolution.evolve_model(100.0|units.Myr) model = convert_SPH_to_stellar_model(self.new_particles()) # model is from center to surface stellar_evolution.new_particle_from_model(model, 0.0|units.Myr) print stellar_evolution.particles self.assertAlmostEqual(stellar_evolution.particles.age, [100.0, 0.0] | units.Myr, 1) stellar_evolution.evolve_model(200.0|units.Myr) print stellar_evolution.particles self.assertAlmostEqual(stellar_evolution.particles.age, [200.0, 100.0] | units.Myr, 1) self.assertAlmostRelativeEqual(stellar_evolution.particles[0].temperature, stellar_evolution.particles[1].temperature, 2) self.assertAlmostRelativeEqual(stellar_evolution.particles[0].luminosity, stellar_evolution.particles[1].luminosity, 2) stellar_evolution.stop()
def merge_two_stars_sph(Mprim, Msec, t_coll): star = Particle(mass=Mprim) stellar_evolution = EVtwin() EVTwin_star = stellar_evolution.particles.add_particle(star) stellar_evolution.evolve_model(t_coll) print("star=", EVTwin_star) EVTwin_radius = EVTwin_star.get_radius_profile() EVTwin_rho = EVTwin_star.get_density_profile() N_sph = 100*Mprim.value_in(units.MSun) primary_star = convert_stellar_model_to_SPH(EVTwin_star, N_sph).gas_particles stellar_evolution.stop() converter=nbody_system.nbody_to_si(Mprim, 1.0|units.AU) hydro = Gadget2(converter) hydro.gas_particles.add_particles(primary_star) channel = hydro.gas_particles.new_channel_to(primary_star) hydro.evolve_model(1.0|units.s) channel.copy() hydro.stop() pyplot.scatter(primary_star.x.value_in(units.AU), primary_star.y.value_in(units.AU)) pyplot.show() new_stellar_model = convert_SPH_to_stellar_model(primary_star) stellar_evolution = MESA(redirection="none") stellar_evolution.commit_parameters() stellar_evolution.new_particle_from_model(new_stellar_model, t_coll) MESA_star = stellar_evolution.particles[0] print("star=", MESA_star) MESA_radius = MESA_star.get_radius_profile() MESA_rho = MESA_star.get_density_profile() stellar_evolution.stop() plot_density_profile(MESA_radius, MESA_rho) plot_density_profile(EVTwin_radius, EVTwin_rho) pyplot.semilogy() pyplot.show()
def merge_two_stars_sph(Mprim, Msec, t_coll): star = Particle(mass=Mprim) stellar_evolution = EVtwin() EVTwin_star = stellar_evolution.particles.add_particle(star) stellar_evolution.evolve_model(t_coll) print "star=", EVTwin_star EVTwin_radius = EVTwin_star.get_radius_profile() EVTwin_rho = EVTwin_star.get_density_profile() N_sph = 100*Mprim.value_in(units.MSun) primary_star = convert_stellar_model_to_SPH(EVTwin_star, N_sph).gas_particles stellar_evolution.stop() converter=nbody_system.nbody_to_si(Mprim, 1.0|units.AU) hydro = Gadget2(converter) hydro.gas_particles.add_particles(primary_star) channel = hydro.gas_particles.new_channel_to(primary_star) hydro.evolve_model(1.0|units.s) channel.copy() hydro.stop() pyplot.scatter(primary_star.x.value_in(units.AU), primary_star.y.value_in(units.AU)) pyplot.show() new_stellar_model = convert_SPH_to_stellar_model(primary_star) stellar_evolution = MESA(redirection="none") stellar_evolution.commit_parameters() stellar_evolution.new_particle_from_model(new_stellar_model, t_coll) MESA_star = stellar_evolution.particles[0] print "star=", MESA_star MESA_radius = MESA_star.get_radius_profile() MESA_rho = MESA_star.get_density_profile() stellar_evolution.stop() plot_density_profile(MESA_radius, MESA_rho) plot_density_profile(EVTwin_radius, EVTwin_rho) pyplot.semilogy() pyplot.show()
def slowtest4(self): print "Test convert_SPH_to_stellar_model result in MESA" stellar_evolution = self.new_instance(MESA) stellar_evolution.particles.add_particle( Particle(mass=1.0 | units.MSun)) # reference particle stellar_evolution.evolve_model(100.0 | units.Myr) model = convert_SPH_to_stellar_model( self.new_particles()) # model is from center to surface stellar_evolution.new_particle_from_model(model, 0.0 | units.Myr) print stellar_evolution.particles self.assertAlmostEqual(stellar_evolution.particles.age, [118.18, 0.0] | units.Myr, 1) stellar_evolution.evolve_model(200.0 | units.Myr) print stellar_evolution.particles self.assertAlmostEqual(stellar_evolution.particles.age, [204.59, 103.02] | units.Myr, 1) self.assertAlmostRelativeEqual( stellar_evolution.particles[0].temperature, stellar_evolution.particles[1].temperature, 2) self.assertAlmostRelativeEqual( stellar_evolution.particles[0].luminosity, stellar_evolution.particles[1].luminosity, 2) stellar_evolution.stop()
def merge_two_stars_spz_and_evolve(Mprim, Msec, tcoll, tend): stellar = EVtwin() stars = Particles(2) stars[0].mass = Mprim stars[1].mass = Msec stellar.particles.add_particle(stars[0]) stellar.particles.add_particle(stars[1]) time = [] | units.Myr mass = [] | units.MSun radius = [] | units.RSun temperature = [] | units.K luminosity = [] | units.LSun while stellar.model_time<tcoll: stellar.evolve_model() time.append(stellar.model_time) mass.append(stellar.particles[0].mass) radius.append(stellar.particles[0].radius) temperature.append(stellar.particles[0].temperature) luminosity.append(stellar.particles[0].luminosity) print "Time=", time[-1], mass[-1], radius[-1], temperature[-1].in_(units.K), luminosity[-1].in_(units.LSun) n_normal = len(time) print stars Nprim = int(100*stellar.particles[0].mass.value_in(units.MSun)) mgas = stellar.particles[0].mass/Nprim Nsec = int(stellar.particles[1].mass/mgas) print "N gas=", Nprim, Nsec sph_primary = convert_stellar_model_to_SPH( stellar.particles[0], Nprim, seed=12345 ).gas_particles sph_secondary = convert_stellar_model_to_SPH( stellar.particles[0], Nsec, seed=12345 ).gas_particles stellar.stop() distance = 1 | units.RSun sph_secondary.x += distance sph_secondary.vx -= 1.7*numpy.sqrt(2*constants.G*stars.mass.sum()/distance) sph_particles = Particles() sph_particles.add_particles(sph_primary) #sph_particles.add_particles(sph_secondary) sph_particles.move_to_center() converter = nbody_system.nbody_to_si(1|units.hour, 1|units.RSun) hydrodynamics = Gadget2(converter) hydrodynamics.gas_particles.add_particles(sph_particles) hydrodynamics.evolve_model(10.0|units.hour) hydrodynamics.gas_particles.copy_values_of_attributes_to(["density", "u", "pressure"], sph_particles) hydrodynamics.stop() print "N all=", len(sph_particles) clumps = find_clumps(sph_particles, converter) #sph_particles = clumps[0] print "N blob=", len(sph_particles) #plot_clumps(clumps) #sph_merger = sph_particles[0] print "convert SPH to stellar model" merged_star = convert_SPH_to_stellar_model(sph_particles) #stellar_evolution = MESA() print "initiate stellar evolution model" stellar_evolution = EVtwin(redirect="none") stellar_evolution.new_particle_from_model(merged_star, 0.0|units.Myr) print "star:", stellar_evolution.particles print "evolve star" #stellar_evolution.evolve_model(tend) while stellar_evolution.model_time<(tend-tcoll): stellar_evolution.evolve_model() time.append(stellar_evolution.model_time) mass.append(stellar_evolution.particles[0].mass) radius.append(stellar_evolution.particles[0].radius) temperature.append(stellar_evolution.particles[0].temperature) luminosity.append(stellar_evolution.particles[0].luminosity) print "Time=", time[-1], mass[-1], radius[-1], temperature[-1].in_(units.K), luminosity[-1].in_(units.LSun) print stellar_evolution.particles stellar_evolution.stop() return time, mass, radius, temperature, luminosity, n_normal
def merge_two_stars_sph_and_evolve(Mprim, Msec, tcoll, tend): stars = Particles(2) stars[0].mass = Mprim stars[1].mass = Msec stellar = EVtwin() stellar.particles.add_particle(stars[0]) stellar.particles.add_particle(stars[1]) time = [] | units.Myr mass = [] | units.MSun radius = [] | units.RSun temperature = [] | units.K luminosity = [] | units.LSun while stellar.model_time < tcoll: stellar.evolve_model() time.append(stellar.model_time) mass.append(stellar.particles[0].mass) radius.append(stellar.particles[0].radius) temperature.append(stellar.particles[0].temperature) luminosity.append(stellar.particles[0].luminosity) print "Time=", time[-1], mass[-1], radius[-1], \ temperature[-1].in_(units.K), luminosity[-1].in_(units.LSun) n_normal = len(time) print stars Nprim = int(100*stellar.particles[0].mass.value_in(units.MSun)) mgas = stellar.particles[0].mass/Nprim Nsec = int(stellar.particles[1].mass/mgas) print "N gas=", Nprim, Nsec sph_primary = convert_stellar_model_to_SPH( stellar.particles[0], Nprim, seed=12345 ).gas_particles sph_secondary = convert_stellar_model_to_SPH( stellar.particles[0], Nsec, seed=12345 ).gas_particles stellar.stop() distance = 1 | units.RSun sph_secondary.x += distance sph_secondary.vx -= 1.7*numpy.sqrt(2*constants.G*stars.mass.sum()/distance) sph_particles = Particles() sph_particles.add_particles(sph_primary) #sph_particles.add_particles(sph_secondary) sph_particles.move_to_center() converter = nbody_system.nbody_to_si(1|units.hour, 1|units.RSun) hydrodynamics = Gadget2(converter) hydrodynamics.gas_particles.add_particles(sph_particles) hydrodynamics.evolve_model(10.0|units.hour) hydrodynamics.gas_particles.copy_values_of_attributes_to(["density", "u", "pressure"], sph_particles) hydrodynamics.stop() print "N all=", len(sph_particles) clumps = find_clumps(sph_particles, converter) #sph_particles = clumps[0] print "N blob=", len(sph_particles) #plot_clumps(clumps) #sph_merger = sph_particles[0] print "convert SPH to stellar model" merged_star = convert_SPH_to_stellar_model(sph_particles) print "initiate stellar evolution model" #stellar_evolution = MESA() stellar_evolution = EVtwin(redirect="none") stellar_evolution.new_particle_from_model(merged_star, 0.0|units.Myr) print "star:", stellar_evolution.particles print "evolve star" #stellar_evolution.evolve_model(tend) while stellar_evolution.model_time<(tend-tcoll): stellar_evolution.evolve_model() time.append(stellar_evolution.model_time) mass.append(stellar_evolution.particles[0].mass) radius.append(stellar_evolution.particles[0].radius) temperature.append(stellar_evolution.particles[0].temperature) luminosity.append(stellar_evolution.particles[0].luminosity) print "Time=", time[-1], mass[-1], radius[-1], \ temperature[-1].in_(units.K), luminosity[-1].in_(units.LSun) print stellar_evolution.particles stellar_evolution.stop() return time, mass, radius, temperature, luminosity, n_normal
def merge_two_stars_sph_and_evolve(Mprim, Msec, tcoll, tend): stars = Particles(2) stars.mass = [Mprim.value_in(units.MSun), Msec.value_in(units.MSun)] | units.MSun stellar_evolution = MESA() stellar_evolution.particles.add_particles(stars) # Evolve the stars to tcoll. while stellar_evolution.model_time < tcoll: stellar_evolution.evolve_model() print "Time=", stellar_evolution.model_time, \ stellar_evolution.particles[0].stellar_type, \ stellar_evolution.particles[0].mass, \ stellar_evolution.particles[0].radius, \ stellar_evolution.particles[0].temperature.in_(units.K), \ stellar_evolution.particles[0].luminosity.in_(units.LSun) print stars # Convert to SPH particles (nsph per solar mass). nsph = 100 Nprim = int(nsph * stellar_evolution.particles[0].mass.value_in(units.MSun)) mgas = stellar_evolution.particles[0].mass / Nprim Nsec = int(stellar_evolution.particles[1].mass / mgas) print "N gas =", Nprim, Nsec sph_primary = convert_stellar_model_to_SPH(stellar_evolution.particles[0], Nprim, seed=12345).gas_particles sph_secondary = convert_stellar_model_to_SPH( stellar_evolution.particles[1], Nsec, seed=12345).gas_particles stellar_evolution.stop() # Merge the stars using SPH. distance = 2 | units.RSun sph_secondary.x += distance vx = numpy.sqrt(2 * constants.G * stars.mass.sum() / distance) sph_secondary.vx -= vx print 'distance =', distance, 'vx =', vx.in_(units.kms), print 'd/v =', (distance / vx).in_(units.hour) sph_particles = Particles() sph_particles.add_particles(sph_primary) sph_particles.add_particles(sph_secondary) sph_particles.move_to_center() converter = nbody_system.nbody_to_si(1 | units.hour, 1 | units.RSun) hydrodynamics = Gadget2(converter) hydrodynamics.gas_particles.add_particles(sph_particles) tf = 10. | units.hour hydrodynamics.evolve_model(tf) hydrodynamics.gas_particles.copy_values_of_attributes_to( ["x", "y", "z", "vx", "vy", "vz", "density", "u", "pressure"], sph_particles) hydrodynamics.stop() # Convert back to a stellar model. print "N all =", len(sph_particles) sph_particles.move_to_center() clumps = find_clumps(sph_particles, converter) sph_particles = clumps[0] print "N blob =", len(sph_particles) #plot_clumps(clumps) print "convert SPH to stellar model" sph_particles.move_to_center() merged_star = convert_SPH_to_stellar_model(sph_particles) # Evolve the stellar model. print "initiate stellar evolution model" #stellar_evolution = MESA(redirect="none") stellar_evolution = EVtwin(redirect="none") stellar_evolution.new_particle_from_model(merged_star, 0.0 | units.Myr) print "star:", stellar_evolution.particles print "evolve star" time = [] | units.Myr mass = [] | units.MSun radius = [] | units.RSun temperature = [] | units.K luminosity = [] | units.LSun stellar_type = [] while stellar_evolution.model_time < (tend - tcoll): try: stellar_evolution.evolve_model() time.append(stellar_evolution.model_time) mass.append(stellar_evolution.particles[0].mass) radius.append(stellar_evolution.particles[0].radius) temperature.append(stellar_evolution.particles[0].temperature) luminosity.append(stellar_evolution.particles[0].luminosity) stellar_type.append(stellar_evolution.particles[0].stellar_type) print "Time=", time[-1], stellar_type[-1], mass[-1], radius[-1], \ temperature[-1].in_(units.K), luminosity[-1].in_(units.LSun) if stellar_type[-1] >= 4 | units.stellar_type: break except: print 'Code crashed at time', stellar_evolution.model_time break stellar_evolution.stop() return time, stellar_type, mass, radius, temperature, luminosity
def merge_two_stars_sph_and_evolve(Mprim, Msec, tcoll, tend): stars = Particles(2) stars.mass = [Mprim.value_in(units.MSun), Msec.value_in(units.MSun)] | units.MSun stellar_evolution = MESA() stellar_evolution.particles.add_particles(stars) # Evolve the stars to tcoll. while stellar_evolution.model_time < tcoll: stellar_evolution.evolve_model() print "Time=", stellar_evolution.model_time, \ stellar_evolution.particles[0].stellar_type, \ stellar_evolution.particles[0].mass, \ stellar_evolution.particles[0].radius, \ stellar_evolution.particles[0].temperature.in_(units.K), \ stellar_evolution.particles[0].luminosity.in_(units.LSun) print stars # Convert to SPH particles (nsph per solar mass). nsph = 100 Nprim = int(nsph*stellar_evolution.particles[0].mass.value_in(units.MSun)) mgas = stellar_evolution.particles[0].mass/Nprim Nsec = int(stellar_evolution.particles[1].mass/mgas) print "N gas =", Nprim, Nsec sph_primary = convert_stellar_model_to_SPH( stellar_evolution.particles[0], Nprim, seed=12345 ).gas_particles sph_secondary = convert_stellar_model_to_SPH( stellar_evolution.particles[1], Nsec, seed=12345 ).gas_particles stellar_evolution.stop() # Merge the stars using SPH. distance = 2 | units.RSun sph_secondary.x += distance vx = numpy.sqrt(2*constants.G*stars.mass.sum()/distance) sph_secondary.vx -= vx print 'distance =', distance, 'vx =', vx.in_(units.kms), print 'd/v =', (distance/vx).in_(units.hour) sph_particles = Particles() sph_particles.add_particles(sph_primary) sph_particles.add_particles(sph_secondary) sph_particles.move_to_center() converter = nbody_system.nbody_to_si(1|units.hour, 1|units.RSun) hydrodynamics = Gadget2(converter) hydrodynamics.gas_particles.add_particles(sph_particles) tf = 10.|units.hour hydrodynamics.evolve_model(tf) hydrodynamics.gas_particles.copy_values_of_attributes_to(["x", "y", "z", "vx", "vy", "vz", "density", "u", "pressure"], sph_particles) hydrodynamics.stop() # Convert back to a stellar model. print "N all =", len(sph_particles) sph_particles.move_to_center() clumps = find_clumps(sph_particles, converter) sph_particles = clumps[0] print "N blob =", len(sph_particles) #plot_clumps(clumps) print "convert SPH to stellar model" sph_particles.move_to_center() merged_star = convert_SPH_to_stellar_model(sph_particles) # Evolve the stellar model. print "initiate stellar evolution model" #stellar_evolution = MESA(redirect="none") stellar_evolution = EVtwin(redirect="none") stellar_evolution.new_particle_from_model(merged_star, 0.0|units.Myr) print "star:", stellar_evolution.particles print "evolve star" time = [] | units.Myr mass = [] | units.MSun radius = [] | units.RSun temperature = [] | units.K luminosity = [] | units.LSun stellar_type = [] while stellar_evolution.model_time < (tend-tcoll): try: stellar_evolution.evolve_model() time.append(stellar_evolution.model_time) mass.append(stellar_evolution.particles[0].mass) radius.append(stellar_evolution.particles[0].radius) temperature.append(stellar_evolution.particles[0].temperature) luminosity.append(stellar_evolution.particles[0].luminosity) stellar_type.append(stellar_evolution.particles[0].stellar_type) print "Time=", time[-1], stellar_type[-1], mass[-1], radius[-1], \ temperature[-1].in_(units.K), luminosity[-1].in_(units.LSun) if stellar_type[-1] >= 4 | units.stellar_type: break except: print 'Code crashed at time', stellar_evolution.model_time break stellar_evolution.stop() return time, stellar_type, mass, radius, temperature, luminosity
print "initialize star" stellar_evolution = EVtwin() stellar_evolution.particles.add_particle(Particle(mass=o.Mprim)) stellar_evolution.evolve_model(o.time) particles = convert_stellar_model_to_SPH(stellar_evolution.particles[0], 500, seed=12345).gas_particles stellar_evolution.stop() from amuse.units.generic_unit_converter import ConvertBetweenGenericAndSiUnits print "convert star to SPH" converter = nbody_system.nbody_to_si(1 | units.hour, 1 | units.RSun) hydrodynamics = Gadget2(converter) hydrodynamics.gas_particles.add_particles(particles) hydrodynamics.evolve_model(1.0 | units.s) hydrodynamics.gas_particles.copy_values_of_attributes_to( ["density", "u", "pressure"], particles) hydrodynamics.stop() print "convert SPH to stellar model" model = convert_SPH_to_stellar_model(particles) #stellar_evolution = MESA() print "initiate stellar evolution model" stellar_evolution = EVtwin(redirect="none") stellar_evolution.new_particle_from_model(model, 0.0 | units.Myr) print "star:", stellar_evolution.particles print "evolve star" stellar_evolution.evolve_model(2 * o.time) print stellar_evolution.particles