Ways to make HYSCORE sims more efficient

General forum for EasySpin: questions, how to's, etc.
Post Reply
JHarbort
Newbie
Posts: 3
Joined: Wed Mar 13, 2024 7:31 am
Location: Marseille (formerly Brisbane)

Ways to make HYSCORE sims more efficient

Post by JHarbort »

Hello everyone,

I have recently been exploring 6 pulse HYSCORE for investigating a haem complex (alongside 4P HYSCORE). Unlike for 4P HYSCORE, there is no inbuilt 6P HYSCORE mode for saffron; so the simulations I am currently doing for a single proton (with no extras like detection window) take between 35 and 50 seconds each, which is a bit slow for exploring a wide range of simulation parameters.

Are there any ways to speed up these simulations? (Including, for example, hacking some changes into the open source EasySpin)

I have been wondering which hardware factors might help, too. My usual work computer is limited in RAM (16 GiB), but I have access to a 64 GiB RAM machine elsewhere; would EasySpin be able to make use of that extra memory? (I guess the increased number of cores wouldn't help unless I parallelised a single simulation?)

Here is an example of the simulations I am running:

Code: Select all

Sys = struct('S',1/2,'g',[2.433,2.271,1.907]); 
Sys = nucspinadd(Sys,'1H',[-1,-1,2]*5-1,[0,00,0]*pi/180); 

Exp.mwFreq = 9.70727; % GHz
Exp.Field = 287; % mT

% Pulse 1, y dir pi/2
Pulse1.Flip = pi/2; 
Pulse1.Phase = pi/2; % +y dir for initial phase
Pulse1.tp = 16E-3; % µs

% Pulse 2, y dir pi
Pulse2.Flip = pi; 
Pulse2.Phase = pi/2; % +y dir for initial phase
Pulse2.tp = 32E-3; % µs

% Pulse 3, x dir pi/2
Pulse3.Flip = pi/2; 
Pulse3.Phase = 0; % +x dir for initial phase
Pulse3.tp = 16E-3; % µs

% Pulse 4, x dir pi
Pulse4.Flip = pi; 
Pulse4.Phase = 0; % +x dir for initial phase
Pulse4.tp = 32E-3; % µs

% Pulse 5, x dir pi/2
Pulse5.Flip = pi/2; 
Pulse5.Phase = 0; % +x dir for initial phase
Pulse5.tp = 16E-3; % µs

% Pulse 6, x dir pi
Pulse6.Flip = pi; 
Pulse6.Phase = 0; % +x dir for initial phase
Pulse6.tp = 32E-3; % µs

tau1 = 128E-3; % ns
tau2 = 128E-3; % ns
t0_1 = 36E-3; % ns
t0_2 = 36E-3; % ns
dt1 = 24E-3; % ns
dt2 = 24E-3; % ns

Exp.Sequence = {Pulse1 tau1 Pulse2 tau1 Pulse3 t0_1 Pulse4 t0_2 Pulse5 tau2 Pulse6 tau2}; 
Exp.nPoints = [171,171]; 
Exp.Dim1 = {'d3',dt1}; 
Exp.Dim2 = {'d4',dt2}; 
Exp.ExciteWidth = 62.5; % MHz

% Exp.DetWindow = [-20,20]*1E-3; % 40 ns detection window
% Exp.Integrate = 'on'; 

tic
[tS,spS,infoS] = saffron(Sys,Exp); 
toc
% Plotting stuff, other analysis, etc., happens afterwards. 

Thank you for your time!
Joshua

Stefan Stoll
EasySpin Creator
Posts: 1136
Joined: Mon Jul 21, 2014 10:11 pm
Location: University of Washington

Re: Ways to make HYSCORE sims more efficient

Post by Stefan Stoll »

Most of the time is consumed for calculating pulse propagators. Have you tried to run the simulation using ideal pulses? You can do this by setting all pulse lengths to zero. This will neglect the static spin Hamiltonian during the pulses. Excitation width effects are still accounted for via Exp.ExciteWidth.

Post Reply