Composite-pulse nutation NMR
applied to a crystal:
SIMPSON simulation

Home and Applets > JDK1.1.8 Java Applets for Single Crystal > Composite Pulse with SIMPSON GoTo Applet

We also simulate the VFF composite-pulse nutation (the first-pulse length is variable whereas the other two are constant) using SIMPSON version 1.1.1, a general simulation program for solid-state NMR spectroscopy provided by M. Bak, J. T. Rasmussen, and N. C. Nielsen, J. Magn. Reson. 147, 296-330 (2000).

Due to different conventions for the definition of the asymmetry parameter used in SIMPSON and the Java applets, these two approaches provide different simulations. Fortunately, as proposed by Klaus Eichele, if we add 90 to alpha, the first Euler angle in SIMPSON TCL scripts, these two approaches give identical results.

Simpson for composite pulses

# Spin-3/2 central-line intensity calculation
# for a static crystal.
# With alpha0beta0 crystal_file and
# whatever the asymmetry parameter,
# qcc = 1 MHz gives a line splitting of 500 kHz
# and a quadrupole coupling omegaQ of 250 kHz.

spinsys {
  channels 23Na
  nuclei   23Na
  quadrupole 1 1 1e6 1 90 0 0

par {
  proton_frequency 400e6
  spin_rate        0
  variable tsw     0.5
  sw               1.0e6/tsw
  np               41
  crystal_file     alpha0beta0
  gamma_angles     1
  start_operator   0.2*I1z
  detect_operator  I1c
  verbose          1101
  variable rf      100000
  variable p1      0
  variable p2      5
  variable p3      5

proc pulseq {} {
  global par

  for {set i 1} {$i < $par(np)} {incr i} {

    pulse $par(tsw) $par(rf) $par(ph1)

    store 1

    pulse $par(p2) $par(rf) $par(ph2)

    pulse $par(p3) $par(rf) $par(ph3)

    acq $par(ph31)


    prop 1

proc main {} {
  global par

  foreach p {{-x x  x -y}\
             {-x x -x  y}\
             { x x -x -y}\
             { x x  x  y}} {
    set par(ph1)  [lindex $p 0]
    set par(ph2)  [lindex $p 1]
    set par(ph3)  [lindex $p 2]
    set par(ph31) [lindex $p 3]

    set g [fsimpson]
    if [info exists f] {
      fadd $f $g
      funload $g
    } else {
      set f $g

  fsave $f $par(name).fid
  funload $f

  puts "Larmor frequency (Hz) of 23Na: "
  puts [resfreq 23Na $par(proton_frequency)]


File name.

Spin I = 3/2.
qcc = 1 MHz,
eta = 1.

Static crystal.
0.5 s pulse increment.

40 pulse increments.

0.2 for normalization.

100 kHz RF pulse.
1st-pulse length.
2nd-pulse length.
3th-pulse length.

No pulse, no signal.

1st (variable) pulse
with ph1 phase.
Save propagator.

with ph2 phase.
with ph3 phase.

Receiver phase ph31.

Reset propagator to
initial value.

Recall the propagator at the end of the 1st pulse.

RF pulse and receiver
phase cycling.

SIMPSON uses gyromagnetic ratios provided by IUPAC for the determination of the Larmor frequency of a nucleus. For example:

23Na Larmor frequency = Proton Larmor frequency * 23Na gyromagnetic ratio / Proton gyromagnetic ratio;

400 MHz * 7.0808493 / 26.7522128 = 105.8731007 MHz.

[Contact me] - Last updated September 02, 2019
Copyright 2002- All rights reserved.