Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - ziand

Pages: [1] 2 3 ... 6
1
General Questions and Answers / Initial densty NeutralAtom
« on: March 18, 2014, 18:26 »
I use ATK 12.8.2 and the Hückel method to calculate a CNT-Device with metal electrodes.
Electrode calculation finishes in 1 step (bulk 5x5x3 metal atoms). This is okay.
Now, to save some time, I thought with Hückel we can choose
DeviceAlgorithmParameters(initial_density_type = NeutralAtom()).

What comes out at first step is (I deleted large portions of the output, but important stuff is there).
Quote
+------------------------------------------------------------------------------+
| Density Matrix Report                          DM        DD                  |
+------------------------------------------------------------------------------+
|   0  Al   [   0.716 ,  -0.827 ,   1.169 ]    3.95611   0.95611               |
|   1  Al   [   2.148 ,  -3.306 ,   1.169 ]    3.95619   0.95619               |
|   2  Al   [   3.579 ,  -5.786 ,   1.169 ]    3.95611   0.95611               |
|   3  Al   [   5.011 ,  -8.266 ,   1.169 ]    3.95653   0.95653               |
|   4  Al   [   6.443 , -10.746 ,   1.169 ]    3.95653   0.95653               |
|   5  Al   [   2.148 ,   1.653 ,   1.169 ]    3.95653   0.95653               |
|   6  Al   [   3.579 ,  -0.827 ,   1.169 ]    3.95601   0.95601               |
|   7  Al   [   5.011 ,  -3.306 ,   1.169 ]    3.95601   0.95601               |
|   8  Al   [   6.443 ,  -5.786 ,   1.169 ]    3.95653   0.95653               |
|   9  Al   [   7.875 ,  -8.266 ,   1.169 ]    3.95684   0.95684               |
|  10  Al   [   3.579 ,   4.133 ,   1.169 ]    3.95653   0.95653               |
|  11  Al   [   5.011 ,   1.653 ,   1.169 ]    3.95616   0.95616               |
|  12  Al   [   6.443 ,  -0.827 ,   1.169 ]    3.95722   0.95722               |
|  13  Al   [   7.875 ,  -3.306 ,   1.169 ]    3.95616   0.95616               |
|  14  Al   [   9.306 ,  -5.786 ,   1.169 ]    3.95653   0.95653               |
|  15  Al   [   5.011 ,   6.613 ,   1.169 ]    3.95611   0.95611               |
|  16  Al   [   6.443 ,   4.133 ,   1.169 ]    3.95601   0.95601               |
|  17  Al   [   7.875 ,   1.653 ,   1.169 ]    3.95722   0.95722               |
|  18  Al   [   9.306 ,  -0.827 ,   1.169 ]    3.95722   0.95722               |
|  19  Al   [  10.738 ,  -3.306 ,   1.169 ]    3.95601   0.95601               |
|  20  Al   [   6.443 ,   9.093 ,   1.169 ]    3.95619   0.95619               |
|  21  Al   [   7.875 ,   6.613 ,   1.169 ]    3.95619   0.95619               |
|  22  Al   [   9.306 ,   4.133 ,   1.169 ]    3.95601   0.95601               |
|  23  Al   [  10.738 ,   1.653 ,   1.169 ]    3.95616   0.95616               |
|  24  Al   [  12.170 ,  -0.827 ,   1.169 ]    3.95601   0.95601               |
|  25  Al   [   2.148 ,   0.000 ,   3.507 ]    7.27705   4.27705               |
|  26  Al   [   3.579 ,  -2.480 ,   3.507 ]    7.27734   4.27734               |
|  27  Al   [   5.011 ,  -4.960 ,   3.507 ]    7.27705   4.27705               |
|  28  Al   [   6.443 ,  -7.440 ,   3.507 ]    7.27609   4.27609               |
|  29  Al   [   7.875 ,  -9.919 ,   3.507 ]    7.27609   4.27609               |
|  30  Al   [   3.579 ,   2.480 ,   3.507 ]    7.27728   4.27728               |
...
|  70  Al   [   6.443 ,  10.746 ,   5.845 ]   10.84910   7.84910               |
|  71  Al   [   7.875 ,   8.266 ,   5.845 ]   10.85587   7.85587               |
|  72  Al   [   9.306 ,   5.786 ,   5.845 ]   10.84910   7.84910               |
|  73  Al   [  10.738 ,   3.306 ,   5.845 ]   10.85313   7.85313               |
|  74  Al   [  12.170 ,   0.827 ,   5.845 ]   10.85313   7.85313               |
|  75  Al   [   0.716 ,  -0.827 ,   8.183 ]   13.62751  10.62751               |
|  76  Al   [   2.148 ,  -3.306 ,   8.183 ]   13.63058  10.63058               |
|  77  Al   [   3.579 ,  -5.786 ,   8.183 ]   13.62751  10.62751               |
|  78  Al   [   5.011 ,  -8.266 ,   8.183 ]   13.62573  10.62573               |
|  79  Al   [   6.443 , -10.746 ,   8.183 ]   13.62573  10.62573               |
|  80  Al   [   2.148 ,   1.653 ,   8.183 ]   13.62573  10.62573               |
...
|  120  Al   [   7.875 ,   9.919 ,  10.521 ]   15.65670  12.65670              |
|  121  Al   [   9.306 ,   7.440 ,  10.521 ]   15.65670  12.65670              |
|  122  Al   [  10.738 ,   4.960 ,  10.521 ]   15.62076  12.62076              |
|  123  Al   [  12.170 ,   2.480 ,  10.521 ]   15.61755  12.61755              |
|  124  Al   [  13.602 ,   0.000 ,  10.521 ]   15.62076  12.62076              |
|  125   C   [  10.225 ,   0.000 ,  12.435 ]   15.38028  11.38028              |
|  126   C   [   5.525 ,   0.000 ,  12.435 ]   15.38028  11.38028              |
|  127   C   [   6.700 ,  -2.035 ,  12.435 ]   15.38028  11.38028              |
|  128   C   [   9.050 ,  -2.035 ,  12.435 ]   15.38028  11.38028              |
|  129   C   [   6.700 ,   2.035 ,  12.435 ]   15.38028  11.38028              |
|  130   C   [   9.050 ,   2.035 ,  12.435 ]   15.38028  11.38028              |
|  131   C   [   9.910 ,  -1.175 ,  13.146 ]   14.72651  10.72651              |
|  132   C   [   5.839 ,   1.175 ,  13.146 ]   14.72929  10.72929              |
|  133   C   [   5.839 ,  -1.175 ,  13.146 ]   14.72651  10.72651              |
|  134   C   [   7.875 ,  -2.350 ,  13.146 ]   14.72929  10.72929              |
|  135   C   [   9.910 ,   1.175 ,  13.146 ]   14.72929  10.72929              |
|  136   C   [   7.875 ,   2.350 ,  13.146 ]   14.72651  10.72651              |
|  137   C   [   7.875 ,  -2.350 ,  14.566 ]   14.72651  10.72651              |
|  138   C   [   9.910 ,  -1.175 ,  14.566 ]   14.72929  10.72929              |
|  139   C   [   9.910 ,   1.175 ,  14.566 ]   14.72651  10.72651              |
|  140   C   [   7.875 ,   2.350 ,  14.566 ]   14.72929  10.72929              |
...
|  270  Al   [   7.875 ,   8.266 ,  26.543 ]    3.95684   0.95684              |
|  271  Al   [   9.306 ,   5.786 ,  26.543 ]    3.95653   0.95653              |
|  272  Al   [  10.738 ,   3.306 ,  26.543 ]    3.95601   0.95601              |
|  273  Al   [  12.170 ,   0.827 ,  26.543 ]    3.95601   0.95601              |
+------------------------------------------------------------------------------+
|   0 E = -759.204 dE =  1.113262e+00 dM =  7.343037e+00 dH =  3.330028e+02    |
+------------------------------------------------------------------------------+

