Page 1 of 1
Sorting of eigenvectors
Posted: Wed Mar 25, 2020 8:04 am
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
Re: Sorting of eigenvectors
Posted: Wed Mar 25, 2020 9:00 am
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);
Re: Sorting of eigenvectors
Posted: Mon Mar 30, 2020 5:47 am
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
Re: Sorting of eigenvectors
Posted: Mon Mar 30, 2020 7:03 am
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
Re: Sorting of eigenvectors
Posted: Mon Mar 30, 2020 11:29 am
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
.
Re: Sorting of eigenvectors
Posted: Mon Mar 30, 2020 12:31 pm
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
- Selection_190.png (16.83 KiB) Viewed 3951 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?
Re: Sorting of eigenvectors
Posted: Mon Mar 30, 2020 1:24 pm
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.