StollLab / EasySpin

MATLAB toolbox for Electron Paramagnetic Resonance (EPR) spectroscopy
http://easyspin.org
MIT License
49 stars 26 forks source link

Matrix block diagonilization #235

Closed akboudalis closed 1 year ago

akboudalis commented 2 years ago

Magnetization calculations for very large isotropic systems could become tractable by block diagonalization of the Hamiltonian matrix. Below is a sample calculation of a system with five spins. For Si = 7/2 (Gd(III)) the calculation cannot even begin due to the size of the matrix.

clear all; close all;
cm=100*clight/1e6; % Conversion constant from cm-1 to MHz

Si = 5/2;
gi = 2;
% Nearest-neighbout
Jext = 40; % 1-2, 4-5
Jint = -20; %2-3, 3-4
% Next-nearest neighbour
Jnnn = -8; % 1-3, 3-5
Jnnn2 = 4; % 2-4
Sys1.S=[Si Si Si Si Si];
Sys1.g=[gi gi gi gi gi];
Sys1.J = -2*cm*[Jext Jnnn 0 0 Jint Jnnn2 0 Jint Jnnn Jext];

Opt.Units = 'CGS';      % use CGS-emu system of units
Opt.Output = 'chimolT';
Exp.Temperature = 2:300;    % large temperature range (K)
Exp.Field = 500;       % two field values (mT)

chimolT = curry(Sys1,Exp,Opt);
plot(Exp.Temperature,chimolT)
stestoll commented 2 years ago

This would require implementing a full symmetry analysis of the Hamiltonian. It would also benefit the other case where Hamiltonians can be block-diagonal: in the presence of multiple equivalent hyperfine couplings.