This looks like a very bad first guess and clearly far away from neutral atoms.
(The electrode copy are the first and last 75 atoms.)

Why is the starting guess so far off?

It still convergeres towards a reasonable result (--> Density matrix of Al about 3 and for C about 4) but it takes more steps than expected/necessary.
Quote
|  250  Al   [   2.148 ,  -1.653 ,  26.543 ]    2.99953  -0.00047              |
|  251  Al   [   3.579 ,  -4.133 ,  26.543 ]    2.99953  -0.00047              |
|  252  Al   [   5.011 ,  -6.613 ,  26.543 ]    3.00118   0.00118              |
|  253  Al   [   6.443 ,  -9.093 ,  26.543 ]    2.99914  -0.00086              |
|  254  Al   [   2.148 ,   3.306 ,  26.543 ]    2.99913  -0.00087              |
|  255  Al   [   3.579 ,   0.827 ,  26.543 ]    3.00023   0.00023              |
|  256  Al   [   5.011 ,  -1.653 ,  26.543 ]    3.00036   0.00036              |
|  257  Al   [   6.443 ,  -4.133 ,  26.543 ]    3.00023   0.00023              |
|  258  Al   [   7.875 ,  -6.613 ,  26.543 ]    2.99914  -0.00086              |
|  259  Al   [   3.579 ,   5.786 ,  26.543 ]    3.00118   0.00118              |
|  260  Al   [   5.011 ,   3.306 ,  26.543 ]    3.00023   0.00023              |
|  261  Al   [   6.443 ,   0.827 ,  26.543 ]    3.00006   0.00006              |
|  262  Al   [   7.875 ,  -1.653 ,  26.543 ]    3.00006   0.00006              |
|  263  Al   [   9.306 ,  -4.133 ,  26.543 ]    3.00023   0.00023              |
|  264  Al   [   5.011 ,   8.266 ,  26.543 ]    2.99953  -0.00047              |
|  265  Al   [   6.443 ,   5.786 ,  26.543 ]    2.99953  -0.00047              |
|  266  Al   [   7.875 ,   3.306 ,  26.543 ]    3.00036   0.00036              |
|  267  Al   [   9.306 ,   0.827 ,  26.543 ]    3.00006   0.00006              |
|  268  Al   [  10.738 ,  -1.653 ,  26.543 ]    3.00036   0.00036              |
|  269  Al   [   6.443 ,  10.746 ,  26.543 ]    2.99953  -0.00047              |
|  270  Al   [   7.875 ,   8.266 ,  26.543 ]    3.00052   0.00052              |
|  271  Al   [   9.306 ,   5.786 ,  26.543 ]    2.99953  -0.00047              |
|  272  Al   [  10.738 ,   3.306 ,  26.543 ]    3.00023   0.00023              |
|  273  Al   [  12.170 ,   0.827 ,  26.543 ]    3.00023   0.00023              |
+------------------------------------------------------------------------------+
|  27 E = -275.907 dE =  4.153771e-06 dM =  1.982099e-05 dH =  1.505746e-05    |
+------------------------------------------------------------------------------+
| Calculation Converged in 27 steps                                            |
+------------------------------------------------------------------------------+

