Statistiques
| Révision :

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

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

1 1 tkerber
#/usr/bin/env python
2 1 tkerber
#PBS -l nodes=4:ppn=8
3 1 tkerber
#PBS -l walltime=02:15:00
4 1 tkerber
5 1 tkerber
from ase import Atom, Atoms
6 1 tkerber
from ase.io import read
7 1 tkerber
from ase.constraints import FixAtoms
8 1 tkerber
from ase.optimize.test import run_test
9 1 tkerber
from gpaw import GPAW
10 1 tkerber
from gpaw import Mixer
11 1 tkerber
from gpaw.poisson import PoissonSolver
12 1 tkerber
13 1 tkerber
name = 'nanoparticle'
14 1 tkerber
15 1 tkerber
def get_atoms():
16 1 tkerber
    atoms = Atoms([
17 1 tkerber
        Atom('Pd', [5.078689759346383, 5.410678028467162, 4.000000000000000]),
18 1 tkerber
        Atom('Pd', [7.522055777772603, 4.000000000000000, 4.000000000000000]),
19 1 tkerber
        Atom('Pd', [7.522055777772603, 6.821356056934325, 4.000000000000000]),
20 1 tkerber
        Atom('Pd', [6.707600438297196, 5.410678028467162, 6.303627574066606]),
21 1 tkerber
        Atom('N',  [4.807604264052752, 5.728625577716107, 5.919407072553396]),
22 1 tkerber
        Atom('H',  [4.000000000000000, 5.965167390141987, 6.490469524180266]),
23 1 tkerber
    ])
24 1 tkerber
25 1 tkerber
    constraint = FixAtoms(mask=[a.symbol == 'Pd' for a in atoms])
26 1 tkerber
    atoms.set_constraint(constraint)
27 1 tkerber
    atoms.center(vacuum=4.0)
28 1 tkerber
    atoms.set_pbc(False)
29 1 tkerber
    return atoms
30 1 tkerber
31 1 tkerber
def get_calculator():
32 1 tkerber
    calc = GPAW(gpts=(64, 64, 64), #h=0.18, gives 64x60x60
33 1 tkerber
                mode='lcao',
34 1 tkerber
                basis='szp(dzp)',
35 1 tkerber
                nbands=-5,
36 1 tkerber
                xc='LDA',
37 1 tkerber
                width=0.1,
38 1 tkerber
                mixer=Mixer(beta=0.1, nmaxold=5, weight=50.0),
39 1 tkerber
                poissonsolver=PoissonSolver(nn='M', relax='GS'),
40 1 tkerber
                convergence={'energy': 1e-4, 'bands': -3},
41 1 tkerber
                stencils=(3, 3),
42 1 tkerber
                txt='nanoparticle.txt')
43 1 tkerber
    return calc
44 1 tkerber
45 1 tkerber
run_test(get_atoms, get_calculator, name, fmax=0.05, steps=200)