Author Topic: A question about Hückel parameters  (Read 10142 times)

0 Members and 1 Guest are viewing this topic.

Offline ziand

  • Heavy QuantumATK user
  • ***
  • Posts: 78
  • Country: de
  • Reputation: 5
    • View Profile
A question about Hückel parameters
« on: October 23, 2012, 10:49 »
The Cerdá Hückel parameters are double-zeta (two STOs per atomic orbital). Thus, in general, I need three parameters to describe an orbital: two Slater coefficients eta1, eta2 and one weighting factor C1. The other weight C2 is given by normalization.
As Cerdá wrote in his original paper, single-zeta is sometimes enough and in that case, one of the two STOs is chosen very localized: eta2 > 20. ATK takes only eta1 and C1 in that case.
Now I want to publish something about an improved set of Hückel parameters and therefore I'd like to know the value of eta2 (for example in case of the carbon 2s orbital; but should be same for all such orbitals).

Thanks.

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5576
  • Country: dk
  • Reputation: 96
    • View Profile
    • QuantumATK at Synopsys
Re: A question about Hückel parameters
« Reply #1 on: October 23, 2012, 11:26 »
Very simple: it's infinite. That is, if there should only be one STO, we only use one STO, rather than fudging it with a high eta2.

Offline ziand

  • Heavy QuantumATK user
  • ***
  • Posts: 78
  • Country: de
  • Reputation: 5
    • View Profile
Re: A question about Hückel parameters
« Reply #2 on: January 9, 2014, 17:11 »
Sorry for bringing this old post up again.
Quote
Very simple: it's infinite. That is, if there should only be one STO, we only use one STO, rather than fudging it with a high eta2.
If this is true, it should mean that C1 == 1, otherwise the orbital isn't normalized.
But this is not the case for the Cerda parameters.

My calculation:
Radial part of a singe STO is
R(n,C1,et1,r) = { r^(n-1) / sqrt[(2n)!] } * C1 * (2*eta1)^(n+1/2) * exp(-eta1*r)
If I integrate R(n,C1,et1,r)^2*r^2 dr from 0 to infinity I get a surprisingly simple result: it's C1^2.
Thus, the normalization condition is C1^2 == 1. Or am I wrong here?

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5576
  • Country: dk
  • Reputation: 96
    • View Profile
    • QuantumATK at Synopsys
Re: A question about Hückel parameters
« Reply #3 on: January 9, 2014, 21:14 »
Correct - C1 is not a free parameter in this case, as it's determined by the normalization. The free parameter is C2/C1 in case you have 2 (or more).

Offline ziand

  • Heavy QuantumATK user
  • ***
  • Posts: 78
  • Country: de
  • Reputation: 5
    • View Profile
Re: A question about Hückel parameters
« Reply #4 on: January 10, 2014, 14:31 »
I still don't get it.
Quote
Correct - C1 is not a free parameter in this case, as it's determined by the normalization.
For the Müller and Hoffmann parameters it is as expected.
But in the Cerda Hückel parameter table in the ATK manual, C1 appears as a free parameter.
Example: Cerda carbon graphite basis, 2s orbital: C1 (= W1) = 0.76422 and eta1 = 2.0249. Is the orbital not normalized? Or does it not matter in practice because an additional very localized orbital would correct the normalization but would numerically not contribute to any final results.

I also spotted a slight discrepancy:
For the Cerda carbon graphite basis the manual tells U = 10.0082eV
but in ATK it is
In [1]: CerdaHuckelParameters.Carbon_graphite_Basis.onsiteHartreeShift()
Out[1]: PhysicalQuantity([10.207, 10.207, 10.207],eV)

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5576
  • Country: dk
  • Reputation: 96
    • View Profile
    • QuantumATK at Synopsys
Re: A question about Hückel parameters
« Reply #5 on: January 10, 2014, 16:22 »
I haven't actually checked myself if it's normalized, but just because we list C1 doesn't mean it's free - if you change C2 then C1 must change too, to retain the normalization. The values listed are those which give a normalized total orbital (if it works as I suspect it should work).

Yes, we changed a bit in the Cerda model for 13.8 to make the model work in selfconsistent calculations, and changed the definitions a bit of the U parameters. Thanks for pointing it out, we didn't observe the change also affects the manual. The precise values of the onsite shifts have a very small influence on the results.
« Last Edit: January 10, 2014, 16:23 by Anders Blom »

Offline ziand

  • Heavy QuantumATK user
  • ***
  • Posts: 78
  • Country: de
  • Reputation: 5
    • View Profile
Re: A question about Hückel parameters
« Reply #6 on: January 13, 2014, 16:37 »
Well, then we are back at your answer to my first post, because for example the 2s orbital of carbon has just one STO.
I checked the normalization and C1 should be 1 in that case (see explanation of my previous post). But it is not.
I assumed C2 == 0 (single STO; i.e. eta2 == infinite).

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5576
  • Country: dk
  • Reputation: 96
    • View Profile
    • QuantumATK at Synopsys
Re: A question about Hückel parameters
« Reply #7 on: January 13, 2014, 16:42 »
I misread your post. Better I double-check before confusing you more! :)

Offline Nordland

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 812
  • Reputation: 18
    • View Profile
