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) |