Example #1
0
    def __init__(self, atoms, kpts=(1,1,1), use_spline=False,
                 maximum_angular_momenta={}, **kwargs):

        if type(kpts) == float or type(kpts) == int:
            mp = kptdensity2monkhorstpack(atoms, kptdensity=kpts, even=False)
            kpts = tuple(mp)

        if use_spline:
            kwargs['Hamiltonian_PolynomialRepulsive'] = 'SetForAll { No }'
        else:
            kwargs['Hamiltonian_PolynomialRepulsive'] = 'SetForAll { Yes }'

        if type(kpts) == float or type(kpts) == int:
            mp = kptdensity2monkhorstpack(atoms, kptdensity=kpts, even=False)
            kpts = tuple(mp)

        kwargs['Hamiltonian_MaxAngularMomentum_'] = ''
        symbols = atoms.get_chemical_symbols()
        unique_symbols = list(set(symbols))
        for s in unique_symbols:
              key = 'Hamiltonian_MaxAngularMomentum_%s' % s
              maxmom = maximum_angular_momenta[s]
              kwargs[key] = 'spd'[maxmom].__repr__()

        kwargs['Hamiltonian_SCC'] = 'Yes'
        kwargs['Hamiltonian_ShellResolvedSCC'] = 'No'
        Dftb.__init__(self, atoms=atoms, kpts=kpts, **kwargs)
    def __init__(self,
                 atoms,
                 kpts=(1, 1, 1),
                 use_spline=False,
                 maximum_angular_momenta={},
                 read_chg=False,
                 label='dftb_run',
                 **extra_dftbplus_kwargs):

        if type(kpts) == float or type(kpts) == int:
            mp = kptdensity2monkhorstpack(atoms, kptdensity=kpts, even=False)
            kpts = tuple(mp)

        s = 'No' if use_spline else 'Yes'
        polyrep = 'SetForAll { %s }' % s

        self.read_chg = read_chg

        parameters = {
            'Hamiltonian_SCC': 'Yes',
            'Hamiltonian_OrbitalResolvedSCC': 'Yes',
            'Hamiltonian_SCCTolerance': '1e-5',
            'Hamiltonian_MaxSCCIterations': 250,
            'Hamiltonian_MaxAngularMomentum_': '',
            'Hamiltonian_Charge': '0.000000',
            'Hamiltonian_ReadInitialCharges': 'No',
            'Hamiltonian_Filling': 'Fermi {',
            'Hamiltonian_Filling_empty': 'Temperature [Kelvin] = 500',
            'Hamiltonian_PolynomialRepulsive': polyrep,
            'Hamiltonian_Eigensolver': 'RelativelyRobust {}',
        }

        symbols = atoms.get_chemical_symbols()
        unique_symbols = list(set(symbols))
        for s in unique_symbols:
            key = 'Hamiltonian_MaxAngularMomentum_%s' % s
            maxmom = maximum_angular_momenta[s]
            parameters[key] = 'spd'[maxmom].__repr__()

        parameters.update(extra_dftbplus_kwargs)

        Dftb.__init__(self, label=label, kpts=kpts, atoms=atoms, **parameters)