void pulsesequence() { char codec[MAXSTR], codecseq[MAXSTR]; int icosel, t1_counter; double d2_init = 0.0, rf0 = 4095, rf200, pw200, copwr, codmf, cores, copwrf, tpwrs, pwHs = getval("pwHs"), compH = getval("compH"), pwClvl = getval("pwClvl"), pwC = getval("pwC"), compC = getval("compC"), pwNlvl = getval("pwNlvl"), pwN = getval("pwN"), sw1 = getval("sw1"), swH = getval("swH"), swC = getval("swC"), swN = getval("swN"), swTilt, angle_H = getval("angle_H"), angle_C = getval("angle_C"), angle_N, cos_H, cos_C, cos_N, mix = getval("mix"), tauCH = getval("tauCH"), /* 1/4JCH */ tauNH = getval("tauNH"), /* 1/4JNH */ tau1, tau2, tau3, tofali =getval("tofali"), /* aliphatic protons offset */ dofcaco =getval("dofcaco"), /* offset for caco decoupling, ~120 ppm */ dof = getval("dof"), gstab = getval("gstab"), gt0 = getval("gt0"), gzlvl0 = getval("gzlvl0"), gt1 = getval("gt1"), gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt3 = getval("gt3"), gzlvl3 = getval("gzlvl3"), gt4 = getval("gt4"), gzlvl4 = getval("gzlvl4"), gt5 = getval("gt5"), gzlvl5 = getval("gzlvl5"), gt6 = getval("gt6"), gzlvl6 = getval("gzlvl6"), gt7 = getval("gt7"), gzlvl7 = getval("gzlvl7"), gt8 = getval("gt8"), gzlvl8 = getval("gzlvl8"), gt9 = getval("gt9"), gzlvl9 = getval("gzlvl9"); /* LOAD VARIABLES */ copwr = getval("copwr"); copwrf = getval("copwrf"); codmf = getval("codmf"); cores = getval("cores"); getstr("codecseq", codecseq); getstr("codec", codec); /* Load phase cycling variables */ settable(t1, 4, phi1); settable(t2, 2, phi2); settable(t3, 1, phi3); settable(t4, 8, phi4); settable(t5, 1, phi5); settable(t14, 2, phi14); settable(t11, 8, rec); angle_N=0.0; cos_N=0.0; /* activate auto-calibration flags */ setautocal(); if (autocal[0] == 'n') { /* 180 degree adiabatic C13 pulse from 0 to 200 ppm */ pw200 = getval("pw200"); rf200 = (compC*4095.0*pwC*4000.0*sqrt((30.0*sfrq/600.0+7.0)/0.35)); rf200 = (int) (rf200 + 0.5); if (1.0/(4000.0*sqrt((30.0*sfrq/600.0+7.0)/0.35)) < pwC ) { text_error( " Not enough C13 RF. pwC must be %f usec or less.\n", (1.0e6/(4000.0*sqrt((30.0*sfrq/600.0+7.0)/0.35))) ); psg_abort(1); } } else /* if autocal = 'y'(yes), 'q'(quiet), r(read), or 's'(semi) */ { strcpy(codecseq,"Pdec_154p"); if(FIRST_FID) /* call Pbox */ { ppm = getval("dfrq"); bw = 200.0*ppm; pws = 0.001; ofs = 0.0; nst = 1000; /* 1 ms long pulse, nst: number of steps */ stC200 = pbox_makeA("stC200", "sech", bw, pws, ofs, compC*pwC, pwClvl, nst); bw=20.0*ppm; ofs=154*ppm; Pdec_154p = pbox_Dsh("Pdec_154p", "WURST2", bw, ofs, compC*pwC, pwClvl); } rf200 = stC200.pwrf; pw200 = stC200.pw; } /* selective H20 one-lobe sinc pulse */ tpwrs = tpwr - 20.0*log10(pwHs/(compH*pw*1.69)); tpwrs = (int)(tpwrs+0.5); /* check validity of parameter range */ if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y')) { printf("incorrect Dec1 decoupler flags! "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y')) { printf("incorrect Dec2 decoupler flags! "); psg_abort(1); } if ((dpwr > 48) || (dpwr2 > 48)) { printf("don't fry the probe, dpwr too high! "); psg_abort(1); } /* set up angles for PR42 experiments */ /* sw1 is used as symbolic index */ if ( sw1 < 1000 ) { printf ("Please set sw1 to some value larger than 1000.\n"); psg_abort(1); } if (angle_H < 0 || angle_C < 0 || angle_H > 90 || angle_C > 90 ) { printf("angles must be set between 0 and 90 degree.\n"); psg_abort(1); } cos_H = cos (PI*angle_H/180); cos_C = cos (PI*angle_C/180); if ( (cos_H*cos_H + cos_C*cos_C) > 1.0) { printf ("Impossible angle combinations.\n"); psg_abort(1); } else { cos_N = sqrt(1 - (cos_H*cos_H + cos_C*cos_C) ); angle_N = acos(cos_N)*180/PI; } if (ix == 1) d2_init = d2; t1_counter = (int)((d2-d2_init)*sw1 + 0.5); if(t1_counter % 2) { tsadd(t3,2,4); tsadd(t11,2,4); } swTilt = swH*cos_H + swC*cos_C + swN*cos_N; if (phase1 == 1) {;} /* CC */ else if (phase1 == 2) { tsadd(t1, 1, 4); } /* SC */ else if (phase1 == 3) { tsadd(t2, 1, 4); tsadd(t14,1,4); } /* CS */ else if (phase1 == 4) { tsadd(t1, 1, 4); tsadd(t2,1,4); tsadd(t14,1,4); } /* SS */ if ( phase2 == 1 ) { tsadd(t5,2,4); icosel = 1; } else icosel = -1; tau1 = 1.0 * t1_counter * cos_H / swTilt; tau2 = 1.0 * t1_counter * cos_C / swTilt; tau3 = 1.0 * t1_counter * cos_N / swTilt; tau1 = tau1/2.0; tau2 = tau2/2.0; tau3 =tau3/2.0; if (ix ==1 ) { printf ("Current Spectral Width:\t\t%5.2f\n", swTilt); printf ("Angle_H: %5.2f \n", angle_H); printf ("Angle_C: %5.2f \n", angle_C); printf ("Angle_N: %5.2f \n", angle_N); printf ("\n\n\n\n\n"); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); delay(d1); rcvroff(); obsoffset(tofali); obspower(tpwr); obspwrf(4095.0); decoffset(dof); decpower(pwClvl); decpwrf(rf0); dec2offset(dof2); dec2power(pwNlvl); dec2pwrf(4095.0); if (gt0 > 0.2e-6) { decrgpulse(pwC,zero,10.0e-6,0.0); dec2rgpulse(pwN,zero,2.0e-6,2.0e-6); zgradpulse(gzlvl0,gt0); delay(gstab); } txphase(t1); decphase(t2); dec2phase(zero); status(B); rgpulse(pw,t1,4.0e-6,2.0e-6); zgradpulse(gzlvl3,gt3); delay(2.0*tauCH - gt3 - 2.0*GRADIENT_DELAY -4.0e-6); decrgpulse(pwC,t2,2.0e-6,2.0e-6); decphase(zero); /*======= Start of c13 evolution ==========*/ if ( ((tau2 -PRG_START_DELAY - POWER_DELAY -pwN - 2.0*pwC/PI -2.0e-6)> 0) && ((tau2 -PRG_STOP_DELAY - POWER_DELAY - pwN - 2.0*pwC/PI -2.0e-6)>0) && (codec[A] == 'y') ) { decpower(copwr); decpwrf(copwrf); decprgon(codecseq,1/codmf,cores); decon(); delay(tau2 -PRG_START_DELAY - POWER_DELAY -pwN - 2.0*pwC/PI -2.0e-6); sim3pulse(2.0*pw, 0.0, 2.0*pwN, t1, zero, zero, 0.0, 0.0); delay(tau2 -PRG_STOP_DELAY - POWER_DELAY - pwN - 2.0*pwC/PI -2.0e-6); decoff(); decprgoff(); } else if ( (tau2 -pwN - 2.0*pwC/PI -2.0e-6) > 0) { delay(tau2 -pwN - 2.0*pwC/PI -2.0e-6); sim3pulse(2.0*pw, 0.0, 2.0*pwN, t1, zero, zero, 0.0, 0.0); delay(tau2 -pwN - 2.0*pwC/PI -2.0e-6); } else { delay(2.0*tau2); decphase(t14); delay(4.0e-6); sim3pulse(2.0*pw, 2.0*pwC, 2.0*pwN, t1, t14, zero, 0.0, 0.0); delay(4.0e-6); } decpower(pwClvl); decpwrf(rf0); decphase(zero); /*======= End of c13 evolution ==========*/ decrgpulse(pwC,zero, 2.0e-6,2.0e-6); txphase(zero); delay(2.0*tauCH + tau1 - gt3 - 4.0*pwC - gstab -4.0e-6 - 2.0*GRADIENT_DELAY); zgradpulse(gzlvl3,gt3); delay(gstab); decrgpulse(pwC,zero,0.0, 0.0); decphase(one); decrgpulse(2.0*pwC, one, 0.2e-6, 0.0); decphase(zero); decrgpulse(pwC, zero, 0.2e-6, 0.0); delay(tau1); rgpulse(pw,zero,2.0e-6,0.0); /* ===========Beginning of NOE transfer ======= */ delay(mix - gt4 - gt5 - pwN -pwC - 2.0*gstab); obsoffset(tof); zgradpulse(gzlvl4,gt4); delay(gstab); decrgpulse(pwC, zero, 2.0e-6, 2.0e-6); dec2rgpulse(pwN, zero, 2.0e-6, 2.0e-6); zgradpulse(gzlvl5,gt5); delay(gstab); /* H2O relaxes back to +z */ /* =========== End of NOE transfer ======= */ rgpulse(pw, zero, 2.0e-6, 2.0e-6); zgradpulse(gzlvl6,gt6); delay(tauNH - gt6 - 4.0e-6 - 2.0*GRADIENT_DELAY); sim3pulse(2.0*pw, 0.0, 2*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); delay(tauNH - gt6 - gstab -4.0e-6 - 2.0*GRADIENT_DELAY); zgradpulse(gzlvl6,gt6); txphase(one); delay(gstab); rgpulse(pw,one,2.0e-6,2.0e-6); txphase(two); obspower(tpwrs); shaped_pulse("H2Osinc", pwHs, two, 2.0e-6, 2.0e-6); obspower(tpwr); zgradpulse(gzlvl7,gt7); dec2phase(t3); decoffset(dofcaco); /* offset on 120ppm for CaCO decoupling */ decpwrf(rf200); /* fine power for stC200 */ delay(gstab); dec2rgpulse(pwN,t3,2.0e-6,2.0e-6); dec2phase(t4); delay(tau3); rgpulse(2.0*pw, zero, 2.0e-6, 2.0e-6); decshaped_pulse("stC200", 1.0e-3, zero, 2.0e-6, 2.0e-6); delay(tau3); delay(gt1 +gstab +8.0e-6 - 1.0e-3 - 2.0*pw); dec2rgpulse(2.0*pwN, t4, 2.0e-6, 2.0e-6); dec2phase(t5); zgradpulse(gzlvl1, gt1); delay(gstab + WFG_START_DELAY + WFG_STOP_DELAY - 2.0*GRADIENT_DELAY); sim3pulse(pw, 0.0, pwN, zero, zero, t5, 2.0e-6, 2.0e-6); dec2phase(zero); zgradpulse(gzlvl8, gt8); delay(tauNH - gt8 - 2.0*GRADIENT_DELAY -4.0e-6); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); delay(tauNH - gt8 - gstab -4.0e-6 - 2.0*GRADIENT_DELAY); zgradpulse(gzlvl8, gt8); txphase(one); dec2phase(one); delay(gstab); sim3pulse(pw, 0.0, pwN, one, zero, one, 2.0e-6, 2.0e-6); txphase(zero); dec2phase(zero); zgradpulse(gzlvl9, gt9); delay(tauNH - gt9 - 2.0*GRADIENT_DELAY -4.0e-6); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); delay(tauNH - gt9 - 2.0*GRADIENT_DELAY -gstab -4.0e-6); zgradpulse(gzlvl9, gt9); delay(gstab); rgpulse(pw, zero, 2.0e-6, 2.0e-6); delay((gt1/10.0) +gstab -2.0e-6 - 0.5*pw + 2.0*GRADIENT_DELAY + POWER_DELAY); rgpulse(2.0*pw, zero, 2.0e-6, 2.0e-6); zgradpulse(icosel*gzlvl2, gt1/10.0); dec2power(dpwr2); delay(gstab); status(C); setreceiver(t11); }
void pulsesequence() { /* DECLARE VARIABLES */ char autocal[MAXSTR], /* auto-calibration flag */ fsat[MAXSTR], fscuba[MAXSTR], f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ shib[MAXSTR], /* iburp for inversion during first inept */ Hshp[MAXSTR], /* proton inversion during chirp */ ddseq[MAXSTR], shreb[MAXSTR], /* reburb hard during t2 */ co_shp[MAXSTR], /* shape of co 180 at 176 ppm */ CT_flg[MAXSTR], codecseq[MAXSTR], c180_flg[MAXSTR], n_shift[MAXSTR], shibca[MAXSTR], shibcai[MAXSTR]; int phase, phase2, t2_counter, ni2, ni, t1_counter; /* used for states tppi in t2,t1 */ double tau1, /* t1 delay */ tau2, /* t2 delay */ taua, /* ~ 1/4JCH = 1.7 ms; first inept */ mix, /* noesy mixing time */ TC, /* Variable CT period during t1 1/2JCC */ TC2, /* Variable CT period during t3 1/2JCC */ pwc, /* 90 c pulse at dhpwr */ tsatpwr, /* low level 1H trans.power for presat */ dhpwr, /* power level for high power 13C pulses on dec1 */ sw1, /* sweep width in f1 */ sw2, /* sweep width in f2 */ pwC,pwClvl,compC,pwN,pwNlvl,ppm,ofs,bw, /*used by Pbox */ d_ib, pwib, pwhshp, pwd1, /* 2H flip back pulses */ d_reb, pwreb, ph_reb, ph_reb1, /* only used if CT_flg=='y' and n_shift=='y' */ pwco180, dhpwr2, pwn, d_co180, pwcodec, /* carbon pw90 for seduce decoupling */ dpwrsed, dressed, d_ibca, /* power level for selective 13Ca pulse during CT-t2 */ pwibca, /* selective 13Ca pulse width */ gt1, gt2, gt3, gt4, gt5, gt6, gt7, gt8, gt9, gt10, gt11, gt12, gstab, gzlvl1, gzlvl2, gzlvl3, gzlvl4, gzlvl5, gzlvl6, gzlvl7, gzlvl8, gzlvl9, gzlvl10, gzlvl11, gzlvl12; /* variables commented out are already defined by the system */ /* LOAD VARIABLES */ getstr("autocal",autocal); getstr("fsat",fsat); getstr("f1180",f1180); getstr("f2180",f2180); getstr("fscuba",fscuba); getstr("ddseq",ddseq); getstr("n_shift",n_shift); getstr("Hshp",Hshp); getstr("CT_flg",CT_flg); getstr("c180_flg",c180_flg); compC = getval("compC"); pwN=getval("pwN"); pwNlvl=getval("pwNlvl"); pwC = getval("pwC"); pwClvl=getval("pwClvl"); pwhshp = getval("pwhshp"); taua = getval("taua"); mix = getval("mix"); TC = getval("TC"); pwc = getval("pwc"); tpwr = getval("tpwr"); tsatpwr = getval("tsatpwr"); dhpwr = getval("dhpwr"); dpwr = getval("dpwr"); phase = (int) ( getval("phase") + 0.5); phase2 = (int) ( getval("phase2") + 0.5); sw1 = getval("sw1"); sw2 = getval("sw2"); ni2 = getval("ni2"); ni = getval("ni"); pwd1 = getval("pwd1"); ph_reb = getval("ph_reb"); ph_reb1 = getval("ph_reb1"); TC2 = getval("TC2"); dhpwr2 = getval("dhpwr2"); pwn = getval("pwn"); setautocal(); if(autocal[0]=='n') { getstr("shreb",shreb); getstr("shib",shib); getstr("shibca",shibca); getstr("shibcai",shibcai); getstr("co_shp",co_shp); getstr("codecseq",codecseq); d_reb = getval("d_reb"); pwreb = getval("pwreb"); d_ib = getval("d_ib"); pwib = getval("pwib"); d_ibca = getval("d_ibca"); pwibca = getval("pwibca"); d_co180 = getval("d_co180"); pwco180 = getval("pwco180"); pwcodec = getval("pwcodec"); dpwrsed = getval("dpwrsed"); dressed = getval("dressed"); } else { /*strcpy(Hshp,"hard"); former declarations using TNMR.h syntax strcpy(shreb,"Preb_5p"); strcpy(shib,"Pib_1p5"); strcpy(shibca,"Pib_35p"); strcpy(shibcai,"Pib_35pi"); strcpy(co_shp,"Psed_156p"); strcpy(codecseq,"Pdec_156p");*/ strcpy(Hshp,"hard"); strcpy(shreb,"Preb_5p"); strcpy(shib,"Pib_1p5"); strcpy(shibca,"Pib_35p"); strcpy(shibcai,"Pib_35pi"); strcpy(co_shp,"Psed_156p"); strcpy(codecseq,"Pdec_156p"); if (FIRST_FID) { ppm = getval("dfrq"); /* These are former declarations (at top) using TNMR.h syntax */ /*REB180 "reburp 110p 5p"*/ /* RE-BURP 180 on Cab at 24.6 ppm, 5 ppm away */ /*IB180 "iburp2 24.4p 1.5p"*/ /* I-BURP 180 on Me at 21.1 ppm, 1.5 ppm away */ /*IBCA "iburp2 24.4p 35p"*/ /* I-BURP 180 on Cab at 54.6 ppm, 35 ppm away */ /*IBCAI "iburp2 24.4p 35p"*/ /* I-BURP 180 on Cab at 54.6 ppm, 35 ppm away */ /*CO180 "seduce 30p 156p"*/ /* SEDUCE 180 on C' at 175.6 ppm 156 ppm away */ /*CODEC "WURST2 20p/4m 156p"*/ /* WURST2 decoupling on C' at 175.6 ppm 156 ppm away */ /*REB180ps "-stepsize 0.5 -attn i"*/ /* seduce 180 shape parameters */ /*CODECps "-dres 1.0 -maxincr 20.0 -attn i"*/ /*co180 = pbox(co_shp, CO180, REB180ps, dfrq, compC*pwc, dhpwr);*/ /*ibcai = pbox(shibcai, IBCAI, REB180ps, dfrq, compC*pwc, dhpwr);*/ /*ibca = pbox(shibca, IBCA, REB180ps, dfrq, compC*pwc, dhpwr);*/ /*ib180 = pbox(shib, IB180, REB180ps, dfrq, compC*pwc, dhpwr);*/ /*reb = pbox(shreb, REB180, REB180ps, dfrq, compC*pwc, dhpwr);*/ /*COdec = pbox(codecseq, CODEC, CODECps, dfrq, compC*pwc, dhpwr);*/ bw = 110.0*ppm; ofs = 5.0*ppm; Preb_5p = pbox_Rsh("Preb_5p", "reburp", bw , ofs, compC*pwC, pwClvl); bw = 24.4*ppm; ofs = 1.5*ppm; Pib_1p5 = pbox_Rsh("Pib_1p5", "iburp2", bw , ofs, compC*pwC, pwClvl); bw = 24.4*ppm; ofs = 35*ppm; Pib_35p = pbox_Rsh("Pib_35p", "iburp2", bw , ofs, compC*pwC, pwClvl); bw = 24.4*ppm; ofs = 35*ppm; Pib_35pi = pbox_Rsh("Pib_35pi", "iburp2", bw , ofs, compC*pwC, pwClvl); bw = 30.0*ppm; ofs = 156*ppm; Psed_156p = pbox_Rsh("Psed_156p", "seduce", bw , ofs, compC*pwC, pwClvl); bw = 20.0*ppm; ofs = 156*ppm; Pdec_156p = pbox_Dsh("Pdec_156p", "WURST2", bw , ofs, compC*pwC, pwClvl); ofs_check(H1ofs, C13ofs, N15ofs, H2ofs); } d_reb = Preb_5p.pwr; pwreb = Preb_5p.pw; d_ib = Pib_1p5.pwr; pwib = Pib_1p5.pw; d_ibca = Pib_35p.pwr; pwibca = Pib_35p.pw; d_co180 = Psed_156p.pwr; pwco180 = Psed_156p.pw; dpwrsed = Pdec_156p.pwr; pwcodec = 1.0/Pdec_156p.dmf; dressed = Pdec_156p.dres; pwc=pwC; dhpwr=pwClvl; pwn=pwN; dhpwr2=pwNlvl; pwhshp=2.0*pw; pwd1=1/dmf3; pwhshp=2.0*pw; } gt1 = getval("gt1"); gt2 = getval("gt2"); gt3 = getval("gt3"); gt4 = getval("gt4"); gt5 = getval("gt5"); gt6 = getval("gt6"); gt7 = getval("gt7"); gt8 = getval("gt8"); gt9 = getval("gt9"); gt10 = getval("gt10"); gt11 = getval("gt11"); gt12 = getval("gt12"); gstab = getval("gstab"); gzlvl1 = getval("gzlvl1"); gzlvl2 = getval("gzlvl2"); gzlvl3 = getval("gzlvl3"); gzlvl4 = getval("gzlvl4"); gzlvl5 = getval("gzlvl5"); gzlvl6 = getval("gzlvl6"); gzlvl7 = getval("gzlvl7"); gzlvl8 = getval("gzlvl8"); gzlvl9 = getval("gzlvl9"); gzlvl10 = getval("gzlvl10"); gzlvl11 = getval("gzlvl11"); gzlvl12 = getval("gzlvl12"); /* LOAD PHASE TABLE */ settable(t1,4,phi1); settable(t2,8,phi2); settable(t7,2,phi7); settable(t8,2,phi8); settable(t9,8,rec); /* CHECK VALIDITY OF PARAMETER RANGES */ if(TC/2.0 - 0.5*(ni-1)*1/(sw1) - POWER_DELAY - 4.0e-6 - WFG3_START_DELAY - pwco180 - WFG3_STOP_DELAY - pwd1 - gt4 - gstab -2.0e-6 - POWER_DELAY - 4.0e-6 - WFG_START_DELAY < 0.2e-6) { printf(" ni is too big\n"); psg_abort(1); } if(CT_flg[A] == 'y' && n_shift[A] == 'n') { if(TC2/2.0 - 0.5*(ni2-1)*1/(sw2) - POWER_DELAY - 4.0e-6 - WFG3_START_DELAY - pwco180 - WFG3_STOP_DELAY - pwd1 - gt10 - gstab -2.0e-6 - POWER_DELAY - 4.0e-6 - WFG_START_DELAY < 0.2e-6) { printf(" ni2 is too big\n"); psg_abort(1); } } if(CT_flg[A] == 'y' && n_shift[A] == 'y') { if(TC2/2.0 - 0.5*(ni2-1)/sw2 - POWER_DELAY - 4.0e-6 - WFG3_START_DELAY - pwco180 - WFG3_STOP_DELAY - 2.0e-6 - POWER_DELAY - WFG_START_DELAY - 4.0e-6 - pwibca - WFG_STOP_DELAY - pwd1 - gt10 - gstab -2.0e-6 - POWER_DELAY - 4.0e-6 - WFG3_START_DELAY < 0.2e-6) { printf(" ni2 is too big\n"); psg_abort(1); } } if((dm[A] == 'y' || dm[B] == 'y' )) { printf("incorrect dec1 decoupler flags! "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y')) { printf("incorrect dec2 decoupler flags! "); psg_abort(1); } if((dm3[A] == 'y' || dm3[B] == 'y' || dm3[C] == 'y')) { printf("incorrect dec3 decoupler flags! "); psg_abort(1); } if( tsatpwr > 6 ) { printf("TSATPWR too large !!! "); psg_abort(1); } if( dpwr > 48 ) { printf("don't fry the probe, DPWR too large! "); psg_abort(1); } if( d_ib > 54 ) { printf("don't fry the probe, d_ib too large! "); psg_abort(1); } if( dpwr2 > 49 ) { printf("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( dpwr3 > 51 ) { printf("don't fry the probe, DPWR3 too large! "); psg_abort(1); } if( dhpwr > 63 ) { printf("don't fry the probe, DHPWR too large! "); psg_abort(1); } if( pw > 200.0e-6 ) { printf("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwd1 < 100.0e-6 && pwd1 != 0.0) { printf("dont fry the probe, pwd1 too short and dpwr3 too high! "); psg_abort(1); } if(d_co180 > 50) { printf("dont fry the probe, d_co180 is too high\n "); psg_abort(1); } if(((pwco180 > 250e-6) || (pwco180 < 200e-6)) && (autocal[A] == 'n')) { printf("pwco180 is misset < 250 us > 200 us\n"); psg_abort(1); } if(dpwrsed > 45) { printf("dpwrsed is misset < 46\n"); psg_abort(1); } if(gt1 > 15e-3 || gt2 > 15e-3 || gt3 > 15e-3 || gt4 > 15e-3 || gt5 > 15e-3 || gt6 > 15e-3 || gt7 > 15e-3 || gt8 > 15e-3 || gt9 > 15e-3 || gt10 > 15e-3 || gt11 > 15e-3 || gt12 > 15e-3) { printf("gradients on for too long. Must be < 15e-3 \n"); psg_abort(1); } /* Phase incrementation for hypercomplex 2D data */ if (phase2 == 2) { tsadd(t2,1,4); } if (phase == 2) tsadd(t1,1,4); /* Set up f2180 tau2 = t2 */ tau2 = d3; if(CT_flg[A] == 'y') { if(f2180[A] == 'y') { tau2 += ( 1.0 / (2.0*sw2) ); } } if(CT_flg[A] == 'n' && n_shift[A] == 'n') { if(f2180[A] == 'y') { tau2 += ( 1.0 / (2.0*sw2) - 4.0/PI*pwc - POWER_DELAY - PRG_START_DELAY - 4.0*pw - 4.0e-6 - 2.0*pwn - PRG_STOP_DELAY - POWER_DELAY - 4.0e-6); if(tau2 < 0.0 && ix == 1) printf("tau2 start2 negative; decrease sw2\n"); } if(f2180[A] == 'n') { tau2 = ( tau2 - 4.0/PI*pwc - POWER_DELAY - PRG_START_DELAY - 4.0*pw - 4.0e-6 - 2.0*pwn - PRG_STOP_DELAY - POWER_DELAY - 4.0e-6); } } if(CT_flg[A] == 'n' && n_shift[A] == 'y') { if(f2180[A] == 'y') { tau2 += ( 1.0 / (2.0*sw2) - 4.0/PI*pwn - POWER_DELAY - PRG_START_DELAY - 4.0*pw - 4.0e-6 - PRG_STOP_DELAY - POWER_DELAY - 4.0e-6); if(tau2 < 0.0 && ix == 1) printf("tau2 start2 negative; decrease sw2\n"); } if(f2180[A] == 'n') { tau2 = ( tau2 - 4.0/PI*pwn - POWER_DELAY - PRG_START_DELAY - 4.0*pw - 4.0e-6 - PRG_STOP_DELAY - POWER_DELAY - 4.0e-6); } } if(tau2 < 0.4e-6) tau2 = 0.4e-6; tau2 = tau2/2.0; /* Set up f1180 tau1 = t1 */ tau1 = d2; if(f1180[A] == 'y') { tau1 += ( 1.0 / (2.0*sw1) ); } if(tau1 < 0.4e-6) tau1 = 0.4e-6; tau1 = tau1/2.0; /* Calculate modifications to phases for States-TPPI acquisition */ if( ix == 1) d2_init = d2 ; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t1,2,4); tsadd(t9,2,4); } if( ix == 1) d3_init = d3 ; t2_counter = (int) ( (d3-d3_init)*sw2 + 0.5 ); if(t2_counter % 2) { tsadd(t2,2,4); tsadd(t9,2,4); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obspower(tsatpwr); /* Set transmitter power for 1H presaturation */ decpower(dhpwr); /* Set Dec1 power for hard 13C pulses */ dec2power(dhpwr2); /* Set Dec2 power for hard 15N pulses */ dec3power(dpwr3); /* Set Dec3 power for 2H pulses */ /* Presaturation Period */ if (fsat[0] == 'y') { delay(2.0e-5); rgpulse(d1,zero,2.0e-6,2.0e-6); /* presat */ obspower(tpwr); /* Set transmitter power for hard 1H pulses */ delay(2.0e-5); if(fscuba[0] == 'y') { delay(2.2e-2); rgpulse(pw,zero,2.0e-6,0.0); rgpulse(2*pw,one,2.0e-6,0.0); rgpulse(pw,zero,2.0e-6,0.0); delay(2.2e-2); } } else { delay(d1); } obspower(tpwr); /* Set transmitter power for hard 1H pulses */ txphase(zero); dec2phase(zero); decphase(zero); delay(1.0e-5); /* Begin Pulses */ status(B); rcvroff(); lk_hold(); delay(20.0e-6); /* first ensure that magnetization does infact start on H and not C */ decrgpulse(pwc,zero,2.0e-6,2.0e-6); delay(2.0e-6); zgradpulse(gzlvl1,gt1); delay(gstab); decpower(d_ib); /* set power for chirp during inept */ delay(4e-6); /* this is the real start */ rgpulse(pw,zero,0.0,0.0); /* 90 deg 1H pulse */ delay(2.0e-6); zgradpulse(gzlvl2,gt2); delay(2.0e-6); delay(taua - gt2 - 4.0e-6 - WFG2_START_DELAY); /* taua <= 1/4JCH */ simshaped_pulse(Hshp,shib,pwhshp,pwib,zero,zero,0.0,0.0); decphase(zero); txphase(one); decphase(t1); decpower(dhpwr); delay(2.0e-6); zgradpulse(gzlvl2,gt2); delay(2.0e-6); delay(taua - gt2 - 4.0e-6 - WFG2_STOP_DELAY - POWER_DELAY); rgpulse(pw,one,0.0,0.0); txphase(zero); delay(2.0e-6); zgradpulse(gzlvl3,gt3); delay(gstab); decrgpulse(pwc,t1,0.0,0.0); decphase(zero); delay(tau1); decpower(d_co180); sim3shaped_pulse(Hshp,co_shp,"hard",pwhshp,pwco180,2.0*pwn,zero,zero,zero,4.0e-6,0.0); delay(TC/2.0 - tau1 - POWER_DELAY - 4.0e-6 - WFG3_START_DELAY - pwco180 - WFG3_STOP_DELAY - pwd1 - gt4 - gstab -2.0e-6 - POWER_DELAY - 4.0e-6 - WFG_START_DELAY); dec3rgpulse(pwd1,zero,0.0,0.0); delay(tau1); delay(2.0e-6); zgradpulse(gzlvl4,gt4); delay(gstab); initval(1.0,v3); decstepsize(ph_reb); dcplrphase(v3); decpower(d_reb); decshaped_pulse(shreb,pwreb,zero,4.0e-6,0.0); dcplrphase(zero); decphase(zero); decpower(dhpwr); delay(2.0e-6); zgradpulse(gzlvl4,gt4); delay(gstab); delay(TC/2.0 - tau1 - WFG_STOP_DELAY - POWER_DELAY - gt4 - gstab -2.0e-6); decrgpulse(pwc,zero,0.0,0.0); dec3rgpulse(pwd1,two,4.0e-6,0.0); delay(2.0e-6); zgradpulse(gzlvl5,gt5); delay(gstab); rgpulse(pw,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl6,gt6); delay(gstab); decpower(d_ib); delay(taua - gt6 - 4.0e-6 - WFG2_START_DELAY - POWER_DELAY); simshaped_pulse(Hshp,shib,pwhshp,pwib,zero,zero,0.0,0.0); decphase(zero); delay(2.0e-6); zgradpulse(gzlvl6,gt6); delay(gstab); decpower(dhpwr); txphase(one); delay(taua - gt6 - gstab -2.0e-6 - POWER_DELAY - WFG2_STOP_DELAY); rgpulse(pw,one,0.0,0.0); txphase(zero); delay(mix - gt7 - 352.0e-6); decrgpulse(pwc,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl7,gt7); delay(gstab); decpower(d_ib); /* set power level for iburp */ rgpulse(pw,zero,0.0,0.0); /* 90 deg 1H pulse */ delay(2.0e-6); zgradpulse(gzlvl8,gt8); delay(2.0e-6); if(n_shift[A] == 'n') { delay(taua - gt8 - 4.0e-6 - WFG2_START_DELAY); /* taua <= 1/4JCH */ simshaped_pulse(Hshp,shib,pwhshp,pwib,zero,zero,0.0,0.0); decphase(zero); } else { delay(taua - gt8 - 4.0e-6 - WFG3_START_DELAY); sim3shaped_pulse(Hshp,shib,"hard",pwhshp,pwib,2.0*pwn,zero,zero,zero,0.0,0.0); } txphase(one); decphase(t2); decpower(dhpwr); delay(2.0e-6); zgradpulse(gzlvl8,gt8); delay(2.0e-6); if(n_shift[A] == 'n') delay(taua - gt8 - 4.0e-6 - WFG2_STOP_DELAY - POWER_DELAY); else delay(taua - gt8 - 4.0e-6 - WFG3_STOP_DELAY - POWER_DELAY); rgpulse(pw,one,0.0,0.0); txphase(zero); delay(2.0e-6); zgradpulse(gzlvl9,gt9); delay(gstab); if(CT_flg[A] == 'y' && n_shift[A] == 'n') { decrgpulse(pwc,t2,0.0,0.0); decphase(zero); delay(tau2); decpower(d_co180); sim3shaped_pulse(Hshp,co_shp,"hard",pwhshp,pwco180,2.0*pwn,zero,zero,zero,4.0e-6,0.0); delay(TC2/2.0 - tau2 - POWER_DELAY - 4.0e-6 - WFG3_START_DELAY - pwco180 - WFG3_STOP_DELAY - pwd1 - gt10 - gstab -2.0e-6 - POWER_DELAY - 4.0e-6 - WFG_START_DELAY); dec3rgpulse(pwd1,zero,0.0,0.0); delay(tau2); delay(2.0e-6); zgradpulse(gzlvl10,gt10); delay(gstab); initval(1.0,v4); decstepsize(ph_reb); dcplrphase(v4); decpower(d_reb); decshaped_pulse(shreb,pwreb,zero,4.0e-6,0.0); dcplrphase(zero); decphase(zero); decpower(dhpwr); delay(2.0e-6); zgradpulse(gzlvl10,gt10); delay(gstab); delay(TC2/2.0 - tau2 - WFG_STOP_DELAY - POWER_DELAY - gt10 - gstab -2.0e-6); decrgpulse(pwc,zero,0.0,0.0); dec3rgpulse(pwd1,two,4.0e-6,0.0); } if(CT_flg[A] == 'y' && n_shift[A] == 'y') { dec2phase(t2); delay(2.0e-6); dec2rgpulse((pwn-pwc)/2.0,t2,0.0,0.0); sim3pulse(0.0e-6,pwc,pwc,zero,t2,t2,0.0,0.0); dec2rgpulse((pwn-pwc)/2.0,t2,0.0,0.0); decphase(zero); delay(tau2); decphase(zero); decpower(d_co180); sim3shaped_pulse(Hshp,co_shp,"hard",pwhshp,pwco180,0.0e-6,zero,zero,zero,4.0e-6,2.0e-6); decpower(d_ibca); decshaped_pulse(shibca,pwibca,zero,4.0e-6,0.0); decphase(zero); delay(TC2/2.0 - tau2 - POWER_DELAY - 4.0e-6 - WFG3_START_DELAY - pwco180 - WFG3_STOP_DELAY - 2.0e-6 - POWER_DELAY - WFG_START_DELAY - 4.0e-6 - pwibca - WFG_STOP_DELAY - pwd1 - gt10 - gstab -2.0e-6 - POWER_DELAY - 4.0e-6 - WFG3_START_DELAY); dec3rgpulse(pwd1,zero,0.0,0.0); delay(tau2); delay(2.0e-6); zgradpulse(gzlvl10,gt10); delay(gstab); initval(1.0,v4); decstepsize(ph_reb1); dcplrphase(v4); decpower(d_reb); sim3shaped_pulse("hard",shreb,"hard",0.0e-6,pwreb,2.0*pwn,zero,zero,zero,4.0e-6,0.0); dcplrphase(zero); decphase(t7); decpower(d_ibca); decshaped_pulse(shibcai,pwibca,t7,4.0e-6,0.0); decpower(dhpwr); decphase(zero); delay(2.0e-6); zgradpulse(gzlvl10,gt10); delay(gstab); delay(TC2/2.0 - tau2 - WFG3_STOP_DELAY - POWER_DELAY - 4.0e-6 - WFG_START_DELAY - pwibca - WFG_STOP_DELAY - POWER_DELAY - gt10 - gstab -2.0e-6); dec2rgpulse((pwn-pwc)/2.0,zero,0.0,0.0); sim3pulse(0.0e-6,pwc,pwc,zero,zero,zero,0.0,0.0); dec2rgpulse((pwn-pwc)/2.0,zero,0.0,0.0); dec3rgpulse(pwd1,two,4.0e-6,0.0); } if(CT_flg[A] == 'n' && n_shift[A] == 'n') { txphase(one); decrgpulse(pwc,t2,0.0,0.0); if(c180_flg[A] == 'n') { decphase(zero); /* seduce on */ decpower(dpwrsed); decprgon(codecseq,pwcodec,dressed); decon(); /* seduce on */ delay(tau2); rgpulse(pw,one,0.0,0.0); rgpulse(2.0*pw,zero,2.0e-6,0.0); rgpulse(pw,one,2.0e-6,0.0); dec2rgpulse(2.0*pwn,zero,0.0,0.0); delay(tau2); /* seduce off */ decoff(); decprgoff(); decpower(dhpwr); /* seduce off */ } else decrgpulse(2.0*pwc,zero,4.0e-6,0.0); decrgpulse(pwc,zero,4.0e-6,0.0); } if(CT_flg[A] == 'n' && n_shift[A] == 'y') { txphase(one); dec2phase(t2); dec2rgpulse((PI-2.0)/PI*(pwn-pwc),t2,2.0e-6,0.0); sim3pulse(0.0e-6,pwc,pwc,zero,t2,t2,0.0,0.0); dec2rgpulse((2.0/PI)*(pwn-pwc),t2,0.0,0.0); if(c180_flg[A] == 'n') { decphase(zero); /* seduce on */ decpower(dpwrsed); decprgon(codecseq,pwcodec,dressed); decon(); /* seduce on */ delay(tau2); rgpulse(pw,one,0.0,0.0); rgpulse(2.0*pw,zero,2.0e-6,0.0); rgpulse(pw,one,2.0e-6,0.0); delay(tau2); /* seduce off */ decoff(); decprgoff(); /* note that ca-n evolves ; keep t2,max <= 9.5ms */ decpower(dhpwr); /* seduce off */ } else sim3pulse(0.0,2.0*pwc,2.0*pwn,zero,zero,zero,4.0e-6,0.0); dec2rgpulse((2.0/PI)*(pwn-pwc),zero,4.0e-6,0.0); sim3pulse(0.0e-6,pwc,pwc,zero,zero,zero,0.0,0.0); dec2rgpulse((PI-2.0)/PI*(pwn-pwc),zero,0.0,0.0); } delay(2.0e-6); zgradpulse(gzlvl11,gt11); delay(gstab); lk_sample(); rgpulse(pw,t8,4.0e-6,0.0); /* 90 deg 1H pulse */ delay(2.0e-6); zgradpulse(gzlvl12,gt12); delay(2.0e-6); decpower(d_ib); if(n_shift[A] == 'n') { delay(taua - gt12 - 4.0e-6 - WFG2_START_DELAY - POWER_DELAY); simshaped_pulse(Hshp,shib,pwhshp,pwib,t8,zero,0.0,0.0); decphase(zero); } else { delay(taua - gt12 - 4.0e-6 - WFG3_START_DELAY - POWER_DELAY); sim3shaped_pulse(Hshp,shib,"hard",pwhshp,pwib,2.0*pwn,t8,zero,zero,0.0,0.0); } delay(2.0e-6); zgradpulse(gzlvl12,gt12); delay(2.0e-6); if(n_shift[A] == 'n') delay(taua - gt12 - 4.0e-6 - WFG2_STOP_DELAY - 2.0*POWER_DELAY); else delay(taua - gt12 - 4.0e-6 - WFG3_STOP_DELAY - 2.0*POWER_DELAY); decpower(dpwr); /* Set power for decoupling */ dec2power(dpwr2); /* Set power for decoupling */ rgpulse(pw,t8,0.0,rof2); /* BEGIN ACQUISITION */ status(C); setreceiver(t9); }
pulsesequence() { /* DECLARE AND LOAD VARIABLES */ int t1_counter; /* used for states tppi in t1 */ double tau1, /* t1 delay */ TC = getval("TC"), /* Constant delay 1/(JCC) ~ 13.5 ms */ mix = getval("mix"), /* TOCSY mixing time */ pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rf0, /* maximum fine power when using pwC pulses */ /* 90 degree pulse at Cab (46ppm), first off-resonance null at CO (174ppm) */ pwC1, /* 90 degree pulse length on C13 at rf1 */ rf1, /* fine power for 5.1 kHz rf for 600MHz magnet */ /* 180 degree pulse at Ca (46ppm), first off-resonance null at CO(174ppm) */ pwC2, /* 180 degree pulse length at rf2 */ rf2, /* fine power for 11.4 kHz rf for 600MHz magnet */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ sw1 = getval("sw1"), gt1 = getval("gt1"), gzlvl1 = getval("gzlvl1"), gt2 = getval("gt2"), gzlvl2 = getval("gzlvl2"), gstab = getval("gstab"), ppm, co_ofs = getval("co_ofs"), /* offset for C' */ co_bw = getval("co_bw"), /* bandwidth for C' */ copwr = getval("copwr"), /* power for C' decoupling. Get from CO_dec.DEC*/ codmf = getval("codmf"), /* dmf for C' decoupling. Get from CO_dec.DEC */ codres = getval("codres"), /* dres for C' decoupling. Get from CO_dec.DEC */ mixbw, /* band width for mixing shape */ mixpwr = getval("mixpwr"), /* power for CC mixing. Get from ccmix.DEC*/ mixdmf= getval("mixdmf"), /* dmf for CC decoupling. Get from ccmix.DEC */ mixdres = getval("mixdres"); /* dres for CC decoupling. Get from ccmix.DEC */ /* LOAD PHASE TABLE */ settable(t1,2,phi1); settable(t2,1,phi2); settable(t3,1,phi3); settable(t12,2,rec); setautocal(); /* activate auto-calibration */ /* INITIALIZE VARIABLES */ /* maximum fine power for pwC pulses */ rf0 = 4095.0; /* 90 degree pulse on Cab, null at CO 128ppm away */ pwC1 = sqrt(15.0)/(4.0*128.0*sfrq); rf1 = (compC*4095.0*pwC)/pwC1; rf1 = (int) (rf1 + 0.5); /* 180 degree pulse on Cab, null at CO 128ppm away */ pwC2 = sqrt(3.0)/(2.0*128.0*sfrq); rf2 = (4095.0*compC*pwC*2.0)/pwC2; rf2 = (int) (rf2 + 0.5); if( rf2 > 4295 ) { printf("increase pwClvl"); psg_abort(1);} if(( rf2 > 4095 ) && (rf2 <4296)) rf2=4095; /* CHECK VALIDITY OF PARAMETER RANGES */ if ( 0.5*ni*1/(sw1) > TC) { printf(" ni is too big. Make ni equal to %d or less.\n", ((int)((TC)*2.0*sw1))); psg_abort(1);} /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ if (phase1 == 2) tsadd(t1,1,4); tau1 = d2; tau1 = tau1/2.0; /* Calculate modifications to phases for States-TPPI acquisition */ if( ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t1,2,4); tsadd(t12,2,4); } if (autocal[0] == 'y') { if(FIRST_FID) { ppm = getval("sfrq"); ofs_check(C13ofs); co_ofs = (C13ofs+118.0)*ppm; co_bw = 20*ppm; CO_dec = pbox_Dsh("CO_dec", "SEDUCE1", co_bw, co_ofs, pwC*compC, pwClvl); copwr = CO_dec.pwr; codmf = CO_dec.dmf; codres = CO_dec.dres; mixbw = sw1; mix_seq = pbox_Dsh("mix_seq", "FLOPSY8", mixbw, 0.0, pwC*compC, pwClvl); mixpwr = mix_seq.pwr; mixdmf = mix_seq.dmf; mixdres = mix_seq.dres; } } /* BEGIN PULSE SEQUENCE */ status(A); delay(d1); if ( dm3[B] == 'y' ) { lk_hold(); lk_sampling_off();} /*freezes z0 correction, stops lock pulsing*/ rcvroff(); obspower(pwClvl); decpower(tpwr); dec2power(dpwr2); dec3power(dpwr3); obspwrf(rf1); /*fine power for Cab 90 degree pulse */ obsoffset(tof); /*13C carrier at 46 ppm */ txphase(zero); delay(1.0e-5); status(B); rgpulse(pwC1, t1, 0.0,0.0); /* xxxxxxxxxxxxxxxxxxxxxx 13Cab Constant Time Evolution xxxxxxxxxxxxxxxxxx */ obspower(copwr); obspwrf(rf0); txphase(zero); obsunblank(); xmtron(); obsprgon("CO_dec",1.0/codmf,codres); if ( dm3[B] == 'y' ) /* turns on 2H decoupling */ { dec3rgpulse(1/dmf3,one,10.0e-6,2.0e-6); dec3unblank(); dec3phase(zero); delay(2.0e-6); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); delay(TC - tau1 - pwC2/2 - 1/dmf3); } else delay(TC - tau1 - pwC2/2); obsprgoff(); xmtroff(); obsblank(); obspower(pwClvl); obspwrf(rf2); rgpulse(pwC2, zero, 0.0, 0.0); obspower(copwr); obspwrf(rf0); txphase(zero); obsunblank(); xmtron(); obsprgon("CO_dec",1.0/codmf,codres); if ( dm3[B] == 'y' ) /* turns off 2H decoupling */ { delay(TC + tau1 - pwC2/2 - 1/dmf3); setstatus(DEC3ch, FALSE, 'c', FALSE, dmf3); dec3rgpulse(1/dmf3,three,2.0e-6,2.0e-6); dec3blank(); lk_autotrig(); /* resumes lock pulsing */ } else delay(TC + tau1 - pwC2/2); obsprgoff(); xmtroff(); obsblank(); obspower(pwClvl); obspwrf(rf1); rgpulse(pwC1,t2,0.0,0.0); status(C); zgradpulse(gzlvl1, gt1); delay(gstab); /* xxxxxxxxxxxxxxxxxxxxxxxxxxxx FLOPSY 8 Spin lock for mixing xxxxxxxxxxxxxxxxxxxx */ obspower(mixpwr); obspwrf(rf0); txphase(zero); obsunblank(); xmtron(); obsprgon("mix_seq",1.0/mixdmf,mixdres); delay(mix-gt1-gt2); obsprgoff(); xmtroff(); obsblank(); obspower(pwClvl); obspwrf(rf1); zgradpulse(gzlvl2,gt2); delay(gstab); rgpulse(pwC1,t3,0.0,rof2); getelem(t3,ct,v3); add(v3,one,v3); obspower(pwClvl); obspwrf(rf0); delay(350e-6-rof2); rgpulse(pwC*2.0,v3,0.0,0.0); delay(350e-6); status(D); setreceiver(t12); }
pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ mag_flg[MAXSTR], /*magic angle gradient*/ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ codecseq[MAXSTR]; /* sequence for 13C' decoupling */ int icosel1, /* used to get n and p type */ icosel2, t1_counter, /* used for states tppi in t1 */ ni2 = getval("ni2"); double tau1, /* t1 delay */ tau2, /* t2 delay */ del = getval("del"), /* time delays for CH coupling evolution */ del1 = getval("del1"), del2 = getval("del2"), del3 = getval("del3"), del4 = getval("del4"), TC = getval("TC"), satpwr = getval("satpwr"), waltzB1 = getval("waltzB1"), spinlock = getval("spinlock"), pwco,copwr, cores,codmf, kappa, pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rf0, /* maximum fine power when using pwC pulses */ /* p_d is used to calculate the isotropic mixing on the Cab region */ p_d, /* 50 degree pulse for DIPSI-2 at rfd */ rfd, /* fine power for 7 kHz rf for 500MHz magnet */ ncyc = getval("ncyc"), /* no. of cycles of DIPSI-3 */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ pwHd, /* H1 90 degree pulse length at tpwrd */ tpwrd, /*rf for WALTZ decoupling */ sw1 = getval("sw1"), sw2 = getval("sw2"), gt1 = getval("gt1"), /* coherence pathway gradients */ gzcal = getval("gzcal"), /* G/cm to DAC coversion factor*/ gstab = getval("gstab"), gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt3 = getval("gt3"), /* other gradients */ gt5 = getval("gt5"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"), gzlvl6 = getval("gzlvl6"); getstr("mag_flg",mag_flg); getstr("f1180",f1180); getstr("f2180",f2180); getstr("codecseq",codecseq); /* LOAD PHASE TABLE */ settable(t1,2,phi1); settable(t2,1,phi2); settable(t3,1,phi3); settable(t4,1,phi4); settable(t11,2,rec); /* INITIALIZE VARIABLES */ if( dpwrf < 4095 ) { printf("reset dpwrf=4095 and recalibrate C13 90 degree pulse"); psg_abort(1); } /* maximum fine power for pwC pulses */ rf0 = 4095.0; /* dipsi-3 decoupling on CbCa */ p_d = (5.0)/(9.0*4.0*spinlock); /* DIPSI-3*/ rfd = (compC*4095.0*pwC*5.0)/(p_d*9.0); rfd = (int) (rfd + 0.5); ncyc = (int) (ncyc + 0.5); /* power level and pulse time for WALTZ 1H decoupling */ pwHd = 1/(4.0 * waltzB1) ; tpwrd = tpwr - 20.0*log10(pwHd/(pw)); tpwrd = (int) (tpwrd + 0.5); /* activate auto-calibration flags */ setautocal(); if (autocal[0] == 'n') { codmf= getval("codmf"); pwco = 1.0/codmf; /* pw for 13C' decoupling field */ copwr = getval("copwr"); /* power level for 13C' decoupling */ cores = getval("cores"); /* power level for 13C' decoupling */ } else /* if autocal = 'y'(yes), 'q'(quiet), r(read), or 's'(semi) */ { strcpy(codecseq,"Pdec_154p"); if(FIRST_FID) /* call Pbox */ { ppm = getval("dfrq"); bw=20.0*ppm; ofs=154*ppm; Pdec_154p = pbox_Dsh("Pdec_154p", "WURST2", bw, ofs, compC*pwC, pwClvl); bw=30*ppm; ofs=0.0*ppm; nst = 1000; pws = 0.001; me180 = pbox_makeA("me180", "sech", bw, pws, ofs, compC*pwC, pwClvl, nst); } copwr = Pdec_154p.pwr; pwco = 1.0/Pdec_154p.dmf; cores = Pdec_154p.dres; pwme180 = me180.pw; me180pwr= me180.pwr; me180pwrf = me180.pwrf; } /* CHECK VALIDITY OF PARAMETER RANGES */ if( gt1 > 0.5*del - 1.0e-4) { printf(" gt1 is too big. Make gt1 less than %f.\n", (0.5*del - 1.0e-4)); psg_abort(1); } if( dm[A] == 'y' ) { printf("incorrect dec1 decoupler flag! Should be 'nny' or 'nnn' "); psg_abort(1); } if((dm2[A] == 'y' || dm2[C] == 'y')) { printf("incorrect dec2 decoupler flags! Should be 'nnn' "); psg_abort(1); } if((dm3[A] == 'y' || dm3[C] == 'y')) { printf("incorrect dec3 decoupler flags! Should be 'nnn' or 'nyn' "); psg_abort(1); } if( dpwr > 52 ) { printf("don't fry the probe, DPWR too large! "); psg_abort(1); } if( pw > 50.0e-6 ) { printf("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwN > 100.0e-6 ) { printf("dont fry the probe, pwN too high ! "); psg_abort(1); } /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ icosel1 = 1; icosel2 = 1; if (phase1 == 2) { tsadd(t2,2,4); icosel1 = -1;} if (phase2 == 2) { tsadd(t4,2,4); icosel2 = -1; tsadd(t2,2,4);} /* Set up f1180 */ 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/2.0; /* Set up f2180 */ tau2 = d3; if((f2180[A] == 'y') && (ni2 > 1.0)) { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.2e-6) tau2 = 0.0; } tau2 = tau2/2.0; /* Calculate modifications to phases for States-TPPI acquisition */ if( ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t1,2,4); tsadd(t11,2,4); } if(ni > 1) kappa = (double)(t1_counter*(del2)) / ( (double) (ni-1) ); else kappa = 0.0; /* BEGIN PULSE SEQUENCE */ status(A); decoffset(dof-140*dfrq); obspower(tpwr); decpower(pwClvl); dec2power(pwNlvl); decpwrf(rf0); obsoffset(tof); txphase(zero); delay(1.0e-5); if (satmode[A] == 'y') { obspower(satpwr); txphase(zero); rgpulse(d1,zero,20.0e-6,20.0e-6); obspower(tpwr); /* Set power for hard pulses */ } else { obspower(tpwr); /* Set power for hard pulses */ delay(d1); } decrgpulse(pwC, zero, 0.0, 0.0); /*destroy C13 magnetization*/ zgradpulse(gzlvl1, 0.5e-3); delay(gstab); decrgpulse(pwC, one, 0.0, 0.0); zgradpulse(0.7*gzlvl1, 0.5e-3); delay(1.1*gstab); if(dm3[B] == 'y') /*optional 2H decoupling on */ { dec3unblank(); dec3rgpulse(1/dmf3, one, 0.0, 0.0); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } rgpulse(pw, zero, 0.0, 0.0); /* 1H pulse excitation */ zgradpulse(gzlvl3, gt3); decphase(zero); delay(0.5*del - gt3); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl3, gt3); txphase(one); decphase(t1); delay(0.5*del - gt3); rgpulse(pw,one,0.0,0.0); zgradpulse(1.8*gzlvl3, gt3); txphase(zero); delay(150e-6); decrgpulse(pwC, t1, 0.0, 0.0); /* decoupling on for carbonyl carbon */ decpwrf(4095.0); decpower(copwr); decprgon(codecseq,pwco,cores); decon(); /* decoupling on for carbonyl carbon */ delay(tau1); dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); zgradpulse(icosel1*gzlvl4, gt1); delay(0.5*del2 - 2.0*pwN - gt1 - 2.0*pw); rgpulse(2.0*pw,zero,0.0,0.0); delay(tau1 - (kappa*tau1)); /* co-decoupling off */ decoff(); decprgoff(); /* co-decoupling off */ decpower(pwClvl); decrgpulse(2.0*pwC, zero, 0.0, 0.0); /* decoupling on for carbonyl carbon */ decpwrf(4095.0); decpower(copwr); decprgon(codecseq,pwco,cores); decon(); /* decoupling on for carbonyl carbon */ delay(0.5*del2 - kappa*tau1); /* co-decoupling off */ decoff(); decprgoff(); /* co-decoupling off */ decpower(pwClvl); decphase(t2); decrgpulse(pwC, t2, 0.0, 0.0); decpwrf(rfd); delay(2.0e-6); initval(ncyc, v2); starthardloop(v2); decrgpulse(4.9*p_d,one,0.0,0.0); decrgpulse(7.9*p_d,three,0.0,0.0); decrgpulse(5.0*p_d,one,0.0,0.0); decrgpulse(5.5*p_d,three,0.0,0.0); decrgpulse(0.6*p_d,one,0.0,0.0); decrgpulse(4.6*p_d,three,0.0,0.0); decrgpulse(7.2*p_d,one,0.0,0.0); decrgpulse(4.9*p_d,three,0.0,0.0); decrgpulse(7.4*p_d,one,0.0,0.0); decrgpulse(6.8*p_d,three,0.0,0.0); decrgpulse(7.0*p_d,one,0.0,0.0); decrgpulse(5.2*p_d,three,0.0,0.0); decrgpulse(5.4*p_d,one,0.0,0.0); decrgpulse(0.6*p_d,three,0.0,0.0); decrgpulse(4.5*p_d,one,0.0,0.0); decrgpulse(7.3*p_d,three,0.0,0.0); decrgpulse(5.1*p_d,one,0.0,0.0); decrgpulse(7.9*p_d,three,0.0,0.0); decrgpulse(4.9*p_d,three,0.0,0.0); decrgpulse(7.9*p_d,one,0.0,0.0); decrgpulse(5.0*p_d,three,0.0,0.0); decrgpulse(5.5*p_d,one,0.0,0.0); decrgpulse(0.6*p_d,three,0.0,0.0); decrgpulse(4.6*p_d,one,0.0,0.0); decrgpulse(7.2*p_d,three,0.0,0.0); decrgpulse(4.9*p_d,one,0.0,0.0); decrgpulse(7.4*p_d,three,0.0,0.0); decrgpulse(6.8*p_d,one,0.0,0.0); decrgpulse(7.0*p_d,three,0.0,0.0); decrgpulse(5.2*p_d,one,0.0,0.0); decrgpulse(5.4*p_d,three,0.0,0.0); decrgpulse(0.6*p_d,one,0.0,0.0); decrgpulse(4.5*p_d,three,0.0,0.0); decrgpulse(7.3*p_d,one,0.0,0.0); decrgpulse(5.1*p_d,three,0.0,0.0); decrgpulse(7.9*p_d,one,0.0,0.0); decrgpulse(4.9*p_d,three,0.0,0.0); decrgpulse(7.9*p_d,one,0.0,0.0); decrgpulse(5.0*p_d,three,0.0,0.0); decrgpulse(5.5*p_d,one,0.0,0.0); decrgpulse(0.6*p_d,three,0.0,0.0); decrgpulse(4.6*p_d,one,0.0,0.0); decrgpulse(7.2*p_d,three,0.0,0.0); decrgpulse(4.9*p_d,one,0.0,0.0); decrgpulse(7.4*p_d,three,0.0,0.0); decrgpulse(6.8*p_d,one,0.0,0.0); decrgpulse(7.0*p_d,three,0.0,0.0); decrgpulse(5.2*p_d,one,0.0,0.0); decrgpulse(5.4*p_d,three,0.0,0.0); decrgpulse(0.6*p_d,one,0.0,0.0); decrgpulse(4.5*p_d,three,0.0,0.0); decrgpulse(7.3*p_d,one,0.0,0.0); decrgpulse(5.1*p_d,three,0.0,0.0); decrgpulse(7.9*p_d,one,0.0,0.0); decrgpulse(4.9*p_d,one,0.0,0.0); decrgpulse(7.9*p_d,three,0.0,0.0); decrgpulse(5.0*p_d,one,0.0,0.0); decrgpulse(5.5*p_d,three,0.0,0.0); decrgpulse(0.6*p_d,one,0.0,0.0); decrgpulse(4.6*p_d,three,0.0,0.0); decrgpulse(7.2*p_d,one,0.0,0.0); decrgpulse(4.9*p_d,three,0.0,0.0); decrgpulse(7.4*p_d,one,0.0,0.0); decrgpulse(6.8*p_d,three,0.0,0.0); decrgpulse(7.0*p_d,one,0.0,0.0); decrgpulse(5.2*p_d,three,0.0,0.0); decrgpulse(5.4*p_d,one,0.0,0.0); decrgpulse(0.6*p_d,three,0.0,0.0); decrgpulse(4.5*p_d,one,0.0,0.0); decrgpulse(7.3*p_d,three,0.0,0.0); decrgpulse(5.1*p_d,one,0.0,0.0); decrgpulse(7.9*p_d,three,0.0,0.0); endhardloop(); txphase(one); decpwrf(rf0); decphase(t3); obspower(tpwrd); decrgpulse(pwC,t3,0.0,0.0); decoffset(dof - 155*dfrq); rgpulse(pwHd,one,0.0,2.0e-6); txphase(zero); obsunblank(); obsprgon("waltz16", pwHd, 90.0); /* PRG_START_DELAY */ xmtron(); delay(TC - OFFSET_DELAY - POWER_DELAY - PRG_START_DELAY - tau2); decrgpulse(2.0*pwC, zero, 0.0, 0.0); delay(TC + tau2 - POWER_DELAY - PRG_STOP_DELAY - 2*gt1 - gstab - 2.0*pw); xmtroff(); obsprgoff(); obsblank(); rgpulse(pwHd,three,2.0e-6,0.0); obspower(tpwr); if (mag_flg[A] =='y') magradpulse(gzcal*icosel2*gzlvl2, gt1); else zgradpulse(icosel2*gzlvl2, gt1); delay(gstab/2.0); rgpulse(2.0*pw,zero,0.0,0.0); if (mag_flg[A] =='y') magradpulse(gzcal*icosel2*gzlvl2, gt1); else zgradpulse(icosel2*gzlvl2, gt1); delay(gstab/2.0); decphase(zero); simpulse(0.0,pwC, two, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); delay(0.5*del1 - gt5); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); txphase(one); decphase(t4); delay(0.5*del1 - gt5); simpulse(pw, pwC, one, t4, 0.0, 0.0); zgradpulse(gzlvl6, gt5); txphase(zero); decphase(zero); delay(0.5*del4 - gt5); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl6, gt5); delay(0.5*del4 - gt5); simpulse(pw,pwC,zero,zero,0.0,0.0); zgradpulse(2.3*gzlvl6, gt1); if (autocal[A] == 'y') { decpower(me180pwr); decpwrf(me180pwrf); delay(0.5*del3 - gt1 - 0.0005 -2.0*POWER_DELAY- WFG2_START_DELAY); simshaped_pulse("","me180",2.0*pw,0.001, zero, zero, 0.0, 0.0); decpwrf(rf0); decphase(zero); } else { delay(0.5*del3 - 0.5*pwC - gt1); simpulse(2.0*pw,2.0*pwC, zero, zero, 0.0, 0.0); } decpower(dpwr); if (mag_flg[A] == 'y') magradpulse(gzcal*((2.3*gzlvl6)+gzlvl1), gt1); else zgradpulse(((2.3*gzlvl6)+gzlvl1), gt1); if (autocal[A] == 'y') { if(dm3[B] == 'y') delay(0.5*del3 - 0.0005 -gt1 -1/dmf3 - 2.0*GRADIENT_DELAY - 2.0*POWER_DELAY); else delay(0.5*del3 - 0.0005 -gt1 - 2.0*GRADIENT_DELAY - 2.0*POWER_DELAY); } else { if(dm3[B] == 'y') delay(0.5*del3 - gt1 -1/dmf3 - 2.0*GRADIENT_DELAY - POWER_DELAY); else delay(0.5*del3 - gt1 - 2.0*GRADIENT_DELAY - POWER_DELAY); } if(dm3[B] == 'y') /*optional 2H decoupling off */ { dec3rgpulse(1/dmf3, three, 0.0, 0.0); setstatus(DEC3ch, FALSE, 'w', FALSE, dmf3); dec3blank(); } if (dm3[B]=='y') lk_sample(); status(C); setreceiver(t11); }