Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Transition pre-selection and anticrossings #351

Open
stestoll opened this issue Oct 16, 2024 · 2 comments
Open

Transition pre-selection and anticrossings #351

stestoll opened this issue Oct 16, 2024 · 2 comments

Comments

@stestoll
Copy link
Member

The transition pre-selection approach in resfields calculates transition rates over a coarse orientational grid. As magnetic field, it uses the center of the provided field range. If the field sweep contains level anticrossings, the pre-selection procedure misses transitions and therefore results in missing spectral intensity.

Currently, the only workaround is to switch off preselection by setting Opt.Threshold = 0.

(The issue of poorly simulated spectral intensity around the anticrossing field position is independent of this issue and persists even for Opt.Threshold=0. To improve this, one needs to increase the number of orientations in Opt.GridZSize.)

Is there an alternative preselection approach that doesn't miss transitions in the case of anticrossings?

Here is a script that demonstrates the issue:

clear, clc, clf

Sys.S = [1/2 1/2];
Sys.dip = 300;
Sys.J = 9500;
Sys.lwpp = 1;

Exp.mwFreq = 9.6;
Exp.Range = [310 380];
Exp.Harmonic = 0;

Opt.separate = 'transitions';

[B,spc1,info] = pepper(Sys,Exp,Opt);
info.Transitions

Opt.Threshold = 0;
[B,spc2,info] = pepper(Sys,Exp,Opt);
info.Transitions

Opt.Threshold = 0;
Opt.GridSize = [200 10];
[B,spc3,info] = pepper(Sys,Exp,Opt);

tiledlayout(3,2)
nexttile
plot(B,spc1);
title('With transition preselection')

nexttile(3)
plot(B,spc2);
title('Without transition preselection')

nexttile(5)
plot(B,spc3);
title('Without transition preselection')

nexttile([3 1])
levelsplot(Sys,'z',Exp.Range)
xline(mean(Exp.Range));
@cerium1925
Copy link

Because the energy surfaces corresponding to the u and v energy levels can only be tangent once at most, the energy level curve is either convex, concave, or linearly growing. Based on this, can the following method be used? 1) Calculate the eigenvalues ​​of the system corresponding to the two endpoints and the midpoint magnetic field. If the three eigenvalues ​​calculated are linear, then directly take the midpoint value as the magnetic field pre-selected; If the system eigenvalue corresponding to the middle magnetic field is below the line connecting the two endpoints, it is convex (the corresponding u energy level must be convex), and there must be a case of anticrossings, then update the magnetic field endpoint value to the middle magnetic field value just now, set a threshold, so that the magnetic field value corresponding to the precise case of anticrossings can always be obtained in the following loop, and finally the entire magnetic field interval is precisely divided into two intervals by the magnetic field corresponding to the case of anticrossings; then take the midpoint magnetic field value of each interval for pre-calculation and pre-selection, and finally take the average or the smaller one as the pre-selection? Or can the entire system magnetic field be directly divided into two intervals, and the resonance field, intensity, etc. can be calculated separately in each interval?
Screenshot 2024-11-25 201023

@cerium1925
Copy link

The user-specified Trans parameter also needs to be cross-checked. If there are no anticrossings, return a single N×2 dataset; if there are anticrossings, return two datasets (N×2 and M×2 dataset) along with the anticrossing field.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

2 participants