def add_particles_to_store(self, keys, attributes=[], values=[]): if len(keys) == 0: return all_attributes = [] all_attributes.extend(attributes) all_values = [] all_values.extend(values) mapping_from_attribute_to_default_value = { "stellar_type": 1 | units.stellar_type, "radius": 0 | units.RSun, "luminosity": 0 | units.LSun, "core_mass": 0 | units.MSun, "CO_core_mass": 0 | units.MSun, "core_radius": 0 | units.RSun, "convective_envelope_mass": 0 | units.MSun, "convective_envelope_radius": 0 | units.RSun, "epoch": 0 | units.Myr, "spin": 0 | units.yr**-1, "main_sequence_lifetime": 0 | units.Myr, "age": 0 | units.Myr } given_attributes = set(attributes) if not "initial_mass" in given_attributes: index_of_mass_attibute = attributes.index("mass") all_attributes.append("initial_mass") all_values.append(values[index_of_mass_attibute] * 1.0) for attribute, default_value in mapping_from_attribute_to_default_value.items( ): if not attribute in given_attributes: all_attributes.append(attribute) all_values.append( default_value.as_vector_with_length(len(keys))) super(SSEParticles, self).add_particles_to_store(keys, all_attributes, all_values) added_particles = ParticlesSubset(self, keys) self._private.code_interface._evolve_particles(added_particles, 0 | units.yr)
def add_particles_to_store(self, keys, attributes=[], values=[]): if len(keys) == 0: return given_attributes = set(attributes) if not "child1" in given_attributes: raise Exception("a binary must always have a child1 attribute") if not "child2" in given_attributes: raise Exception("a binary must always have a child2 attribute") all_attributes = [] all_values = [] for attribute, value in zip(attributes, values): all_attributes.append(attribute) if attribute == 'child1' or attribute == 'child2': value = value.copy_with_link_transfer( None, self._private.code_interface.particles) all_values.append(value) else: all_values.append(value) mapping_from_attribute_to_default_value = { "eccentricity": 0.0 | units.none, "age": 0 | units.Myr } for attribute, default_value in mapping_from_attribute_to_default_value.iteritems( ): if not attribute in given_attributes: all_attributes.append(attribute) all_values.append( default_value.as_vector_with_length(len(keys))) super(MOBSEBinaries, self).add_particles_to_store(keys, all_attributes, all_values) added_particles = ParticlesSubset(self, keys) self._private.code_interface._evolve_binaries(added_particles, 1e-08 | units.yr)