;edhmbc.2 ;avance-version (2006-02-20) ; ;Edited HMBC (2 + 4 gradient version) ;Echo/Antiecho gradient selection ;with second/third order low-pass J-filter to suppress one-bond correlations ; ;Andrew J. Benie and Ole W. Sørensen ; ;Pulse Program Library ;Carlsberg Research Center ; ;Copyright (c), 2006, Carlsberg Research Center ;All rights reserved #include #include #include #define MYGRAD(x,y,z) 50u y \n p16:x \n d16 z #ifndef LPJF2 ; With third order low-pass J-filter subroutine LPJF:EDHMBC(delay LPx, delay LPy, delay LPz) { LPx MYGRAD(gp1,UNBLKGRAD, ) ; +7 (p3 ph4):f2 MYGRAD(gp1*-0.5714, , ) ; -4 LPy (p3 ph5):f2 MYGRAD(gp1*-0.2857, , ) ; -2 LPz (p3 ph6):f2 MYGRAD(gp1*-0.1429, , ) ; -1 } #endif #ifdef LPJF2 ; With second order low-pass J-filter subroutine LPJF:EDHMBC(delay LPx, delay LPy, delay LPz) { LPx MYGRAD(gp1,UNBLKGRAD, ) ; +7 (p3 ph4):f2 MYGRAD(gp1*-0.5714, , ) ; -4 LPz (p3 ph5):f2 MYGRAD(gp1*-0.4286, , ) ; -3 } #endif ; gH=26.752196, gC=6.72828 ; EA = gH+gC : gH-gC (approx.: 5:3) define list EA1 = {1.0000 -0.5981} define list EA2 = {1.0000 0.5981} define list EA3 = {0.5981 1.0000} ; Defined delays and counters define delay PREPSTD define delay PREPUD define delay HEATCOMP define delay EPSILON define delay EPSA define delay EPSB define delay LP1 define delay LP2 define delay LP3 ; Default/initial settings "l31 = 0" ; row counter, first row = 0 "d0 = 3u" "d11 = 30m" "d12 = 20u" "p2 = p1*2" "p4 = p3*2" "DELTA = 50u + p16 + d16" ; gradient duration "TAU = (1s/(2*cnst9))" ; Tau #ifndef LPJF2 "TAU1 = (1s/((cnst6 + 0.07*(cnst8 - cnst6))*2))" ; Tau1 "TAU2 = (1s/(cnst6 + cnst8))" ; Tau2 "TAU3 = (1s/((cnst8 - 0.07*(cnst8 - cnst6))*2))" ; Tau3 #endif #ifdef LPJF2 "TAU1 = (1s/((cnst6 + 0.146*(cnst8 - cnst6))*2))" ; Tau1 "TAU2 = (1s/(cnst6 + cnst8))" ; Tau2 "TAU3 = (1s/((cnst8 - 0.146*(cnst8 - cnst6))*2))" ; Tau3 #endif "TAU4 = TAU - DELTA" "TAU5 = TAU/2 - DELTA" "LP1 = TAU1 - DELTA - 2*d12" ; LPF "LP2 = TAU2 - DELTA - p3" ; LPF "LP3 = TAU3 - DELTA - p3" ; LPF "PREPSTD = d6 - DELTA" ; Preparation time "PREPUD = d6 - 2*DELTA" ; Preparation time "HEATCOMP = 2*TAU + p1 - d12" ; Comp for dec.-heating "EPSILON = 6u + p2" "EPSA = 6u + p2 + p4" "EPSB = EPSA*0.5" 1 ze 2 d1 BLKGRAD if "l31 %2 == 0" { ; ------------ STD -------------- d11 pl12:f2 HEATCOMP d12 do:f2 TAU cpd2:f2 ; dec. starts ahead of 'first' pulse (p1 ph10):f1 TAU EPSB d12 do:f2 d12 pl2:f2 subr LPJF:EDHMBC(LP1,LP2,LP3) PREPSTD EPSB (p3 ph2):f2 d0 (p2 ph10):f1 d0 TAU5 MYGRAD(gp5*EA1, , igrad EA1) ; E = +5, A = -3 (p4 ph3):f2 MYGRAD(gp5*EA1, , igrad EA1) ; E = -3, A = +5 TAU5 EPSILON (p3 ph1):f2 DELTA } if "l31 %4 == 1" { ; ------------ UD1 -------------- d11 pl12:f2 HEATCOMP cpd2:f2 ; same heating as in std-exp. d12 do:f2 TAU (p1 ph10):f1 d12 do:f2 d12 pl2:f2 subr LPJF:EDHMBC(LP1,LP2,LP3) PREPUD EPSA MYGRAD(gp5*EA2*-1, , ) ; E = -5, A = -3 (p3 ph2):f2 MYGRAD(gp5*0.7990, , ) ; +4G, gH/(gH+gC) TAU4 d0 (p2 ph10):f1 d0 (p4 ph3):f2 TAU4 EPSILON MYGRAD(gp5*-0.7990, , ) ; -4G (p3 ph1):f2 MYGRAD(gp5*EA2, , ) ; E = +5, A = +3 } if "l31 %4 == 3" { ; ------------ UD2 -------------- d11 pl12:f2 HEATCOMP cpd2:f2 ; same heating as in std-exp. d12 do:f2 TAU (p1 ph10):f1 d12 do:f2 d12 pl2:f2 subr LPJF:EDHMBC(LP1,LP2,LP3) PREPUD MYGRAD(gp5*EA3*-1, , ) ; E = -3, A = -5 (p3 ph2):f2 MYGRAD(gp5*0.7990, , ) ; +4G, gH/(gH+gC) TAU4 EPSILON (p4 ph3):f2 d0 (p2 ph10):f1 d0 TAU4 MYGRAD(gp5*-0.7990, , ) ; -4G (p3 ph1):f2 MYGRAD(gp5*EA3, , ) ; E = +3, A = +5 EPSA } BOTH, go=2 ph31 ; NS-loop d1 BLKGRAD mc #0 to 2 ; Write data F1I(iu31, 4) F1EA(igrad EA1 & igrad EA2 & igrad EA3, id0) d11 do:f2 BLKGRAD exit ; --- H phases ------------------------ ph10 = 0 ph11 = 1 ; --- X phases ------------------------ ph1 = 0 2 2 0 ph2 = 0 0 2 2 2 2 0 0 ph3 = 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 ph4 = 0 ph5 = 0 ph6 = 0 ; --- Receiver phases ----------------- ph31 = 0 2 ;pl1 :f1 power level for pulse (default) ;pl2 :f2 power level for pulse (default) ;pl12 :f2 power level for CPD/BB decoupling ;p1 :f1 90 degree high power pulse ;p2 :f1 180 degree high power pulse ;p3 :f2 90 degree high power pulse ;p4 :f2 180 degree high power pulse ;p16 :gradient pulse ; ;d0 :increment delay (3usec) ;d1 :relaxation delay: 1-5*T1 ;d6 :delay for evolution of long range couplings ;d11 :delay for disk I/O [ 30 msec] ;d12 :delay for power switching [ 20 usec] ;d16 :delay for homospoil/gradient recovery [200 usec] ; ;TAU :1/(J(min) + J(max)) ;TAU1 :1/2(J(min)+k(J(max)-J(min)), k = 0.07 for 3:d order LPJF ;TAU2 :1/(J(min) + J(max)) ;TAU3 :1/2(J(max)-k(J(max)-J(min)) ;DELTA :Gradient duration, p16 + d16 + 50u ; ;cnst6 :1J(min), ~125 Hz ;cnst8 :1J(max), ~165 Hz ;cnst9 :1J optimal for editing ~145 Hz ;nd0 :2 ;MC2 :Echo-Antiecho ;EA1 :Echo-Antiecho gradient program, [+5 -3] ;EA2 :Echo-Antiecho gradient program, [+5 +3] ; ;pcpd2 :Pulse length for cpd on f2 [65 usec] ;cpdprg2 :Cpd-program [garp] ; ;gpnam1 :Gradient pulse 1 file name [SINE.100] ;gpnam5 :Gradient pulse 5 file name [SINE.100] ;gpz1 :Gradient strength 1, +7 [+14%] ;gpz5 :Gradient strength 5 [+80%] ; ;ns :2, 4, 6, 8, 10, ... ;ds :32 ; ;Processing: ; F2 : SSB = 2, WDW = SINE ; F1 : SSB = 0, WDW = SINE, PHC0 = 90, PH_mod = pk ; Au-pgm : splitcomb 2 startexpno 1 ; FT : xfb; xf2m; abs2; abs1; ;preprocessor-flags-start ;LPJF2 : Use a second order low-pass J-filter instead of third order (default) ; option -DLPJF2 (eda: ZGOPTNS) ;preprocessor-flags-end