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