atoms=atoms,
                                 kpts_scf=kpts,
                                 reference_level='vbm',
                                 nsemicore=0,
                                 weight=1.,
                                 distribution={
                                     'type': 'Boltzmann',
                                     'kBT': 1.5
                                 })

# Setting up and running the actual optimizer
# (the keyword arguments are known from hotcent.slako.SlaterKosterTable)
confopt = ConfinementOptimizer(atom,
                               N=500,
                               rmin=0.4,
                               dr=0.02,
                               stride=4,
                               superposition='density',
                               xc=xc)

# The initial confinement parameters are the same as in Tutorial #1.
# The additional 'adjustable' keyword argument serves to indicate
# which parameters are allowed to vary. Here we keep the quadratic
# form (s=2) and treat the confinement radii r0 as variable.
rcov = covalent_radii[atomic_numbers[element]] / Bohr

if len(valence) == 1:
    initial_guess = {
        element + '_' + valence[0]:
        PowerConfinement(r0=2 * rcov, s=2, adjustable=['r0']),
        element + '_n':
Ejemplo n.º 2
0
    atom.info['hubbardvalues'] = {'s': U_p}
    atom.info['occupations'] = {'2s': 2, '2p': occ_2p}
    atoms.append(atom)

sk_kwargs = {
    'N': {
        'default': 380,
        'O-O': 420
    },
    'rmin': 0.4,
    'dr': 0.02,
    'stride': 5,
    'superposition': 'density',
    'xc': 'LDA'
}
confopt = ConfinementOptimizer(*atoms, **sk_kwargs)

initial_guess = {}
for element in elements:
    rcov = covalent_radii[atomic_numbers[element]] / Bohr
    initial_guess['%s_2s,%s_2p' % (element, element)] = \
                  PowerConfinement(r0=2 * rcov, s=2, adjustable=['r0'])
    initial_guess['%s_n' % element] = PowerConfinement(r0=3 * rcov,
                                                       s=2,
                                                       adjustable=['r0'])

vconf = confopt.run(dpbs.get_residual,
                    initial_guess=initial_guess,
                    tol=1e-2,
                    method='COBYLA',
                    options={