Page 1 of 1

Pepper simulation depends on field range

Posted: Tue Oct 12, 2021 6:57 am
by howardjou

Hi everyone,
I try to simulate an 1 electron and 2 nuclei system by pepper.
However, I notice that the simulation depends on the exp.range I use.
I have set exp.npoint = 100000, so I don't think number of points is the reason.

Here is my code. The result of Exp.range = [0 18000] and Exp.range = [10000 18000] are different.
I don't know how to post pictures in this topic. You can run this code in different Exp.range and notice that the simulation depends on field range.

Code: Select all

Sys.g = [1.99 1.999];
Sys.S = 1/2;
Sys.lwpp = 20;

Sys.A = [500 10; 100 10]; 
Sys.Nucs = 'Mn, Mn';
Exp.nPoints = 100000;
Exp.mwFreq =397.3; %in GHz
Exp.Temperature = 10; %in K
Exp.Range = [0 18000]; %in mT
Exp.Harmonic = 1;

Exp.Mode = 'perpendicular';
[B, spec] = pepper(Sys,Exp);
spec = (spec - min(spec)) ./ (max(spec) - min(spec));

plot( B/1000, (spec - mean(spec)), 'r')
xlim([14 14.5]);

Re: Pepper simulation depends on field range

Posted: Tue Oct 12, 2021 11:00 am
by Stefan Stoll

What's happening here is that the automatic transition selection is not identifying all EPR transitions. This happens for two reasons: (a) the field range is much wider than the spectral range, (b) there are several nuclei with hyperfine couplings that give (almost) degenerate energy levels.

There are several ways around this:

  • Turn automatic transition selection off with Opt.Threshold = 0.
  • Use perturbation theory instead of matrix diagonalization, with Opt.Method = 'perturb2'.

Here is a script were the simulated spectrum is now independent of the field range:

Code: Select all

clear

Sys.S = 1/2;
Sys.g = [1.99 1.999];
Sys.A = [500 10; 100 10]; 
Sys.Nucs = 'Mn, Mn';
Sys.lwpp = 20;

Exp.nPoints = 100000;
Exp.mwFreq = 397.3; %in GHz
Exp.Temperature = 10; %in K

Exp.Range = [0 18000]; %in mT
%Exp.Range = [10000 18000]; %in mT
%Exp.Range = [14000 14500]; %in mT

Opt.Method = 'perturb2';
[B,spec1] = pepper(Sys,Exp,Opt);

Opt.Method = 'matrix';
Opt.Threshold = 0;
[B,spec2] = pepper(Sys,Exp,Opt);

plot(B/1e3,spec1,B/1e3,spec2)
xlim([14 14.5]);

Another comment: It looks like you don't have any resolved hyperfine splittings. In this case, it might be more efficient to exclude the nuclei and instead use an anisotropic line broadening with Sys.HStrain.


Re: Pepper simulation depends on field range

Posted: Tue Oct 12, 2021 12:06 pm
by howardjou

Thank you so much