Orbitals of the Hydrogen Atom

Attention

This tutorial is under construction

Input Files:
  • 3D_hydrogen_atom_nnp.in

Scope of the tutorial:
  • Coulomb potential, Schrödinger equation

Main adjustable parameters in the input file:
  • calculation with or without Schrödinger - $solve_quantum

Relevant output files:
  • bias_00000\bandedge_Gamma_1d_z.dat

  • bias_00000\Quantum\energy_spectrum_quantum_region_Gamma_00000.dat

  • bias_00000\Quantum\amplitude_quantum_region_Gamma_XXXX.fld

Exercise

Compute lowest s, p, and d orbitals of a hydrogen atom and answer following questions:
  • Are computed wave-functions of s orbitals in agreement with analytical solutions?

  • Are all energies of orbitals the same as obtained analytically? If not, why do they deviate from analytical solutions?

  • Is proper degeneracy present in the numerical solutions?

Additional question on numerics:
  • What are the biggest regularizing parameter that can be used for the electrostatic potential and grid spacing if one aims at 1 meV accuracy for the energy of the fundamental state?

Introduction

This tutorial demonstrates how nextnano++ works with an easy example - an electron bound by a hydrogen atom. After completing this tutorial, you will know more about:

  • How to set the numerical grid

  • How to run the simulation

Firstly, an electron moving around a hydrogen atom follows Coulomb’s law. Therefore, the potential formed by a hydrogen atom with charge \(e\) (= 1 eV) is shown below.

\[V(r)=\frac{1}{4\pi\varepsilon_0}\frac{e}{r}\]

where \(r\) and \(\varepsilon_0\) represent the distance centered on the hydrogen atom and the permittivity of vacuum, respectively. Note the equation \(r\) = \(\sqrt{x^2+y^2+z^2}\). You should be aware that the unit \(r\) (\(x,y,z\)) is \((nm)\).

Then, the Schrödinger equation for an electron bound to a hydrogen atom is described as follows.

\[-\frac{\hbar^2}{2m_0} {\nabla}^2\Psi(x,y,z)= (E-V(x,y,z))\Psi(x,y,z)\]

\(m_0\) is the mass of an electron and \(\hbar\) is reduced Planck’s constant.

We solve this equation with nextnano++.

Main

The next step in accurate simulation is to set up the appropriate numerical grid. For other important syntaxes, please refer to basic basics tutorials. The grid is similar to the coordinates system. Suppose that the numerical grid is set up as follows.

48  grid{
49      xgrid{
50         line{ pos =-$pos_end       spacing = $grid_coarse }
51         line{ pos =-$pos_coarse    spacing = $grid_coarse }
52         line{ pos =-$pos_medium    spacing = $grid_medium }
53         line{ pos =-$pos_fine      spacing = $grid_fine   }
54         line{ pos = 0              spacing = $grid_fine   }
55         line{ pos = $pos_fine      spacing = $grid_fine   }
56         line{ pos = $pos_medium    spacing = $grid_medium }
57         line{ pos = $pos_coarse    spacing = $grid_coarse }
58         line{ pos = $pos_end       spacing = $grid_coarse }
59        }
60      ygrid{
61          line{ pos =-$pos_end      spacing = $grid_coarse }
62         line{ pos =-$pos_coarse    spacing = $grid_coarse }
63         line{ pos =-$pos_medium    spacing = $grid_medium }
64         line{ pos =-$pos_fine      spacing = $grid_fine   }
65         line{ pos = 0              spacing = $grid_fine   }
66         line{ pos = $pos_fine      spacing = $grid_fine   }
67         line{ pos = $pos_medium    spacing = $grid_medium }
68         line{ pos = $pos_coarse    spacing = $grid_coarse }
69         line{ pos = $pos_end       spacing = $grid_coarse }
70        }
71      zgrid{
72         line{ pos =-$pos_end       spacing = $grid_coarse }
73         line{ pos =-$pos_coarse    spacing = $grid_coarse }
74         line{ pos =-$pos_medium    spacing = $grid_medium }
75         line{ pos =-$pos_fine      spacing = $grid_fine   }
76         line{ pos = 0              spacing = $grid_fine   }
77         line{ pos = $pos_fine      spacing = $grid_fine   }
78         line{ pos = $pos_medium    spacing = $grid_medium }
79         line{ pos = $pos_coarse    spacing = $grid_coarse }
80         line{ pos = $pos_end       spacing = $grid_coarse }
81        }
82    }

Here we use variables to allow arbitrary numeric assignments (Tutorial: Variables). In this case, $grid_coarse \(= 0.1\), $grid_medium \(= 0.05\), $grid_fine \(= 0.005\).

14   #spacing
15   $grid_coarse = 0.1
16   $grid_medium = 0.05
17   $grid_fine = 0.005

Basically, the finer the grid becomes, the accuracy gets the better. However, this increases calculation time. Since we are interested in an electron near a hydrogen atom, you need to set up the grid near the atom to be finer. Lastly, we solve the Schrödinger equation for an electron following Coulomb’s law in nextnano++.

108   poisson{
109      import_potential{ import_from = "Potential" }
110      output_potential{}
111    }
148  $e = 1 #eV
149  $eps = 55.263E-3 #e^2eV^(-1)nm^(-1)
150  $pi = 3.1415
151  $rp = 3.5E-3
152  import{
153     analytic_function{
154         name = "Potential"
155         function = "(1 / (4*$eps*$pi)) * ($e / (sqrt( (x)^2 + (y)^2 + (z)^2 + ($rp)^2))) "
156         label = potential_label
157        }
158     output_imports{}
159    }

Here, we import the potential formula as a function (Input_Syntax: import). The syntax poisson{} works to output the potential.

