Ground state wave function plot
asked by Stefano Agrestini (2024/07/11 22:49)
Hi Maurits
I have calculated the ground state (GS) of a 5d1 system with SOC and hybridization included. The ground state is the four fold degenerate J_eff = 3/2 state. I have been able to calculate the density matrix and I have plotted the orbitals, using your Mathematica package with the Quanty PlotTools.
However, I would like to plot the wave function of the GS. I guess I would need to sum up the orbitals. But I am not sure how to do it properly and plot it. Could you please help me? Thank you very much
Please, find below the final part of the lua file I used to calculate the density matrix
function TableToMathematica(t) Chop(t) local ret = "{ " for k,v in pairs(t) do if k~=1 then ret = ret.." , " end if (type(v) == "table") then ret = ret..TableToMathematica(v) else if( Complex.Re(v) < 0) then ret = ret..string.format("- %18.15f ",Abs(Complex.Re(v))) else ret = ret..string.format("+ %18.15f ",Abs(Complex.Re(v))) end if( Complex.Im(v) < 0) then ret = ret..string.format("- I %18.15f ",Abs(Complex.Im(v))) else ret = ret..string.format("+ I %18.15f ",Abs(Complex.Im(v))) end end end ret = ret.." }" return ret end Npsi=4 psiList = Eigensystem(Hamiltonian, StartRestrictions, Npsi, GRDOptions) Density=DensityMatrix(psiList,{0,1,2,3,4,5,6,7,8,9}) RealDensity={} for i = 1,Npsi,1 do RealDensity[i]=ToRealbse(Density[i]) end SocDensity={} for i = 1,Npsi,1 do SocDensity[i]=ToSOCbse(Density[i]) end -- Plotting outputname = debug.getinfo(1,"S") outputname = string.gsub(outputname.source,"@","") outputname = string.gsub(outputname,".lua","") mathematicaInput = [[ Needs["Quanty`PlotTools`"]; rho=%s; pl = Table[ Rasterize[ DensityMatrixPlot[ rho[ [i] ],QuantizationAxes->"x", PlotRange -> {{-1, 1}, {-1, 1}, {-1, 1}}] ], {i, 1, Length[rho]}]; For[i = 1, i <= Length[pl], i++, Export[",." <> ToString[i] <> ".png", pl[ [i] ] ]; ]; Quit[]; ]] -- Plotting density plots: rhoList1 = Density rhoListMathematicaForm1 = TableToMathematica(rhoList1) file = io.open(outputname.."_.nb","w") file:write( mathematicaInput:format(rhoListMathematicaForm1 ) ) file:close() print('Finished the density matrix')
Answers
Dear Stefano,
For a single electron in a d-orbital without spin the state is given by a vector of length 5 $\vec{\psi}$. The basis is given by the spherical harmonics $Y_{l,m}(\theta,\phi)R_{nl}(r)$ ($B_1$) and the wave function by a product of the vector representing the state on the basis and the basis $\Psi = \vec{\psi} \cdot B_1$.
For a single electron in a d-orbital with spin the state is given by two of such vectors. One for spin up and one for spin down. You can represent this a a complex vector of dimension 2 at each point in space, but you can also calculate the space dependent value of the local spin as $\Psi(\vec{r}) \vec{S} \Psi(\vec{r})$ (without integral). You can find an example of such plots here |https://www.quanty.org/physics_chemistry/orbitals/j.
Now you have a system with formally one electron in the $d$-shell, but also 10 electrons in the ligand shell. In total there are thus 11 electrons in your system. Your wave function thus is a vector function of the form $\Psi(r_1,r_2,r_3,...,r_{11})$. You have an 11 dimensional input space. At this point it is not so clear what you want to plot in which way.
To conclude you can plot wave functions for single electrons, but once you have more than one electron in the basis you can only sensible plot densities. (with phases and spin polarisation if wanted).
Best wishes, Maurits
PS in the Mathematica package there is a tutorial on the difference between orbitals and wave functions