Z-filtered STMAS pulse program for half-integer spin quadrupole nuclei
Contributor: Gerhard Fink

Home and Applets > Pulse Program > XwinNMR 3.5 > Z-filtered STMAS

This NMR pulse program is for Bruker Avance spectrometers.

Code for Avance NMR spectrometers

; stmas3eae.gf

; z-filtered STMAS in echo/anti-echo acquisition mode
; 1D and 2D version
; reference: 
; J.-P. Amoureux, L. Delevoye, G. Fink, F. Taulelle, A. Flambard, 
; and L. Montagne
; Implementing SPAM into STMAS: a net sensitivity improvement 
; in high-resolution NMR of quadrupolar nuclei,
; J. Magn. Reson. 175 pp.285-299 (2005) 
;------------------------------------------------------------------------------
; ZGOPTNS - the zg-options are:
;
; Decoupling on the F2 channel:
; -Ddecoupling  ... use cpdprg2 with power pl12
;
; Make a 1D experiment:
; -Done         ... execute the first experiment of the corresponding 
;                   complete 2D experiment
;
; Type of experiment (choose one):
; -Ddefault     ... execute a classical echo/anti-echo experiment
; -DSPAMecho    ... execute a 2D using SPAM with opposite phases for the 
;                   last two pulses on the ANTI-ECHO, start with the echo
; -DSPAMantiecho... execute a 2D using SPAM with opposite phases for the 
;                   last two pulses on the ECHO, start with the anti-echo
;
; Additional zg-options, useful for the 1D case:
; -Dantiecho    ... as -Ddefault      , but it starts with the anti-echo
; -DSPAMae_inv  ... as -DSPAMecho     , but it starts with the anti-echo
; -DSPAMe_inv   ... as -DSPAMantiecho , but it starts with the echo
;------------------------------------------------------------------------------
;
;ns     : number of scans [32*n], you may use [8*n] for SPAM
;ds     : dummy scans
;swh    : frequency window [nue_rot/n]
;aq     : aquisition time
;rg     : receiver gain 
;dw     : dwell time [tau_rot*n]
;de     : deadtime before acquisition [use default setting]
;
;cnst31 : sample rotation frequency [Hz]
;d0     : 1st value for t1 [calculated to ashure rotor synchronization]
;d1     : repetition delay
;d20    : desynchronisation time [0us]
;in0    : t1 dwell time [n*tau_rot]
;l0     : rotor periods for the 1st point in t1
;zgoptns: zg-options, deciding about 1D/2D, decoupling 
;         and the type of experiment
;tau_rot: rotor period [calculated]
;td1_tru: true number of points in t1 [calculated]
;cnst21 : f1 pulse carrier offset [Hz]
;
;p1     : 1st hard pulse (non-selec.; try HP35)
;p3     : 2nd hard pulse (non-selec.; try HP35)
;p4     : 90-soft pulse  (CT-selective;   SP90)
;pl1    : high power level (nue_RF= 100kHz)
;pl3    : low  power level (nue_RF= 5-10kHz)
;
;pl12   : f2 decoupling power
;cpdprg2: sequence for decoupling on f2
;
;------------------------------------------------------------------------------
; 1 fnmode : t1 acquisition mode [Echo-Antiecho]
; digmod   : digitizer mode for acquisition [digital]
; fw       : analog filter width [use default setting]
; nd0      : number of accurencies of "d0" in the sequence [1]
; 1 o1     : [set equal o1]
; 1 sfo1   : [set equal sfo1]
;------------------------------------------------------------------------------


#include <Avance.incl>


define delay tau_rot
"tau_rot= 1s/cnst31"

define loopcounter td1_tru
"td1_tru=td1/2"

;Synchronize 1st and 3rd pulse with the sample rotation (create rotor echoes)
"d0= l0*tau_rot -p1/2  -3u -p3/2"



1 ze
  tau_rot


;Acquire the first part:
;-----------------------

#ifdef decoupling
2 d1 do:f2          ;f2 decoupling OFF
  1u cpds2:f2       ;f2 decoupling ON             / use cpdprg2 with power pl12
  1u pl12:f2        ;set power level on f2        / PL for the decoupling
