root / ase / optimize / test / nanoparticle.py @ 14
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) |