Sorting of eigenvectors

General forum for EasySpin: questions, how to's, etc.
Post Reply
NoahP
Newbie
Posts: 3
Joined: Wed Mar 25, 2020 6:43 am

Sorting of eigenvectors

Post by NoahP »

Hello everybody,

I'm new to using EasySpin and am a little lost at the moment. I'm trying to pick out certain states after I run sham on sys('S', [1 1], ...) to construct the singlet state, and then calculate the projections of each state onto it. This is to calculate coefficients for singlet fission, as some of the states of the triplet pair have singlet character and the projections increase/decrease with B field. Without coupling between the spins 'J' I can pretty much figure the states out by looking at them at 0 field, but I don't see that easily with a J and B field.
Is there a way to sort the eigenvectors of sham so that they are in an order like |11>, |10>, |1-1>, |01>, .... ?

Hope someone can help
Stefan Stoll
EasySpin Creator
Posts: 1053
Joined: Mon Jul 21, 2014 10:11 pm
Location: University of Washington

Re: Sorting of eigenvectors

Post by Stefan Stoll »

The basis states are in this order, but the eigenstates might not be. In the general case, it's impossible to predict what character e.g. the lowest eigenstates will have without diagonalizing the Hamiltonian.

If you use eig, the eigenstates are sorted by increasing energy, and the eigenvectors are sorted the same way. You can look at the eigenvectors to figure out what character they have. Each column in the eigenvector matrix is one eigenvector, each row corresponds to one of the basis states, in the order you mentioned.

Here is an example:

Code: Select all

Sys.S = [1 1];
Sys.J = 1000;
H = sham(Sys,[0;0;350]);
[V,E] = eig(H);
NoahP
Newbie
Posts: 3
Joined: Wed Mar 25, 2020 6:43 am

Re: Sorting of eigenvectors

Post by NoahP »

Thank you Stefan,

I tried eig(H) but when I plot the eigenvalues and eigenvectors as function of B-field I find some jumps/flips whenever the eigenvalues cross each other. I saw that easy spin has a levels or levelsplot that seem to not have the problem. Is there an easyspin function that returns the eigenvectors corresponding to the eigenvalues of either of the two functions ? Or could you share how easyspin sorts the eigenvalues in levels and levelsplot so that the results are continuous without those jumps at level crossings ?

Thanks and stay safe
NoahP
Newbie
Posts: 3
Joined: Wed Mar 25, 2020 6:43 am

Re: Sorting of eigenvectors

Post by NoahP »

Hi all,

actually I take my last post back. It seems that levels also has some resorting issues. I thought its fine but if I run something like:

Sys = struct('S',[1,1],'g',[2,2], 'D', [-242,-242], 'E',[762,762]);
B_Fields = linspace(-5,5,200);
E = levels(Sys,0,0,B_Fields);
plot(B_Fields,E);

I get attached results which look quite wrong. I highlighted one of the energy levels by making the line width thicker.
I have problems thinking in the high field basis but I would expect a smooth differential so just a linear dependence in this case. That there are 3 points at which the derivative is not differentiable (-3, 0 ,3) seems wrong to me. What do i miss ?

Thanks
Attachments
levels.jpg
levels.jpg (26.41 KiB) Viewed 2617 times
Stefan Stoll
EasySpin Creator
Posts: 1053
Joined: Mon Jul 21, 2014 10:11 pm
Location: University of Washington

Re: Sorting of eigenvectors

Post by Stefan Stoll »

You are seeing three exact levels crossings. At these fields, the energy levels only have defined one-sided derivatives (i.e. from the left or from the right), because the numbering at the crossing is ambiguous.

Although the lower eigenstate to the left of the crossing has the same character than the higher eigenstate to the right, they are only continuous in the limit of an exact level crossing. If there is a slight perturbation, the crossing becomes an anticrossing, and there is no continuity. See e.g.

Code: Select all

clear
Sys.S = 3/2;
Sys.D = 4000;
B0 = linspace(0,500,1e4);
E = levels(Sys,[2*pi/180 3*pi/180],B0);
plot(B0,E);
Here, the lower level on the left of the anticrossing transitions continuously to the lower level on the right, even though the eigenstate character changes dramatically at the anticrossing.

Therefore, in EasySpin, energy eigenstates are always sorted in ascending order of energy, for each field separately.

Note that your 'E' field in the spin system is ignored - both the D and E values should go into Sys.D.
thanasis
Local Expert
Posts: 242
Joined: Thu Jan 21, 2016 6:28 am
Location: Strasbourg

Re: Sorting of eigenvectors

Post by thanasis »

I understand that the character of each state must be visually assigned from the Zeeman plots, and that it cannot be a priori decided.

Thus, in the example of the above S = 3/2 system, the character of each Zeeman line is to be decided by its tilt, and not its color, as below:
Zeeman
Zeeman
Selection_190.png (16.83 KiB) Viewed 2613 times
In the case of anticrossings, the levels "swap" character without actually crossing, but by "repelling" each other (in the lack of a more accurate description). Is that correct?

Is there a book/paper describing this in more detail?
Stefan Stoll
EasySpin Creator
Posts: 1053
Joined: Mon Jul 21, 2014 10:11 pm
Location: University of Washington

Re: Sorting of eigenvectors

Post by Stefan Stoll »

You can use sham and eig to explore the behavior of eigenstates near crossings and anticrossings. It might help to think about crossings as being anticrossings in the limit of vanishing energy splitting.
Post Reply