You must be aware of the regularizing parameter, which is equivalent to $rp in the formula. The role of the parameter is to solve unfavorable boundary conditions. At \(r = 0\), i.e. \(x = y = z = 0\), the potential value becomes \(\infty\), but the simulation cannot handle \(\infty\). Therefore, we need to add the parameter to proceed with the calculation at \(r = 0\). The value of the parameter must be smaller than the size of the first orbit of an atom. Otherwise, the parameter significantly affects the electron movement and makes the calculation result too far from the ideal one. The parameter is set to +3.5E-3 since the first electron orbital radius of a hydrogen atom is approximately 5.29E-2. Therefore, the potential formula is instead described as

\[V(r)=\frac{1}{4\pi\varepsilon_0}\frac{e}{\sqrt{x^2+y^2+z^2+(3.5\times10^{-3})^2}}\]

Simulation

First, look at the Coulomb energy used in this simulation. The distribution map at \(z = 0\) of the Coulomb energy of an electron is shown in Figure 2.5.2.1.

../../../../_images/3D_orb_H_atom_Coulomb_potential_eV_z0.svg

Figure 2.5.2.1 (a) shows the Coulomb energy distribution. (b) is the difference between the numerical energy calculated by nextnano++ and the analytical energy at \(y = 0\), \(z = 0\) along the white dash line in (a). Note that the scale of the difference is logarithmic.

The regularizing parameter $rp allows the energy value to be finite even near the origin. Thus, due to the parameter, the closer to the origin, the larger the difference in energy.

The upper left side of Figure 2.5.2.2 shows the 1s orbitals obtained numerically by the nextnano++ simulation (light blue line) and the analytical plot (violet dash line). The upper right side of it shows 2s orbitals as well.

../../../../_images/3D_orb_H_atom_1S_2S_orbitals_comparison.svg

Figure 2.5.2.2 shows the 1s (a) and 2s (b) orbitals. (c) and (d) show the difference between the wavefunctions obtained with nextnano++ and by analytical calculation.

The analytical wave-functions (1s and 2s) are as follows, respectively.

\[\begin{split}\begin{aligned} \Psi_{1s}(r) = 2\left(\frac{1}{a_B}\right)^{3/2}{\exp\left(-\frac{r}{a_B}\right)}\left(\frac{1}{4\pi}\right)^{1/2},\\ \Psi_{2s}(r) = 2\left(\frac{1}{2a_B}\right)^{3/2}\left(1-\frac{r}{2a_B}\right){\exp\left(-\frac{r}{2a_B}\right)}\left(\frac{1}{4\pi}\right)^{1/2} \end{aligned}\end{split}\]

We refer to [LeviAQM2006] for those wavefunctions.

We can see that the wavefunctions derived by nextnano++ are very accurate from the above two figures. The difference (shown in the below two figures) between these two wavefunctions is maximum at \(z = 0\) for both 1s and 2s orbitals. This is due to the regularizing parameter $rp considered in the simulation.

Next, we look at the energy of each eigenstate.

Table 2.5.2.1 Eigenenergy values obtained by the simulation with nextnano++ and the analytical calculation

Orbital

\(n\)

\(l\)

Numeircal energies (eV) by nextnano++

Analytical energies (eV) (*)

Error (%) (**)

cf. Numeircal energies (eV) with finer grids

1s

1

0

-13.605

-13.606

0.0073

-13.420

2s

2

0

-3.424

-3.401

0.68

-3.381

2p

2

1

-3.450

-3.401

1.44

-3.402

2p

2

1

-3.450

-3.401

1.44

-3.402

2p

2

1

-3.450

-3.401

1.44

-3.402

3s

3

0

-1.525

-1.512

0.86

-1.506

3p

3

1

-1.532

-1.512

1.32

-1.512

3p

3

1

-1.532

-1.512

1.32

-1.512

3p

3

1

-1.532

-1.512

1.32

-1.512

3d

3

2

-1.528

-1.512

1.06

-1.513

3d

3

2

-1.528

-1.512

1.06

-1.513

3d

3

2

-1.521

-1.512

0.60

-1.512

3d

3

2

-1.521

-1.512

0.60

-1.512

3d

3

2

-1.521

-1.512

0.60

-1.512

(*)We calculate the analytical energies with the following formula.

\[E = \frac{-m_0e^4}{2{(4\pi\varepsilon_0)^2}\hbar^2}\frac{1}{n^2}\]

\(n\) represents the principal quantum number (See below for details). Refer to [LeviAQM2006] for derivation of this formula.

As can be seen from this table, the eigenenergy values obtained from the simulation are very close to the theoretical values. Of course, this accuracy can be further improved by making the grid finer.

(**) The error is calculated by the following formula.

\[Error = |E_{nextnano} - E|/|E|*100\]

\(E_{nextnano}\) represents the numrerical energy in the table.

Additionally, it is apparent that the finer grids improve the accuracy of the energy values.

Finally, we consider the wavefunction of each eigenstate. The GIFs shown in Figure 2.5.2.3 illustrate the multiple orbitals of an electron in a hydrogen atom.

../../../../_images/3D_orb_H_atom_Hydrogen_orbitals.gif

Figure 2.5.2.3 shows some electron orbitals of a hydrogen atom.

The set of numbers in the lower right corner of each GIF represents quantum numbers, corresponding to \(n, l\) (\(n,l\) are integers). \(n\) is the principal quantum number and represents the electron shell into which the electrons can be placed. \(l\) is the azimuthal quantum number and represents the type of electron orbitals, such as s orbital, p orbital, and d orbital. Additionally, there is another quantum number \(m\), which is not shown in the figure. \(m\) is the magnetic quantum number and characterizes the direction of the orbitals. We do not show the number because it is difficult to distinguish them due to their orientation. However, they are very consistent with those found in numerous literatures.