예제 #1
0
 def __call__(self, name, atoms):
     calculator = GPAWFactory.__call__(self, name, atoms)
     calculator.set(nbands=-2)
     if name.split('-')[0] in ['Ne', 'Ar', 'Kr', 'Xe', 'Rn',
                               'K', 'Ca', 'Cs', 'Ba', 'Sr', 'Rb']:
         # MDTMP: not enough orbitals - use dzp!
         calculator.set(nbands=-1)
         calculator.set(basis='dzp')
     if name.split('-')[0] in ['Rb']:
         calculator.set(nbands=-1)
     if name.split('-')[0] in ['In', 'Cs', 'Sb', 'Ni', 'Ta', 'As',
                               'V', 'Ni', 'Li', 'Rb', 'Tl']:
         calculator.set(nbands=-3)
     if name.split('-')[0] in ['Ca', 'Zn', 'Zr', 'Pb', 'Sr',
                               'Xe', 'Rn', 'Ru', 'N', 'Os',
                               'Cl', 'Cd']:
         calculator.set(nbands=-4)
     if name.split('-')[0] in ['Sc']:
         calculator.set(nbands=-5)
     if name.split('-')[0] in ['Ba', 'Os']:
         calculator.set(nbands=-6)
     if name.split('-')[0] in ['K']:
         calculator.set(nbands=-7)
     if name.split('-')[0] in ['Ne', 'Ar', 'Kr']:
         calculator.set(nbands=-8)
     if name.split('-')[0] in ['Cr']:
         calculator.set(nbands=-10)
     if name.split('-')[0] in ['Ti', 'Cr', 'Fe', 'Y', 'Nb', 'Mo',
                               'Te', 'Hf', 'Re', 'Hg', 'Sb', 'Ca',
                               'Pd', 'Ni', 'Ta',
                               'Ru', 'Rh', 'V', 'Ag', 'Ir',
                               'W', 'Pt', 'Mn', 'Sn',
                               'Zn', 'Os', 'Mg', 'Zn',
                               'Na', 'Bi', 'Sc', 'Zr',
                               ]:
         calculator.set(eigensolver='cg')
         calculator.set(parallel={'band': 1})
     if name.split('-')[0] in ['Li', 'Na']:
         # https://listserv.fysik.dtu.dk/pipermail/gpaw-developers/2012-May/002870.html
         calculator.set(h=0.05)
     if name.split('-')[0] in ['Cs']:
         calculator.set(usesymm=False)
         calculator.set(eigensolver='cg')
         calculator.set(parallel={'band': 1})
     if name.split('-')[0] in ['Mn']:
         calculator.set(mixer=MixerDif())
         calculator.set(maxiter=450)
     if name.split('-')[0] in ['Cr']:
         calculator.set(mixer=MixerDif())
         calculator.set(maxiter=650)
     return calculator
예제 #2
0
 def __call__(self, name, atoms):
     calculator = GPAWFactory.__call__(self, name, atoms)
     if name.split('-')[0] in ['Li', 'Na']:
         # https://listserv.fysik.dtu.dk/pipermail/gpaw-developers/2012-May/002870.html
         calculator.set(h=0.11)
     if self.inititer > 0:
         try:
             calculator.set(eigensolver='cg')
             calculator.set(maxiter=self.inititer)
             atoms.set_calculator(calculator)
             atoms.get_potential_energy()
         except ConvergenceError:
             pass
         calculator.set(maxiter=self.maxiter)
         calculator.set(eigensolver=self.eigensolver)
     return calculator
예제 #3
0
 def __call__(self, name, atoms):
     calculator = GPAWFactory.__call__(self, name, atoms)
     if name.split('-')[0] in ['Li', 'Na']:
         # https://listserv.fysik.dtu.dk/pipermail/gpaw-developers/2012-May/002870.html
         calculator.set(h=0.11)
     if self.inititer > 0:
         try:
             calculator.set(eigensolver='cg')
             calculator.set(maxiter=self.inititer)
             atoms.set_calculator(calculator)
             atoms.get_potential_energy()
         except ConvergenceError:
             pass
         calculator.set(maxiter=self.maxiter)
         calculator.set(eigensolver=self.eigensolver)
     return calculator
예제 #4
0
 def __call__(self, name, atoms):
     calculator = GPAWFactory.__call__(self, name, atoms)
     calculator.set(nbands=-2)
     if name.split('-')[0] in [
             'Ne', 'Ar', 'Kr', 'Xe', 'Rn', 'K', 'Ca', 'Cs', 'Ba', 'Sr', 'Rb'
     ]:
         # MDTMP: not enough orbitals - use dzp!
         calculator.set(nbands=-1)
         calculator.set(basis='dzp')
     if name.split('-')[0] in ['Rb']:
         calculator.set(nbands=-1)
     if name.split('-')[0] in [
             'In', 'Cs', 'Sb', 'Ni', 'Ta', 'As', 'V', 'Ni', 'Li', 'Rb', 'Tl'
     ]:
         calculator.set(nbands=-3)
     if name.split('-')[0] in [
             'Ca', 'Zn', 'Zr', 'Pb', 'Sr', 'Xe', 'Rn', 'Ru', 'N', 'Os',
             'Cl', 'Cd'
     ]:
         calculator.set(nbands=-4)
     if name.split('-')[0] in ['Sc']:
         calculator.set(nbands=-5)
     if name.split('-')[0] in ['Ba', 'Os']:
         calculator.set(nbands=-6)
     if name.split('-')[0] in ['K']:
         calculator.set(nbands=-7)
     if name.split('-')[0] in ['Ne', 'Ar', 'Kr']:
         calculator.set(nbands=-8)
     if name.split('-')[0] in ['Cr']:
         calculator.set(nbands=-10)
     if name.split('-')[0] in [
             'Ti',
             'Cr',
             'Fe',
             'Y',
             'Nb',
             'Mo',
             'Te',
             'Hf',
             'Re',
             'Hg',
             'Sb',
             'Ca',
             'Pd',
             'Ni',
             'Ta',
             'Ru',
             'Rh',
             'V',
             'Ag',
             'Ir',
             'W',
             'Pt',
             'Mn',
             'Sn',
             'Zn',
             'Os',
             'Mg',
             'Zn',
             'Na',
             'Bi',
             'Sc',
             'Zr',
     ]:
         calculator.set(eigensolver='cg')
         calculator.set(parallel={'band': 1})
     if name.split('-')[0] in ['Li', 'Na']:
         # https://listserv.fysik.dtu.dk/pipermail/gpaw-developers/2012-May/002870.html
         calculator.set(h=0.05)
     if name.split('-')[0] in ['Cs']:
         calculator.set(symmetry='off')
         calculator.set(eigensolver='cg')
         calculator.set(parallel={'band': 1})
     if name.split('-')[0] in ['Mn']:
         calculator.set(mixer=MixerDif())
         calculator.set(maxiter=450)
     if name.split('-')[0] in ['Cr']:
         calculator.set(mixer=MixerDif())
         calculator.set(maxiter=650)
     return calculator