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

, 2024/07/15 08:07, 2024/07/15 08:08

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

You could leave a comment if you were logged in.
Print/export