void makeHHdec() { double ppm = getval("sfrq"), /* pre-set HH decoupling parameters */ hhbw = 3.0*ppm, /* h**o-decoupling bandwidth */ hhpw = 0.020, /* h**o-decoupling pulsewidth */ hhofs = -0.25*ppm, /* h**o-decoupling offset from H2O */ hhstp = 1e6/getval("sw"), /* h**o-decoupling shape stepsize */ compH = getval("compH"), Hdecpwr; char cmd[MAXSTR]; /* create shape for HH h**o-decoupling and do it only once */ if((getval("arraydim") < 1.5) || (ix==1)) { sprintf(cmd, "Pbox hhdec -w \"CAWURST-8 %.2f/%.6f %.2f\" -s %.2f ", hhbw, hhpw, hhofs, hhstp); sprintf(cmd, "%s -dcyc 0.05 -p %.0f -l %.2f -0\n", cmd, tpwr, 1.0e6*pw*compH); system(cmd); HHdseq = getDsh("hhdec"); } if ((find("Hdecpwr") == 4) && (Hdecpwr = getval("Hdecpwr"))) HHdseq.pwr = Hdecpwr; /* if requested, set to user defined power */ setlimit("HHdseq.pwr", HHdseq.pwr, 51.0); }
void makeCdec() { double Cppm = getval("dfrq"), /* pre-set C decoupling parameters */ cbw = 250.0*Cppm, /* C-decoupling bandwidth, 250 ppm */ cpw = 0.006, /* C-decoupling pulsewidth, 6 ms */ pwC = getval("pwC"), pwClvl = getval("pwClvl"), compC = getval("compC"), Cdecpwr; char cmd[MAXSTR]; /* create low power decoupling for long range J(CH) and do it only once */ if((getval("arraydim") < 1.5) || (ix==1)) { sprintf(cmd, "Pbox Cdec_lp -w \"WURST-40 %.2f/%.6f\" -s 4.0 -p %.0f -l %.2f -0", cbw, cpw, pwClvl, 1.0e6*pwC*compC); system(cmd); Cdseq = getDsh("Cdec_lp"); Cdseq.pwr = Cdseq.pwr + 1.0; /* optional 1 dB power increase */ } if ((find("Cdecpwr") == 4) && (Cdecpwr = getval("Cdecpwr"))) Cdseq.pwr = Cdecpwr; /* if requested, set to user defined power */ setlimit("Cdseq.pwr", Cdseq.pwr, 45.0); }
pulsesequence() { char autocal[MAXSTR], shname1[MAXSTR], shname2[MAXSTR], ipap_flg[MAXSTR], ab_flg[MAXSTR], f1180[MAXSTR], SE[MAXSTR], /*Use Sensitivity Enhancement */ c13refoc[MAXSTR], refpat[MAXSTR], /* pulse shape pattern refocus. pulse*/ hetsofast_flg[MAXSTR], grad3_flg[MAXSTR]; /*gradient flag */ int t1_counter, phase; double d2_init=0.0, pwS,pwS1,pwS2, tpwrsf = getval("tpwrsf"), adjust = getval("adjust"), gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gzlvl3 = getval("gzlvl3"), gstab = getval("gstab"), gt1 = getval("gt1"), gt2 = getval("gt2"), gt3 = getval("gt3"), shlvl1 = getval("shlvl1"), shlvl2 = getval("shlvl2"), shdmf2 = getval("shdmf2"), shbw = getval("shbw"), shpw1 = getval("shpw1"), shpw2 = getval("shpw2"), shpw3 = 0.0, shofs = getval("shofs"), flipangle = getval("flipangle"), pwNlvl = getval("pwNlvl"), pwN = getval("pwN"), dpwr2 = getval("dpwr2"), d2 = getval("d2"), tau1, taunh = 1.0/(2.0*getval("JNH")); void compo_pulse(); void compo1_pulse(); void makeshape_pc9(); void makeshape_refoc(); void makeshape_ndec(); getstr("autocal",autocal); getstr("f1180",f1180); getstr("c13refoc",c13refoc); getstr("hetsofast_flg",hetsofast_flg); getstr("refpat", refpat); /* pulse pattern refocussing pulse */ getstr("ipap_flg",ipap_flg); getstr("grad3_flg",grad3_flg); getstr("ab_flg",ab_flg); getstr("SE",SE); getstr("shname1",shname1); getstr("shname2",shname2); pwS = c_shapedpw("sech",200.0,0.0,zero, 0.0, 0.0); pwS1 = hn_simshapedpw(refpat,shbw,shofs-4.8,"isnob3",50.0,0.0, zero, zero, 0.0, 0.0); pwS2 = h_shapedpw(refpat,shbw,3.5,zero, 0.0, 0.0); if (hetsofast_flg[0] == 'a') shpw3 = h_shapedpw("isnob5",4.0,-3.0,two, 2.0e-6, 2.0e-6); if (hetsofast_flg[0] == 'b') shpw3 = h_shapedpw("gaus180",0.015,0.0,two, 2.0e-6, 2.0e-6); phase = (int) (getval("phase") + 0.5); settable(t1,2,phi1); settable(t2,2,phi2); if (autocal[0] == 'y') { (void) makeshape_pc9(flipangle, shbw, shofs); /*create pc9 pulse*/ sh90 = getRsh("hn_pc9"); shpw1 = sh90.pw; shlvl1 = sh90.pwr; sprintf(shname1,"hn_pc9"); (void) makeshape_refoc(refpat, shbw, shofs); /* create refocussing pulse */ shref = getDsh("hn_refoc"); shpw2 = shref.pw; shlvl2 = shref.pwr; shdmf2 = shref.dmf; sprintf(shname2,"hn_refoc"); if (dmm2[2] == 'p') /* waveform capability present on channel 3 */ { (void) makeshape_ndec(); /* create n15 wurst decoupling */ shdec = getDsh("hncompdec"); dpwr2 = shdec.pwr; dmf2 = shdec.dmf; dres2 = shdec.dres; sprintf(dseq2,"hncompdec"); } } if (tpwrsf <4095.0) shlvl2 = shlvl2+6.0; if (phase == 1) ; if (phase == 2) tsadd(t1,1,4); tau1 = d2; if((f1180[A] == 'y') && (ni > 1.0)) { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.2e-6) tau1 = 0.0; } tau1 = tau1; if (f1180[0] == 'y') tau1 = tau1-pwN*4.0/3.0; if( ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t1,2,4); tsadd(t2,2,4); } status(A); decoffset(dof); dec2power(pwNlvl); dec2offset(dof2); obsoffset(tof); obspower(tpwr); /**********************************************/ if (hetsofast_flg[0] != 'n') { if (hetsofast_flg[0] == 'a') h_shapedpulse("isnob5",4.0,-3.0,two, 2.0e-6, 2.0e-6); if (hetsofast_flg[0] == 'b') h_shapedpulse("gaus180",0.015,0.0,two, 2.0e-6, 2.0e-6); zgradpulse(gzlvl2, gt2); delay(gstab); delay(d1-gt2-shpw3); lk_hold(); } else { zgradpulse(gzlvl2, gt2); delay(gstab); delay(d1-gt2); lk_hold(); } obspower(shlvl1); shaped_pulse(shname1,shpw1,zero,2.0e-4,2.0e-6); if (SE[0] == 'y') { if (ipap_flg[0] == 'y') { if ((tau1+pwN*2.0) < pwS2) delay((pwS2*0.5-tau1*0.5-pwN)*0.5); if (grad3_flg[0]== 'y') delay(taunh*0.5-shpw1*0.533-pwS1*0.5+(gt3*2.0+2.0*gstab+pwN*3.0)); else delay(taunh*0.5-shpw1*0.533-pwS1*0.5+pwN); hn_simshapedpulse(refpat,shbw,shofs-4.8,"bip720_50_20",40.0,0.0, zero, zero, 0.0, 0.0); obspower(shlvl2); obspwrf(4095.0); compo1_pulse(shname2,shpw2,pwN,shdmf2,t1,tau1,c13refoc,pwS,taunh,pwS1,pwS2,gt1,gt3,gzlvl3,grad3_flg,gstab); obspower(shlvl2); obspwrf(4095.0); zgradpulse(gzlvl1, gt1); delay(gstab); h_sim3shapedpulse(refpat,shbw,shofs-4.8,0.0,2.0*pwN, one, zero, zero, 0.0, 0.0); zgradpulse(gzlvl1, gt1); delay(gstab); delay(taunh*0.5-gt1-gstab-POWER_DELAY-pwS1*0.5); if ((tau1+pwN*2.0) < pwS2) delay((pwS2*0.5-tau1*0.5-pwN)*0.5); if (ab_flg[0] == 'a') dec2rgpulse(pwN,one,0.0,0.0); else dec2rgpulse(pwN,three,0.0,0.0); if (grad3_flg[0]== 'y') { delay(gt3+gstab); dec2rgpulse(pwN*2.0,zero,0.0,0.0); zgradpulse(gzlvl3,gt3); delay(gstab); } } else { zgradpulse(gzlvl1, gt1); delay(gstab); if ((tau1+pwN*2.0) < pwS2) delay(taunh-gt1-gstab-shpw1*0.533-adjust-(pwS2*0.5-tau1*0.5-pwN)*0.5); else delay(taunh-gt1-gstab-shpw1*0.533-adjust); obspower(shlvl2); obspwrf(tpwrsf); compo_pulse(shname2,shpw2,pwN,shdmf2,t1,tau1,c13refoc,pwS); obspower(shlvl1); obspwrf(4095.0); zgradpulse(gzlvl1, gt1); delay(gstab); if ((tau1+pwN*2.0) < pwS2) delay(taunh-gt1-gstab-POWER_DELAY-(pwS2*0.5-tau1*0.5-pwN)*0.5); else delay(taunh-gt1-gstab-POWER_DELAY); } } else { if ((ni == 0) || (ni == 1)) { zgradpulse(gzlvl1, gt1); delay(gstab); delay(taunh-gt1-gstab-WFG_START_DELAY+pwN*4.0-shpw1*0.533-adjust); obspwrf(tpwrsf); obspower(shlvl2); xmtrphase(zero); xmtron(); obsunblank(); obsprgon(shname2,1/shdmf2,9.0); delay(shpw2); obsprgoff(); obsblank(); xmtroff(); obspower(shlvl2); obspwrf(4095.0); dec2rgpulse(pwN,t1,0.0,0.0); dec2rgpulse(pwN*2.0,zero,0.0,0.0); dec2rgpulse(pwN,zero,0.0,0.0); } else { zgradpulse(gzlvl1, gt1); delay(gstab); delay(taunh-gt1-gstab-shpw1*0.533-adjust); obspower(shlvl2); obspwrf(tpwrsf); compo_pulse(shname2,shpw2,pwN,shdmf2,t1,tau1,c13refoc,pwS); obspower(shlvl1); obspwrf(4095.0); } if (ipap_flg[0] == 'y') { if (ab_flg[0] == 'b') { zgradpulse(gzlvl1, gt1); delay(gstab); delay(taunh-gt1-gstab-pwN-POWER_DELAY); dec2rgpulse(pwN,one,0.0,0.0); } else { zgradpulse(gzlvl1, gt1); delay(gstab); delay(taunh*0.5-gt1-pwN-gstab); dec2rgpulse(pwN*2.0,zero,0.0,0.0); delay(taunh*0.5-pwN-POWER_DELAY); } } else { zgradpulse(gzlvl1, gt1); delay(gstab); delay(taunh-gt1-gstab-POWER_DELAY); } } dec2power(dpwr2); lk_sample(); setreceiver(t2); status(C); }
void pulsesequence() { char c1d[MAXSTR]; /* option to record only 1D C13 spectrum */ int ncyc; double tau1 = 0.002, /* t1 delay */ post_del = 0.0, pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ compC = getval("compC"), compH = getval("compH"), mixpwr = getval("mixpwr"), jCH = getval("jCH"), gt0 = getval("gt0"), gt1 = getval("gt1"), gt2 = getval("gt2"), gzlvl0 = getval("gzlvl0"), gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), grec = getval("grec"), phase = getval("phase"); getstr("c1d",c1d); ncyc=1; if(jCH > 0.0) tau1 = 0.25/jCH; dbl(ct, v1); /* v1 = 0 */ mod4(v1,oph); hlv(ct,v2); add(v2,v1,v2); if (phase > 1.5) incr(v1); /* hypercomplex phase increment */ initval(2.0*(double)((int)(d2*getval("sw1")+0.5)%2),v10); add(v1,v10,v1); add(oph,v10,oph); mod4(v1,v1); mod4(v2,v2); mod4(oph,oph); assign(zero,v3); if(FIRST_FID) { HHmix = pbox_mix("HHmix", "DIPSI2", mixpwr, pw*compH, tpwr); if(c1d[A] == 'n') { opx("CHdec"); setwave("WURST2 30k/1.2m"); pbox_par("steps","600"); cpx(pwC*compC, pwClvl); CHdec = getDsh("CHdec"); } } ncyc = (int) (at/HHmix.pw) + 1; post_del = ncyc*HHmix.pw - at; /* BEGIN PULSE SEQUENCE */ status(A); zgradpulse(gzlvl0, gt0); rgpulse(pw, zero, 0.0, 0.0); /* destroy H-1 magnetization*/ zgradpulse(gzlvl0, gt0); delay(1.0e-4); obspower(tpwr); txphase(v1); decphase(zero); dec2phase(zero); presat(); obspower(tpwr); delay(1.0e-5); status(B); if(c1d[A] == 'y') { rgpulse(pw,v1,0.0,0.0); /* 1H pulse excitation */ delay(d2); rgpulse(pw,two,0.0,0.0); /* 1H pulse excitation */ assign(oph,v3); } else { decunblank(); pbox_decon(&CHdec); rgpulse(pw,v1,0.0,0.0); /* 1H pulse excitation */ txphase(zero); delay(d2); pbox_decoff(); decblank(); decpower(pwClvl); decpwrf(4095.0); delay(tau1 - POWER_DELAY); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); txphase(one); decphase(one); dec2phase(one); delay(tau1); simpulse(pw, pwC, one, one, 0.0, 0.0); txphase(zero); decphase(zero); dec2phase(zero); delay(tau1); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); delay(tau1); simpulse(0.0, pwC, zero, zero, 0.0, 0.0); } zgradpulse(gzlvl1, gt1); delay(grec); simpulse(0.0, pwC, zero, v3, 0.0, rof2); txphase(v2); obsunblank(); pbox_xmtron(&HHmix); status(C); setactivercvrs("ny"); startacq(alfa); acquire(np,1.0/sw); endacq(); delay(post_del); pbox_xmtroff(); obsblank(); zgradpulse(gzlvl2, gt2); obspower(tpwr); delay(grec); rgpulse(pw,zero,0.0,rof2); /* 1H pulse excitation */ status(D); setactivercvrs("yn"); startacq(alfa); acquire(np,1.0/sw); endacq(); }
pulsesequence() { double mix = getval("mix"), pw180 = 0.0, tpwr_cf = getval("tpwr_cf"), j1xh = getval("j1xh"), hsglvl = getval("hsglvl"), hsgt = getval("hsgt"), gzlvlE = getval("gzlvlE"), gtE = getval("gtE"), EDratio = getval("EDratio"), gstab = getval("gstab"), pwxlvl = getval("pwxlvl"), pwx = getval("pwx"), taua=getval("taua"); /* asap delay ca 0.3/J */ char asap[MAXSTR], adiabatic[MAXSTR],lkgate_flg[MAXSTR],cmd[MAXSTR]; int ncycles=0, icosel=1, iphase = (int)(getval("phase")+0.5); getstr("asap",asap); getstr("adiabatic",adiabatic); getstr("lkgate_flg",lkgate_flg); if(j1xh<1.0) j1xh=150.0; if (FIRST_FID) { if(adiabatic[A] == 'y') ad180 = pbox_ad180("ad180", pwx, pwxlvl); /* make adiabatic 180 */ sprintf(cmd, "Pbox wu2mix -u %s -w \"WURST2m 20k/0.4m\" -p %.0f -l %.2f -s 2.0",userdir, tpwr, 1.0e6*pw*tpwr_cf); system(cmd); mixsh = getDsh("wu2mix"); } if(adiabatic[A] == 'y') pw180 = ad180.pw; ncycles = (int) (0.5 + mix/mixsh.pw); if ((0.5/j1xh) < (gtE+gstab)) { text_error("0.5/1jxh must be greater than gtE+gstab\n"); psg_abort(1); } settable(t1,2,ph1); settable(t2,4,ph2); settable(t3,4,ph3); assign(zero,v4); getelem(t1,ct,v1); getelem(t3,ct,oph); if (iphase == 2) icosel = -1; initval(2.0*(double)((int)(d2*getval("sw1")+0.5)%2),v10); add(v1,v10,v1); add(v4,v10,v4); add(oph,v10,oph); status(A); if (lkgate_flg[0] == 'y') lk_hold(); /* turn lock sampling off */ if (asap[A] == 'y') { mix = 7.0e-5 + 2.0*POWER_DELAY + 2.0*hsgt + mixsh.pw*ncycles; delay(1.0e-5); obspower(mixsh.pwr); zgradpulse(hsglvl,hsgt); delay(5.0e-5); obsunblank(); xmtron(); obsprgon(mixsh.name, 1.0/mixsh.dmf, mixsh.dres); delay(mixsh.pw*ncycles); obsprgoff(); obsblank(); xmtroff(); delay(1.0e-5); zgradpulse(hsglvl,hsgt); obspower(tpwr); delay(d1 - mix); } else { delay(1.0e-5); obspower(tpwr); zgradpulse(hsglvl,2.0*hsgt); rgpulse(pw, zero, rof1, rof1); zgradpulse(hsglvl,hsgt); rgpulse(pw, one, rof1, rof1); zgradpulse(0.5*hsglvl,hsgt); delay(d1 - 2.0*hsgt - 4.0*rof1 - 2.0*pw - 1.0e-5 - POWER_DELAY); } if (satmode[0] == 'y') { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); if (getflag("slpsat")) { shaped_satpulse("relaxD",satdly,zero); if (getflag("prgflg")) shaped_purge(v6,zero,v18,v19); } else { satpulse(satdly,zero,rof1,rof1); if (getflag("prgflg")) purge(v6,zero,v18,v19); } } if (getflag("wet")) wet4(zero,one); status(B); decpower(pwxlvl); if (asap[0] == 'y') { rgpulse(pw,zero,rof1,rof1); delay(taua/2.0 - pw - 2.0*rof1 + pw180/2.0); if(adiabatic[A] == 'y') { rgpulse(2.0*pw,two,rof1,0.0); decshaped_pulse(ad180.name,ad180.pw,zero,0.0,rof1); } else simpulse(2.0*pw,2.0*pwx,two,zero,rof1,rof1); delay(taua/2.0 - pw - 2.0*rof1 - pw180/2.0); simpulse(pw,pwx,zero,v1,rof1,1.0e-6); } else { rgpulse(pw,zero,rof1,rof1); delay(taua - rof1 - (2*pw/PI)); decrgpulse(pwx,v1,rof1,1.0e-6); } delay(gtE + 2*gstab + 2*GRADIENT_DELAY - (2*pwx/PI) - pwx - 1.0e-6 - rof1); if(adiabatic[A] == 'y') decshaped_pulse(ad180.name,ad180.pw,v4,rof1,1.0e-6); else decrgpulse(2*pwx,v4,rof1,1.0e-6); delay(gstab - pwx - 1.0e-6); zgradpulse(gzlvlE,gtE); delay(gstab - rof1 - pw); delay(d2/2); rgpulse(2.0*pw,zero,rof1,rof1); delay(d2/2); delay(gstab - rof1 - pw); zgradpulse(gzlvlE,gtE); delay(gstab - pwx - rof1); if(adiabatic[A] == 'y') decshaped_pulse(ad180.name,ad180.pw,zero,rof1,1.0e-6); else decrgpulse(2*pwx,zero,rof1,1.0e-6); delay(gtE + 2*gstab + 2*GRADIENT_DELAY - (2*pwx/PI) - pwx - 1.0e-6 - rof1); decrgpulse(pwx,t2,rof1,rof1); if(asap[0] == 'y') { delay(0.25/j1xh + ad180.pw/2.0); if(adiabatic[A] == 'y') { rgpulse(2.0*pw,zero,rof1,0.0); decshaped_pulse(ad180.name,ad180.pw,zero,0.0,rof1); } else simpulse(2.0*pw,2.0*pwx,zero,zero,rof1,rof1); delay(0.1*gstab - rof1); if(EDratio > 4) { zgradpulse(icosel*gzlvlE/EDratio*4.0,gtE/2.0); delay(0.25/j1xh - ad180.pw/2.0 - gtE/2.0 - 0.1*gstab - 2*GRADIENT_DELAY); } else { zgradpulse(icosel*gzlvlE/EDratio*2.0,gtE); delay(0.25/j1xh - ad180.pw/2.0 - gtE - 0.1*gstab - 2*GRADIENT_DELAY); } } else { delay(0.1*gstab - rof1); if(EDratio > 4) { zgradpulse(icosel*gzlvlE/EDratio*4.0,gtE/2.0); delay(0.5/j1xh - gtE/2.0 - 0.1*gstab - 2*GRADIENT_DELAY); } else { zgradpulse(icosel*gzlvlE/EDratio*2.0,gtE); delay(0.5/j1xh - gtE - 0.1*gstab - 2*GRADIENT_DELAY); } } if (lkgate_flg[0] == 'y') lk_sample(); /* turn lock sampling on */ decpower(dpwr); delay(rof2 - POWER_DELAY); status(C); }