Resfields missing transitions

A place to report and discuss potential bugs
Post Reply
jar19
Newbie
Posts: 5
Joined: Fri Oct 25, 2019 8:06 am

Resfields missing transitions

Post by jar19 »

Using EasySpin 6.0.0-dev.20 I have been trying to compute the resonant fields for the spin system described below:

Sys.S = [1 7/2];
Sys.g = [1.995; 1.98];
Sys.D = [661 -153; 3000 200];
Sys.J = 0;
Sys.Dip = 0;

Exp.mwFreq = 95;
Exp.Range = [2500 4500];

nKnots = 31;

[phi,theta,weight] = sphgrid(Symm(Sys),nKnots,'c');

parfor ORI = 1:numel(phi)
Sys1 = Sys;
Exp1 = Exp;
Exp1.CrystalOrientation = [phi(ORI) theta(ORI)];
[Bres{ORI},Amp{ORI},Wid{ORI},Trans{ORI} = resfields(Sys1,Exp1);
end

Looking through the contents of Bres I notice that some orientations have found fewer resonant fields than expected. I expect there to be 37 transitions (2 triplet transitions for each octet sublevel and 7 octet transitions for each triplet sublevel). However, ORI = 92 for example has only found 33. Inspection of:
figure(), clf, levelsplot(Sys,[phi(92) theta(92)],Exp.Range,Exp.mwFreq)
clearly shows the 37 transitions within the static field range and inspection of:
sort(Bres{92},'ascend')
shows that four resonant fields occurring at approximately 3.222, 3.343, 3.388 and 3.401 T have been missed.

Setting Opt.Verbosity = 2 suggests these missing transitions are removed due to the relative intensity being below the threshold. However, interacting with the transitions in the levelsplot figure suggests that they have very similar transition probabilities.

I recalculated the resonant fields for ORI = 92 using Opt.Threshold = 1e-8, the same 33 resonant fields were obtained.

I then set Opt.Threshold = 0 to calculate all resonant fields within Exp.Range and the output of
Exp.CrystalOrientation = [phi(92) theta(92)];
Opt.Threshold = 0;
Opt.Verbosity = 2;
[bres,amp,wid,trans] = resfields(Sys,Exp,Opt);
[bres,idx] = sort(bres,'ascend');
[bres amp(idx)]

Indicates that the 37 transitions have been found and the missing resonant fields have very similar intensities to the other transitions within the same constant M_tri/M_oct sublevel.

Please can you provide some clarity as to the reason for this behaviour, is it a bug? Is there a way for the transition pre-selection to correctly find these missing levels as the resfields calculation is then much quicker?
Stefan Stoll
EasySpin Creator
Posts: 1050
Joined: Mon Jul 21, 2014 10:11 pm
Location: University of Washington

Re: Resfields missing transitions

Post by Stefan Stoll »

Transition pre-selection is a non-perfect heuristic procedure that unfortunately can fail in some cases like yours, where you are doing a single-crystal and not a powder simulation.

What transition pre-selection does in a single-crystal simulation (as you are running) is to calculate transition intensities for all transitions at the center field of the specified field range (using the specified orientation), and then limit the modeling of the full Zeeman diagram to the level pairs that have intensities above the threshold. Now, if there are energy level crossings within your field range, the determined level pairs will not be accurate for the entire range.

The only workaround is to set Opt.Threshold = 0. That's always safe, as it instructs EasySpin to look at all level pairs.

Transition pre-selection is more stable for a powder simulation. There, it uses a coarse orientation grid to get an idea of how transition intensities change as a function of orientations. (You can change the resolution of this pre-selection powder grid with the undocumented Opt.nTRKnots - its default is 3, so pretty low.)
Post Reply