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

Post Reply