Statistiques
| Révision :

root / ase / io / iwm.py @ 16

Historique | Voir | Annoter | Télécharger (1,13 ko)

1 1 tkerber
from math import pi, cos, sin, sqrt, acos
2 1 tkerber
import numpy as np
3 1 tkerber
4 1 tkerber
from ase.data import chemical_symbols
5 1 tkerber
from ase.atoms import Atoms
6 1 tkerber
from ase.parallel import paropen
7 1 tkerber
8 1 tkerber
iwm_symbols = {'1' : 'C',
9 1 tkerber
               '2' : 'Au',
10 1 tkerber
               '5' : 'Ag'}
11 1 tkerber
12 1 tkerber
def read_iwm(fileobj, index=-1):
13 1 tkerber
    if isinstance(fileobj, str):
14 1 tkerber
        fileobj = open(fileobj)
15 1 tkerber
16 1 tkerber
    lines = fileobj.readlines()
17 1 tkerber
    L1 = lines[1].split()
18 1 tkerber
    if len(L1) == 1:
19 1 tkerber
        del lines[:3]
20 1 tkerber
        natoms = int(L1[0])
21 1 tkerber
    else:
22 1 tkerber
        natoms = len(lines)
23 1 tkerber
    images = []
24 1 tkerber
25 1 tkerber
    positions = []
26 1 tkerber
    symbols = []
27 1 tkerber
    for line in lines[:natoms]:
28 1 tkerber
        symbol, mass, x, y, z = line.split()[:5]
29 1 tkerber
        if symbol in iwm_symbols:
30 1 tkerber
            symbols.append(iwm_symbols[symbol])
31 1 tkerber
        else:
32 1 tkerber
            symbols.append(chemical_symbols[int(symbol)])
33 1 tkerber
        positions.append([float(x), float(y), float(z)])
34 1 tkerber
35 1 tkerber
    del(lines[natoms:3 * natoms + 3])
36 1 tkerber
37 1 tkerber
    cell = []
38 1 tkerber
    for line in lines[natoms:natoms+3]:
39 1 tkerber
        x, y, z = line.split()[:3]
40 1 tkerber
        cell.append(np.array([float(x), float(y), float(z)]))
41 1 tkerber
42 1 tkerber
    images.append(Atoms(symbols=symbols, positions=positions, cell=cell))
43 1 tkerber
44 1 tkerber
    return images[index]