pulsesequence() { double cycles, bigtau = getval("bigtau"), tau = getval("tau"), satdly = getval("satdly"); char satmode[MAXSTR], sspul[MAXSTR]; getstr("satmode",satmode); getstr("sspul",sspul); settable(t1,4,phs1); settable(t2,8,phs2); settable(t3,4,phs3); getelem(t1,ct,v1); getelem(t2,ct,v2); getelem(t3,ct,v4); assign(v1,oph); /* calculate 'big tau' values */ cycles = bigtau/(2.0*tau); cycles = (double)((int)((cycles/2.0) + 0.5)) * 2.0; initval(cycles,v3); /* equilibration period */ status(A); delay(5.0e-5); if (sspul[0] == 'y') steadystate(); if (satmode[0] == 'y') { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); satpulse(satdly,v2,rof1,rof1); } else delay(d1); /* calculate exact delay and phases */ mod2(oph,v5); incr(v5); /* spin-echo loop */ status(B); rgpulse(pw,v1,rof1,0.0); starthardloop(v3); delay(tau - p1/2.0 - rof2); rgpulse(p1,v5,rof2,rof2); delay(tau - p1/2.0 - rof2); endhardloop(); /* observation period */ status(C); }
pulsesequence() { double cmult = getval("cmult"); settable(t1,8,ph1); settable(t2,8,ph2); settable(t3,8,ph3); getelem(t1,ct,v1); getelem(t2,ct,v2); getelem(t3,ct,oph); /* mod2(id2,v10); dbl(v10,v10); */ initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v10); add(v1,v10,v1); add(oph,v10,oph); assign(v1,v4); status(A); delay(5.0e-5); if (getflag("sspul")) steadystate(); if (satmode[0] == 'y') { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); satpulse(satdly,v4,rof1,rof1); } else delay(d1); if (getflag("wet")) wet4(zero,one); status(B); rgpulse(pw, v1, rof1, rof1); delay(d2); rgpulse(cmult*pw, v2, rof1, rof2); status(C); }
void pulsesequence() { char compshape[MAXSTR], sspul[MAXSTR], wet[MAXSTR], composit[MAXSTR]; getstr("compshape",compshape); getstr("composit",composit); getstr("sspul",sspul); getstr("wet",wet); settable(t1,4,phs1); settable(t2,8,phs2); getelem(t1,ct,oph); getelem(t2,ct,v2); assign(oph,v1); /* equilibrium period */ status(A); delay(5.0e-5); if (sspul[0] == 'y') steadystate(); delay(d1); if (wet[0] == 'y') wet4(zero,one); status(B); pulse(p1,zero); hsdelay(d2); if (composit[0] == 'y') { if (rfwg[OBSch-1] == 'y') shaped_pulse(compshape,4.0*pw+0.8e-6,v1,rof1,rof2); else comp90pulse(pw,v1,rof1,rof2); } else rgpulse(pw,v1,rof1,rof2); status(C); }
pulsesequence() { double slpwrR = getval("slpwrR"), slpwR = getval("slpwR"), mixR = getval("mixR"), selpwrA = getval("selpwrA"), selpwA = getval("selpwA"), gzlvlA = getval("gzlvlA"), gtA = getval("gtA"), selpwrB = getval("selpwrB"), selpwB = getval("selpwB"), gzlvlB = getval("gzlvlB"), gtB = getval("gtB"), gstab = getval("gstab"), selfrq = getval("selfrq"), gzlvl1 = getval("gzlvl1"), gt1 = getval("gt1"), gzlvl2 = getval("gzlvl2"), gt2 = getval("gt2"), zqfpw1 = getval("zqfpw1"), zqfpwr1 = getval("zqfpwr1"), gzlvlzq1 = getval("gzlvlzq1"), phincr1 = getval("phincr1"); char selshapeA[MAXSTR],selshapeB[MAXSTR], slpatR[MAXSTR], zqfpat1[MAXSTR], alt_grd[MAXSTR]; //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtA = syncGradTime("gtA","gzlvlA",1.0); gzlvlA = syncGradLvl("gtA","gzlvlA",1.0); gtB = syncGradTime("gtB","gzlvlB",1.0); gzlvlB = syncGradLvl("gtB","gzlvlB",1.0); getstr("slpatR",slpatR); getstr("selshapeA",selshapeA); getstr("selshapeB",selshapeB); getstr("zqfpat1",zqfpat1); getstr("alt_grd",alt_grd); if (strcmp(slpatR,"cw") && strcmp(slpatR,"troesy") && strcmp(slpatR,"dante")) abort_message("SpinLock pattern %s not supported!.\n", slpatR); /* STEADY-STATE PHASECYCLING */ /* This section determines if the phase calculations trigger off of (SS - SSCTR) or off of CT */ assign(ct,v17); ifzero(ssctr); assign(v17,v13); elsenz(ssctr); /* purge option does not adjust v13 during steady state */ sub(ssval, ssctr, v13); endif(ssctr); /* Beginning phase cycling */ dbl(v13,v1); /* v1 = 0 2 */ hlv(v13,v13); dbl(v13,v20); /* v20 = 00 22 */ hlv(v13,v13); dbl(v13,v6); /* v6 = 0000 2222 */ hlv(v13,v13); dbl(v13,v7); /* v7 = 00000000 22222222 */ assign(v1,oph); if (getflag("Gzqfilt")) add(v7,oph,oph); /* CYCLOPS */ assign(v13,v14); /* v14 = 8x0 8x1 8x2 8x3 */ if (getflag("Gzqfilt")) hlv(v13,v14); /* v14 = 16x0 16x1 16x2 16x3 */ add(v1,v14,v1); add(v20,v14,v20); add(v6,v14,v6); add(v7,v14,v7); add(oph,v14,oph); /* add(oph,v18,oph); add(oph,v19,oph); */ assign(zero,v9); mod2(ct,v2); /* 01 01 */ hlv(ct,v11); hlv(v11,v11); mod2(v11,v11); dbl(v11,v11); /* 0000 2222 */ add(v11,v2,v11); mod4(v11,v11); /* 0101 2323 first echo in Excitation Sculpting */ hlv(ct,v4); mod2(v4,v4); /* 0011 */ hlv(ct,v12); hlv(v12,v12); hlv(v12,v12); dbl(v12,v12); add(v12,v4,v12); mod4(v12,v12); /* 0011 0011 2233 2233 second echo in Excitation Sculpting */ dbl(v2,v2); /* 0202 */ dbl(v4,v4); /* 0022 */ add(v2,v4,v4); /* 0220 correct oph for Excitation Sculpting */ add(oph,v4,oph); mod4(oph,oph); if (!strcmp(slpatR,"troesy")) assign(v20,v21); else add(v20,one,v21); if (alt_grd[0] == 'y') mod2(ct,v8); /* alternate gradient sign on even scans */ /* The following is for flipback pulse */ if (phincr1 < 0.0) phincr1=360+phincr1; initval(phincr1,v5); /* BEGIN THE ACTUAL PULSE SEQUENCE */ status(A); if (getflag("lkgate_flg")) lk_sample(); /* turn lock sampling on */ obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); delay(d1); if (getflag("lkgate_flg")) lk_hold(); /* turn lock sampling off */ status(B); rgpulse(pw, v1, rof1, rof1); if (selfrq != tof) obsoffset(selfrq); ifzero(v8); zgradpulse(gzlvlA,gtA); elsenz(v8); zgradpulse(-gzlvlA,gtA); endif(v8); delay(gstab); obspower(selpwrA); shaped_pulse(selshapeA,selpwA,v14,rof1,rof1); obspower(tpwr); ifzero(v8); zgradpulse(gzlvlA,gtA); elsenz(v8); zgradpulse(-gzlvlA,gtA); endif(v8); delay(gstab); if (selfrq != tof) delay(2*OFFSET_DELAY); ifzero(v8); zgradpulse(gzlvlB,gtB); elsenz(v8); zgradpulse(-gzlvlB,gtB); endif(v8); delay(gstab); obspower(selpwrB); shaped_pulse(selshapeB,selpwB,v6,rof1,rof1); obspower(slpwrR); ifzero(v8); zgradpulse(gzlvlB,gtB); elsenz(v8); zgradpulse(-gzlvlB,gtB); endif(v8); delay(gstab); if (selfrq != tof) obsoffset(tof); if (mixR > 0.0) { if (dps_flag) rgpulse(mixR,v21,0.0,0.0); else SpinLock(slpatR,mixR,slpwR,v21); } if (getflag("Gzqfilt")) { obspower(tpwr); rgpulse(pw,v7,rof1,rof1); ifzero(v8); zgradpulse(gzlvl1,gt1); elsenz(v8); zgradpulse(-gzlvl1,gt1); endif(v8); delay(gstab); obspower(zqfpwr1); ifzero(v8); rgradient('z',gzlvlzq1); elsenz(v8); rgradient('z',-gzlvlzq1); endif(v8); delay(100.0e-6); shaped_pulse(zqfpat1,zqfpw1,zero,rof1,rof1); delay(100.0e-6); rgradient('z',0.0); delay(gstab); ifzero(v8); zgradpulse(-gzlvl2,gt2); elsenz(v8); zgradpulse(gzlvl2,gt2); endif(v8); obspower(tpwr); delay(gstab); if (getflag("flipback")) FlipBack(v14,v5); rgpulse(pw,v14,rof1,2.0e-6); } ExcitationSculpting(v11,v12,v8); delay(rof2); status(C); }
pulsesequence() { double gzlvl1 = getval("gzlvl1"), gt1 = getval("gt1"), zqfpw1 = getval("zqfpw1"), zqfpwr1 = getval("zqfpwr1"), gzlvlzq1 = getval("gzlvlzq1"), gstab = getval("gstab"), h1freq_local = getval("h1freq_local"), flip1 = getval("flip1"), flip2 = getval("flip2"), swfactor = 9.0, /* do the adiabatic sweep over 9.0*sw */ gzlvlzq,invsw; int iphase = (int) (getval("phase") + 0.5), prgcycle = (int)(getval("prgcycle")+0.5); char satmode[MAXSTR], zqfpat1[MAXSTR], wet[MAXSTR], antiz_flg[MAXSTR], alt_grd[MAXSTR]; getstr("satmode",satmode); getstr("wet",wet); getstr("zqfpat1",zqfpat1); getstr("antiz_flg", antiz_flg); getstr("alt_grd",alt_grd); invsw = sw*swfactor; if (invsw > 60000.0) invsw = 60000.0; /* do not exceed 60 kHz */ invsw = invsw/0.97; /* correct for end effects of the cawurst-20 shape */ assign(ct,v17); assign(zero,v18); assign(zero,v19); if (getflag("prgflg") && (satmode[0] == 'y') && (prgcycle > 1.5)) { hlv(ct,v17); mod2(ct,v18); dbl(v18,v18); if (prgcycle > 2.5) { hlv(v17,v17); hlv(ct,v19); mod2(v19,v19); dbl(v19,v19); } } // sub(ct,ssctr,v12); settable(t1,8,ph1); getelem(t1,v17,v1); settable(t2,8,ph2); getelem(t2,v17,v2); settable(t3,8,ph3); getelem(t3,v17,v3); settable(t4,8,ph4); getelem(t4,v17,oph); add(oph,v18,oph); add(oph,v19,oph); if (alt_grd[0] == 'y') mod2(ct,v8); /* alternate gradient sign */ if (getflag("Gzqfilt")) add(oph,two,oph); if (iphase == 2) incr(v1); /* HYPERCOMPLEX MODE USES REDFIELD TRICK TO MOVE AXIAL PEAKS TO EDGE */ initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v6); if ((iphase==1)||(iphase==2)) {add(v1,v6,v1); add(oph,v6,oph);} /* BEGIN THE ACTUAL PULSE SEQUENCE */ status(A); delay(5.0e-5); if (getflag("sspul")) steadystate(); if (satmode[0] == 'y') { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); if (getflag("slpsat")) { shaped_satpulse("relaxD",satdly,v6); if (getflag("prgflg")) shaped_purge(v1,v6,v18,v19); } else { satpulse(satdly,v6,rof1,rof1); if (getflag("prgflg")) purge(v1,v6,v18,v19); } } else delay(d1); if (wet[0] == 'y') wet4(zero,one); obsstepsize(45.0); initval(7.0,v7); xmtrphase(v7); status(B); if (antiz_flg[0] == 'n') rgpulse(flip1*pw/90.0,v1,rof1,1.0e-6); else rgpulse(flip1*pw/90.0+2.0*pw,v1,rof1,1.0e-6); xmtrphase(zero); if (d2 > 0.0) { if (antiz_flg[0] == 'n') delay(d2-1.0e-6-rof1-SAPS_DELAY-(2.0*pw/3.14159)*(flip1+flip2)/90.0); else delay(d2-1.0e-6-rof1-SAPS_DELAY-(2.0*pw/3.14159)*(flip1+flip2)/90.0+4.0*pw); } else delay(0.0); if (antiz_flg[0] == 'n') rgpulse(flip2*pw/90.0,v2,rof1,1.0e-6); else rgpulse(flip2*pw/90.0+2.0*pw,v2,rof1,1.0e-6); status(C); if (getflag("Gzqfilt")) { obspower(zqfpwr1); rgradient('z',gzlvlzq1); delay(100.0e-6); shaped_pulse(zqfpat1,zqfpw1,zero,rof1,rof1); delay(100.0e-6); rgradient('z',0.0); delay(gstab); obspower(tpwr); } ifzero(v8); zgradpulse(gzlvl1,gt1); elsenz(v8); zgradpulse(-1.0*gzlvl1,gt1); endif(v8); delay(gstab); status(D); rgpulse(flip2*pw/90.0,v3,rof1,rof2); }
void pulsesequence() { double tpwr180r = getval("tpwr180r"), pw180r = getval("pw180r"), pwx180 = getval("dnbippw"), pwxlvl180 = getval("dnbippwr"), pp = getval("pp"), pplvl = getval("pplvl"), tauC = getval("tauC"), tau; int prgcycle=(int)(getval("prgcycle")+0.5); char pw180ref[MAXSTR], dnbipshp[MAXSTR], bipflg[MAXSTR]; getstr("pw180ref", pw180ref); getstr("dnbipshp", dnbipshp); getstr("bipflg",bipflg); tau = 1.0 / (2.0 * (getval("j1xh"))); assign(ct,v17); assign(zero,v18); assign(zero,v19); if (getflag("prgflg") && getflag("satmode") && (prgcycle > 1.5)) { hlv(ct,v17); mod2(ct,v18); dbl(v18,v18); if (prgcycle > 2.5) { hlv(v17,v17); hlv(ct,v19); mod2(v19,v19); dbl(v19,v19); } } settable(t1,4,phs1); settable(t2,8,phs2); settable(t3,4,phs3); getelem(t1,v17,v1); getelem(t2,v17,v2); getelem(t3,v17,v3); assign(v1,oph); add(oph,v18,oph); add(oph,v19,oph); if (getflag("prgflg") && getflag("satmode")) assign(v3,v2); /* equilibrium period */ status(A); delay(5.0e-5); if (getflag("sspul")) steadystate(); if (getflag("satmode")) { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); if (getflag("slpsat")) { shaped_satpulse("relaxD",satdly,v2); if (getflag("prgflg")) shaped_purge(v1,v2,v18,v19); } else { satpulse(satdly,v2,rof1,rof1); if (getflag("prgflg")) purge(v1,v2,v18,v19); } } else delay(d1); if (getflag("wet")) wet4(zero,one); status(B); obspower(tpwr); if (bipflg[1] == 'y') decpower(pwxlvl180); else decpower(pplvl); rgpulse(pw,v1,rof1,rof1); if (bipflg[1] == 'y') { decshaped_pulse(dnbipshp,pwx180,zero,2.0e-6,2.0e-6); delay(tau+tauC); } else { decrgpulse(2*pp,zero,2.0e-6,2.0e-6); delay(tau); } obspower(tpwr180r); shaped_pulse(pw180ref,pw180r,v1,rof1,rof1); if (bipflg[1] == 'y') { decshaped_pulse(dnbipshp,pwx180,zero,2.0e-6,2.0e-6); delay(tau+tauC); } else { decrgpulse(2*pp,zero,2.0e-6,2.0e-6); delay(tau); } shaped_pulse(pw180ref,pw180r,v1,rof1,rof2); decpower(dpwr); obspower(tpwr); status(C); }
pulsesequence() { double slpwrT = getval("slpwrT"), slpwT = getval("slpwT"), mixT = getval("mixT"), gzlvl1 = getval("gzlvl1"), gt1 = getval("gt1"), gzlvl2 = getval("gzlvl2"), gt2 = getval("gt2"), gstab = getval("gstab"), selpwrA = getval("selpwrA"), selpwA = getval("selpwA"), gzlvlA = getval("gzlvlA"), gtA = getval("gtA"), selpwrB = getval("selpwrB"), selpwB = getval("selpwB"), gzlvlB = getval("gzlvlB"), gtB = getval("gtB"), selfrq = getval("selfrq"), zqfpw1 = getval("zqfpw1"), zqfpwr1 = getval("zqfpwr1"), zqfpw2 = getval("zqfpw2"), zqfpwr2 = getval("zqfpwr2"), gzlvlzq1 = getval("gzlvlzq1"), gzlvlzq2 = getval("gzlvlzq2"); char slpatT[MAXSTR], selshapeA[MAXSTR], selshapeB[MAXSTR], zqfpat1[MAXSTR], zqfpat2[MAXSTR]; //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtA = syncGradTime("gtA","gzlvlA",1.0); gzlvlA = syncGradLvl("gtA","gzlvlA",1.0); gtB = syncGradTime("gtB","gzlvlB",1.0); gzlvlB = syncGradLvl("gtB","gzlvlB",1.0); getstr("slpatT",slpatT); getstr("selshapeA",selshapeA); getstr("selshapeB",selshapeB); getstr("zqfpat1",zqfpat1); getstr("zqfpat2",zqfpat2); if (strcmp(slpatT,"mlev17c") && strcmp(slpatT,"dipsi2") && strcmp(slpatT,"dipsi3") && strcmp(slpatT,"mlev17") && strcmp(slpatT,"mlev16")) abort_message("SpinLock pattern %s not supported!.\n", slpatT); /* STEADY-STATE PHASECYCLING */ /* This section determines if the phase calculations trigger off of (SS - SSCTR) or off of CT */ ifzero(ssctr); assign(ct,v13); elsenz(ssctr); sub(ssval, ssctr, v13); /* v13 = 0,...,ss-1 */ endif(ssctr); mod4(v13,v1); /* v1 = 0 1 2 3 */ hlv(v13,v13); hlv(v13,v13); mod4(v13,v11); /* v11 = 0000 1111 2222 3333 */ dbl(v1,oph); add(v11,oph,oph); add(v11,oph,oph); /* oph = 2v1 + 2v11 */ /* CYCLOPS */ hlv(v13,v13); hlv(v13,v14); add(v1,v14,v1); add(v11,v14,v11); add(oph,v14,oph); assign(v14,v3); add(one,v3,v3); add(two,v3,v12); sub(v3,one,v2); add(v3,one,v4); add(v3,two,v5); /* BEGIN THE ACTUAL PULSE SEQUENCE */ status(A); obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); if (satmode[0] == 'y') { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); satpulse(satdly,v6,rof1,rof1); } else delay(d1); if (getflag("wet")) wet4(zero,one); status(B); rgpulse(pw, v14, rof1, rof1); if (selfrq != tof) obsoffset(selfrq); zgradpulse(gzlvlA,gtA); delay(gstab); obspower(selpwrA); shaped_pulse(selshapeA,selpwA,v1,rof1,rof1); obspower(tpwr); zgradpulse(gzlvlA,gtA); delay(gstab); if (selfrq != tof) delay(2*OFFSET_DELAY); zgradpulse(gzlvlB,gtB); delay(gstab); obspower(selpwrB); shaped_pulse(selshapeB,selpwB,v11,rof1,rof1); obspower(tpwr); zgradpulse(gzlvlB,gtB); delay(gstab); if (selfrq != tof) obsoffset(tof); rgpulse(pw, v14, rof1, rof1); if (getflag("Gzqfilt")) { obspower(zqfpwr1); rgradient('z',gzlvlzq1); delay(100.0e-6); shaped_pulse(zqfpat1,zqfpw1,v14,rof1,rof1); delay(100.0e-6); rgradient('z',0.0); delay(gstab); } obspower(slpwrT); zgradpulse(gzlvl1,gt1); delay(gstab); if (mixT > 0.0) { if (dps_flag) rgpulse(mixT,v3,0.0,0.0); else SpinLock(slpatT,mixT,slpwT,v2,v3,v4,v5, v9); } if (getflag("Gzqfilt")) { obspower(zqfpwr2); rgradient('z',gzlvlzq2); delay(100.0e-6); shaped_pulse(zqfpat2,zqfpw2,v14,rof1,rof1); delay(100.0e-6); rgradient('z',0.0); delay(gstab); } obspower(tpwr); zgradpulse(gzlvl2,gt2); delay(gstab); rgpulse(pw,v14,rof1,rof2); status(C); }
pulsesequence() { double gtE = getval("gtE"), gzlvlE=getval("gzlvlE"), selpwrPS = getval("selpwrPS"), selpwPS = getval("selpwPS"), gzlvlPS = getval("gzlvlPS"), droppts=getval("droppts"), gstab = getval("gstab"); int prgcycle=(int)(getval("prgcycle")+0.5); char selshapePS[MAXSTR]; //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtE = syncGradTime("gtE","gzlvlE",1.0); gzlvlE = syncGradLvl("gtE","gzlvlE",1.0); getstr("selshapePS",selshapePS); assign(ct,v17); assign(zero,v18); assign(zero,v19); if (getflag("prgflg") && (satmode[0] == 'y') && (prgcycle > 1.5)) { hlv(ct,v17); mod2(ct,v18); dbl(v18,v18); if (prgcycle > 2.5) { hlv(v17,v17); hlv(ct,v19); mod2(v19,v19); dbl(v19,v19); } } settable(t1,4,ph1); settable(t2,32,ph2); settable(t3,8,ph3); settable(t4,16,ph4); getelem(t1,v17,v1); getelem(t2,v17,v2); getelem(t3,v17,v3); getelem(t4,v17,v4); assign(v4,oph); assign(v1,v6); add(oph,v18,oph); add(oph,v19,oph); /* BEGIN THE ACTUAL PULSE SEQUENCE */ status(A); obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); if (satmode[0] == 'y') { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); if (getflag("slpsat")) { shaped_satpulse("relaxD",satdly,v6); if (getflag("prgflg")) shaped_purge(v1,v6,v18,v19); } else { satpulse(satdly,v6,rof1,rof1); if (getflag("prgflg")) purge(v1,v6,v18,v19); } } else delay(d1); if (getflag("wet")) wet4(zero,one); status(B); obspower(tpwr); rgpulse(pw, v1, rof1, rof2); delay(d2/2.0); delay((0.25/sw1) - gtE - gstab - 2*pw/PI - rof2 - 2*GRADIENT_DELAY); zgradpulse(gzlvlE,gtE); delay(gstab); rgpulse(2*pw,v2,rof1,rof1); delay(0.25/sw1); delay(gstab); zgradpulse(-1.0*gzlvlE,gtE); delay(gstab); obspower(selpwrPS); rgradient('z',gzlvlPS); shaped_pulse(selshapePS,selpwPS,v3,rof1,rof1); rgradient('z',0.0); obspower(tpwr); delay(gstab); zgradpulse(-2.0*gzlvlE,gtE); delay(gstab - droppts/sw); delay(d2/2.0); status(C); }
void pulsesequence() { double selpwrA = getval("selpwrA"), selpwA = getval("selpwA"), gzlvlA = getval("gzlvlA"), gtA = getval("gtA"), selpwrB = getval("selpwrB"), selpwB = getval("selpwB"), gzlvlB = getval("gzlvlB"), gtB = getval("gtB"), gzlvlE = getval("gzlvlE"), gtE = getval("gtE"), EDratio = getval("EDratio"), gstab = getval("gstab"), pwx180 = getval("pwx180"), pwxlvl180 = getval("pwxlvl180"), hsglvl = getval("hsglvl"), hsgt = getval("hsgt"), tau, evolcorr, jdly, bird; int icosel, ijscale, prgcycle = (int)(getval("prgcycle")+0.5), phase1=(int)(getval("phase")+0.5); char selshapeA[MAXSTR], selshapeB[MAXSTR], pwx180ad[MAXSTR], pwx180adR[MAXSTR]; //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtE = syncGradTime("gtE","gzlvlE",0.5); gzlvlE = syncGradLvl("gtE","gzlvlE",0.5); gtA = syncGradTime("gtA","gzlvlA",1.0); gzlvlA = syncGradLvl("gtA","gzlvlA",1.0); gtB = syncGradTime("gtB","gzlvlB",1.0); gzlvlB = syncGradLvl("gtB","gzlvlB",1.0); getstr("selshapeA",selshapeA); getstr("selshapeB",selshapeB); getstr("pwx180ad", pwx180ad); getstr("pwx180adR", pwx180adR); evolcorr=(4*pwx/PI)+2*pw+8.0e-6; bird = 1 / (4*(getval("j1xh"))); tau = 1/(4*(getval("jnxh"))); ijscale=(int)(getval("jscale") + 0.5); jdly=(d2*ijscale); icosel = 1; assign(ct,v17); assign(zero,v18); assign(zero,v19); if (getflag("prgflg") && (satmode[0] == 'y') && (prgcycle > 1.5)) { hlv(ct,v17); mod2(ct,v18); dbl(v18,v18); if (prgcycle > 2.5) { hlv(v17,v17); hlv(ct,v19); mod2(v19,v19); dbl(v19,v19); } } settable(t1,4,ph1); settable(t2,2,ph2); settable(t4,8,ph4); settable(t5,8,ph5); getelem(t1,v17,v1); getelem(t2,v17,v2); getelem(t4,v17,v4); getelem(t5,v17,oph); add(oph,v18,oph); add(oph,v19,oph); if ((phase1 == 2) || (phase1 == 5)) icosel = -1; initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v14); /* mod2(id2, v14); dbl(v14,v14); */ add(v2, v14, v2); add(oph, v14, oph); status(A); obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); 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(v1,zero,v18,v19); } else { satpulse(satdly,zero,rof1,rof1); if (getflag("prgflg")) purge(v1,zero,v18,v19); } } else delay(d1); if (getflag("wet")) wet4(zero,one); decpower(pwxlvl); status(B); if (getflag("nullflg")) { rgpulse(0.5 * pw, zero, rof1, rof1); delay(2 * bird); decpower(pwxlvl180); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); rgpulse(2.0 * pw, zero, rof1, rof1); delay(2 * bird + 2 * POWER_DELAY); decshaped_pulse(pwx180adR, pwx180, zero, rof1, rof1); decpower(pwxlvl); rgpulse(1.5 * pw, zero, rof1, rof1); zgradpulse(hsglvl, hsgt); delay(1e-3); } if (getflag("cpmgflg")) { rgpulse(pw, v1, rof1, 0.0); cpmg(v1, v15); } else rgpulse(pw, v1, rof1, rof1); delay(tau/2 - gtA - gstab); delay(jdly/4); zgradpulse(gzlvlA,gtA); delay(gstab); obspower(selpwrA); decpower(pwxlvl180); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); shaped_pulse(selshapeA,selpwA,zero,rof1,rof1); zgradpulse(gzlvlA,gtA); delay(gstab); delay(tau/2 - gtA - gstab); delay(jdly/2); delay(tau/2 - gtB - gstab); zgradpulse(gzlvlB,gtB); delay(gstab); obspower(selpwrB); decshaped_pulse(pwx180adR, pwx180, zero, rof1, rof1); shaped_pulse(selshapeB,selpwB,two,rof1,rof1); obspower(tpwr); zgradpulse(gzlvlB,gtB); delay(gstab); decpower(pwxlvl); delay(jdly/4); delay(tau/2 - gtB - gstab); rgpulse(pw, one, rof1, rof1); zgradpulse(hsglvl, 2 * hsgt); delay(1e-3); decrgpulse(pwx, v2, rof1, 2.0e-6); delay(d2/2); rgpulse(2 * pw, zero, 2.0e-6, 2.0e-6); delay(d2/2); delay(gtE + gstab + 2*GRADIENT_DELAY - POWER_DELAY); decpower(pwxlvl180); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); zgradpulse(gzlvlE, gtE); delay(gstab + POWER_DELAY + evolcorr); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); decpower(pwxlvl); decrgpulse(pwx, v4, 2.0e-6, rof1); zgradpulse(-0.6 * hsglvl, 1.2 * hsgt); delay(1e-3); rgpulse(pw, zero, rof1, rof1); zgradpulse(icosel * 2.0*gzlvlE/EDratio, gtE/2.0); delay(gstab); delay(tau - gtA - 2*gstab - gtE/2); zgradpulse(gzlvlA,gtA); delay(gstab); obspower(selpwrA); decpower(pwxlvl180); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); shaped_pulse(selshapeA,selpwA,zero,rof1,rof1); zgradpulse(gzlvlA,gtA); delay(gstab); delay(tau - gtA - gstab); decshaped_pulse(pwx180adR, pwx180, zero, rof1, rof1); decpower(dpwr); zgradpulse(gzlvlB,gtB); delay(gstab); obspower(selpwrB); shaped_pulse(selshapeB,selpwB,two,rof1,rof2); obspower(tpwr); zgradpulse(gzlvlB,gtB); delay(gstab); status(C); }
void pulsesequence() { double gt1 = getval("gt1"), gzlvl1=getval("gzlvl1"), gt2 = getval("gt2"), gzlvl2=getval("gzlvl2"), gt3 = getval("gt3"), gzlvl3=getval("gzlvl3"), gt4 = getval("gt4"), gzlvl4=getval("gzlvl4"), selpwrPS = getval("selpwrPS"), selpwPS = getval("selpwPS"), gzlvlPS = getval("gzlvlPS"), slpwrT = getval("slpwrT"), slpwT = getval("slpwT"), mixT = getval("mixT"), zqfpw1 = getval("zqfpw1"), zqfpwr1 = getval("zqfpwr1"), zqfpw2 = getval("zqfpw2"), zqfpwr2 = getval("zqfpwr2"), gzlvlzq1 = getval("gzlvlzq1"), gzlvlzq2 = getval("gzlvlzq2"), gstab = getval("gstab"); int prgcycle=(int)(getval("prgcycle")+0.5), phase1 = (int)(getval("phase")+0.5); char selshapePS[MAXSTR], slpatT[MAXSTR], zqfpat1[MAXSTR], zqfpat2[MAXSTR]; /* LOAD AND INITIALIZE VARIABLES */ getstr("slpatT",slpatT); getstr("zqfpat1",zqfpat1); getstr("zqfpat2",zqfpat2); if (strcmp(slpatT,"mlev17c") && strcmp(slpatT,"dipsi2") && strcmp(slpatT,"dipsi3") && strcmp(slpatT,"mlev17") && strcmp(slpatT,"mlev16")) abort_message("SpinLock pattern %s not supported!.\n", slpatT); //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gt1 = syncGradTime("gt1","gzlvl1",1.0); gzlvl1 = syncGradLvl("gt1","gzlvl1",1.0); gt2 = syncGradTime("gt2","gzlvl2",1.0); gzlvl2 = syncGradLvl("gt2","gzlvl2",1.0); getstr("selshapePS",selshapePS); assign(ct,v17); initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v14); settable(t1,2,ph1); settable(t2,1,ph2); settable(t3,8,ph3); settable(t4,1,ph4); settable(t5,1,ph5); settable(t6,1,ph6); settable(t7,1,ph7); settable(t8,1,ph8); settable(t9,8,ph9); getelem(t1,v17,v1); getelem(t2,v17,v2); getelem(t3,v17,v3); getelem(t4,v17,v4); getelem(t5,v17,v5); getelem(t6,v17,v6); getelem(t7,v17,v7); getelem(t8,v17,v8); getelem(t9,v17,v9); assign(v9,oph); if (phase1 == 2) {incr(v1); } add(v1, v14, v1); add(oph,v14,oph); /* BEGIN THE ACTUAL PULSE SEQUENCE */ status(A); obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); delay(d1); status(B); obspower(tpwr); rgpulse(pw, v1, rof1, rof1); delay(d2/2.0); zgradpulse(gzlvl1,gt1); delay(gstab); rgpulse(2*pw,v2,rof1,rof1); zgradpulse(gzlvl1,gt1); delay(gstab); zgradpulse(gzlvl2,gt2); delay(2.0*gstab); obspower(selpwrPS); rgradient('z',gzlvlPS); shaped_pulse(selshapePS,selpwPS,v3,rof1,rof1); rgradient('z',0.0); delay(gstab); obspower(tpwr); zgradpulse(gzlvl2,gt2); delay(gstab); if (d2>0) delay(d2/2.0-2.0*pw/PI-2.0*rof1); rgpulse(pw,v5,rof1,rof1); if (mixT > 0.0) { if (getflag("Gzqfilt")) { obspower(zqfpwr1); rgradient('z',gzlvlzq1); delay(100.0e-6); shaped_pulse(zqfpat1,zqfpw1,zero,rof1,rof1); delay(100.0e-6); rgradient('z',0.0); delay(100e-6); } obspower(slpwrT); zgradpulse(gzlvl3,gt3); delay(gt3); if (dps_flag) rgpulse(mixT,v4,0.0,0.0); else SpinLock(slpatT,mixT,slpwT,v4); if (getflag("Gzqfilt")) { obspower(zqfpwr2); rgradient('z',gzlvlzq2); delay(100.0e-6); shaped_pulse(zqfpat2,zqfpw2,zero,rof1,rof1); delay(100.0e-6); rgradient('z',0.0); delay(100e-6); } obspower(tpwr); zgradpulse(gzlvl4,gt4); delay(gt4); } rgpulse(pw,v8,rof1,rof2); status(C); }
pulsesequence() { double gzlvlE = getval("gzlvlE"), gtE = getval("gtE"), EDratio = getval("EDratio"), gstab = getval("gstab"), hsglvl = getval("hsglvl"), hsgt = getval("hsgt"), slpwT = getval("slpwT"), slpwrT = getval("slpwrT"), trim = getval("trim"), mixT = getval("mixT"), mult = getval("mult"), tau, gtau; int icosel, phase1 = (int)(getval("phase")+0.5); char slpatT[MAXSTR]; //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtE = syncGradTime("gtE","gzlvlE",0.5); gzlvlE = syncGradLvl("gtE","gzlvlE",0.5); getstr("slpatT",slpatT); if (strcmp(slpatT,"mlev17c") && strcmp(slpatT,"dipsi2") && strcmp(slpatT,"dipsi3") && strcmp(slpatT,"mlev17") && strcmp(slpatT,"mlev16")) abort_message("SpinLock pattern %s not supported!.\n", slpatT); tau = 1/(4*(getval("j1xh"))); gtau = 2*gstab + 2*GRADIENT_DELAY; icosel = 1; settable(t1,2,ph1); settable(t2,4,ph2); settable(t3,4,ph3); assign(zero,v6); getelem(t1,ct,v1); getelem(t3,ct,oph); assign(two,v3); sub(v3,one,v2); add(v3,one,v4); add(v3,two,v5); /* mod2(id2,v14); dbl(v14,v14); */ initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v14); if ((phase1 == 2) || (phase1 == 5)) icosel = -1; add(v1,v14,v1); add(v6,v14,v6); add(oph,v14,oph); status(A); obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); if (satmode[0] == 'y') { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); satpulse(satdly,zero,rof1,rof1); } else delay(d1); if (getflag("wet")) wet4(zero,one); decpower(pwxlvl); status(B); if (getflag("nullflg")) { rgpulse(0.5*pw,zero,rof1,rof1); delay(2*tau); simpulse(2.0*pw,2.0*pwx,zero,zero,rof1,rof1); delay(2*tau); rgpulse(1.5*pw,two,rof1,rof1); zgradpulse(hsglvl,hsgt); delay(1e-3); } rgpulse(pw,zero,rof1,rof1); delay(2*tau - 2*rof1 - (2*pw/PI)); decrgpulse(pwx,v1,rof1,1.0e-6); delay(gtE/2.0+gtau - (2*pwx/PI) - pwx - 1.0e-6 - rof1); decrgpulse(2*pwx,v6,rof1,1.0e-6); delay(gstab - pwx - 1.0e-6); zgradpulse(gzlvlE,gtE/2.0); delay(gstab - rof1 - pw); delay(d2/2); rgpulse(2.0*pw,zero,rof1,rof1); delay(d2/2); delay(gstab - rof1 - pw); zgradpulse(gzlvlE,gtE/2.0); delay(gstab - pwx - rof1); decrgpulse(2*pwx,zero,rof1,1.0e-6); delay(gtE/2.0+gtau - (2*pwx/PI) - pwx - 1.0e-6 - rof1); decrgpulse(pwx,t2,rof1,rof1); delay(2*tau - rof1 - POWER_DELAY); obspower(slpwrT); if (mixT > 0.0) { rgpulse(trim,v5,0.0,0.0); if (dps_flag) rgpulse(mixT,v3,0.0,0.0); else SpinLock(slpatT,mixT,slpwT,v2,v3,v4,v5,v9); } obspower(tpwr); if (mult > 0.5) delay(2*tau - rof1); else delay(gtE/2 + gstab + 2*GRADIENT_DELAY - rof1); simpulse(2*pw,mult*pwx,one,zero,rof1,rof2); decpower(dpwr); zgradpulse(icosel*2*gzlvlE/EDratio,gtE/2.0); if (mult > 0.5) delay(2*tau - gtE/2 - 2*GRADIENT_DELAY); else delay(gstab); status(C); }
pulsesequence() { double j1min = getval("j1min"), j1max = getval("j1max"), pwxlvl180 = getval("pwxlvl180"), pwx180 = getval("pwx180"), gzlvl0 = getval("gzlvl0"), gt0 = getval("gt0"), gzlvlE = getval("gzlvlE"), gtE = getval("gtE"), EDratio = getval("EDratio"), gstab = getval("gstab"), grad1, grad2, tau, tauA, tauB, taumb; char pwx180ad[MAXSTR]; int icosel, prgcycle = (int)(getval("prgcycle")+0.5), phase1 = (int)(getval("phase")+0.5); //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtE = syncGradTime("gtE","gzlvlE",1.0); gzlvlE = syncGradLvl("gtE","gzlvlE",1.0); getstr("pwx180ad", pwx180ad); grad1 = gzlvlE; grad2 = -1.0*gzlvlE*(EDratio-1)/(EDratio+1); tauA = 1/(2*(j1min + 0.146*(j1max - j1min))); tauB = 1/(2*(j1max - 0.146*(j1max - j1min))); taumb = 1 / (2 * (getval("jnxh"))); tau = 1 / (j1min+j1max); icosel = 1; assign(ct,v17); assign(zero,v18); assign(zero,v19); if (getflag("prgflg") && (satmode[0] == 'y') && (prgcycle > 1.5)) { hlv(ct,v17); mod2(ct,v18); dbl(v18,v18); if (prgcycle > 2.5) { hlv(v17,v17); hlv(ct,v19); mod2(v19,v19); dbl(v19,v19); } } settable(t1, 1, ph1); settable(t2, 1, ph2); settable(t3, 2, ph3); settable(t4, 1, ph4); settable(t5, 4, ph5); settable(t6, 4, ph6); getelem(t1, v17,v1); getelem(t2, v17,v2); getelem(t3, v17, v3); getelem(t4, v17, v4); getelem(t5, v17, v5); getelem(t6, v17, oph); add(oph,v18,oph); add(oph,v19,oph); /* mod2(id2, v10); dbl(v10,v10); */ initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v10); add(v3, v10, v3); add(oph, v10, oph); if ((phase1 == 2) || (phase1 == 5)) { icosel = -1; grad1 = gzlvlE*(EDratio-1)/(EDratio+1); grad2 = -1.0*gzlvlE; } status(A); delay(5.0e-5); if (getflag("sspul")) steadystate(); 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(v1,zero,v18,v19); } else { satpulse(satdly,zero,rof1,rof1); if (getflag("prgflg")) purge(v1,zero,v18,v19); } } else delay(d1); if (getflag("wet")) wet4(zero,one); decpower(pwxlvl); status(B); rgpulse(pw, v1, rof1, rof2); /* Start of J filter */ if (getflag("jfilter")) { zgradpulse(gzlvl0/2,gt0); delay(tauA - gt0); decrgpulse(pwx, zero, rof1, rof1); zgradpulse(-gzlvl0/3,gt0); delay(tauB - gt0); decrgpulse(pwx, zero, rof1, rof1); zgradpulse(-gzlvl0/6,gt0); delay(gstab); } /* End of J filter */ delay(taumb); decrgpulse(pwx, v3, rof1, rof1); delay(d2 / 2.0); rgpulse(2 * pw, v4, rof1, rof1); delay(d2 / 2.0); decpower(pwxlvl180); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); delay(2 * pw + 2*POWER_DELAY + 4 * rof1 + (4 * pwx / 3.1416)); zgradpulse(icosel * grad1, gtE); delay(gstab); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); zgradpulse(icosel * grad2, gtE); decpower(pwxlvl); delay(gstab); decrgpulse(pwx, v5, rof1, rof2); decpower(dpwr); status(C); }
pulsesequence() { double hsglvl = getval("hsglvl"), hsgt = getval("hsgt"), slpwT = getval("slpwT"), slpwrT = getval("slpwrT"), trim = getval("trim"), mixT = getval("mixT"), mult = getval("mult"), tau, null = getval("null"); char slpatT[MAXSTR]; int phase1 = (int)(getval("phase")+0.5), prgcycle = (int)(getval("prgcycle")+0.5); tau = 1/(4*(getval("j1xh"))); getstr("slpatT",slpatT); if (strcmp(slpatT,"mlev17c") && strcmp(slpatT,"dipsi2") && strcmp(slpatT,"dipsi3") && strcmp(slpatT,"mlev17") && strcmp(slpatT,"mlev16")) abort_message("SpinLock pattern %s not supported!.\n", slpatT); assign(ct,v17); assign(zero,v18); assign(zero,v19); if (getflag("prgflg") && (satmode[0] == 'y') && (prgcycle > 1.5)) { hlv(ct,v17); mod2(ct,v18); dbl(v18,v18); if (prgcycle > 2.5) { hlv(v17,v17); hlv(ct,v19); mod2(v19,v19); dbl(v19,v19); } } settable(t1,4,ph1); settable(t2,2,ph2); settable(t3,8,ph3); settable(t4,16,ph4); settable(t5,16,ph5); getelem(t1, v17, v1); getelem(t3, v17, v3); getelem(t4, v17, v4); getelem(t2, v17, v2); getelem(t5, v17, oph); assign(zero,v6); add(oph,v18,oph); add(oph,v19,oph); assign(two,v21); /* mod2(id2,v14); dbl(v14, v14); */ initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v14); if (phase1 == 2) incr(v2); add(v2,v14,v2); add(oph,v14,oph); status(A); obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); 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); } } else delay(d1); if (getflag("wet")) wet4(zero,one); decpower(pwxlvl); status(B); if ((getflag("PFGflg")) && (getflag("nullflg"))) { rgpulse(0.5*pw,zero,rof1,rof1); delay(2*tau); simpulse(2.0*pw,2.0*pwx,zero,zero,rof1,rof1); delay(2*tau); rgpulse(1.5*pw,two,rof1,rof1); zgradpulse(hsglvl,hsgt); delay(1e-3); } else if (null != 0.0) { rgpulse(pw,zero,rof1,rof1); delay(2*tau); simpulse(2*pw,2*pwx,zero,zero,rof1,rof1); delay(2*tau); rgpulse(pw,two,rof1,rof1); if (satmode[1] == 'y') { if (getflag("slpsat")) shaped_satpulse("BIRDnull",null,zero); else satpulse(null,zero,rof1,rof1); } else delay(null); } rgpulse(pw,v6,rof1,rof1); delay(tau - pwx - 2*pw/PI - 2*rof1); simpulse(2*pw,2*pwx,zero,zero,rof1,rof1); delay(tau - pwx - 2*pwx/PI - 2*rof1); rgpulse(pw,v1,rof1,rof1); if (getflag("PFGflg")) { zgradpulse(hsglvl,2*hsgt); delay(1.0e-3); } decrgpulse(pwx,v2,rof1,2.0e-6); if (d2/2 > 0.0) delay(d2/2 - (2*pwx/PI) - pw - 4.0e-6); else delay(d2/2); rgpulse(2*pw,zero,2.0e-6,2.0e-6); if (d2/2 > 0.0) delay(d2/2 - (2*pwx/PI) - pw - 4.0e-6); else delay(d2/2); decrgpulse(pwx,v4,2.0e-6,rof1); if (getflag("PFGflg")) { zgradpulse(-0.6*hsglvl,1.2*hsgt); delay(1.0e-3); } rgpulse(pw,v3,rof1,rof1); delay(tau - (2*pw/PI) - rof1); simpulse(2*pw,2*pwx,zero,zero,rof1, rof1); obspower(slpwrT); decpower(dpwr); delay(tau - rof1 - 2*POWER_DELAY); if (mixT > 0.0) { rgpulse(trim,zero,0.0,0.0); if (dps_flag) rgpulse(mixT,v21,0.0,0.0); else SpinLock(slpatT,mixT,slpwT,v21); } if (mult > 0.5) { obspower(tpwr); decpower(pwxlvl); delay(2*tau - POWER_DELAY - rof1); simpulse(2*pw,mult*pwx,zero,zero,rof1,rof2); decpower(dpwr); delay(2*tau); } else delay(rof2); status(C); }
void pulsesequence() { double hsglvl = getval("hsglvl"), hsgt = getval("hsgt"), tau, evolcorr, pwx180 = getval("pwx180"), pwxlvl180 = getval("pwxlvl180"), selpwxA = getval("selpwxA"), selpwxlvlA = getval("selpwxlvlA"), gzlvlA = getval("gzlvlA"), gtA = getval("gtA"), selpwxB = getval("selpwxB"), selpwxlvlB = getval("selpwxlvlB"), gzlvlB = getval("gzlvlB"), gtB = getval("gtB"), gstab = getval("gstab"), impress = getval("impress"), null = getval("null"); int phase1 = (int)(getval("phase")+0.5), prgcycle = (int)(getval("prgcycle")+0.5), iimphase = (int)(getval("imphase")+0.5); char pwx180ad[MAXSTR], selpwxshpA[MAXSTR], selpwxshpB[MAXSTR], pwx180adR[MAXSTR]; //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtA = syncGradTime("gtA","gzlvlA",1.0); gzlvlA = syncGradLvl("gtA","gzlvlA",1.0); gtB = syncGradTime("gtB","gzlvlB",1.0); gzlvlB = syncGradLvl("gtB","gzlvlB",1.0); getstr("pwx180ad", pwx180ad); getstr("pwx180adR", pwx180adR); getstr("selpwxshpA", selpwxshpA); getstr("selpwxshpB", selpwxshpB); evolcorr=(4*pwx/PI)+2*pw+8.0e-6; tau = 1/(4*(getval("j1xh"))); if (impress > 0.5) { selpwxA = getval("imppw1"); selpwxlvlA = getval("imppwr1"); getstr("impshp1", selpwxshpA); if (iimphase == 1) { selpwxB = getval("imppw1"); selpwxlvlB = getval("imppwr1"); getstr("impshp1",selpwxshpB); } if (iimphase == 2) { selpwxB = getval("imppw2"); selpwxlvlB = getval("imppwr2"); getstr("impshp2",selpwxshpB); } if (iimphase == 3) { selpwxB = getval("imppw3"); selpwxlvlB = getval("imppwr3"); getstr("impshp3",selpwxshpB); } if (iimphase == 4) { selpwxB = getval("imppw4"); selpwxlvlB = getval("imppwr4"); getstr("impshp4",selpwxshpB); } } assign(ct,v17); assign(zero,v18); assign(zero,v19); if (getflag("prgflg") && (satmode[0] == 'y') && (prgcycle > 1.5)) { hlv(ct,v17); mod2(ct,v18); dbl(v18,v18); if (prgcycle > 2.5) { hlv(v17,v17); hlv(ct,v19); mod2(v19,v19); dbl(v19,v19); } } settable(t1, 4, ph1); settable(t2, 2, ph2); settable(t3, 8, ph3); settable(t4, 16, ph4); settable(t5, 16, ph5); getelem(t1, v17, v1); getelem(t3, v17, v3); getelem(t4, v17, v4); getelem(t2, v17, v2); getelem(t5, v17, oph); assign(zero,v6); add(oph,v18,oph); add(oph,v19,oph); if (phase1 == 2) incr(v2); /* mod2(id2,v14); dbl(v14, v14); */ initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v14); if (impress > 0.5) { if (getflag("fadflg")) { add(v2, v14, v2); add(oph, v14, oph); } } else { add(v2, v14, v2); add(oph, v14, oph); } status(A); obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); 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); } } else delay(d1); if (getflag("wet")) wet4(zero,one); decpower(pwxlvl); status(B); if ((getflag("PFGflg")) && (getflag("nullflg"))) { rgpulse(0.5 * pw, zero, rof1, rof1); delay(2 * tau); decpower(pwxlvl180); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); rgpulse(2.0 * pw, zero, rof1, rof1); delay(2 * tau + 2 * POWER_DELAY); decshaped_pulse(pwx180adR, pwx180, zero, rof1, rof1); decpower(pwxlvl); rgpulse(1.5 * pw, two, rof1, rof1); zgradpulse(hsglvl, hsgt); delay(1e-3); } else if (null != 0.0) { rgpulse(pw, zero, rof1, rof1); delay(2 * tau); decpower(pwxlvl180); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); rgpulse(2.0 * pw, zero, rof1, rof1); delay(2 * tau + 2 * POWER_DELAY); decshaped_pulse(pwx180adR, pwx180, zero, rof1, rof1); decpower(pwxlvl); rgpulse(pw, two, rof1, rof1); if (satmode[1] == 'y') { if (getflag("slpsat")) shaped_satpulse("BIRDnull",null,zero); else satpulse(null,zero,rof1,rof1); } else delay(null); } if (getflag("cpmgflg")) { rgpulse(pw, v6, rof1, 0.0); cpmg(v6, v15); } else rgpulse(pw, v6, rof1, rof1); delay(tau); decpower(pwxlvl180); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); rgpulse(2.0 * pw, zero, rof1, rof1); delay(tau + 2 * POWER_DELAY); decshaped_pulse(pwx180adR, pwx180, zero, rof1, rof1); decpower(pwxlvl); rgpulse(pw, t1, rof1, rof1); if (getflag("PFGflg")) { zgradpulse(hsglvl, 2 * hsgt); delay(1e-3); } decrgpulse(pwx, v2, rof1, 2.0e-6); delay(d2 / 2); rgpulse(2 * pw, zero, 2.0e-6, 2.0e-6); delay(d2 / 2); zgradpulse(gzlvlA,gtA); delay(gstab); decpower(selpwxlvlA); decshaped_pulse(selpwxshpA, selpwxA, zero, rof1, rof1); decpower(pwxlvl); zgradpulse(gzlvlA,gtA); delay(gstab + evolcorr); zgradpulse(gzlvlB,gtB); delay(gstab); decpower(selpwxlvlB); decshaped_pulse(selpwxshpB, selpwxB, zero, rof1, rof1); decpower(pwxlvl); zgradpulse(gzlvlB,gtB); delay(gstab); decrgpulse(pwx, t4, 2.0e-6, rof1); if (getflag("PFGflg")) { zgradpulse(0.6 * hsglvl, 1.2 * hsgt); delay(1e-3); } rgpulse(pw, t3, rof1, rof1); decpower(pwxlvl180); decshaped_pulse(pwx180adR, pwx180, zero, rof1, rof1); decpower(dpwr); delay(tau - (2 * pw / PI) - 2*rof1); rgpulse(2 * pw, zero, rof1, rof2); decpower(pwxlvl180); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); decpower(dpwr); delay(tau - POWER_DELAY); status(C); }
void pulsesequence() { double j1min = getval("j1min"), j1max = getval("j1max"), pwx180 = getval("pwx180"), pwxlvl180 = getval("pwxlvl180"), pwx180r = getval("pwx180r"), pwxlvl180r = getval("pwxlvl180r"), mult = getval("mult"), gzlvl0 = getval("gzlvl0"), gt0 = getval("gt0"), gzlvlE = getval("gzlvlE"), gtE = getval("gtE"), EDratio = getval("EDratio"), gstab = getval("gstab"), tauA, tauB, tau, taumb, taug, grad1, grad2, grad3, grad4; char pwx180ad[MAXSTR], pwx180ref[MAXSTR]; int icosel, prgcycle = (int)(getval("prgcycle")+0.5), phase1 = (int)(getval("phase")+0.5); //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtE = syncGradTime("gtE","gzlvlE",1.0); gzlvlE = syncGradLvl("gtE","gzlvlE",1.0); getstr("pwx180ad", pwx180ad); getstr("pwx180ref", pwx180ref); tauA = 1/(2*(j1min + 0.146*(j1max - j1min))); tauB = 1/(2*(j1max - 0.146*(j1max - j1min))); tau = 1/(j1max + j1min); taumb = 1 / (2 * (getval("jnxh"))); taug = tau + getval("tauC"); icosel = 1; assign(ct,v17); assign(zero,v18); assign(zero,v19); if (getflag("prgflg") && (satmode[0] == 'y') && (prgcycle > 1.5)) { hlv(ct,v17); mod2(ct,v18); dbl(v18,v18); if (prgcycle > 2.5) { hlv(v17,v17); hlv(ct,v19); mod2(v19,v19); dbl(v19,v19); } } settable(t1, 4, ph1); settable(t2, 8, ph2); settable(t3, 16, ph3); settable(t4, 2, ph4); getelem(t1, v17, v1); getelem(t2, v17, v2); getelem(t3, v17, v3); getelem(t4, v17, oph); add(oph,v18,oph); add(oph,v19,oph); assign(zero,v6); /* mod2(id2, v14); dbl(v14,v14); */ initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v14); add(v2, v14, v2); add(oph, v14, oph); if ((phase1 == 2) || (phase1 == 5)) { icosel = -1; } grad2 = gzlvlE; grad3 = -1.5*gzlvlE; grad1 = -1.0*grad2*(EDratio + icosel)/EDratio; grad4 = -1.0*grad3*(EDratio - icosel)/EDratio; if (mult > 0.5) { grad4 = -1.0*grad3*(EDratio + icosel)/EDratio; } status(A); delay(5.0e-5); if (getflag("sspul")) steadystate(); 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); } } else delay(d1); if (getflag("wet")) wet4(zero,one); obspower(tpwr); decpower(pwxlvl); status(B); if (getflag("cpmgflg")) { rgpulse(pw, v6, rof1, 0.0); cpmg(v6, v15); } else rgpulse(pw, v6, rof1, rof2); /* Start of J filter */ if (getflag("jfilter")) { zgradpulse(gzlvl0,gt0); delay(tauA - gt0); decrgpulse(pwx, zero, rof1, rof1); zgradpulse(-gzlvl0*2/3,gt0); delay(tauB - gt0); decrgpulse(pwx, zero, rof1, rof1); zgradpulse(-gzlvl0/3,gt0); } /* End of J filter */ delay(taumb); zgradpulse(grad1,gtE); delay(gstab); decrgpulse(pwx, v2, rof1, rof1); if (mult > 0.5) { decpower(pwxlvl180r); zgradpulse(grad2,gtE); delay(taug-gtE-2*GRADIENT_DELAY); decshaped_pulse(pwx180ref, pwx180r, zero, rof1, rof1); delay(d2/2); rgpulse(2*pw,v3,rof1,rof1); delay(d2/2); delay(taug-(gtE+gstab+2*GRADIENT_DELAY)+(4*pwx/PI+2*rof1+2*POWER_DELAY-2*pw-2*rof1)); zgradpulse(grad3,gtE); delay(gstab); decshaped_pulse(pwx180ref, pwx180r, zero, rof1, rof1); } else { decpower(pwxlvl180); zgradpulse(grad2,gtE); delay(taug/2+(pwx180r-pwx180)/2- gtE - 2*GRADIENT_DELAY); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); delay(taug/2+(pwx180r-pwx180)/2.0); delay(d2/2); rgpulse(2*pw,v3,rof1,rof1); delay(d2/2); delay(taug/2+(pwx180r-pwx180)/2.0+(4*pwx/PI+2*rof1+2*POWER_DELAY-2*pw-2*rof1)); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); delay(taug/2+(pwx180r-pwx180)/2-gtE-gstab-2*GRADIENT_DELAY); zgradpulse(grad3,gtE); delay(gstab); } decpower(pwxlvl); decrgpulse(pwx, v1, rof1, rof2); decpower(dpwr); zgradpulse(grad4,gtE); delay(gstab); status(C); }
pulsesequence() { double gzlvlE = getval("gzlvlE"), gtE = getval("gtE"), EDratio = getval("EDratio"), gstab = getval("gstab"), mult = getval("mult"), hsglvl = getval("hsglvl"), hsgt = getval("hsgt"), tau, evolcorr, taug; int icosel, phase1 = (int)(getval("phase")+0.5), ZZgsign; //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtE = syncGradTime("gtE","gzlvlE",0.5); gzlvlE = syncGradLvl("gtE","gzlvlE",0.5); tau = 1/(4*(getval("j1xh"))); evolcorr = 2*pw+4.0e-6; if (mult > 0.5) taug = 2*tau; else taug = gtE + gstab + 2*GRADIENT_DELAY; ZZgsign=-1; if (mult == 2) ZZgsign=1; icosel = 1; settable(t1,4,ph1); settable(t2,2,ph2); settable(t3,8,ph3); settable(t4,16,ph4); settable(t5,16,ph5); getelem(t2,ct,v2); getelem(t5,ct,oph); /* mod2(id2,v14); dbl(v14,v14); */ initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v14); if ((phase1 == 2) || (phase1 == 5)) icosel = -1; add(v2,v14,v2); add(oph,v14,oph); status(A); obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); if (satmode[0] == 'y') { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); satpulse(satdly,zero,rof1,rof1); } else delay(d1); if (getflag("wet")) wet4(zero,one); decpower(pwxlvl); status(B); if (getflag("nullflg")) { rgpulse(0.5*pw,zero,rof1,rof1); delay(2*tau); simpulse(2.0*pw,2.0*pwx,zero,zero,rof1,rof1); delay(2*tau); rgpulse(1.5*pw,two,rof1,rof1); zgradpulse(hsglvl,hsgt); delay(1e-3); } rgpulse(pw,zero,rof1,rof1); delay(tau); simpulse(2*pw,2*pwx,zero,zero,rof1,rof1); delay(tau); rgpulse(pw,t1,rof1,rof1); zgradpulse(hsglvl,2*hsgt); delay(1e-3); decrgpulse(pwx,v2,rof1,2.0e-6); delay(d2/2); rgpulse(2*pw,zero,2.0e-6,2.0e-6); delay(d2/2); zgradpulse(gzlvlE,gtE); delay(taug - gtE - 2*GRADIENT_DELAY); simpulse(mult*pw,2*pwx,zero,zero,rof1,rof1); delay(taug + evolcorr); decrgpulse(pwx,t4,2.0e-6,rof1); zgradpulse(ZZgsign*0.6*hsglvl,1.2*hsgt); delay(1e-3); rgpulse(pw,t3,rof1,rof1); delay(tau - (2*pw/PI) - 2*rof1); simpulse(2*pw,2*pwx,zero,zero,rof1, rof2); decpower(dpwr); zgradpulse(icosel*2.0*gzlvlE/EDratio,gtE/2.0); delay(tau - gtE/2.0 - 2*GRADIENT_DELAY - POWER_DELAY); status(C); }
pulsesequence() { double slpwrR = getval("slpwrR"), slpwR = getval("slpwR"), mixR = getval("mixR"), gzlvlz = getval("gzlvlz"), gtz = getval("gtz"), zfphinc = getval("zfphinc"); char slpatR[MAXSTR]; int phase1 = (int)(getval("phase")+0.5); /* LOAD AND INITIALIZE PARAMETERS */ getstr("slpatR",slpatR); if (strcmp(slpatR,"cw") && strcmp(slpatR,"troesy") && strcmp(slpatR,"dante")) abort_message("SpinLock pattern %s not supported!.\n", slpatR); sub(ct,ssctr,v7); settable(t1,4,ph1); getelem(t1,v7,v1); settable(t2,8,ph2); getelem(t2,v7,v2); settable(t3,8,ph3); settable(t8,4,ph8); getelem(t8,v7,v8); settable(t6,8,ph6); getelem(t6,v7,v6); assign(v1,oph); if (getflag("zfilt")) getelem(t3,v7,oph); add(v2,one,v3); add(v2,two,v4); add(v2,three,v5); if (phase1 == 2) {incr(v1); incr(v6);} /* hypercomplex method */ /* mod2(id2,v13); dbl(v13,v13); */ initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v13); add(v1,v13,v1); add(v6,v13,v6); add(oph,v13,oph); /* The following is for flipback pulse */ zfphinc=zfphinc+180; if (zfphinc < 0) zfphinc=zfphinc+360; initval(zfphinc,v10); /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); if (satmode[0] == 'y') { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); satpulse(satdly,v6,rof1,rof1); } else delay(d1); if (getflag("wet")) wet4(zero,one); decpower(dpwr); status(B); rgpulse(pw, v1, rof1, rof1); if (d2 > 0.0) delay(d2 - POWER_DELAY - (2*pw/PI) - rof1); else delay(d2); obspower(slpwrR); if (mixR > 0.0) { if (dps_flag) { if (!strcmp(slpatR,"troesy")) rgpulse(mixR,v2,0.0,0.0); else rgpulse(mixR,v3,0.0,0.0); } else SpinLock(slpatR,mixR,slpwR,v2,v3,v4,v5, v9); } if ((getflag("zfilt")) && (getflag("PFGflg"))) { obspower(tpwr); rgpulse(pw,v2,1.0e-6,rof1); zgradpulse(gzlvlz,gtz); delay(gtz/3); if (getflag("flipback")) FBpulse(v8,v10); rgpulse(pw,v8,rof1,rof2); } else delay(rof2); status(C); }
void pulsesequence() { double mixN = getval("mixN"), gzlvlC = getval("gzlvlC"), gtC = getval("gtC"), gstab = getval("gstab"), selpwrA = getval("selpwrA"), selpwA = getval("selpwA"), gzlvlA = getval("gzlvlA"), gtA = getval("gtA"), selpwrB = getval("selpwrB"), selpwB = getval("selpwB"), gzlvlB = getval("gzlvlB"), gtB = getval("gtB"), selfrq = getval("selfrq"), zqfpw3 = getval("zqfpw3"), zqfpwr3 = getval("zqfpwr3"), gzlvlzq3 = getval("gzlvlzq3"), mixNcorr, sweeppw = getval("sweeppw"), sweeppwr = getval("sweeppwr"); char sweepshp[MAXSTR], selshapeA[MAXSTR], selshapeB[MAXSTR], zqfpat3[MAXSTR]; //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtC = syncGradTime("gtC","gzlvlC",1.0); gzlvlC = syncGradLvl("gtC","gzlvlC",1.0); gtA = syncGradTime("gtA","gzlvlA",1.0); gzlvlA = syncGradLvl("gtA","gzlvlA",1.0); gtB = syncGradTime("gtB","gzlvlB",1.0); gzlvlB = syncGradLvl("gtB","gzlvlB",1.0); getstr("sweepshp",sweepshp); getstr("selshapeA",selshapeA); getstr("selshapeB",selshapeB); getstr("zqfpat3",zqfpat3); mixNcorr=0.0; if (getflag("Gzqfilt")) mixNcorr=getval("zqfpw3"); hlv(ct,v1); hlv(v1,v1); hlv(v1,v1); hlv(v1,v1); mod4(v1,v1); mod4(ct,v2); add(v1,v2,v2); hlv(ct,v3); hlv(v3,v3); mod4(v3,v3); add(v1,v3,v3); dbl(v3,v4); dbl(v2,oph); add(oph,v4,oph); add(oph,v1,oph); /* BEGIN THE ACTUAL PULSE SEQUENCE */ status(A); obspower(tpwr); delay(5.0e-5); delay(5.0e-5); if (getflag("sspul")) steadystate(); if (satmode[0] == 'y') { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); satpulse(satdly,zero,rof1,rof1); } else delay(d1); if (getflag("wet")) wet4(zero,one); status(B); if (selfrq != tof) obsoffset(selfrq); rgpulse(pw, v1, rof1, rof1); if (selfrq != tof) obsoffset(selfrq); zgradpulse(gzlvlA,gtA); delay(gstab); obspower(selpwrA); shaped_pulse(selshapeA,selpwA,v2,rof1,rof1); obspower(tpwr); zgradpulse(gzlvlA,gtA); delay(gstab); if (selfrq != tof) delay(2*OFFSET_DELAY); zgradpulse(gzlvlB,gtB); delay(gstab); obspower(selpwrB); shaped_pulse(selshapeB,selpwB,v3,rof1,rof1); obspower(tpwr); zgradpulse(gzlvlB,gtB); delay(gstab); if (selfrq != tof) obsoffset(tof); rgpulse(pw,v1,rof1,rof1); obspower(sweeppwr); delay(0.31*mixN); zgradpulse(gzlvlC,gtC); delay(gstab); shaped_pulse(sweepshp,sweeppw,zero,rof1,rof1); delay(gstab); zgradpulse(-gzlvlC,gtC); delay(0.49*mixN); zgradpulse(-gzlvlC,2*gtC); delay(gstab); if (getflag("Gzqfilt")) { obspower(zqfpwr3); rgradient('z',gzlvlzq3); delay(100.0e-6); shaped_pulse(zqfpat3,zqfpw3,zero,rof1,rof1); delay(100.0e-6); rgradient('z',0.0); } else shaped_pulse(sweepshp,sweeppw,zero,rof1,rof1); delay(gstab); zgradpulse(gzlvlC,2*gtC); delay(0.2*mixN); obspower(tpwr); rgpulse(pw,v1,rof1,rof2); status(C); }
pulsesequence() { double gzlvlE = getval("gzlvlE"), gtE = getval("gtE"), EDratio = getval("EDratio"), gstab = getval("gstab"), mult = getval("mult"), pwx180 = getval("pwx180"), pwxlvl180 = getval("pwxlvl180"), pwx180r = getval("pwx180r"), pwxlvl180r = getval("pwxlvl180r"), tpwr180 = getval("tpwr180"), pw180 = getval("pw180"), hsglvl = getval("hsglvl"), hsgt = getval("hsgt"), gzlvl5 = getval("gzlvl5"), tau, taug; int icosel, phase1 = (int)(getval("phase")+0.5), prgcycle = (int)(getval("prgcycle")+0.5), ZZgsign; char pwx180ad[MAXSTR], pwx180ref[MAXSTR], bipflg[MAXSTR], pw180ad[MAXSTR]; //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtE = syncGradTime("gtE","gzlvlE",0.5); gzlvlE = syncGradLvl("gtE","gzlvlE",0.5); getstr("pwx180ad", pwx180ad); getstr("pwx180ref", pwx180ref); getstr("pw180ad", pw180ad); getstr("bipflg",bipflg); if (bipflg[0] == 'y') { tpwr180=getval("tnbippwr"); pw180=getval("tnbippw"); getstr("tnbipshp",pw180ad); } if (bipflg[1] == 'y') { pwxlvl180=getval("dnbippwr"); pwx180=getval("dnbippw"); getstr("dnbipshp",pwx180ad); } tau = 1 / (4*(getval("j1xh"))); if (mult > 0.5) taug = 2*tau + getval("tauC"); else taug = gtE + gstab + 2 * GRADIENT_DELAY; ZZgsign=-1; if (mult == 2) ZZgsign=1; icosel = 1; assign(ct,v17); assign(zero,v18); assign(zero,v19); if (getflag("prgflg") && (satmode[0] == 'y') && (prgcycle > 1.5)) { hlv(ct,v17); mod2(ct,v18); dbl(v18,v18); if (prgcycle > 2.5) { hlv(v17,v17); hlv(ct,v19); mod2(v19,v19); dbl(v19,v19); } } settable(t1, 4, ph1); settable(t2, 2, ph2); settable(t3, 8, ph3); settable(t4, 16, ph4); settable(t5, 16, ph5); getelem(t1, v17, v1); getelem(t3, v17, v3); getelem(t4, v17, v4); getelem(t2, v17, v2); getelem(t5, v17, oph); assign(zero,v6); add(oph,v18,oph); add(oph,v19,oph); if ((phase1 == 2) || (phase1 == 5)) icosel = -1; initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v14); /* mod2(id2, v14); dbl(v14,v14); */ add(v2, v14, v2); add(oph, v14, oph); status(A); obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); 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); } } else delay(d1); if (getflag("wet")) wet4(zero,one); obspower(tpwr); decpower(pwxlvl180); status(B); if (getflag("nullflg")) { rgpulse(0.5 * pw, zero, rof1, rof1); obspower(tpwr180); delay(tau); simshaped_pulse(pw180ad,pwx180ad,pw180,pwx180,zero,zero,rof1,rof1); delay(tau+POWER_DELAY+rof1); delay(tau+POWER_DELAY+rof1); simshaped_pulse(pw180ad,pwx180ad,pw180,pwx180,zero,zero,rof1,rof1); obspower(tpwr); delay(tau); rgpulse(0.5 * pw, zero, rof1, rof1); zgradpulse(hsglvl, hsgt); delay(1e-3); } rgpulse(pw, v6, rof1, rof1); obspower(tpwr180); shaped_pulse(pw180ad,pw180,zero,rof1,rof1); delay(tau+2.0*POWER_DELAY+2.0*rof1); simshaped_pulse(pw180ad,pwx180ad,pw180,pwx180,zero,zero,rof1,rof1); delay(tau); obspower(tpwr); rgpulse(pw, v1, rof1, rof1); zgradpulse(hsglvl, 2 * hsgt); decpower(pwxlvl); obspower(tpwr180); delay(1e-3); decrgpulse(pwx, v2, rof1, 2.0e-6); delay(d2 / 2); shaped_pulse(pw180ad,pw180,zero,rof1,rof1); delay(d2 / 2); delay(taug - POWER_DELAY); decpower(pwxlvl180r); decshaped_pulse(pwx180ref, pwx180r, zero, rof1, rof1); if(mult < 1.5) { obspower(tpwr); if (mult <0.5) delay(2*rof1); else rgpulse(mult*pw,zero,rof1,rof1); } else shaped_pulse(pw180ad,pw180,zero,rof1,rof1); if(mult < 1.5) delay(4*pwx/PI + 4.0e-6 + taug - gtE - gstab - 2 * GRADIENT_DELAY + WFG_START_DELAY + pw180 + WFG_STOP_DELAY - mult*pw); else delay(4*pwx/PI + 4.0e-6 + POWER_DELAY + taug - gtE - gstab - 2 * GRADIENT_DELAY); zgradpulse(gzlvlE, gtE); delay(gstab); decshaped_pulse(pwx180ref, pwx180r, zero, rof1, rof1); decpower(pwxlvl); decrgpulse(pwx, v4, 2.0e-6, rof1); obspower(tpwr); decpower(pwxlvl180); zgradpulse(ZZgsign*0.6 * hsglvl, 1.2 * hsgt); delay(1e-3); rgpulse(pw, v3, rof1, rof1); obspower(tpwr180); shaped_pulse(pw180ad,pw180,zero,rof1,rof1); zgradpulse(gzlvl5,gtE/2.0); delay(tau-gtE/2.0+2.0*POWER_DELAY); simshaped_pulse(pw180ad,pwx180ad,pw180,pwx180,zero,zero,rof1,rof2); zgradpulse(gzlvl5+icosel * 2.0*gzlvlE/EDratio, gtE/2.0); delay(tau-gtE/2.0); decpower(dpwr); status(C); }
pulsesequence () { double gstab = getval("gstab"), gt1 = getval("gt1"), gzlvl1 = getval("gzlvl1"), gzlvlhs = getval("gzlvlhs"), wselpw = getval("wselpw"), wselpwr = getval("wselpwr"), mixN = getval("mixN"), prgtime = getval("prgtime"), prgpwr = getval("prgpwr"), phincr1 = getval("phincr1"); char wselshape[MAXSTR], sspul[MAXSTR],flipshape[MAXSTR], ESmode[MAXSTR], flipback[MAXSTR],prg_flg[MAXSTR],alt_grd[MAXSTR]; rof1 = getval("rof1"); if(rof1 > 2.0e-6) rof1 = 2.0e-6; getstr("wselshape", wselshape); getstr("flipshape", flipshape); getstr("prg_flg", prg_flg); getstr("alt_grd",alt_grd); if (phincr1 < 0.0) phincr1=360+phincr1; initval(phincr1,v8); settable(t1,16,phi1); settable(t3,16,phi3); settable(t5,16,phi5); settable(t6,16,rec); settable(t9,16,phi9); sub(ct,ssctr,v12); getelem(t1,v12,v1); getelem(t3,v12,v3); getelem(t5,v12,v5); getelem(t9,v12,v9); getelem(t6,v12,oph); add(v1,one,v10); if (alt_grd[0] == 'y') mod2(ct,v6); /* alternate gradient sign on every 2nd transient */ status(A); if (getflag("lkgate_flg")) lk_sample(); /* turn lock sampling on */ decpower(dpwr); obspower(tpwr); if (getflag("sspul")) steadystate(); delay(d1); if (getflag("lkgate_flg")) lk_hold(); /* turn lock sampling off */ status(B); if (getflag("ESmode")) { rgpulse(pw,zero,rof1,rof1); ifzero(v6); zgradpulse(gzlvl1,gt1); elsenz(v6); zgradpulse(-1.0*gzlvl1,gt1); endif(v6); obspower(wselpwr); delay(gstab); shaped_pulse(wselshape,wselpw,v9,10.0e-6,rof1); ifzero(v6); zgradpulse(gzlvl1,gt1); elsenz(v6); zgradpulse(-1.0*gzlvl1,gt1); endif(v6); obspower(tpwr); delay(gstab); /* do mixing */ rgpulse(pw,zero,rof1,rof1); ifzero(v6); rgradient('z',gzlvlhs); /* make it compatible with cold probes */ elsenz(v6); rgradient('z',-1.0*gzlvlhs); endif(v6); delay(mixN); rgradient('z',0.0); delay(gstab); if (getflag("flipback")) FlipBack(v1,v8); rgpulse(pw,v1,rof1,rof1); ExcitationSculpting(v5,v3,v6); if (prg_flg[A] == 'y') /* optional purge pulse */ { obspower(prgpwr); add(v1,one,v1); rgpulse(prgtime,v1,rof1,rof2); } else delay(rof2); } else rgpulse(pw,v1,rof1,rof2); status(C); }
pulsesequence() { int phase1 = (int)(getval("phase")+0.5), prgcycle=(int)(getval("prgcycle")+0.5); assign(ct,v17); assign(zero,v18); assign(zero,v19); if (getflag("prgflg") && (satmode[0] == 'y') && (prgcycle > 1.5)) { hlv(ct,v17); mod2(ct,v18); dbl(v18,v18); if (prgcycle > 2.5) { hlv(v17,v17); hlv(ct,v19); mod2(v19,v19); dbl(v19,v19); } } /* CONSTANTS FOR PHASE CALCULATIONS */ initval( 8.0,v13); initval( 32.0,v12); initval( 20.0,v11); initval( 192.0,v10); /* CALCULATE PHASECYCLE */ assign(zero,v14); /* phase of first pulse */ mod2(v17,v1); dbl(v1,v1); /* 0202 */ /* even/odd flag */ hlv(v17,v2); hlv(v2,v3); dbl(v3,v3); /* 0000222244446666 */ /* phase for transients 3 + 4*n */ /* 1+4*n = 0 */ mod2(v2,v2); /* 0011 */ /* switch for pairs */ assign(v13,v4); /* 8 */ ifzero(v2); incr(v4); elsenz(v2); decr(v4); endif(v2); modn(v4,v13,v4); /* 1177 */ /* standard phases for even transients */ /* 1 for 2+4*n, 7 for 4*n */ hlv(v13,v8); /* 4 */ add(v17,v8,v5); /* (ct+4) */ divn(v5,v12,v5); /* (ct+4)/32 */ divn(v17,v12,v6); /* ct/32 */ sub(v5,v6,v5); /* ((ct+4)/32-ct/32 */ /* 00000000 00000000 00000000 00001111 */ add(v17,v11,v6); /* (ct+20) */ divn(v6,v10,v6); /* (ct+20)/192 */ sub(v11,v7,v7); /* 16 */ add(v17,v7,v7); /* (ct+16) */ divn(v7,v10,v7); /* (ct+16)/192 */ add(v5,v6,v5); sub(v5,v7,v5); /* ((ct+4)/32-ct/32)+((ct+20)/192-(ct+16)/192) */ /* flag for exceptions on even transients */ dbl(v2,v6); /* 0022 */ add(v6,three,v6); /* 3355 */ ifzero(v1); /* for odd transients */ ifzero(v2); /* 1+4n: */ assign(zero,v3); /* 0xxx 0xxx 0xxx 0xxx */ endif(v2); /* 3+4n: xx0x xx2x xx4x xx6x */ elsenz(v1); /* for even transients */ ifzero(v5); /* normal case: */ assign(v4,v3); /* x1x7 */ elsenz(v5); /* exceptions: */ assign(v6,v3); /* x3x5 */ endif(v5); /* v3 = phase of first and second pulse */ /* in 45 degrees steps: */ /* 01070127 01470167 01070127 01470365 */ /* 01070127 01470167 01070127 01470365 */ /* 01070127 01470167 01070127 01470365 */ /* 01070127 01470167 01070127 01470365 */ /* 01070127 01470167 01070127 01470365 */ /* 01070127 01470365 01070127 01470365 */ endif(v1); assign(two,v4); /* v4 = phase of last 90 degrees pulse */ assign(v1,oph); /* oph = 0202 */ assign(zero,v20); if (getflag("prgflg") && (satmode[0] == 'y')) assign(v14,v20); add(oph,v18,oph); add(oph,v19,oph); if (phase1 == 2) incr(v14); /* States - Habercorn */ /* mod2(id2,v9); dbl(v9,v9); */ initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v9); add(v14,v9,v14); add(oph,v9,oph); /* BEGIN ACTUAL PULSE SEQUENCE CODE */ status(A); obsstepsize(45.0); delay(5.0e-5); if (getflag("sspul")) steadystate(); if (satmode[0] == 'y') { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); if (getflag("slpsat")) { if (getflag("prgflg")) xmtrphase(v3); shaped_satpulse("relaxD",satdly,v20); if (getflag("prgflg")) { shaped_purge(v14,v20,v18,v19); xmtrphase(zero); } } else { if (getflag("prgflg")) xmtrphase(v3); satpulse(satdly,v20,rof1,rof1); if (getflag("prgflg")) { purge(v14,v20,v18,v19); xmtrphase(zero); } } } else delay(d1); if (getflag("wet")) wet4(zero,one); status(B); xmtrphase(v3); rgpulse(pw, v14, rof1, 2.0e-6); if (d2 > 0.0) delay(d2 - (4.0*pw/PI) - 4.0e-6); else delay(d2); rgpulse(pw, zero, 2.0e-6, rof1); xmtrphase(zero); rgpulse(pw, v4, rof1, rof2); status(C); }
void VAModel(double *dstatesdt, double *states_out, double *MVs_out, double *measurements, double states[], double MVs[], double time, int is_initial, int disturbance_ID) { //-------------------------------------------------------------------------- /*output: dstatesdt: state derivatives states_out: states (generated in initialization) MVs_out: (duplicated when no perfect control is selected), (partially calculated when perfect control is selected) or (generated in initialization) measurements: total available measurements, which can be easily extended by a user --------------------------------------------------------------------------*/ //-------------------------------------------------------------------------- /*input: states MVs time: current running time in minute is_initial: 1 for loading initial steady state data, 0 for dynamic simulation disturbance_ID: 1 and 2 --------------------------------------------------------------------------*/ /*---------------------------------constants-------------------------------*/ //physical properties //Data is not the same as Table 1 in Luyben's paper double Vi[7] = {64.178, 37.400, 49.347, 52.866, 101.564, 18.01, 61.445}; double AIJ[7][7]= { {0., 0., 0., 0., 0., 0., 0.}, {0., 0., 0., 0., 0., 0., 0.}, {0., 0., 0., 0., 0., 0., 0.}, {0., 0., 0., 0., 0., 0., 0.}, {0., 0., 0., 0., 0., 1384.6, -136.1}, {0., 0., 0., 0., 2266.4, 0., 670.7}, {0., 0., 0., 0., 726.7, 230.6, 0.}, }; /*Data from Table 2 (Pure component physical properties).*/ double MW[7] = {32., 44.01, 28.052, 30.068, 86.088, 18.008, 60.052}; double SpG[7] = {0.5, 1.18, 0.57, 0.57, 0.85, 1.0, 0.98}; /*liquid specific gravity based on the density od water at 0 degC*/ double HVAP[7] = {2300., 2429., 1260., 1260., 8600., 10684., 5486.}; double HCAPLa[7] = {0.3, 0.6, 0.6, 0.6, 0.44, 0.99, 0.46}; double HCAPLb[7] = {0., 0., 0., 0., 0.0011, 0.0002, 0.0012}; double HCAPVa[7] = {0.218, 0.23, 0.37, 0.37, 0.29, 0.56, 0.52}; double HCAPVb[7] = {0.0001, 0., 0.0007, 0.0007, 0.0006, -0.0016, 0.0007}; /*Data from Table 3 (Component vapor pressure antoine coefficients*/ double A[7] = {9.2, 7.937, 9.497, 9.497, 12.6564, 14.6394, 14.5236}; double B[7] = {0., 0., -313., -313., -2984.45, -3984.92, -4457.83}; double C[7] = {273.16, 273.16, 273.16, 273.16, 226.66, 233.43, 258.45}; /*Others*/ double R = 1.987; /*Gas constant, kcal/(kmol*K)*/ double Dw = 999.; /*density of water at 0 degC, kg/m3*/ double T_ref = 273.16; /*Reference Temperature, K*/ /*---------------------------------constants-------------------------------*/ //feed stream properties /*F_O2 is MV 1*/ double y_O2[7]={1., 0., 0., 0., 0., 0., 0}; double T_O2[1]={30.}; double P_O2[1]={150.}; /*F_C2H4 is MV 2*/ double y_C2H4[7]={0., 0., 0.999, 0.001, 0., 0., 0}; double T_C2H4[1]={30.}; double P_C2H4[1]={128.}; /*F_HAc is MV 3*/ double x_HAc[7]={0., 0., 0., 0., 0., 0., 1.}; double T_HAc[1]={30.}; double P_HAc[1]={150.}; /*---------------------------------constants-------------------------------*/ /*Vaporizer*/ double Total_Volume_vaporizer[1] = {17.}; /*m3, which is 600/(3.2808)^3 in TMODS, not used in our model*/ double Working_Volume_vaporizer[1] = {4.}; /*m3, maximum measurable liquid holdup (100% level)*/ /*-----------------------------------------------------------------------------*/ /*Reactor*/ double friction_factor[1]={0.000794745091749963}; /*0.00147*2.20462*(3.2808)^3/144: deltaP=friction_factor*density*volumetric flowrate*volumetric flowrate*/ int NR[1] = {11}; double tube_L[1] ={10.}; int tube_number[1] = {622}; double tube_diameter[1] ={0.0371}; double tube_area[1] = {0.67240058914293}; /*tube_area=1/4*pi*tube_diameter*tube_diameter*tube_number. total intersection area, m^2*/ double UA_reactor[1] = {269.839144893182}; /*UA=4000*0.252*9/5/10/tube_area/1; kcal/min m^3 degC*/ double cata_bulk_density[1] = {385.}; double cata_heatcapacity[1] = {0.23}; double cata_porosity[1] = {0.8}; double cata_weight[1] = {2588.74226820028}; /*cata_weight=tube_area*tube_L*cata_bulk_density;*/ double E_r1[1] = {-42100.}; /*heat of reaction for r1, kcal/kmol*/ double E_r2[1] = {-316000.}; /*heat of reaction for r2, kcal/kmol*/ double sto1[7]={-0.5, 0., -1., 0., 1., 1., -1.}; double sto2[7]={-3., 2., -1., 0., 0., 2., 0.}; /*-----------------------------------------------------------------------------*/ /*FEHE*/ double UA_FEHE[1]={6483./60.0}; /*kcal/min degC*/ double Ref_hotflow[1]={589.670}; /*kg/min*/ double Ref_coolflow[1]={498.952}; /*kg/min*/ double Ref[1]={0.8}; /*-----------------------------------------------------------------------------*/ /*Separator*/ double Total_Volume_separator[1]={15.}; /*m3, which is 535/3.2808/3.2808/3.2808 in TMODS, not used in our model*/ double Working_Volume_separator[1]={8.}; /*m3, maximum measurable liquid holdup (100% level)*/ double Total_Gas_Loop_Volume[1]={170.}; /*m3, which is 6002/3.2808/3.2808/3.2808 in TMODS*/ double UA_separator[1]={20007.*0.252*9/5}; /*kcal/min degC*/ /*-----------------------------------------------------------------------------*/ /*Compressor*/ double Compressor_coefficient[1]={15000.}; /*delta_P=Compressor_coefficient*density/144*/ /*-----------------------------------------------------------------------------*/ /*Absorber*/ int NT_absorber[1]={8}; int NF_absorber[1]={2}; double Working_Volume_absorber[1]={8.5}; /*m3, which is 300/3.2808/3.2808/3.2808 in TMODS*/ double M0_absorber[8]={30/2.20462, 30/2.20462, 30/2.20462, 30/2.20462, 30/2.20462, 30/2.20462, 30/2.20462, 30/2.20462}; double L0_absorber[8]={16.327, 16.311, 0.911, 0.885, 0.853, 0.844, 0.829, 0.815}; double hydtau_absorber[1]={0.1}; double Nmt[8]={60/2.20462, 60/2.20462, 60/2.20462, 60/2.20462, 60/2.20462,60/2.20462, 60/2.20462, 60/2.20462}; double Qmt[8]={400*0.252, 400*0.252, 200*0.252, 200*0.252, 200*0.252, 200*0.252, 200*0.252, 200*0.252}; /*-----------------------------------------------------------------------------*/ /*CO2 Remove*/ double CO2_F_ref[1]={6.41360260517487}; double CO2_x_ref[1]={0.0134241598608995}; /*-----------------------------------------------------------------------------*/ /*Column*/ int NT_column[1]={20}; int NF_column[1]={15}; double P_top[1]={18.}; double P_bottom[1]={30.}; double K_decanter[3]={395., 0.05, 1.}; /*decanter partition coefficients*/ double hydtau_column[1]={0.1}; double M0_column[20]; /*Tray holdup (kmol)*/ double L0_column[20]; double Bottom_Working_Level_Volume[1]={5.66};/*m3, which is 200/3.2808/3.2808/3.2808 in TMODS*/ double Organic_Working_Level_Volume[1]={1.7};/*m3, which is 60/3.2808/3.2808/3.2808 in TMODS*/ double Aqueous_Working_Level_Volume[1]={1.7};/*m3, which is 60/3.2808/3.2808/3.2808 in TMODS*/ double HAcTank_Working_Level_Volume[1]={2.83};/*m3, which is 100/3.2808/3.2808/3.2808 in TMODS*/ double T_Column[20]={131, 121, 106, 96, 93, 92, 91, 90, 89, 88, 88, 87, 86, 85, 84, 80, 78, 77, 76, 75}; //initial guess of column temperature profile /*---------------------------------constants-------------------------------*/ /*---------------------------------variables-------------------------------*/ //vaporizer states double x_vaporizer[7], hup_vaporizer[1], T_vaporizer[1]; /*---------------------------------variables-------------------------------*/ //reactor states double C_O2[11], C_CO2[11], C_C2H4[11], C_VAc[11], C_H2O[11], C_HAc[11], T_reactor[11]; /*---------------------------------variables-------------------------------*/ //separator states double x_separator[7], hup_separator[1], TL_separator[1]; double y_separator[7], P_separator[1], TV_separator[1]; /*---------------------------------variables-------------------------------*/ //absorber states double x_absorber[8][7], M_absorber[8], TL_absorber[8]; double x_base[7], hup_base[1], T_base[1]; /*---------------------------------variables-------------------------------*/ //column, decanter and HAc tank states double x_column[20][7], M_column[20], x_bottom[7], hup_bottom[1]; double x_organic[7], hup_organic[1], x_aqueous[7], hup_aqueous[1]; double x_HAcTank[7], hup_HAcTank[1], T_HAcTank[1]; /*---------------------------------variables-------------------------------*/ //other states double T_VapHeaterOut[1], T_ABSIN_Gas[1], T_Circulation[1], T_Scrub[1], T_decanter[1], T_FEHEColdOut[1], T_SEPIN[1]; /*---------------------------------variables-------------------------------*/ /*---------------------------------MVs-------------------------------*/ double F_O2, F_C2H4, F_HAc, Q_Duty_Vaporizer, F_vaporizer, Q_Heater; double Shell_T_RCT, F_SepLiquidOUT, Shell_T_Sep, F_SepVaporOUT; double Q_Compressor, F_AbsLiquidOut, F_Circulation, Q_Circulation, F_Scrub, Q_Scrub; double F_CO2, F_Purge, bypass, F_Reflux, Q_Reboiler, F_Organic, F_Aqueous, F_Bottom, Q_Condenser, F_VapLiquidIn; /*---------------------------------MVs-------------------------------*/ /*---------------------------------Other Variables-------------------------------*/ double F_GasRemovalIn[1], x_GasRemovalIn[7], T_GasRemovalIn[1]; double F_ABSIN_Gas2[1], y_ABSIN_Gas2[7], T_ABSIN_Gas2[1]; double F_COLIN[1], x_COLIN[7], T_COLIN[1]; double F_CompressorIn[1],y_CompressorIn[7],T_CompressorIn[1]; double F_ABSIN_Gas[1], y_ABSIN_Gas[7], T_CompCoolerIn[1], P_recycle[1]; double dummy[1], HV_ABSIN_Gas[1], temp_x_HAcTank[7]={0.,0.,0.,0.,0.,0.,0.}; double temp_HV[1], HV_CompCoolerIn[1]; double AAA, BBB, CCC; double Level[1], TV[8], TL[8]; double F_AbsGasOut[1], y_AbsGasOut[7], T_AbsGasOut[1], x_AbsLiquidOut[7]; double T_AbsLiquidOut[1]; double F_CO2Purge[1], y_CO2Purge[7], T_CO2Purge[1], y_Purge[7], T_Purge[1], F_ToVap[1], y_ToVap[7]; double T_ToVap[1], F_FEHEIN_cold[1], y_FEHEIN_cold[7], T_FEHEIN_cold[1]; double ps[7], g[7]; double P_vaporizer[1], y_vaporizer[7], HV_vaporizer[1], HV_heaterOut[1]; double F_RCTIN[1], y_RCTIN[7], T_RCTIN[1], P_RCTIN, C_RCTIN, P_Drop, r_RCTIN, G_RCTIN, V_RCTIN; double C_FEHEIN_hot, F_FEHEIN_hot[1], y_FEHEIN_hot[7], T_FEHEIN_hot[1], F_FEHEColdOut[1], y_FEHEColdOut[7]; double F_SEPIN[1], y_SEPIN[7], F_VapVapIn[1], y_VapVapIn[7], T_VapVapIn[1], x_VapLiquidIn[7]={0.,0.,0.,0.,0.,0.,0.}, T_VapLiquidIn[1]; double P_Column[20], beta_out[1]; double Level_Vaporizer[1], y_Vaporizer[7], T_Vaporizer[1], P_Vaporizer[1]; double x_Organic[7], T_Organic[1], x_Aqueous[7], T_Aqueous[1]; double states_abs[72], states_vap[8], states_rct[70], states_sep[16], states_col[73]; double dstatesdt_abs[72], dstatesdt_vap[8], dstatesdt_rct[70], dstatesdt_sep[16], dstatesdt_col[73], dstatesdt_other[7]; double Q_Circulation_out[1], Q_Scrub_out[1], Q_Condenser_out[1]; int i, j; double sum1, sum2, sum3, temp_single_1[1], temp_single_2[1]; double VIJ[7][7]; for (i=0;i<7;i++) { for (j=0;j<7;j++) VIJ[i][j] = Vi[j]/Vi[i]; }; for (i=0;i<NF_column[0];i++) { M0_column[i]=2.3; L0_column[i]=8.7947; }; for (i=NF_column[0];i<NT_column[0];i++) { M0_column[i]=2.3; L0_column[i]=4.9741; } //if disturbance 1 if ((disturbance_ID==1) && (is_initial!=1)) { y_C2H4[2]=0.997; y_C2H4[3]=0.003; } //if disturbance 3 if ((disturbance_ID==3) && (is_initial!=1)) { MVs[2]=0; } //if disturbance 4 if ((disturbance_ID==4) && (is_initial!=1)) { MVs[0]=0; } /*---------------------------------variables-------------------------------*/ /*--------------------------------------------------------------------------------------*/ /*load initial states and MVs if requested */ /*--------------------------------------------------------------------------------------*/ if (is_initial==1) { time=0; //make sure time=0 in order to calculate process measurements steadystate(MVs, states); /*load steadystate*/ }; /*--------------------------------------------------------------------------------------*/ /*set states variables */ /*--------------------------------------------------------------------------------------*/ /*The Vaporizer has 8 states */ x_vaporizer[0] = states[0]; x_vaporizer[1] = states[1]; x_vaporizer[2] = states[2]; x_vaporizer[4] = states[3]; x_vaporizer[5] = states[4]; x_vaporizer[6] = states[5]; hup_vaporizer[0]=states[6]; T_vaporizer[0]=states[7]; /*The Reactor has 70 states */ for (i=0;i<NR[0]-1;i++) { C_O2[i+1]=states[i+8]; C_CO2[i+1]=states[NR[0]-1+i+8]; C_C2H4[i+1]=states[2*NR[0]-2+i+8]; C_VAc[i+1]=states[3*NR[0]-3+i+8]; C_H2O[i+1]=states[4*NR[0]-4+i+8]; C_HAc[i+1]=states[5*NR[0]-5+i+8]; T_reactor[i+1]=states[6*NR[0]-6+i+8]; }; /*The Separator has 16 states */ for (i=0;i<3;i++) { x_separator[i]=states[i+78]; x_separator[i+4]=states[i+3+78]; }; hup_separator[0]=states[84]; TL_separator[0]=states[85]; for (i=0;i<3;i++) { y_separator[i]=states[i+86]; y_separator[i+4]=states[i+3+86]; }; P_separator[0]=states[92]; TV_separator[0]=states[93]; /*The Absorber has 72 states */ for (i=0;i<NT_absorber[0];i++) { x_absorber[i][0]=states[i+94]; x_absorber[i][1]=states[i+NT_absorber[0]+94]; x_absorber[i][2]=states[i+2*NT_absorber[0]+94]; x_absorber[i][4]=states[i+3*NT_absorber[0]+94]; x_absorber[i][5]=states[i+4*NT_absorber[0]+94]; x_absorber[i][6]=states[i+5*NT_absorber[0]+94]; M_absorber[i]=states[i+6*NT_absorber[0]+94]; TL_absorber[i]=states[i+7*NT_absorber[0]+94]; }; x_base[0]=states[8*NT_absorber[0]+94]; x_base[1]=states[8*NT_absorber[0]+1+94]; x_base[2]=states[8*NT_absorber[0]+2+94]; x_base[4]=states[8*NT_absorber[0]+3+94]; x_base[5]=states[8*NT_absorber[0]+4+94]; x_base[6]=states[8*NT_absorber[0]+5+94]; hup_base[0]=states[164]; T_base[0]=states[165]; /*The Column has 69 states */ for (i=0;i<NT_column[0]; i++) { x_column[i][0]=states[i+166]; x_column[i][2]=states[i+NT_column[0]+166]; M_column[i]=states[i+2*NT_column[0]+166]; }; x_bottom[0]=states[226]; x_bottom[2]=states[227]; hup_bottom[0]=states[228]; x_organic[0]=states[229]; x_organic[2]=states[230]; hup_organic[0]=states[231]; x_aqueous[0]=states[232]; x_aqueous[2]=states[233]; hup_aqueous[0]=states[234]; /*The HAc Tank has 4 states */ x_HAcTank[0]=states[235]; x_HAcTank[2]=states[236]; hup_HAcTank[0]=states[237]; T_HAcTank[0]=states[238]; /*states for heater/cooler temperatures */ T_VapHeaterOut[0]=states[239]; T_ABSIN_Gas[0]=states[240]; T_Circulation[0]=states[241]; T_Scrub[0]=states[242]; T_decanter[0]=states[243]; T_FEHEColdOut[0]=states[244]; T_SEPIN[0]=states[245]; /*--------------------------------------------------------------------------------------*/ /*set MVs */ /*--------------------------------------------------------------------------------------*/ F_O2=MVs[0]; F_C2H4=MVs[1]; F_HAc=MVs[2]; Q_Duty_Vaporizer=MVs[3]; F_vaporizer=MVs[4]; Q_Heater=MVs[5]; Shell_T_RCT=MVs[6]; F_SepLiquidOUT=MVs[7]; Shell_T_Sep=MVs[8]; F_SepVaporOUT=MVs[9]; Q_Compressor=MVs[10]; F_AbsLiquidOut=MVs[11]; F_Circulation=MVs[12]; Q_Circulation=MVs[13]; F_Scrub=MVs[14]; Q_Scrub=MVs[15]; F_CO2=MVs[16]; F_Purge=MVs[17]; bypass=MVs[18]; F_Reflux=MVs[19]; Q_Reboiler=MVs[20]; Q_Condenser=MVs[21]; F_Organic=MVs[22]; F_Aqueous=MVs[23]; F_Bottom=MVs[24]; F_VapLiquidIn=MVs[25]; /*------------------------------------------------------------------------------------------*/ /*------------------------------------------------------------------------------------------*/ //get full values of separator liquid composition and absorber base liquid composition sum1=0.; sum2=0.; x_separator[3]=0.; x_base[3]=0.; for (i=0;i<7;i++) { sum1+=x_separator[i]; sum2+=x_base[i]; }; x_separator[3]=1-sum1; x_base[3]=1-sum2; //get mixer output temp_single_1[0]=F_SepLiquidOUT; temp_single_2[0]=F_AbsLiquidOut; mixer(F_GasRemovalIn,x_GasRemovalIn,T_GasRemovalIn, 0, temp_single_1, x_separator, TL_separator,temp_single_2,x_base,T_base,MW, HVAP, HCAPLa, HCAPLb, HCAPVa, HCAPVb); //calculate gas remove Gas_Remove(F_ABSIN_Gas2, y_ABSIN_Gas2, T_ABSIN_Gas2, F_COLIN, x_COLIN, T_COLIN, F_GasRemovalIn,x_GasRemovalIn,T_GasRemovalIn); //if disturbance 2 if ((disturbance_ID==2) && (is_initial!=1)) { F_COLIN[0]=0; } //get full values of separator vapor composition sum1=0.; y_separator[3]=0.; for (i=0;i<7;i++) sum1+=y_separator[i]; y_separator[3]=1-sum1; //get mixer output temp_single_1[0]=F_SepVaporOUT; mixer(F_CompressorIn,y_CompressorIn,T_CompressorIn, 1, temp_single_1,y_separator,TV_separator,F_ABSIN_Gas2,y_ABSIN_Gas2,T_ABSIN_Gas2, MW, HVAP,HCAPLa, HCAPLb, HCAPVa, HCAPVb); //calculate compressor Compressor(F_ABSIN_Gas,y_ABSIN_Gas,T_CompCoolerIn, P_recycle, F_CompressorIn,y_CompressorIn,TV_separator, P_separator, Compressor_coefficient, MW); //calculate compressor heat duty enthalpy_7(dummy, temp_HV, y_ABSIN_Gas, y_ABSIN_Gas, T_CompCoolerIn, MW, HVAP, HCAPLa, HCAPLb, HCAPVa, HCAPVb); HV_CompCoolerIn[0] = temp_HV[0]; sum1=0.; BBB=0.; AAA=0.; for (i=0;i<7;i++) { sum1+=HVAP[i]*y_ABSIN_Gas[i]; BBB+=HCAPVa[i]*MW[i]*y_ABSIN_Gas[i]; AAA+=0.5*HCAPVb[i]*MW[i]*y_ABSIN_Gas[i]; } CCC=-(F_ABSIN_Gas[0]*HV_CompCoolerIn[0]-Q_Compressor)/F_ABSIN_Gas[0]+sum1; if ((BBB*BBB-4*AAA*CCC)<0) printf("error on compressor temp"); //calculate the temperature derivative, tau=2 minute dstatesdt_other[1]=((-BBB+sqrt(BBB*BBB-4*AAA*CCC))/(2*AAA)-T_ABSIN_Gas[0])/2; //get full values of HAc tank liquid composition from 3 to 7 sum1=0.; x_HAcTank[1]=0.; for (i=0;i<3;i++) sum1+=x_HAcTank[i]; x_HAcTank[1]=1-sum1; temp_x_HAcTank[4] = x_HAcTank[0]; temp_x_HAcTank[5] = x_HAcTank[1]; temp_x_HAcTank[6] = x_HAcTank[2]; //Calculate absorber for (i=94;i<166;i++) { states_abs[i-94] = states[i]; } Absorber(dstatesdt_abs, dstatesdt_other, Level, TV, TL, F_AbsGasOut, y_AbsGasOut, T_AbsGasOut, x_AbsLiquidOut, T_AbsLiquidOut, states_abs,P_recycle[0],F_AbsLiquidOut,F_ABSIN_Gas[0], y_ABSIN_Gas, T_ABSIN_Gas[0], F_Scrub, temp_x_HAcTank, T_HAcTank[0], F_Circulation,Q_Circulation,Q_Scrub,NT_absorber[0], NF_absorber[0], Working_Volume_absorber[0], M0_absorber, L0_absorber, hydtau_absorber[0], Nmt, Qmt, T_Circulation, T_Scrub, VIJ, AIJ, MW, SpG, HVAP, HCAPLa, HCAPLb, HCAPVa, HCAPVb, A, B, C, R, Dw, T_ref); //Calculate CO2_Remove CO2_Remove(F_CO2Purge, y_CO2Purge, T_CO2Purge, y_Purge, T_Purge, F_ToVap, y_ToVap, T_ToVap, F_FEHEIN_cold, y_FEHEIN_cold, T_FEHEIN_cold, F_AbsGasOut, y_AbsGasOut,T_AbsGasOut, F_C2H4, y_C2H4, T_C2H4, bypass, F_Purge, F_CO2, CO2_F_ref[0], CO2_x_ref[0], MW, HVAP, HCAPLa, HCAPLb, HCAPVa, HCAPVb); //get full values of vaporizer liquid composition sum1=0.; x_vaporizer[3]=0.; for (i=0;i<7;i++) sum1+=x_vaporizer[i]; x_vaporizer[3]=1-sum1; //Calculate reactor input for (i=0;i<7;i++) ps[i]=exp(A[i]+B[i]/(T_vaporizer[0]+C[i])); gamma_wilson_7(g, T_vaporizer[0], x_vaporizer, VIJ, AIJ, R, T_ref); sum1=0.; for (i=0;i<7;i++) sum1+=x_vaporizer[i]*ps[i]*g[i]; P_vaporizer[0]=sum1; for (i=0;i<7;i++) y_vaporizer[i]=x_vaporizer[i]*ps[i]*g[i]/P_vaporizer[0]; enthalpy_7(dummy, temp_HV, y_vaporizer, y_vaporizer, T_vaporizer, MW, HVAP, HCAPLa, HCAPLb, HCAPVa, HCAPVb); HV_vaporizer[0] = temp_HV[0]; sum1=0.; BBB=0.; AAA=0.; for (i=0;i<7;i++) { sum1+=HVAP[i]*y_vaporizer[i]; BBB+=HCAPVa[i]*MW[i]*y_vaporizer[i]; AAA+=0.5*HCAPVb[i]*MW[i]*y_vaporizer[i]; }; CCC=-(F_vaporizer*HV_vaporizer[0]+Q_Heater)/F_vaporizer + sum1; if ((BBB*BBB-4*AAA*CCC)<0) printf("error on vaporizer heater temp"); //calculate the temperature derivative, tau=2 minute dstatesdt_other[0]=((-BBB+sqrt(BBB*BBB-4*AAA*CCC))/(2*AAA)-T_VapHeaterOut[0])/2; temp_single_1[0]=F_vaporizer; temp_single_2[0]=F_O2; mixer(F_RCTIN,y_RCTIN,T_RCTIN, 1, temp_single_1, y_vaporizer,T_VapHeaterOut, temp_single_2, y_O2, T_O2, MW, HVAP, HCAPLa, HCAPLb, HCAPVa, HCAPVb); P_RCTIN=P_vaporizer[0]; C_RCTIN=(P_RCTIN/14.696*101.325)/(8.314*(T_RCTIN[0]+T_ref)); /*Ideal Gas Law*/ sum1=0.; for (i=0;i<7;i++) sum1+=MW[i]*y_RCTIN[i]; G_RCTIN=F_RCTIN[0]*sum1; V_RCTIN=F_RCTIN[0]*8.314*(T_RCTIN[0]+273.15)/(P_RCTIN/14.696*101.325); /*volume flowrate*/ r_RCTIN=G_RCTIN/V_RCTIN; /*density*/ P_Drop=friction_factor[0]*r_RCTIN*V_RCTIN*V_RCTIN; //Calculate FEHE input T_FEHEIN_hot[0]=T_reactor[NR[0]-1]; C_FEHEIN_hot = (P_RCTIN-P_Drop)/14.696*101.325/(8.314*(T_FEHEIN_hot[0]+T_ref)); /*Ideal Gas Law*/ y_FEHEIN_hot[0] = C_O2[NR[0]-1]/C_FEHEIN_hot; y_FEHEIN_hot[1] = C_CO2[NR[0]-1]/C_FEHEIN_hot; y_FEHEIN_hot[2] = C_C2H4[NR[0]-1]/C_FEHEIN_hot; y_FEHEIN_hot[4] = C_VAc[NR[0]-1]/C_FEHEIN_hot; y_FEHEIN_hot[5] = C_H2O[NR[0]-1]/C_FEHEIN_hot; y_FEHEIN_hot[6] = C_HAc[NR[0]-1]/C_FEHEIN_hot; y_FEHEIN_hot[3] = 1-y_FEHEIN_hot[0]-y_FEHEIN_hot[1]-y_FEHEIN_hot[2]-y_FEHEIN_hot[4]-y_FEHEIN_hot[5]-y_FEHEIN_hot[6]; sum1=0.; for (i=0;i<7;i++) sum1+=MW[i]*y_FEHEIN_hot[i]; F_FEHEIN_hot[0]=G_RCTIN/sum1; //Calculate FEHE FEHE(dstatesdt_other,F_FEHEColdOut,y_FEHEColdOut, F_SEPIN, y_SEPIN, T_FEHEColdOut, T_SEPIN, F_FEHEIN_cold, y_FEHEIN_cold, T_FEHEIN_cold, F_FEHEIN_hot, y_FEHEIN_hot, T_FEHEIN_hot, UA_FEHE, Ref_hotflow, Ref_coolflow, Ref, MW, HVAP, HCAPLa, HCAPLb, HCAPVa,HCAPVb); //Calculate Vaporizer vapor input mixer(F_VapVapIn,y_VapVapIn,T_VapVapIn, 1, F_FEHEColdOut,y_FEHEColdOut,T_FEHEColdOut,F_ToVap,y_ToVap, T_ToVap, MW, HVAP, HCAPLa, HCAPLb, HCAPVa, HCAPVb); //Calculate Vaporizer liquid input x_VapLiquidIn[4]=x_HAcTank[0]; x_VapLiquidIn[5]=x_HAcTank[1]; x_VapLiquidIn[6]=x_HAcTank[2]; T_VapLiquidIn[0]=T_HAcTank[0]; //Calculate column pressure profile for (i=0;i<NT_column[0];i++) P_Column[i]=29.4-i*0.6; //get full values of column liquid composition sum1=0.; sum2=0.; sum3=0.; x_bottom[1]=0.; x_organic[1]=0.; x_aqueous[1]=0.; for (i=0;i<3;i++) { sum1+=x_bottom[i]; sum2+=x_organic[i]; sum3+=x_aqueous[i]; }; x_bottom[1]=1-sum1; x_organic[1]=1-sum2; x_aqueous[1]=1-sum3; /*---------------------------------------------------------------------------------------------*/ //unit operation dynamics for (i=0;i<8;i++) { states_vap[i] = states[i]; dstatesdt_vap[i]=0; } Vaporizer(dstatesdt_vap,Level_Vaporizer,y_Vaporizer,T_Vaporizer,P_Vaporizer, states_vap, F_vaporizer, Q_Duty_Vaporizer, F_VapVapIn[0], y_VapVapIn, T_VapVapIn[0], F_VapLiquidIn, x_VapLiquidIn, T_VapLiquidIn[0], Working_Volume_vaporizer[0], VIJ, AIJ, MW, SpG, HVAP, HCAPLa, HCAPLb, HCAPVa, HCAPVb, A, B, C, R, Dw, T_ref); for (i=8;i<78;i++) { states_rct[i-8] = states[i]; } Reactor(dstatesdt_rct, states_rct, time, F_RCTIN[0], y_RCTIN, T_RCTIN[0], P_RCTIN, C_RCTIN, P_Drop, Shell_T_RCT, sto1, sto2, NR[0], tube_L[0], tube_number[0], tube_diameter[0], tube_area[0], UA_reactor[0], cata_bulk_density[0], cata_heatcapacity[0], cata_porosity[0], cata_weight[0], E_r1[0], E_r2[0], MW, HVAP, HCAPLa, HCAPLb, HCAPVa, HCAPVb, T_ref); for (i=78;i<94;i++) { states_sep[i-78] = states[i]; dstatesdt_sep[i-78]=0; } Separator(dstatesdt_sep, states_sep, F_SEPIN[0], y_SEPIN, T_SEPIN[0], F_SepLiquidOUT, Shell_T_Sep, F_SepVaporOUT, Working_Volume_separator[0], Total_Gas_Loop_Volume[0], UA_separator[0], VIJ, AIJ, MW, SpG, HVAP, HCAPLa, HCAPLb, HCAPVa, HCAPVb, A, B, C, R, Dw, T_ref); for (i=166;i<239;i++) { states_col[i-166] = states[i]; dstatesdt_col[i-166]=0; } Column(dstatesdt_col, dstatesdt_other, T_Column, x_Organic, T_Organic, x_Aqueous, T_Aqueous, beta_out, states_col, P_Column, F_COLIN[0], x_COLIN, T_COLIN[0], F_Reflux, Q_Reboiler, F_Organic,F_Aqueous,F_Bottom, T_Column, F_HAc, x_HAc, T_HAc[0], F_Scrub, F_VapLiquidIn, 20, 15, P_top[0], P_bottom[0], T_decanter, K_decanter, hydtau_column[0], M0_column, L0_column, Bottom_Working_Level_Volume[0], Organic_Working_Level_Volume[0], Aqueous_Working_Level_Volume[0], HAcTank_Working_Level_Volume[0], VIJ, AIJ, MW, SpG, HVAP, HCAPLa, HCAPLb,HCAPVa, HCAPVb, A, B, C, R, Dw, T_ref, Q_Condenser); for (i=0;i<8;i++) *(dstatesdt+i) = dstatesdt_vap[i]; for (i=8;i<78;i++) *(dstatesdt+i) = dstatesdt_rct[i-8]; for (i=78;i<94;i++) *(dstatesdt+i) = dstatesdt_sep[i-78]; for (i=94;i<166;i++) *(dstatesdt+i) = dstatesdt_abs[i-94]; for (i=166;i<239;i++) *(dstatesdt+i) = dstatesdt_col[i-166]; for (i=239;i<246;i++) *(dstatesdt+i) = dstatesdt_other[i-239]; /*--------------------------------------------------------------------------------------*/ measurements[0]=P_vaporizer[0]; measurements[1]=hup_vaporizer[0]; measurements[2]=T_vaporizer[0]; measurements[3]=T_VapHeaterOut[0]; measurements[4]=T_reactor[NR[0]-1]; measurements[5]=F_FEHEIN_hot[0]; measurements[6]=T_FEHEColdOut[0]; measurements[7]=T_SEPIN[0]; measurements[8]=hup_separator[0]; measurements[9]=TL_separator[0]; measurements[10]=T_ABSIN_Gas[0]; measurements[11]=P_recycle[0]; measurements[12]=hup_base[0]; measurements[13]=T_Circulation[0]; measurements[14]=T_Scrub[0]; measurements[15]=F_ToVap[0]+F_FEHEIN_cold[0]; measurements[16]=F_Organic; measurements[17]=hup_organic[0]; measurements[18]=hup_aqueous[0]; measurements[19]=T_decanter[0]; measurements[20]=hup_bottom[0]; measurements[21]=T_Column[4]; measurements[22]=hup_HAcTank[0]; measurements[23]=x_Organic[4]; measurements[24]=x_Organic[5]; measurements[25]=x_Organic[6]; measurements[26]=x_bottom[0]; measurements[27]=x_bottom[1]; measurements[28]=x_bottom[2]; measurements[29]=y_ToVap[0]; measurements[30]=y_ToVap[1]; measurements[31]=y_ToVap[2]; measurements[32]=y_ToVap[3]; measurements[33]=y_ToVap[4]; measurements[34]=y_ToVap[5]; measurements[35]=y_ToVap[6]; measurements[36]=y_RCTIN[0]; measurements[37]=y_RCTIN[1]; measurements[38]=y_RCTIN[2]; measurements[39]=y_RCTIN[3]; measurements[40]=y_RCTIN[4]; measurements[41]=y_RCTIN[5]; measurements[42]=y_RCTIN[6]; for (i=0;i<26;i++) { MVs_out[i] = MVs[i]; } for (i=0;i<246;i++) { states_out[i] = states[i]; } //if disturbance 5 if ((disturbance_ID==5) && (is_initial!=1)) { measurements[23]=0; measurements[24]=0; measurements[25]=0; } //if disturbance 6 if ((disturbance_ID==6) && (is_initial!=1)) { measurements[26]=0; measurements[27]=0; measurements[28]=0; } //if disturbance 7 if ((disturbance_ID==7) && (is_initial!=1)) { measurements[29]=0; measurements[30]=0; measurements[31]=0; measurements[32]=0; measurements[33]=0; measurements[34]=0; measurements[35]=0; } }
pulsesequence() { double slpwrT = getval("slpwrT"), slpwT = getval("slpwT"), mixT = getval("mixT"), trim = getval("trim"), tauz1 = getval("tauz1"), tauz2 = getval("tauz2"), tauz3 = getval("tauz3"), tauz4 = getval("tauz4"), selpwrA = getval("selpwrA"), selpwA = getval("selpwA"), gzlvlA = getval("gzlvlA"), gtA = getval("gtA"), selpwrB = getval("selpwrB"), selpwB = getval("selpwB"), gzlvlB = getval("gzlvlB"), gtB = getval("gtB"), gstab = getval("gstab"), selfrq = getval("selfrq"); char selshapeA[MAXSTR], selshapeB[MAXSTR], slpatT[MAXSTR]; //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtA = syncGradTime("gtA","gzlvlA",1.0); gzlvlA = syncGradLvl("gtA","gzlvlA",1.0); gtB = syncGradTime("gtB","gzlvlB",1.0); gzlvlB = syncGradLvl("gtB","gzlvlB",1.0); getstr("slpatT",slpatT); getstr("selshapeA",selshapeA); getstr("selshapeB",selshapeB); if (strcmp(slpatT,"mlev17c") && strcmp(slpatT,"dipsi2") && strcmp(slpatT,"dipsi3") && strcmp(slpatT,"mlev17") && strcmp(slpatT,"mlev16")) abort_message("SpinLock pattern %s not supported!.\n", slpatT); assign(ct,v6); if (getflag("zqfilt")) { hlv(v6,v6); hlv(v6,v6); } settable(t1,4,ph1); getelem(t1,v6,v1); settable(t3,8,ph3); getelem(t3,v6,v11); settable(t4,8,ph4); settable(t2,4,ph2); getelem(t2,v6,v2); settable(t7,8,ph7); getelem(t7,v6,v7); settable(t8,4,ph8); getelem(t8,v6,v8); if (getflag("zqfilt")) getelem(t4,v6,oph); else assign(v1,oph); sub(v2,one,v3); add(v2,two,v4); add(v3,two,v5); mod4(ct,v10); /* BEGIN THE ACTUAL PULSE SEQUENCE */ status(A); obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); if (satmode[0] == 'y') { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); satpulse(satdly,v6,rof1,rof1); } else delay(d1); if (getflag("wet")) wet4(zero,one); status(B); rgpulse(pw, v1, rof1, rof1); if (selfrq != tof) obsoffset(selfrq); zgradpulse(gzlvlA,gtA); delay(gstab); obspower(selpwrA); shaped_pulse(selshapeA,selpwA,v1,rof1,rof1); obspower(tpwr); zgradpulse(gzlvlA,gtA); delay(gstab); if (selfrq != tof) delay(2*OFFSET_DELAY); zgradpulse(gzlvlB,gtB); delay(gstab); obspower(selpwrB); shaped_pulse(selshapeB,selpwB,v2,rof1,rof1); obspower(slpwrT); zgradpulse(gzlvlB,gtB); delay(gstab); if (selfrq != tof) obsoffset(tof); if (mixT > 0.0) { rgpulse(trim,v11,0.0,0.0); if (dps_flag) rgpulse(mixT,v3,0.0,0.0); else SpinLock(slpatT,mixT,slpwT,v2,v3,v4,v5, v9); } if (getflag("zqfilt")) { obspower(tpwr); rgpulse(pw,v7,1.0e-6,rof1); ifzero(v10); delay(tauz1); endif(v10); decr(v10); ifzero(v10); delay(tauz2); endif(v10); decr(v10); ifzero(v10); delay(tauz3); endif(v10); decr(v10); ifzero(v10); delay(tauz4); endif(v10); rgpulse(pw,v8,rof1,rof2); } else delay(rof2); status(C); }
pulsesequence() { double mixN = getval("mixN"), gzlvlC = getval("gzlvlC"), gtC = getval("gtC"), gstab = getval("gstab"), selpwrA = getval("selpwrA"), selpwA = getval("selpwA"), gzlvlA = getval("gzlvlA"), gtA = getval("gtA"), selpwrB = getval("selpwrB"), selpwB = getval("selpwB"), gzlvlB = getval("gzlvlB"), gtB = getval("gtB"), selfrq = getval("selfrq"), zqfpw3 = getval("zqfpw3"), zqfpwr3 = getval("zqfpwr3"), gzlvlzq3 = getval("gzlvlzq3"), mixNcorr, sweeppw = getval("sweeppw"), sweeppwr = getval("sweeppwr"); char sweepshp[MAXSTR], selshapeA[MAXSTR], selshapeB[MAXSTR], zqfpat3[MAXSTR]; int prgcycle=(int)(getval("prgcycle")+0.5); //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtC = syncGradTime("gtC","gzlvlC",1.0); gzlvlC = syncGradLvl("gtC","gzlvlC",1.0); gtA = syncGradTime("gtA","gzlvlA",1.0); gzlvlA = syncGradLvl("gtA","gzlvlA",1.0); gtB = syncGradTime("gtB","gzlvlB",1.0); gzlvlB = syncGradLvl("gtB","gzlvlB",1.0); getstr("sweepshp",sweepshp); getstr("selshapeA",selshapeA); getstr("selshapeB",selshapeB); getstr("zqfpat3",zqfpat3); mixNcorr=0.0; if (getflag("Gzqfilt")) mixNcorr=getval("zqfpw3"); assign(ct,v17); assign(zero,v18); assign(zero,v19); if (getflag("prgflg") && (satmode[0] == 'y') && (prgcycle > 1.5)) { hlv(ct,v17); mod2(ct,v18); dbl(v18,v18); if (prgcycle > 2.5) { hlv(v17,v17); hlv(ct,v19); mod2(v19,v19); dbl(v19,v19); } } assign(zero,v16); if (getflag("STEP")) { mod2(v17,v16); hlv(v17,v17); } hlv(v17,v1); hlv(v1,v1); hlv(v1,v1); hlv(v1,v1); mod4(v1,v1); mod4(v17,v2); add(v1,v2,v2); hlv(v17,v3); hlv(v3,v3); mod4(v3,v3); add(v1,v3,v3); dbl(v3,v4); dbl(v2,oph); add(oph,v4,oph); add(oph,v1,oph); if (!getflag("NOE")) assign(v1,oph); /* if prgflg='n' the next two steps are non-events */ add(oph,v18,oph); add(oph,v19,oph); /* if STEP='n', the next two steps are non-events */ add(oph,v16,oph); add(oph,v16,oph); add(v1,v16,v16); /*v16 is the phase of first echo pulse in steptrain */ /* example: v1=0,0,2,2 v16=0,1,2,3 oph=0,2,2,0 - if STEP='y'*/ /* v1=0,2 v16=0 oph=0,2 - if STEP='n' */ if (getflag("prgflg") && (satmode[0] == 'y')) assign(v1,v6); /* BEGIN THE ACTUAL PULSE SEQUENCE */ status(A); obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); if (satmode[0] == 'y') { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); if (getflag("slpsat")) { shaped_satpulse("relaxD",satdly,v6); if (getflag("prgflg")) shaped_purge(v1,v6,v18,v19); } else { satpulse(satdly,v6,rof1,rof1); if (getflag("prgflg")) purge(v1,v6,v18,v19); } } else delay(d1); if (getflag("wet")) wet4(zero,one); status(B); rgpulse(pw,v1,rof1,rof2); if (getflag("STEP")) steptrain(v1,v16); if (getflag("NOE")) { if (selfrq != tof) obsoffset(selfrq); zgradpulse(gzlvlA,gtA); delay(gstab); obspower(selpwrA); shaped_pulse(selshapeA,selpwA,v2,rof1,rof1); obspower(tpwr); zgradpulse(gzlvlA,gtA); delay(gstab); if (selfrq != tof) delay(2*OFFSET_DELAY); zgradpulse(gzlvlB,gtB); delay(gstab); obspower(selpwrB); shaped_pulse(selshapeB,selpwB,v3,rof1,rof1); obspower(tpwr); zgradpulse(gzlvlB,gtB); delay(gstab); if (selfrq != tof) obsoffset(tof); rgpulse(pw,v1,rof1,rof1); obspower(sweeppwr); delay(0.31*mixN); zgradpulse(gzlvlC,gtC); delay(gstab); shaped_pulse(sweepshp,sweeppw,zero,rof1,rof1); delay(gstab); zgradpulse(-gzlvlC,gtC); delay(0.49*mixN); zgradpulse(-gzlvlC,2*gtC); delay(gstab); if (getflag("Gzqfilt")) { obspower(zqfpwr3); rgradient('z',gzlvlzq3); delay(100.0e-6); shaped_pulse(zqfpat3,zqfpw3,zero,rof1,rof1); delay(100.0e-6); rgradient('z',0.0); } else shaped_pulse(sweepshp,sweeppw,zero,rof1,rof1); delay(gstab); zgradpulse(gzlvlC,2*gtC); delay(0.2*mixN); obspower(tpwr); rgpulse(pw,v1,rof1,rof2); } status(C); }
pulsesequence() { double slpwrT = getval("slpwrT"), slpwT = getval("slpwT"), mixT = getval("mixT"), trim = getval("trim"), tauz1 = getval("tauz1"), tauz2 = getval("tauz2"), tauz3 = getval("tauz3"), tauz4 = getval("tauz4"), selpwrA = getval("selpwrA"), selpwA = getval("selpwA"), gzlvlA = getval("gzlvlA"), gtA = getval("gtA"), selpwrB = getval("selpwrB"), selpwB = getval("selpwB"), gzlvlB = getval("gzlvlB"), gtB = getval("gtB"), gstab = getval("gstab"), selfrq = getval("selfrq"); char selshapeA[MAXSTR], selshapeB[MAXSTR], slpatT[MAXSTR], alt_grd[MAXSTR]; //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtA = syncGradTime("gtA","gzlvlA",1.0); gzlvlA = syncGradLvl("gtA","gzlvlA",1.0); gtB = syncGradTime("gtB","gzlvlB",1.0); gzlvlB = syncGradLvl("gtB","gzlvlB",1.0); getstr("slpatT",slpatT); getstr("selshapeA",selshapeA); getstr("selshapeB",selshapeB); getstr("alt_grd",alt_grd); /* alternate gradient sign on every 2nd transient */ if (strcmp(slpatT,"mlev17c") && strcmp(slpatT,"dipsi2") && strcmp(slpatT,"dipsi3") && strcmp(slpatT,"mlev17") && strcmp(slpatT,"mlev16")) abort_message("SpinLock pattern %s not supported!.\n", slpatT); assign(ct,v17); assign(v17,v6); if (getflag("zqfilt")) { hlv(v6,v6); hlv(v6,v6); } settable(t1,4,ph1); getelem(t1,v6,v1); settable(t3,8,ph3); getelem(t3,v6,v11); settable(t4,8,ph4); settable(t5,4,ph5); getelem(t5,v6,v5); settable(t2,4,ph2); getelem(t2,v6,v2); settable(t7,8,ph7); getelem(t7,v6,v7); settable(t8,4,ph8); getelem(t8,v6,v8); settable(t11,16,phs8); getelem(t11,v6,v3); /* 1st echo in ES */ settable(t12,16,phs9); getelem(t12,v6,v4); /* 2nd exho in ES */ if (getflag("zqfilt")) getelem(t4,v6,oph); else assign(v1,oph); add(oph,v5,oph); mod4(oph,oph); sub(v2,one,v21); add(v21,two,v23); mod4(ct,v10); if (alt_grd[0] == 'y') mod2(ct,v12); /* alternate gradient sign on every 2nd transient */ /* BEGIN THE ACTUAL PULSE SEQUENCE */ status(A); if (getflag("lkgate_flg")) lk_sample(); /* turn lock sampling on */ obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); delay(d1); if (getflag("lkgate_flg")) lk_hold(); /* turn lock sampling off */ status(B); rgpulse(pw, v1, rof1, rof1); if (selfrq != tof) obsoffset(selfrq); ifzero(v12); zgradpulse(gzlvlA,gtA); elsenz(v12); zgradpulse(-gzlvlA,gtA); endif(v12); delay(gstab); obspower(selpwrA); shaped_pulse(selshapeA,selpwA,v1,rof1,rof1); obspower(tpwr); ifzero(v12); zgradpulse(gzlvlA,gtA); elsenz(v12); zgradpulse(-gzlvlA,gtA); endif(v12); delay(gstab); if (selfrq != tof) delay(2*OFFSET_DELAY); ifzero(v12); zgradpulse(gzlvlB,gtB); elsenz(v12); zgradpulse(-gzlvlB,gtB); endif(v12); delay(gstab); obspower(selpwrB); shaped_pulse(selshapeB,selpwB,v2,rof1,rof1); obspower(slpwrT); ifzero(v12); zgradpulse(gzlvlB,gtB); elsenz(v12); zgradpulse(-gzlvlB,gtB); endif(v12); delay(gstab); if (selfrq != tof) obsoffset(tof); if (mixT > 0.0) { rgpulse(trim,v11,0.0,0.0); if (dps_flag) rgpulse(mixT,v21,0.0,0.0); else SpinLock(slpatT,mixT,slpwT,v21); } if (getflag("zqfilt")) { obspower(tpwr); rgpulse(pw,v7,1.0e-6,rof1); ifzero(v10); delay(tauz1); endif(v10); decr(v10); ifzero(v10); delay(tauz2); endif(v10); decr(v10); ifzero(v10); delay(tauz3); endif(v10); decr(v10); ifzero(v10); delay(tauz4); endif(v10); rgpulse(pw,v8,rof1,2.0e-6); } ExcitationSculpting(v3,v4,v12); delay(rof2); status(C); }
pulsesequence() { double slpwrT = getval("slpwrT"), slpwT = getval("slpwT"), trim = getval("trim"), mixT = getval("mixT"), gzlvlz = getval("gzlvlz"), gtz = getval("gtz"), zfphinc = getval("zfphinc"); char slpatT[MAXSTR]; int phase1 = (int)(getval("phase")+0.5); /* LOAD AND INITIALIZE VARIABLES */ getstr("slpatT",slpatT); if (strcmp(slpatT,"mlev17c") && strcmp(slpatT,"dipsi2") && strcmp(slpatT,"dipsi3") && strcmp(slpatT,"mlev17") && strcmp(slpatT,"mlev16")) abort_message("SpinLock pattern %s not supported!.\n", slpatT); /* mod2(id2,v14); dbl(v14,v14); */ initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v14); sub(ct,ssctr,v12); settable(t1,4,ph1); getelem(t1,v12,v6); settable(t2,4,ph2); getelem(t2,v12,v1); settable(t3,8,ph3); settable(t4,4,ph4); getelem(t4,v12,v13); settable(t5,4,ph5); getelem(t5,v12,v2); settable(t7,8,ph7); getelem(t7,v12,v7); settable(t8,4,ph8); getelem(t8,v12,v8); assign(v1,oph); if (getflag("zfilt")) getelem(t3,v12,oph); sub(v2, one, v3); add(two, v2, v4); add(two, v3, v5); if (phase1 == 2) {incr(v1); incr(v6);} add(v1, v14, v1); add(v6, v14, v6); add(oph,v14,oph); /* The following is for flipback pulse */ zfphinc=zfphinc+180; if (zfphinc < 0) zfphinc=zfphinc+360; initval(zfphinc,v10); /* BEGIN ACTUAL PULSE SEQUENCE CODE */ status(A); obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); if (satmode[0] == 'y') { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); satpulse(satdly,v6,rof1,rof1); } else delay(d1); if (getflag("wet")) wet4(zero,one); status(B); rgpulse(pw, v1, rof1, rof1); obspower(slpwrT); txphase(v13); if (d2 > 0.0) delay(d2 - rof1 - POWER_DELAY - (2*pw/PI)); else delay(d2); if (mixT > 0.0) { rgpulse(trim,v13,0.0,0.0); if (dps_flag) rgpulse(mixT,v3,0.0,0.0); else SpinLock(slpatT,mixT,slpwT,v2,v3,v4,v5, v9); } if ((getflag("zfilt")) && (getflag("PFGflg"))) { obspower(tpwr); rgpulse(pw,v7,1.0e-6,rof1); zgradpulse(gzlvlz,gtz); delay(gtz/3); if (getflag("flipback")) FBpulse(v8,v10); rgpulse(pw,v8,rof1,rof2); } else delay(rof2); status(C); }
void pulsesequence() { double j1min = getval("j1min"), j1max = getval("j1max"), gzlvl0 = getval("gzlvl0"), gt0 = getval("gt0"), tau, tauA, tauB, taumb; int phase1 = (int)(getval("phase")+0.5); tauA = 1/(2*(j1min + 0.146*(j1max - j1min))); tauB = 1/(2*(j1max - 0.146*(j1max - j1min))); taumb = 1/(2*(getval("jnxh"))); tau=1/(j1min+j1max); settable(t1,1,ph1); settable(t2,2,ph2); settable(t3,4,ph3); settable(t4,1,ph4); settable(t5,8,ph5); settable(t6,8,ph6); settable(t7,4,ph7); if (getflag("jfilter")) { if (getflag("PFGflg")) { getelem(t2,ct,v3); getelem(t7,ct,oph); getelem(t3,ct,v4); } else { getelem(t3,ct,v3); getelem(t6,ct,oph); getelem(t5,ct,v4); } } else { getelem(t2,ct,v3); getelem(t7,ct,oph); getelem(t3,ct,v4); } if (phase1 == 2) incr(v3); /* mod2(id2,v10); dbl(v10,v10); */ initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v10); add(v3,v10,v3); add(oph,v10,oph); status(A); delay(5.0e-5); if (getflag("sspul")) steadystate(); if (satmode[0] == 'y') { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); satpulse(satdly,zero,rof1,rof1); } else delay(d1); if (getflag("wet")) wet4(zero,one); decpower(pwxlvl); status(B); rgpulse(pw,t1,rof1,rof2); /* Start of J filter */ if (getflag("jfilter")) { if (getflag("PFGflg")) { zgradpulse(gzlvl0/2,gt0); delay(tauA - gt0); decrgpulse(pwx, zero, rof1, rof1); zgradpulse(-gzlvl0/3,gt0); delay(tauB - gt0); decrgpulse(pwx, zero, rof1, rof1); zgradpulse(-gzlvl0/6,gt0); delay(gt0/3); } else { delay(tau - rof2 - rof1); decrgpulse(pwx,t2,rof1,rof1); } } /* End of J filter */ delay(taumb); decrgpulse(pwx,v3,rof1,2.0e-6); if (d2/2 > 0.0) delay(d2/2 - 2*pwx/PI - pw - 4.0e-6); else delay(d2/2); rgpulse(pw*2.0,t4,2.0e-6,2.0e-6); if (d2/2 > 0.0) delay(d2/2 - 2*pwx/PI - pw - 4.0e-6); else delay(d2/2); decrgpulse(pwx,v4,2.0e-6,rof2); decpower(dpwr); status(C); }
pulsesequence() { int prgcycle = (int)(getval("prgcycle")+0.5); double cmult = getval("cmult"); assign(ct,v17); assign(zero,v18); assign(zero,v19); if (getflag("prgflg") && (satmode[0] == 'y') && (prgcycle > 1.5)) { hlv(ct,v17); mod2(ct,v18); dbl(v18,v18); if (prgcycle > 2.5) { hlv(v17,v17); hlv(ct,v19); mod2(v19,v19); dbl(v19,v19); } } assign(zero,v4); settable(t1,8,ph1); settable(t2,8,ph2); settable(t3,8,ph3); getelem(t1,v17,v1); getelem(t2,v17,v2); getelem(t3,v17,oph); if (getflag("prgflg") && (satmode[0] == 'y')) assign(v1,v4); add(oph,v18,oph); add(oph,v19,oph); /* mod2(id2,v10); dbl(v10,v10); */ 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); delay(5.0e-5); if (getflag("sspul")) steadystate(); if (satmode[0] == 'y') { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); if (getflag("slpsat")) { shaped_satpulse("relaxD",satdly,v4); if (getflag("prgflg")) shaped_purge(v1,v4,v18,v19); } else { satpulse(satdly,v4,rof1,rof1); if (getflag("prgflg")) purge(v1,v4,v18,v19); } } else delay(d1); if (getflag("wet")) wet4(zero,one); status(B); rgpulse(pw, v1, rof1, rof1); delay(d2); rgpulse(cmult*pw, v2, rof1, rof2); status(C); }
pulsesequence() { double hsglvl = getval("hsglvl"), hsgt = getval("hsgt"), tau, evolcorr, taug, mult = getval("mult"), null = getval("null"); int phase1 = (int)(getval("phase")+0.5), prgcycle = (int)(getval("prgcycle")+0.5), ZZgsign; tau = 1/(4*(getval("j1xh"))); if (mult > 0.5) taug = 2*tau; else taug = 0.0; evolcorr=2*pw+4.0e-6; ZZgsign=-1; if (mult == 2) ZZgsign=1; assign(ct,v17); assign(zero,v18); assign(zero,v19); if (getflag("prgflg") && (satmode[0] == 'y') && (prgcycle > 1.5)) { hlv(ct,v17); mod2(ct,v18); dbl(v18,v18); if (prgcycle > 2.5) { hlv(v17,v17); hlv(ct,v19); mod2(v19,v19); dbl(v19,v19); } } settable(t1,4,ph1); settable(t2,2,ph2); settable(t3,8,ph3); settable(t4,16,ph4); settable(t5,16,ph5); getelem(t1, v17, v1); getelem(t3, v17, v3); getelem(t4, v17, v4); getelem(t2, v17, v2); getelem(t5, v17, oph); assign(zero,v6); add(oph,v18,oph); add(oph,v19,oph); /* mod2(id2,v14); dbl(v14,v14); */ initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v14); if (phase1 == 2) incr(v2); add(v2,v14,v2); add(oph,v14,oph); if (mult > 0.5) add(oph,two,oph); status(A); obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); 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); } } else delay(d1); if (getflag("wet")) wet4(zero,one); decpower(pwxlvl); status(B); if ((getflag("PFGflg")) && (getflag("nullflg"))) { rgpulse(0.5*pw,zero,rof1,rof1); delay(2*tau); simpulse(2.0*pw,2.0*pwx,zero,zero,rof1,rof1); delay(2*tau); rgpulse(1.5*pw,two,rof1,rof1); zgradpulse(hsglvl,hsgt); delay(1e-3); } else if (null != 0.0) { rgpulse(pw,zero,rof1,rof1); delay(2*tau); simpulse(2*pw,2*pwx,zero,zero,rof1,rof1); delay(2*tau); rgpulse(pw,two,rof1,rof1); if (satmode[1] == 'y') { if (getflag("slpsat")) shaped_satpulse("BIRDnull",null,zero); else satpulse(null,zero,rof1,rof1); } else delay(null); } rgpulse(pw,v6,rof1,rof1); delay(tau); simpulse(2*pw,2*pwx,zero,zero,rof1,rof1); delay(tau); rgpulse(pw,v1,rof1,rof1); if (getflag("PFGflg")) { zgradpulse(hsglvl,2*hsgt); delay(1e-3); } decrgpulse(pwx,v2,rof1,2.0e-6); if (mult > 0.5) { delay(d2/2); rgpulse(2*pw,zero,2.0e-6,2.0e-6); delay(d2/2); delay(taug); simpulse(mult*pw,2*pwx,zero,zero,rof1,rof1); delay(taug + evolcorr); } else { if (d2/2 > 0.0) delay(d2/2 - (2*pwx/PI) - pw - 4.0e-6); else delay(d2/2); rgpulse(2*pw,zero,2.0e-6,2.0e-6); if (d2/2 > 0.0) delay(d2/2 - (2*pwx/PI) - pw - 4.0e-6); else delay(d2/2); } decrgpulse(pwx,v4,2.0e-6,rof1); if (getflag("PFGflg")) { zgradpulse(ZZgsign*0.6*hsglvl,1.2*hsgt); delay(1e-3); } rgpulse(pw,v3,rof1,rof1); delay(tau - (2*pw/PI) - 2*rof1); simpulse(2*pw,2*pwx,zero,zero,rof1, rof2); decpower(dpwr); delay(tau - POWER_DELAY); status(C); }
pulsesequence() { double hsglvl = getval("hsglvl"), hsgt = getval("hsgt"), slpwT = getval("slpwT"), slpwrT = getval("slpwrT"), trim = getval("trim"), mixT = getval("mixT"), mult = getval("mult"), tau, null = getval("null"); char slpatT[MAXSTR]; int phase1 = (int)(getval("phase")+0.5); tau = 1/(4*(getval("j1xh"))); getstr("slpatT",slpatT); if (strcmp(slpatT,"mlev17c") && strcmp(slpatT,"dipsi2") && strcmp(slpatT,"dipsi3") && strcmp(slpatT,"mlev17") && strcmp(slpatT,"mlev16")) abort_message("SpinLock pattern %s not supported!.\n", slpatT); settable(t1,8,phs1); settable(t2,8,phs2); settable(t3,2,phs3); settable(t4,1,phs4); settable(t5,4,phs5); getelem(t3,ct,v6); getelem(t2,ct,oph); assign(two,v3); sub(v3,one,v2); add(v3,one,v4); add(v3,two,v5); /* mod2(id2,v14); dbl(v14,v14); */ initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v14); if (phase1 == 2) incr(v6); add(v14, v6, v6); add(v14, oph, oph); /* BEGIN ACTUAL PULSE SEQUENCE CODE */ status(A); obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); if (satmode[0] == 'y') { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); satpulse(satdly,zero,rof1,rof1); } else delay(d1); if (getflag("wet")) wet4(zero,one); decpower(pwxlvl); status(B); if ((getflag("PFGflg")) && (getflag("nullflg"))) { rgpulse(0.5*pw,zero,rof1,rof1); delay(2*tau); simpulse(2.0*pw,2.0*pwx,zero,zero,rof1,rof1); delay(2*tau); rgpulse(1.5*pw,two,rof1,rof1); zgradpulse(hsglvl,hsgt); delay(1e-3); } else if (null != 0.0) { rgpulse(pw,zero,rof1,rof1); delay(2*tau); simpulse(2*pw,2*pwx,zero,zero,rof1,rof1); delay(2*tau); rgpulse(pw,two,rof1,rof1); if (satmode[1] == 'y') satpulse(null,zero,rof1,rof1); else delay(null); } rgpulse(pw, t1, rof1, rof1); delay(2*tau - (2*pw/PI) - 2*rof1); decrgpulse(pwx, v6, rof1, 1.0e-6); if (d2 > 0.0) delay(d2/2.0 - pw - 3.0e-6 - (2*pwx/PI)); else delay(d2/2.0); rgpulse(2.0*pw, t4, 2.0e-6, 2.0e-6); if (d2 > 0.0) delay(d2/2.0 - pw - 3.0e-6 - (2*pwx/PI)); else delay(d2/2.0); decrgpulse(pwx, t5, 1.0e-6, rof1); obspower(slpwrT); decpower(dpwr); delay(2*tau - rof1 - 2*POWER_DELAY); if (mixT > 0.0) { rgpulse(trim,v5,0.0,0.0); if (dps_flag) rgpulse(mixT,v3,0.0,0.0); else SpinLock(slpatT,mixT,slpwT,v2,v3,v4,v5,v9); } if (mult > 0.5) { obspower(tpwr); obspower(pwxlvl); delay(2*tau - POWER_DELAY - rof1); simpulse(2*pw,mult*pwx,zero,zero,rof1,rof2); decpower(dpwr); delay(2*tau); } else delay(rof2); status(C); }