Differences
This shows you the differences between two versions of the page.
documentation:tutorials:nio_crystal_field:groundstate [2016/10/08 18:07] – created Maurits W. Haverkort | documentation:tutorials:nio_crystal_field:groundstate [2016/10/10 09:41] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | {{indexmenu_n> | ||
+ | ====== Groundstate ====== | ||
+ | ### | ||
+ | The first example looks at the ground-state of NiO. Ni in NiO is $2+$ and thus has locally $8$ electrons in the Ni $d$-shell. The lowest state has two holes in the $e_g$ orbitals with $S=1$ ($\langle S^2\rangle=1(2+1)=2$). The output of this example shows several expectation values of the $45$ multiplets available in the $d^8$ sector. | ||
+ | ### | ||
+ | |||
+ | ### | ||
+ | The input is: | ||
+ | <code Quanty Groundstate.Quanty> | ||
+ | -- This tutorial calculates the ground-state of NiO within the crystal-field theory approximation | ||
+ | |||
+ | -- Within crystal-field theory the solid is approximated by a single atom in an effective | ||
+ | -- potential. Although an extremely crude approximation it is useful for some cases. | ||
+ | -- For correlated transition metal insulators it captures the right symmetry of the | ||
+ | -- localized open d-shell. It is useful to determine magnetic g-factors, energies of d-d | ||
+ | -- excitations or core level x-ray absorption. (2p to 3d excitations L23 edges) | ||
+ | |||
+ | -- One should notice that the effective crystal-field potential is an effective potential | ||
+ | -- it is there to mimic the interaction with neighboring ligand atoms. In real materials | ||
+ | -- there do not exist such large electro static potentials. | ||
+ | |||
+ | -- In order to do crystal-field theory for NiO we need to define a Ni d-shell. | ||
+ | -- A d-shell has 10 elements and we label again the even spin-orbitals to be spin down | ||
+ | -- and the odd spin-orbitals to be spin up. | ||
+ | NF=10 | ||
+ | NB=0 | ||
+ | IndexDn_3d={0, | ||
+ | IndexUp_3d={1, | ||
+ | |||
+ | -- We define several operators acting on the Ni d-shell | ||
+ | |||
+ | OppSx | ||
+ | OppSy | ||
+ | OppSz | ||
+ | OppSsqr =NewOperator(" | ||
+ | OppSplus=NewOperator(" | ||
+ | OppSmin =NewOperator(" | ||
+ | |||
+ | OppLx | ||
+ | OppLy | ||
+ | OppLz | ||
+ | OppLsqr =NewOperator(" | ||
+ | OppLplus=NewOperator(" | ||
+ | OppLmin =NewOperator(" | ||
+ | |||
+ | OppJx | ||
+ | OppJy | ||
+ | OppJz | ||
+ | OppJsqr =NewOperator(" | ||
+ | OppJplus=NewOperator(" | ||
+ | OppJmin =NewOperator(" | ||
+ | |||
+ | Oppldots=NewOperator(" | ||
+ | |||
+ | -- Next we define the Coulomb operator. The Coulomb operator is given as: | ||
+ | -- Sum_{i,j} e^2/ | ||
+ | -- This is actually a nastier sum than one might think as r_i-r_j=0 for r_i=r_j. | ||
+ | -- The solution is to expand this operator on spherical harmonics | ||
+ | -- ~ sum_k,m Y(t_i,p_i) Y(t_j, | ||
+ | -- the part depending on the angles (theta and phi) can be solved analytically. | ||
+ | -- The radial part (f(r_i, | ||
+ | -- The sum runs in principle over all possible values of k. The expansion coefficient k is | ||
+ | -- related to the momentum transfer of two electrons when they scatter due to the Coulomb | ||
+ | -- interaction. There is a maximal transfer of momentum that can happen between two electrons | ||
+ | -- which is 2l. Furthermore k has to be even due to parity. | ||
+ | -- There are thus l+1 = 3 Slater integrals for two electrons in the d-shell. | ||
+ | -- F[0], F[2] and F[4]. F[0] is the spherical interaction between two d electrons. F[2] and | ||
+ | -- F[4] represent interaction or scattering processes whereby the electrons exchange an angular | ||
+ | -- momentum of 2 or 4. | ||
+ | -- | ||
+ | -- We here define the part depending on F0, F2 and F4 separately. | ||
+ | -- when summing we can put in the numerical values | ||
+ | -- of the slater integrals. | ||
+ | OppF0 =NewOperator(" | ||
+ | OppF2 =NewOperator(" | ||
+ | OppF4 =NewOperator(" | ||
+ | |||
+ | -- Next we need to define the crystal field. | ||
+ | -- The crystal-field is a potential that lifts the degeneracy of the d electrons. | ||
+ | -- There are several ways to add such an interaction. We here follow the classical | ||
+ | -- notation as for example used in Ballhausen or other textbooks on crystal-field theory. | ||
+ | -- We expand the crystal-field potential on (renormalized) spherical harmonics and | ||
+ | -- enter the expansion coefficients of this potential. | ||
+ | |||
+ | -- For specific symmetries there are relations between the different expansion coefficients. | ||
+ | -- The function PotentialExpandedOnClm takes as an input the energies of the eigen-orbitals | ||
+ | -- and creates the potential expanded on spherical harmonics. The order of the eigen-energies | ||
+ | -- is the same as used in most point-group tables. (in cubic symmetry it is eg before t2g) | ||
+ | |||
+ | -- We here create an operator that splits the d-shell into t2g orbitals at an energy of -0.4 | ||
+ | -- and eg orbitals at an energy of 0.6, such that the total splitting is one and the center | ||
+ | -- of gravity is not changed. One can change the total splitting by multiplying this operator | ||
+ | |||
+ | -- Akm = {{k1, | ||
+ | Akm = PotentialExpandedOnClm(" | ||
+ | OpptenDq = NewOperator(" | ||
+ | |||
+ | -- We do not only want to give the t2g and eg electrons a different energy, it is also nice | ||
+ | -- to define operators that count the number of t2g and eg electrons. If we define an operator | ||
+ | -- where the eg electrons have an onsite energy of 1 and the t2g electrons have an onsite | ||
+ | -- energy of 0 then the expectation value of such an operator is proportional to the total | ||
+ | -- number of eg electrons. This is what we do in the next 4 lines, once to get an operator | ||
+ | -- that counts the number of eg electrons, once to create an operator that counts the number | ||
+ | -- of t2g electrons | ||
+ | |||
+ | Akm = PotentialExpandedOnClm(" | ||
+ | OppNeg = NewOperator(" | ||
+ | Akm = PotentialExpandedOnClm(" | ||
+ | OppNt2g = NewOperator(" | ||
+ | |||
+ | -- once all operators are defined we can set some parameter values. | ||
+ | |||
+ | -- the value of U drops out of a crystal-field calculation as the total number of electrons | ||
+ | -- is always the same | ||
+ | U | ||
+ | -- F2 and F4 are often referred to in the literature as J_{Hund}. They represent the energy | ||
+ | -- differences between different multiplets. Numerical values can be found in the back of | ||
+ | -- my PhD. thesis for example. http:// | ||
+ | F2dd = 11.142 | ||
+ | F4dd = 6.874 | ||
+ | -- F0 is not the same as U, although they are related. Unimportant in crystal-field theory | ||
+ | -- the difference between U and F0 is so important that I do include it here. (U=0 so F0 is not) | ||
+ | F0dd = U+(F2dd+F4dd)*2/ | ||
+ | -- tenDq in NiO is 1.1 eV as can be seen in optics or using IXS to measure d-d excitations | ||
+ | tenDq = 0 | ||
+ | -- the Ni 3d spin-orbit is small but finite | ||
+ | zeta_3d = 0*0.081 | ||
+ | -- we add a small magnetic field | ||
+ | Bz = 0.000001 | ||
+ | -- note that all energies are in units of electron volt. (tesla to eV is EnergyUnits.Tesla.value = 5.788.... E-5) | ||
+ | |||
+ | -- the total Hamiltonian is the sum of the different operators multiplied with their prefactor | ||
+ | Hamiltonian = F0dd*OppF0 + F2dd*OppF2 + F4dd*OppF4 + tenDq*OpptenDq + zeta_3d*Oppldots + Bz*(2*OppSz + OppLz) | ||
+ | |||
+ | -- we now can create the lowest Npsi eigenstates: | ||
+ | Npsi=45; | ||
+ | -- in order to make sure we have a filling of 8 | ||
+ | -- electrons we need to define some restrictions | ||
+ | StartRestrictions = {NF, NB, {" | ||
+ | |||
+ | -- we calculate the eigen system | ||
+ | psiList = Eigensystem(Hamiltonian, | ||
+ | |||
+ | -- In order to get some information on these eigenstates it is good to plot expectation values | ||
+ | -- We first define a list of all the operators we would like to calculate the expectation value of | ||
+ | oppList={Hamiltonian, | ||
+ | |||
+ | -- next we loop over all operators and all states and print the expectation value | ||
+ | print(" | ||
+ | for i = 1,#psiList do | ||
+ | for j = 1,#oppList do | ||
+ | expectationvalue = Chop(psiList[i]*oppList[j]*psiList[i]) | ||
+ | io.write(string.format(" | ||
+ | end | ||
+ | io.write(" | ||
+ | end | ||
+ | </ | ||
+ | ### | ||
+ | |||
+ | ### | ||
+ | The output is: | ||
+ | <file Quanty_Output Groundstate.out> | ||
+ | Start of BlockGroundState. Converge 45 states to an energy with relative variance smaller than 1.490116119384766E-06 | ||
+ | |||
+ | Start of BlockOperatorPsiSerialRestricted | ||
+ | Outer loop 1, Number of Determinants: | ||
+ | Start of BlockOperatorPsiSerialRestricted | ||
+ | Start of BlockGroundState. Converge 45 states to an energy with relative variance smaller than 1.490116119384766E-06 | ||
+ | |||
+ | Start of BlockOperatorPsiSerial | ||
+ | < | ||
+ | -1.387 | ||
+ | -1.387 | ||
+ | -1.387 | ||
+ | -1.387 | ||
+ | -1.387 | ||
+ | -1.387 | ||
+ | -1.387 | ||
+ | -1.387 | ||
+ | -1.387 | ||
+ | -1.387 | ||
+ | -1.387 | ||
+ | -1.387 | ||
+ | -1.387 | ||
+ | -1.387 | ||
+ | -1.387 | ||
+ | -1.387 | ||
+ | -1.387 | ||
+ | -1.387 | ||
+ | -1.387 | ||
+ | -1.387 | ||
+ | -1.387 | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 0.451 -0.000 | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 1.497 -0.000 20.000 20.000 | ||
+ | 1.497 -0.000 20.000 20.000 | ||
+ | | ||
+ | | ||
+ | 1.497 -0.000 20.000 20.000 | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | ### | ||
+ | |||
+ | |||
+ | ===== Table of contents ===== | ||
+ | {{indexmenu> |