Page 1 of 1

Calculating Transition Energies

Posted: Wed Aug 09, 2023 9:32 am
by f_hwc

Hello,

I am working on a S=1/2 system with a I=7/2 nuclear spin.
For plotting the energy levels I use the function resfields with parallel and perpendicular driving.
This works really fine and I get some nice plots for both driving directions showing me the energy levels and the possible transitions for a given microwave frequency.

A very useful thing for me would be to calculate the transition energies as a function of the magnetic field for all possible transitions.
This is easily done by making use of the function resfreqs_matrix and iterating over a vector containing the magnetic field values.
As a result I get a matrix which contains the position in frequency space for all transitions as function of my input field B.

Of course the eigenvalues change in ther absolute value, so for low fields they are all messed up and I can't just take one column of my matrix and plot this line because the eigenvalue changes in its value.
To better illustrate it, I include my plot here, where you can see that the color changes within the line, because of the jump in eigenvalues.

So my question is: Is there a possibility to isolate one such transition and get a vector that follows one transition from B=0mT --> B=100mT. This would come in rather handy.
Maybe the answer is simple and I am missing something obvious here.

I'd appreciate some hints how to tackle this.
Cheers,
f_hwc


Re: Calculating Transition Energies

Posted: Thu Aug 17, 2023 2:13 am
by katarkon

The output of resfreq_matrix() is always sorted according to increasing of the energy. You may try to calculate the energy of single selected transition using Opt.Transitions parameter. Also, resfreq_matrix() may show a pair of energy levels for each transition (third output of the function) which probably may be used for sorting. However, I don't shure that theese pairs are kept the same with the changing of the field.


Re: Calculating Transition Energies

Posted: Fri Aug 18, 2023 6:49 am
by thanasis

In equivalent terms, the problem at hand is the labeling of the spin states. As far as I understand, there is no consistent way to describe those, which is why Easyspin numbers them by increasing energy at each magnetic field.


Re: Calculating Transition Energies

Posted: Mon Aug 21, 2023 3:45 am
by katarkon

Thanks, thanasis. You absolutely right. The problem of the definition of the levels is occur at crossing/anticrossing points. It seems, there are no any convenient way to solve the problem.


Re: Calculating Transition Energies

Posted: Sat Sep 02, 2023 11:26 pm
by Stefan Stoll

Correct. Level crossings can be regarded as avoided crossings with the gap energy going towards zero. Therefore, there is no way to consistently label energy levels other than just by increasing (or decreasing) energy.


Re: Calculating Transition Energies

Posted: Wed Sep 06, 2023 2:26 am
by katarkon

Here the example demonstrating the problem.
clear;
Op.Threshold=0.001;
Exp.mwFreq=9.65;

Sys.g=gfree;
Sys.A=mt2mhz([200 120]/10);
Sys.Nucs='1H,1H';
Exp.Range=[0 20];
Exp.nPoints=256;
B=linspace(Exp.Range(1),Exp.Range(2),Exp.nPoints);
for i=1:numel(B)
B0=[0 0 B(i)];
H = sham(Sys,B0);
E(i,:)=eig(H,eye(size(H)),'qz');
end
plot(B,E);
Sys.g=gfree;
Sys.A=mt2mhz([120 200]/10);
Sys.Nucs='1H,1H';


for i=1:numel(B)
B0=[0 0 B(i)];
H = sham(Sys,B0);
E(i,:)=eig(H,eye(size(H)),'qz');
end
figure(2);
plot(B,E);

The spin hamiltonian is artificially diagonalized by 'qz' method, which keeps the order of the rows.


Re: Calculating Transition Energies

Posted: Wed Sep 06, 2023 2:30 am
by katarkon

Here the plots of default diagonalization routhine.

fig1_.png
fig1_.png (13.21 KiB) Viewed 8421 times
fig2_.png
fig2_.png (13.21 KiB) Viewed 8421 times