#else
2 d1                ;repetition delay
#endif

  1u fq=cnst21:f1   ;f1 carrier defintion         / uses cnst21 in Hertz  
  3u pl1:f1         ;set power level on f1        / PL for the hard pulse
 (p1 ph1):f1        ;1st hard pule                / excitation of +1(ST) & +1(CT)

  d0                ;SQ evolution time            / t1 dimension
  d20               ;arbitrary desynchronisation  / suppresses ST signal

  3u pl1:f1
 (p3 ph3):f1        ;2nd hard pule                / reconversion

                    ;ZQ evolution time            / z-filter (minimized)
  
  3u pl3:f1         ;set power level on f1        / PL for the soft pulse
 (p4 ph4):f1        ;90-soft pulse                / read-out

  d20               ;refocusses phase
  
  go=2 ph8 ph9:r    ;acquisition    / digitizer phase ph8  &  receiver phase ph9

#ifdef decoupling  
  1u do:f2          ;f2 decoupling OFF
#endif


#ifdef one
  100m wr #0            ;Write data to disk (1D data)

#else
  100m wr #0 if #0 ze   ;Write data to disk (2D data)




;Acquire the second part:
;------------------------

#ifdef decoupling
3 d1 do:f2
  1u cpds2:f2
  1u pl12:f2
#else
3 d1
#endif

  1u fq=cnst21:f1   ; ... again!
  3u pl1:f1
 (p1 ph11):f1

  d0
  d20

  3u pl1:f1
 (p3 ph13):f1



  3u pl3:f1
 (p4 ph14):f1

  d20

  go=3 ph18 ph19:r  ;acquisition     / digitizer phase ph18  &  receiver phase ph19

#ifdef decoupling  
  1u do:f2
#endif

  100m wr #0 if #0 ze
  1m id0            ;increment d0 by in0     / defines increment for the t1 dimension
  lo to 2 times td1_tru ;loop back to the beginning   
;                                 / loop for both sequences (i.e. echo and anti-echo)

#endif
exit                ;end of the pulse sequences




;Pulse and reciever phase lists:
;-------------------------------
; Type of experiment:
; -DSPAMecho    ... execute a 2D using SPAM with opposite phases for 
;                   the last two pulses on the ANTI-ECHO, start with the echo
; -DSPAMantiecho... execute a 2D using SPAM with opposite phases      
;                   for the last two pulses on the ECHO, start with the anti-echo
; -DSPAMae_inv  ... as -DSPAMecho     , but it starts with the anti-echo
; -DSPAMe_inv   ... as -DSPAMantiecho , but it starts with the echo
;
; -Decho        ... as -Ddefault
; -Dantiecho    ... as -Ddefault      , but it starts with the anti-echo
; -Ddefault     ... execute a classical echo/anti-echo experiment
;

#ifdef SPAMecho
; 1.echo, 2.anti-echo with ph14-inversion
;echo:
  ph1 =(8) { 0 4 2 6 1 5 3 7 }^4^2^6

  ph3 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
  ph4 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
  ph8 =    { 0 0 0 0 0 0 0 0 }^2^1^3
  ph9 =(8) { 0 4 6 2 7 3 5 1 }
;

;anti-echo:
  ph11 =(8) { 0 4 2 6 1 5 3 7 }^4^2^6
  ph13 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
  ph14 =(8) { 4 4 4 4 4 4 4 4 }^4^2^6
  ph18 =    { 2 2 2 2 2 2 2 2 }^2^1^3

  ph19 =(8) { 0 4 2 6 1 5 3 7 }

#else 
#ifdef SPAMantiecho
; 1.anti-echo, 2.echo with ph14-inversion
;echo:
  ph11 =(8) { 0 4 2 6 1 5 3 7 }^4^2^6
  ph13 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
  ph14 =(8) { 4 4 4 4 4 4 4 4 }^4^2^6
  ph18 =    { 2 2 2 2 2 2 2 2 }^2^1^3
  ph19 =(8) { 0 4 6 2 7 3 5 1 }
;
;anti-echo:
  ph1 =(8) { 0 4 2 6 1 5 3 7 }^4^2^6
  ph3 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
  ph4 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
  ph8 =    { 0 0 0 0 0 0 0 0 }^2^1^3
  ph9 =(8) { 0 4 2 6 1 5 3 7 }

#else 
#ifdef SPAMae_inv
; 1.anti-echo with ph4-inversion  ,2.echo
;echo:
  ph11 =(8) { 0 4 2 6 1 5 3 7 }^4^2^6
  ph13 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
  ph14 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
  ph18 =    { 0 0 0 0 0 0 0 0 }^2^1^3
  ph19 =(8) { 0 4 6 2 7 3 5 1 }
