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 (13.21 KiB) Viewed 14464 times
- fig2_.png (13.21 KiB) Viewed 14464 times