Re: A question about Hückel parameters
« Reply #8 on: January 13, 2014, 17:04 »
The actual normalization of basis function does not matter for ATK, because ATK always normalized the basis set prior to start actual calculations. In fact, the basis function that the user setup, is adjusted with a Gram-Schmidt process prior to starting the calculation. This gives better convergence, but allow user to operate in orbitals where he can see the physical nature of the orbitals.

Offline ziand

  • Heavy QuantumATK user
  • ***
  • Posts: 78
  • Country: de
  • Reputation: 5
    • View Profile
Re: A question about Hückel parameters
« Reply #9 on: January 13, 2014, 20:03 »
Ah, now most of my confusion is gone.  :D

Now I have a last question.
Given the fact that the orbitals are normalized by ATK:
Suppose I want to fit my own single-zeta STO Hückel basis (just one weight and one exponent per orbital per element).
Do I have to vary both the exponent and the weight of each orbital of the given element?
(I would guess, that keeping the weight fixed e.g. == 1 could be fine... -> one less parameter -> better fitting.)

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5576
  • Country: dk
  • Reputation: 96
    • View Profile
    • QuantumATK at Synopsys
Re: A question about Hückel parameters
« Reply #10 on: January 13, 2014, 21:51 »
Yes, the weights are as I mentioned only needed if you have more than one exponential per orbital, and then determines their relative contribution.

Offline Nordland

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 812
  • Reputation: 18
    • View Profile
Re: A question about Hückel parameters
« Reply #11 on: January 15, 2014, 10:03 »
If you dont know it already, ATK 13.8 includes scipy, and I personally use the minimize routines from scipy to optimizing the basis set from time to time. It is very easy to get started on,
 and it is quite robust. With a single STO you will only have one parameter, however if you have two STO, you will have four parameters.

Offline ziand

  • Heavy QuantumATK user
  • ***
  • Posts: 78
  • Country: de
  • Reputation: 5
    • View Profile
Re: A question about Hückel parameters
« Reply #12 on: January 15, 2014, 16:10 »
Thanks for the Info, but right now I only have ATK 12.8.2. The fitting itself is not the problem. Question 1: Why do I have 4 parameters if I have two STO? Question 2: I define Carbon with a STOs. Here is my basis set creation routine:
Code
huckelBasis = CerdaHuckelParameters.Carbon_graphite_Basis()
onsite_hartree_shift = huckelBasis.onsiteHartreeShift()
number_of_valence_electrons = int(huckelBasis.numberOfValenceElectrons())
wolfsberg_helmholtz_constant = huckelBasis.wolfsbergHelmholtzConstant()
vacuum_level = huckelBasis.vacuumLevel()

def createCerdaCarbonGraphiteBasis(x, w):
    carbon_2s = SlaterOrbital(principal_quantum_number = 2,
                              angular_momentum = 0,
                              slater_coefficients = x[3] * Bohr**-1,
                              weights = w[0])
    carbon_2p = SlaterOrbital(principal_quantum_number = 2,
                              angular_momentum = 1,
                              slater_coefficients = x[4] * Bohr**-1,
                              weights = w[1])
    carbon_3d = SlaterOrbital(principal_quantum_number = 3,
                              angular_momentum = 2,
                              slater_coefficients = x[5] * Bohr**-1,
                              weights = w[2])
    return HuckelBasisParameters(element = Carbon,
                                 orbitals = [carbon_2s, carbon_2p, carbon_3d],
                                 ionization_potential = [x[0] * eV, x[1] * eV, x[2] * eV],
                                 onsite_hartree_shift = onsite_hartree_shift,
                                 number_of_valence_electrons = number_of_valence_electrons,
                                 wolfsberg_helmholtz_constant = wolfsberg_helmholtz_constant,
                                 vacuum_level = vacuum_level)
Now lets assume I fix the parameters x are the weights w free or fixed? Must I include them in the fitting or not? If I select w[0] == w[1] == w[2] == C and I vary C, this has a strong influence on the band structures I get! Why is this?

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5576
  • Country: dk
  • Reputation: 96
    • View Profile
    • QuantumATK at Synopsys
Re: A question about Hückel parameters
« Reply #13 on: January 15, 2014, 16:18 »
I guess it should be 3 parameters - the 4th is the overall normalization :)

You can always set C1 to 1, and then your fitting parameters will be the two exponents and C2. So if you use ATK with the code you show, just set the weight of the first orbital to 1, but let w[0] and w[1] befitting parameters (for the 2p and 3d orbitals).

Now, that's speaking from a general perspective. The point you mentioned about varying C is worrying - we should have a look closer look I think. Nordland - task for you ;)

Offline Anders Blom

  • QuantumATK Staff
  • Supreme QuantumATK Wizard
  • *****
  • Posts: 5576
  • Country: dk
  • Reputation: 96
    • View Profile
    • QuantumATK at Synopsys
Re: A question about Hückel parameters
« Reply #14 on: January 15, 2014, 16:24 »
Wait, I'm confused.

If your orbitals all are SINGLE STOs, the weights should not really play a role at all. The relative weights are only relevant when you have a double-STO.

I checked our code, the Gramm-Schmidt procedure is only used for LCAO, not Huckel, so that might explain your observation, and also negates the previous messages. Sorry - really sorry - for all confusion. We'll revert with a definite answer quickly.
« Last Edit: January 15, 2014, 16:31 by Anders Blom »