;
;anti-echo:
  ph1 =(8) { 0 4 2 6 1 5 3 7 }^4^2^6
  ph3 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
  ph4 =(8) { 4 4 4 4 4 4 4 4 }^4^2^6
  ph8 =    { 2 2 2 2 2 2 2 2 }^2^1^3
  ph9 =(8) { 0 4 2 6 1 5 3 7 }

#else 
#ifdef SPAMe_inv
; 1.echo with ph4-inversion , 2.anti-echo
;echo:
  ph1 =(8) { 0 4 2 6 1 5 3 7 }^4^2^6
  ph3 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
  ph4 =(8) { 4 4 4 4 4 4 4 4 }^4^2^6
  ph8 =    { 2 2 2 2 2 2 2 2 }^2^1^3
  ph9 =(8) { 0 4 6 2 7 3 5 1 }
;
;anti-echo:
  ph11 =(8) { 0 4 2 6 1 5 3 7 }^4^2^6
  ph13 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
  ph14 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
  ph18 =    { 0 0 0 0 0 0 0 0 }^2^1^3
  ph19 =(8) { 0 4 2 6 1 5 3 7 }

#else 
#ifdef echo
; z-filtered version: 1.echo 2.anti-echo
;echo:
  ph1 =(8) { 0 4 2 6 1 5 3 7 }
  ph3 =(8) { 0 0 0 0 0 0 0 0 }
  ph4 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
  ph8 =    { 0 0 0 0 0 0 0 0 }^2^1^3
  ph9 =(8) { 0 4 6 2 7 3 5 1 }
;
;anti-echo:
  ph11 =(8) { 0 4 2 6 1 5 3 7 }
  ph13 =(8) { 0 0 0 0 0 0 0 0 }
  ph14 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
  ph18 =    { 0 0 0 0 0 0 0 0 }^2^1^3
  ph19 =(8) { 0 4 2 6 1 5 3 7 }

#else 
#ifdef antiecho
; z-filtered version: 1.anti-echo , 2.echo
;echo:
  ph11 =(8) { 0 4 2 6 1 5 3 7 }
  ph13 =(8) { 0 0 0 0 0 0 0 0 }
  ph14 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
  ph18 =    { 0 0 0 0 0 0 0 0 }^2^1^3
  ph19 =(8) { 0 4 6 2 7 3 5 1 }
;
;anti-echo:
  ph1 =(8) { 0 4 2 6 1 5 3 7 }
  ph3 =(8) { 0 0 0 0 0 0 0 0 }
  ph4 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
  ph8 =    { 0 0 0 0 0 0 0 0 }^2^1^3
  ph9 =(8) { 0 4 2 6 1 5 3 7 }

#else 
; EQUAL -Decho: z-filtered version: 1.echo 2.anti-echo
;echo:
  ph1 =(8) { 0 4 2 6 1 5 3 7 }
  ph3 =(8) { 0 0 0 0 0 0 0 0 }
  ph4 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
  ph8 =    { 0 0 0 0 0 0 0 0 }^2^1^3
  ph9 =(8) { 0 4 6 2 7 3 5 1 }
;
;anti-echo:
  ph11 =(8) { 0 4 2 6 1 5 3 7 }
  ph13 =(8) { 0 0 0 0 0 0 0 0 }
  ph14 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
  ph18 =    { 0 0 0 0 0 0 0 0 }^2^1^3
  ph19 =(8) { 0 4 2 6 1 5 3 7 }

#endif
#endif
#endif
#endif
#endif
#endif
  

Solid-state NMR bibliography for:

Aluminum-27
Antimony-121/123
Arsenic-75
Barium-135/137
Beryllium-9
Bismuth-209
Boron-11
Bromine-79/81
Calcium-43
Cesium-133
Chlorine-35/37
Chromium-53
Cobalt-59
Copper-63/65
Deuterium-2
Gallium-69/71
Germanium-73
Gold-197
Hafnium-177/179
Indium-113/115
Iodine-127
Iridium-191/193
Krypton-83
Lanthanum-139
Lithium-7
Magnesium-25
Manganese-55
Mercury-201
Molybdenum-95/97
Neon-21
Nickel-61
Niobium-93
Nitrogen-14
Osmium-189
Oxygen-17
Palladium-105
Potassium-39/41
Rhenium-185/187
Rubidium-85/87
Ruthenium-99/101
Scandium-45
Sodium-23
Strontium-87
Sulfur-33
Tantalum-181
Titanium-47/49
Vanadium-51
Xenon-131
Zinc-67
Zirconium-91
[Contact me] - Last updated February 24, 2020
Copyright © 2002-2024 pascal-man.com. All rights reserved.