If I increases the length of the central CNT it takes more and more steps to converge and at more than 10 CNT unit cells it refuses to converge at all.

If I do an equivalent bulk calculation, the output of step 0 looks much better.
(Ans this is what I do from now on.)

2
I want to make a comment on this discussion. I am very familiar with the work of fufl because we collaborate.
We calculate transfer characteristics (source-drain current I_sd at finite bais vs gate voltage V_g) of a CNTFET with cylindrical metal gate. We use the Hückel method. CNT is semiconducting (of course). Electrodes are the same type of CNT. Electrodes are charged to approximate some type of metallic-like contact. Now we increased the vacuum around the device. This causes the I_sd vs V_g curve to shift towards lower gate votages. That means the transistor is switched on at lower (or different) gate voltages. Even with a vaccum gap of around 75 ang (!) this shift persists. We wondered if there is a way to converge the results without ridiculously large vacuum spaces, so we tried all kinds of possible boundary condictions. Of course we always used MultiGRID because we have a gate.

3
Good explanation. Thanks.

But when you mention that you would never touch the weight, you mean leave it as it is or fix it to some value? Both approaches are somewhat arbitrary, I guess.
My problem:
When I include the weigths in the fitting of a new carbon single-STO basis everything goes fine.
When I try to fix all the weigths during the fit (I used the value 1 here) I get the mentioned diagonalization error after some fit steps.

