Statistiques
| Révision :

root / ase / optimize / test / C2_Cu100.py @ 1

Historique | Voir | Annoter | Télécharger (4,72 ko)

1 1 tkerber
#PBS -l nodes=4:ppn=8
2 1 tkerber
#PBS -l walltime=13:00:00
3 1 tkerber
import numpy as np
4 1 tkerber
from ase import Atoms
5 1 tkerber
from ase.constraints import FixedPlane, FixAtoms
6 1 tkerber
from ase.optimize.test import run_test
7 1 tkerber
from gpaw import GPAW, Mixer
8 1 tkerber
from gpaw.poisson import PoissonSolver
9 1 tkerber
10 1 tkerber
def get_calculator():
11 1 tkerber
    basis = 'szp(dzp)'
12 1 tkerber
    calc = GPAW(gpts=(64, 64, 128), # ca h=0.25
13 1 tkerber
                width=0.1,
14 1 tkerber
                nbands=-5,
15 1 tkerber
                xc='LDA',
16 1 tkerber
                mode='lcao',
17 1 tkerber
                txt='C2_Cu100.txt',
18 1 tkerber
                mixer=Mixer(beta=0.1, nmaxold=5, weight=50.0),
19 1 tkerber
                poissonsolver=PoissonSolver(nn='M', relax='GS'),
20 1 tkerber
                stencils=(3, 3),
21 1 tkerber
                maxiter=400,
22 1 tkerber
                basis=basis)
23 1 tkerber
    return calc
24 1 tkerber
25 1 tkerber
def get_atoms():
26 1 tkerber
    srf = Atoms('Cu64',[(1.2763,    1.2763,    4.0000),
27 1 tkerber
                        (3.8290,    1.2763,    4.0000),
28 1 tkerber
                        (6.3816,    1.2763,    4.0000),
29 1 tkerber
                        (8.9343,    1.2763,    4.0000),
30 1 tkerber
                        (1.2763,    3.8290,    4.0000),
31 1 tkerber
                        (3.8290,    3.8290,    4.0000),
32 1 tkerber
                        (6.3816,    3.8290,    4.0000),
33 1 tkerber
                        (8.9343,    3.8290,    4.0000),
34 1 tkerber
                        (1.2763,    6.3816,    4.0000),
35 1 tkerber
                        (3.8290,    6.3816,    4.0000),
36 1 tkerber
                        (6.3816,    6.3816,    4.0000),
37 1 tkerber
                        (8.9343,    6.3816,    4.0000),
38 1 tkerber
                        (1.2763,    8.9343,    4.0000),
39 1 tkerber
                        (3.8290,    8.9343,    4.0000),
40 1 tkerber
                        (6.3816,    8.9343,    4.0000),
41 1 tkerber
                        (8.9343,    8.9343,    4.0000),
42 1 tkerber
                        (0.0000,    0.0000,    5.8050),
43 1 tkerber
                        (2.5527,    0.0000,    5.8050),
44 1 tkerber
                        (5.1053,    0.0000,    5.8050),
45 1 tkerber
                        (7.6580,    0.0000,    5.8050),
46 1 tkerber
                        (0.0000,    2.5527,    5.8050),
47 1 tkerber
                        (2.5527,    2.5527,    5.8050),
48 1 tkerber
                        (5.1053,    2.5527,    5.8050),
49 1 tkerber
                        (7.6580,    2.5527,    5.8050),
50 1 tkerber
                        (0.0000,    5.1053,    5.8050),
51 1 tkerber
                        (2.5527,    5.1053,    5.8050),
52 1 tkerber
                        (5.1053,    5.1053,    5.8050),
53 1 tkerber
                        (7.6580,    5.1053,    5.8050),
54 1 tkerber
                        (0.0000,    7.6580,    5.8050),
55 1 tkerber
                        (2.5527,    7.6580,    5.8050),
56 1 tkerber
                        (5.1053,    7.6580,    5.8050),
57 1 tkerber
                        (7.6580,    7.6580,    5.8050),
58 1 tkerber
                        (1.2409,    1.2409,    7.6081),
59 1 tkerber
                        (3.7731,    1.2803,    7.6603),
60 1 tkerber
                        (6.3219,    1.3241,    7.6442),
61 1 tkerber
                        (8.8935,    1.2669,    7.6189),
62 1 tkerber
                        (1.2803,    3.7731,    7.6603),
63 1 tkerber
                        (3.8188,    3.8188,    7.5870),
64 1 tkerber
                        (6.3457,    3.8718,    7.6649),
65 1 tkerber
                        (8.9174,    3.8340,    7.5976),
66 1 tkerber
                        (1.3241,    6.3219,    7.6442),
67 1 tkerber
                        (3.8718,    6.3457,    7.6649),
68 1 tkerber
                        (6.3945,    6.3945,    7.6495),
69 1 tkerber
                        (8.9576,    6.3976,    7.6213),
70 1 tkerber
                        (1.2669,    8.8935,    7.6189),
71 1 tkerber
                        (3.8340,    8.9174,    7.5976),
72 1 tkerber
                        (6.3976,    8.9576,    7.6213),
73 1 tkerber
                        (8.9367,    8.9367,    7.6539),
74 1 tkerber
                        (0.0582,    0.0582,    9.4227),
75 1 tkerber
                        (2.5965,   -0.2051,    9.4199),
76 1 tkerber
                        (5.1282,    0.0663,    9.4037),
77 1 tkerber
                        (7.6808,   -0.0157,    9.4235),
78 1 tkerber
                        (-0.2051,   2.5965,    9.4199),
79 1 tkerber
                        (2.1913,    2.1913,    9.6123),
80 1 tkerber
                        (5.0046,    2.5955,    9.4873),
81 1 tkerber
                        (7.5409,    2.5336,    9.4126),
82 1 tkerber
                        (0.0663,    5.1282,    9.4037),
83 1 tkerber
                        (2.5955,    5.0046,    9.4873),
84 1 tkerber
                        (5.3381,    5.3381,    9.6106),
85 1 tkerber
                        (7.8015,    5.0682,    9.4237),
86 1 tkerber
                        (-0.0157,   7.6808,    9.4235),
87 1 tkerber
                        (2.5336,    7.5409,    9.4126),
88 1 tkerber
                        (5.0682,    7.8015,    9.4237),
89 1 tkerber
                        (7.6155,    7.6155,    9.4317)])
90 1 tkerber
    c2=Atoms('C2', [(3.2897,    3.2897,   10.6627),
91 1 tkerber
                    (4.2113,    4.2113,   10.6493)])
92 1 tkerber
    srf.extend(c2)
93 1 tkerber
    srf.pbc=(1, 1, 0)
94 1 tkerber
    srf.set_cell([ 10.2106, 10.2106, 20.6572],scale_atoms=False)
95 1 tkerber
96 1 tkerber
    mask=[a.index < 32  for a in srf]
97 1 tkerber
    c1 = FixedPlane(-1, (1/np.sqrt(2), 1/np.sqrt(2), 1))
98 1 tkerber
    c2 = FixedPlane(-2, (1/np.sqrt(2), 1/np.sqrt(2), 1))
99 1 tkerber
    constraint = FixAtoms(mask=mask)
100 1 tkerber
    srf.set_constraint([constraint, c1, c2])
101 1 tkerber
    return srf
102 1 tkerber
103 1 tkerber
run_test(get_atoms, get_calculator, 'C2_Cu100')