def evolve_system(particles): """ Evolves the system using the Hermite integrator. Parameters ---------- particles: amuse.datamodel.particles.Particles instance """ times = numpy.linspace(0.0001, args.time, args.steps) | u.yr intr = Hermite(nbody_to_si(particles.total_mass(), 1 | u.AU)) intr.particles.add_particles(particles) energy_begin = intr.get_total_energy() if args.dt is not None: intr.set_dt_param(args.dt) for t in times: intr.evolve_model(t) energy_error = (intr.get_total_energy() - energy_begin) / energy_begin print(intr.get_time_step().in_(u.day), intr.get_time().in_(u.yr)) print(energy_error) print("energy error:{}".format(energy_error)) intr.stop()
def evolve_system(particles): """ Evolves the system using the Hermite integrator. Parameters ---------- particles: amuse.datamodel.particles.Particles instance """ times = numpy.linspace(0.0001, args.time, args.steps) |u.yr intr = Hermite(nbody_to_si(particles.total_mass(), 1 | u.AU)) intr.particles.add_particles(particles) energy_begin = intr.get_total_energy() if args.dt is not None: intr.set_dt_param(args.dt) for t in times: intr.evolve_model(t) energy_error = (intr.get_total_energy() - energy_begin)/energy_begin print(intr.get_time_step().in_(u.day), intr.get_time().in_(u.yr)) print(energy_error) print("energy error:{}".format(energy_error)) intr.stop()
def evolve_system_with_massloss(particles, mass_sequence, time_sequence, datahandler): """ Parameters ---------- particles: a two-body system mass_sequence: sequence of masses time_sequence: sequence of times datahandler: HDF5HandlerAmuse context manager """ h = datahandler intr = Hermite(nbody_to_si(particles.total_mass(), 1 | u.AU)) intr.particles.add_particles(particles) h.append(particles[0].period0, "period0") for mass, time in zip(mass_sequence, time_sequence): intr.particles.move_to_center() intr.evolve_model(time) intr.particles[0].mass = mass h.append(intr.particles.center_of_mass(), "CM_position") h.append(intr.particles.center_of_mass_velocity(), "CM_velocity") h.append(intr.particles.position, "position") h.append(intr.particles.velocity, "velocity") h.append(intr.particles.mass, "mass") h.append(intr.particles.kinetic_energy(), "kinetic_energy") h.append(intr.particles.potential_energy(), "potential_energy") h.append(intr.get_total_energy(), "total_energy") h.append(time, "time") h.append(semimajoraxis_from_binary(intr.particles), "sma") h.append(eccentricity_from_binary(intr.particles), "eccentricity") intr.stop()