def _get_atoms(filename, topology, unit_style, type_list): """Function to parse the atom information in the LAMMPS data file """ with open(filename, 'r') as lammps_file: for i, line in enumerate(lammps_file): if 'atoms' in line.split(): n_atoms = int(line.split()[0]) if 'Atoms' in line.split(): break atom_lines = open(filename, 'r').readlines()[i+2:i+n_atoms+2] for line in atom_lines: atom_line = line.split() atom_type = atom_line[2] charge = u.unyt_quantity(float(atom_line[3]), get_units(unit_style)['charge']) coord = u.angstrom * u.unyt_array([ float(atom_line[4]), float(atom_line[5]), float(atom_line[6])]) site = Site( charge=charge, position=coord, atom_type=type_list[int(atom_type)-1] ) element = element_by_mass(site.atom_type.mass.value) site.name = element.name site.element = element topology.add_site(site) topology.update_sites() return topology
def test_setters_and_getters(self): site = Site(name='Lithium', element=Lithium, charge=1, mass=6.941) assert site.name == 'Lithium' assert site.element == Lithium assert site.charge == 1 * u.elementary_charge assert site.mass == 6.941 * u.gram / u.mol site.name = 'Sulfur' site.element = Sulfur site.charge = -1 site.mass = 32.065 assert site.name == 'Sulfur' assert site.element == Sulfur assert site.charge == -1 * u.elementary_charge assert site.mass == 32.065 * u.gram / u.mol site.element, site.charge, site.mass = None, None, None assert site.element is None assert site.charge is None assert site.mass is None