def refine_cell(cell, symprec=1e-5, angle_tolerance=-1.0): """Return refined cell. The standardized unit cell is returned by a tuple of (lattice, positions, numbers). If it fails, None is returned. """ _set_no_error() lattice, _positions, _numbers, _ = _expand_cell(cell) if lattice is None: return None # Atomic positions have to be specified by scaled positions for spglib. num_atom = len(_positions) positions = np.zeros((num_atom * 4, 3), dtype='double', order='C') positions[:num_atom] = _positions numbers = np.zeros(num_atom * 4, dtype='intc') numbers[:num_atom] = _numbers num_atom_std = spg.refine_cell(lattice, positions, numbers, num_atom, symprec, angle_tolerance) _set_error_message() if num_atom_std > 0: return (np.array(lattice.T, dtype='double', order='C'), np.array(positions[:num_atom_std], dtype='double', order='C'), np.array(numbers[:num_atom_std], dtype='intc')) else: return None
def refine_cell(bulk, symprec=1e-5, angle_tolerance=-1.0): """ Return refined cell """ # Atomic positions have to be specified by scaled positions for spglib. num_atom = bulk.get_number_of_atoms() lattice = bulk.get_cell().T.copy() pos = np.zeros((num_atom * 4, 3), dtype='double') pos[:num_atom] = bulk.get_scaled_positions() numbers = np.zeros(num_atom * 4, dtype='intc') numbers[:num_atom] = np.intc(bulk.get_atomic_numbers()) num_atom_bravais = spg.refine_cell(lattice, pos, numbers, num_atom, symprec, angle_tolerance) return (lattice.T.copy(), pos[:num_atom_bravais].copy(), numbers[:num_atom_bravais].copy())
def refine_cell(bulk, symprec=1e-5): """ Return refined cell """ # Atomic positions have to be specified by scaled positions for spglib. num_atom = bulk.get_number_of_atoms() lattice = bulk.get_cell().T.copy() pos = np.zeros( ( num_atom * 4, 3 ), dtype=float ) pos[:num_atom] = bulk.get_scaled_positions() numbers = np.zeros( num_atom * 4, dtype=int ) numbers[:num_atom] = bulk.get_atomic_numbers() num_atom_bravais = spg.refine_cell( lattice, pos, numbers, num_atom, symprec ) return lattice.T.copy(), pos[:num_atom_bravais], numbers[:num_atom_bravais]
def refine_cell(bulk, symprec=1e-5, angle_tolerance=-1.0): """ Return refined cell """ # Atomic positions have to be specified by scaled positions for spglib. num_atom = bulk.get_number_of_atoms() lattice = np.array(bulk.get_cell().T, dtype='double', order='C') pos = np.zeros((num_atom * 4, 3), dtype='double') pos[:num_atom] = bulk.get_scaled_positions() numbers = np.zeros(num_atom * 4, dtype='intc') numbers[:num_atom] = np.array(bulk.get_atomic_numbers(), dtype='intc') num_atom_std = spg.refine_cell(lattice, pos, numbers, num_atom, symprec, angle_tolerance) return (np.array(lattice.T, dtype='double', order='C'), np.array(pos[:num_atom_std], dtype='double', order='C'), np.array(numbers[:num_atom_std], dtype='intc'))
def refine_cell(cell, symprec=1e-5, angle_tolerance=-1.0): """ Return refined cell """ lattice, _positions, _numbers, _ = _expand_cell(cell) # Atomic positions have to be specified by scaled positions for spglib. num_atom = len(_positions) positions = np.zeros((num_atom * 4, 3), dtype='double', order='C') positions[:num_atom] = _positions numbers = np.zeros(num_atom * 4, dtype='intc') numbers[:num_atom] = _numbers num_atom_std = spg.refine_cell(lattice, positions, numbers, num_atom, symprec, angle_tolerance) return (np.array(lattice.T, dtype='double', order='C'), np.array(positions[:num_atom_std], dtype='double', order='C'), np.array(numbers[:num_atom_std], dtype='intc'))