def test_atoms_fmt(): Mol = Molecule() # standard: bohr: assert Mol.getFmt() == 'bohr' assert float_equal(Mol.getCellDim(), 1) assert vec_equal(Mol.getVec(), ((1, 0, 0), (0, 1, 0), (0, 0, 1))) Mol.newAtom('C', (1, 1, 1)) assert atom_equal(Mol.getAtom(0), ('C', (1, 1, 1))) # transition to angstrom: Mol.setFmt("angstrom", scale=True) assert Mol.getFmt() == 'angstrom' Mol.setCellDim(1) assert float_equal(Mol.getCellDim(), 1) assert atom_equal(Mol.getAtom(0, fmt="angstrom"), ('C', (1, 1, 1))) Mol.setCellDim(2.5, scale=True, fmt='angstrom') Mol.newAtom('C', (2.5, 2.5, 2.5), fmt='angstrom') for at in Mol.getAtoms(): assert atom_equal(at, ('C', (2.5, 2.5, 2.5))) Mol.setVec(((2, 0, 0), (0, 2, 0), (0, 0, 2)), scale=True) assert vec_equal(Mol.getVec(), ((2, 0, 0), (0, 2, 0), (0, 0, 2))) Mol.newAtom('C', (5, 5, 5), fmt='angstrom') Mol.newAtom('C', (2, 2, 2), fmt='alat') Mol.newAtom('C', (1, 1, 1), fmt='crystal') for at in Mol.getAtoms(): assert atom_equal(at, ('C', (5, 5, 5))) for at in Mol.getAtoms(fmt='alat'): assert atom_equal(at, ('C', (2, 2, 2))) for at in Mol.getAtoms(fmt='crystal'): assert atom_equal(at, ('C', (1, 1, 1))) # scale back down to bohr Mol.setCellDim(2.5, scale=True, fmt='bohr') for at in Mol.getAtoms(fmt='bohr'): assert atom_equal(at, ('C', (5, 5, 5))) Mol.setFmt('alat', scale=True) for at in Mol.getAtoms(fmt='bohr'): assert atom_equal(at, ('C', (12.5, 12.5, 12.5))) Mol.setFmt('crystal', scale=True) for at in Mol.getAtoms(fmt='bohr'): assert atom_equal(at, ('C', (62.5, 62.5, 62.5))) assert vec_equal(Mol.getCenter(), (2.5, 2.5, 2.5)) assert vec_equal(Mol.getCenter(com=True), (62.5, 62.5, 62.5))