4
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?


5
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.)

6
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).

7
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)

8
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?

9
Future Releases / Structureless Electrodes
« on: November 18, 2013, 16:04 »
Hello,

I have a feature request, which (I think) might be quite easy to implement but useful and interesting, too.

That is: An option to have structureless electrodes (i.e. electrodes without atoms, very similar to the dielaectric/metallic regions that are already there).

Why would it be useful: Because often you want to study transport properties of some molecular structure, with as little impact from the contacts as possible. Of course this is a somewhat crude approximation. But nevertheless you do not have to worry too much about what effect comes from the electrodes and what comes from the molecule itself. Furthermore, real atomistic electrode contain very many atoms. This pushes calculations times, but sometimes, you just want to have a simple electrode, where you don't have to worry about details of the interface and so on...

How does it work (I used it before, in a self-written TB-code; and it is described for example here: DOI: 10.1103/PhysRevB.77.125420):
We describe the electrode as some sort of metallic region without any atoms. Every atom of the molecule that is inside the electrode region couples to the electrode. We assume that this coupling is very simple, governed by a hopping constant, say gamma_xy (may be element-specific, orbital-specific, and of course user defined). Then, the self energy of such an electrode takes a very simple form: It is diagonal and has the matrix elements -i*(gamma_xy)**2 on that diagonal ( i is the imaginary number; the size of that matrix depends on which and how many atoms couple to the electrodes; the gamma_xy describe the strength of the coupling between the orbitals of different atoms and the artificial electrode). Of course, this all gets most simple if one assumes, a non-selfconsistent single orbital orthogonal tight binding approach.

It can be summarized as follows: I want to set my own, user-defined lead self energy matrix, but without too much tedious hand-work (for me okay, but not for a commercial product, so I proposed the idea of the metallic electrode regions, to define that matrix in a visual and semi-automatic way).

This request is absolutely not urgent.
And there may be some more details to care about, if one wants to really implement that: e.g. non-orthogonal basis, selfconsistency possible/meaningful?, ...

10
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.

11
Sorry for the very late answer.

Quote
We calculated the work function for each of basis set in the Cerda parameters, and set the vacuum level such that it gives the correct work function.
Now I am curious. How did you calculate the work function for all those elements? What reference structures did you use? And what do you mean with "the correct work functions"? (The same as with Hoffmann or Müller basis?)

Quote
If you want to combine the new basis set with another basis, you will only get a good calculation of the vacuum level is defined using the same method in both basis set.
I combined the new basis set, which I derived form the Cerde_Graphite one, with other Cerda parameters of various metals. I determined the vacuum level of my new carbon set so that the Fermi level of the new set equals the Fermi level of the initial Cerda carbon set. This appeard reasonable to me. Now, how bad is this approach? And how should it really be done?

By the way: I combared the final results (transmission spectra) with DFT and it looks quite nice...

12
As there are no answers yet, let me add another short question:

How is the Evac included in the Huckel formalism?
(This is described, somehow, in the manual. However, it could be added in the formulae of the semiempirical formalism, too.)

13
I have another question that bothers me for quite a while:

Some time ago I created my own Huckel basis set for carbon, based on the Cerda_carbon_graphite set. It was a cumbersome fitting process, but I finally got what I wanted. I also took the Evac into account, which was unnecessary, I guess???
At the end, I got new parameters including a new Evac. I think I can use them for a pure-carbon system as they are. But suppose I want to mix them with other Elements. Do I have to change the Evac, such that the Fermi energy goes back to where it was before the fitting procedure?

14
How are the vacuum_level parameters of the Cerda Huckel basis sets determined?
I know about their meaning, but how did your find the exact numbers?

15
The electron configuations of palladium and platinum from the manual are
[Kr]4d105s0 and [Xe]4f145d106s0.

The valence configurations from the manual are
4d105s0 and 6s15d9.

However, doing
print LDABasis.Palladium_DoubleZetaPolarized._serialize() and
print LDABasis.Platinum_DoubleZetaPolarized._serialize() gives
4d95s1 and 6s05d10

What is right? Does it matter (should only have an impact at the beginning of an SCF-cycle)?

Pages: [1] 2 3 ... 6