------------------------------------------------------------------------------- -- -- -- Experiment Source Code -- -- Delta NMR Experiment & Machine Control Interface -- -- -- -- Copyright (c) 2015 JEOL Ltd -- -- All Rights Reserved -- -- -- ------------------------------------------------------------------------------- -- HELP.eng: double_cp_2d -- Category: solids, ultrafast mas, 2D, heteronuclear correlation and homonuclear correlation. -- By Rongchun Zhang, 2021/12/14 header filename => "TQ_DQ_SQ_double_cp_2d"; sample_id => ""; comment => "double_cp_2d"; process = "2d_solid.list"; include "header_solid"; end header; instrument include "instrument_solid"; end instrument; acquisition x_domain => "Proton"; x_offset => 5[ppm]; x_sweep => 100[kHz]; x_points => 1024; scans => 8; x_prescans => 0; mod_return => 2; z_domain => "Carbon13"; z_offset => 100[ppm]; z_sweep => 20[kHz], help "rotor-synchronization"; z_dwell =? 1/z_sweep; z_points => 32; z_acq_time =? z_points / z_sweep; y_domain =? x_domain; y_offset = x_offset * 3; y_sweep => 30[kHz], help "rotor-synchronization"; y_dwell =? 1/y_sweep; y_points => 16; y_acq_time =? y_points / y_sweep; include "acquisition_solid"; include "acquisition_2d"; end acquisition; pulse collect COMPLEX,OBS COMPLEX Complex,IRR; initial_wait = 10.0[ms]; irr_domain => "Carbon13" , help "decoupled nucleus"; irr_offset => 100[ppm] , help "decoupler offset"; Pulse_Setup =? "#Setup hard pulses#"; obs_width_90 => x90; obs_width_180 => x90*2; obs_width_2q => x90; obs_amp_pulse => 100[%], 0[%]->100[%] : 10[m%]; irr_width_90 => irr90; irr_width_180 => irr90*2; irr_amp_pulse => 100[%]; CP1_Setup =? "#Setup first CP#"; obs_shape_cp = "RAMP_cp"; contact_time => 2[ms], 0[us]->20[ms] : 10[us], help "contact time"; obs_amp_cp => 30[%], 0[%]->100[%] : 10[m%], help "CP amplitude of irr channel"; obs_amp_grad => 10[%], -100[%]->100[%] : 0.1[%], help "irr CP sweep range (-irr_amp_grad/2->+irr_amp_grad)"; irr_shape_cp = "RAMP_cp"; irr_amp_cp => 30[%], 0[%]->100[%] : 10[m%], help "amplitude of obs channel"; irr_amp_grad => 1[%], -100[%]->100[%] : 0.1[%], help "obs CP sweep range (-obs_amp_grad/2->+obs_amp_grad)"; CP2_Setup =? "#Setup second CP#"; obs_shape_cp2 = "RAMP_cp2"; contact_time2 => 0.5[ms], 0[us]->20[ms] : 10[us], help "contact time"; obs_amp_cp2 => obs_amp_cp, 0[%]->100[%] : 10[m%], help "CP amplitude of irr channel"; obs_amp_grad2 => -obs_amp_grad; irr_shape_cp2 = "RAMP_cp2"; irr_amp_cp2 => irr_amp_cp, 0[%]->100[%] : 10[m%], help "amplitude of obs channel"; irr_amp_grad2 => -irr_amp_grad; OBSdec_Setup =? "#Setup OBS dec#"; obs_noise => "CW", ("CM", "CW", "SPINAL64", "SPINAL64_vp", "swfTPPM", "TPPM", "XiX"), help "decoupling sequence"; obs_amp_dec => 5[%], 0[%]->100[%] : 10[m%], help "amplitude of decoupling"; when obs_noise /= "CW" and obs_noise /= "XIX" do obs_width_nominal90 => x90 * 100[%] / obs_amp_dec, help "modulation pulse width for decoupling"; end when; when obs_noise = "CM" or obs_noise = "SPINAL64_vp" or obs_noise = "swfTPPM" or obs_noise = "TPPM" do obs_phs_tppm => 15[deg], help "decoupling sequence phase modulation"; end when; when obs_noise = "XiX" do obs_width_xix => 50[us], help "XiX modulation pulse width: should be optimized around 1.85*tr"; end when; obs_pwidth = if obs_noise = "CW" then 0[us] else if obs_noise = "XiX" then obs_width_xix else obs_width_nominal90; RN_Setup =? "-----------Setup RN pulses-----------"; spinning_freq => 60 [kHz]; number_large_N => 30; number_n => 6; number_nu => 10; number_RN => 1; obs_amp_RN => 60[%]; obs_phs_RN_p = 180*number_nu/number_large_N; obs_phs_RN_m = -obs_phs_RN_p; obs_width_RN = (number_n/spinning_freq)/number_large_N; supercycle => "S0Sinv", ("S0","S0Sinv"); recoupling =? if supercycle = "S0" then number_RN*number_n/spinning_freq else if supercycle = "S0Sinv" then 2*number_RN*number_n/spinning_freq else 0[us]; z_filter1 => 100[us]; z_filter2 => 100[us]; HORROR_Setup =? "#Setup HORROR#"; tau_rr => 1[ms], 0[us]->100[ms] : 10[us]; obs_amp_rr => 10[%]; MISC_Setup =? "#Setup Miscellaneous#"; ------------------------------------------------------------------------------------- --found: COG 16 (15,1,0; 8) --selected pathways: 2 --#0: --nuc 1: 0 -3 2 0 --#1: --nuc 1: 0 3 -2 0 -------------------------------------------- obs_phs_exc = { 0..15*15*360/16:15*360/16, 30..(30+15*15*360/16):15*360/16, 0..15*15*360/16:15*360/16, 30..(30+15*15*360/16):15*360/16}.ystep(60%2); obs_phs_exc2q = { 0..15*1*360/16:1*360/16, 0..15*1*360/16:1*360/16, 18..(18+15*1*360/16):1*360/16, 18..(18+15*1*360/16):1*360/16}.zstep(36%2); obs_phs_rec2q = { 0}; obs_phs_rec = { 0}; obs_phs_read = {16(0),16(120),16(240)}; obs_phs_acq1 = {8( 0,180),8(120,300),8(240, 60)}.ystep(180%2).zstep(180%2); relaxation_delay => 5[s], help "inter-pulse delay"; repetition_time =? relaxation_delay + x_acq_time + y_acq_time, help "relaxation_delay+x_acq_time"; obs_atn => xatn, help "attenuator of obs"; irr_atn => irratn, help "attenuator of irr"; obs_phs_prep = {0}; obs_phs_cp1 = { 90}; obs_phs_dec = {90}; obs_phs_cp2 = {2(90),2(270)}; obs_phs_store = {180}; obs_phs_rrx = {0}; obs_phs_rry = {90}; irr_phs_cp1 = {90}; irr_phs_store = {180}; irr_phs_restore = {{0,180},{0,180},{90,270},{90,270}}.zstep(180%2); irr_phs_cp2 = {90}; irr_phs_dec = {0}; irr_phs_befHORROR = {180}; irr_phs_aftHORROR = {0}; obs_phs_acq2 = { 90,270,270, 90}.ystep(0%2).zstep(180%2); include "pulse_solid"; module_config = "solid_sample continuous_fid"; begin initial_wait; relaxation_delay; obs_width_90, (obs.gate, obs.phs.obs_phs_prep, obs.amp.obs_amp_pulse, obs.atn.obs_atn); contact_time, (obs.GATE, obs.PHS.obs_phs_cp1, obs.shape.{obs_shape_cp, "obs"}, obs.ATN.obs_atn, irr.GATE, irr.PHS.irr_phs_cp1, irr.SHAPE.{irr_shape_cp, "irr"}, irr.ATN.irr_atn); align center irr_width_90, (irr.gate, irr.phs.irr_phs_store, irr.amp.irr_amp_pulse, irr.atn.irr_atn); obs_width_90, (obs.gate, obs.phs.obs_phs_store, obs.amp.obs_amp_pulse, obs.atn.obs_atn); end align; z_filter1; loop number_RN times loop number_large_N/2 times obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_p+obs_phs_exc), obs.amp.obs_amp_RN, obs.atn.obs_atn); obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_m+obs_phs_exc), obs.amp.obs_amp_RN, obs.atn.obs_atn); end loop; when supercycle = "S0Sinv" do loop number_large_N/2 times obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_m+obs_phs_exc), obs.amp.obs_amp_RN, obs.atn.obs_atn); obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_p+obs_phs_exc), obs.amp.obs_amp_RN, obs.atn.obs_atn); end loop; end when; end loop; loop number_RN times loop number_large_N/2 times obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_p+obs_phs_exc+120), obs.amp.obs_amp_RN, obs.atn.obs_atn); obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_m+obs_phs_exc+120), obs.amp.obs_amp_RN, obs.atn.obs_atn); end loop; when supercycle = "S0Sinv" do loop number_large_N/2 times obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_m+obs_phs_exc-120), obs.amp.obs_amp_RN, obs.atn.obs_atn); obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_p+obs_phs_exc-120), obs.amp.obs_amp_RN, obs.atn.obs_atn); end loop; end when; end loop; loop number_RN times loop number_large_N/2 times obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_p+obs_phs_exc+240), obs.amp.obs_amp_RN, obs.atn.obs_atn); obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_m+obs_phs_exc+240), obs.amp.obs_amp_RN, obs.atn.obs_atn); end loop; when supercycle = "S0Sinv" do loop number_large_N/2 times obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_m+obs_phs_exc-240), obs.amp.obs_amp_RN, obs.atn.obs_atn); obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_p+obs_phs_exc-240), obs.amp.obs_amp_RN, obs.atn.obs_atn); end loop; end when; end loop; 0[us] ystep 1/y_sweep; obs_width_2q, (obs.gate, obs.phs.obs_phs_exc2q, obs.amp.obs_amp_pulse, obs.atn.obs_atn); 0[us] zstep 1/z_sweep; obs_width_2q, (obs.gate, obs.phs.obs_phs_rec2q, obs.amp.obs_amp_pulse, obs.atn.obs_atn); loop number_RN times loop number_large_N/2 times obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_p+obs_phs_rec), obs.amp.obs_amp_RN, obs.atn.obs_atn); obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_m+obs_phs_rec), obs.amp.obs_amp_RN, obs.atn.obs_atn); end loop; when supercycle = "S0Sinv" do loop number_large_N/2 times obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_m+obs_phs_rec), obs.amp.obs_amp_RN, obs.atn.obs_atn); obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_p+obs_phs_rec), obs.amp.obs_amp_RN, obs.atn.obs_atn); end loop; end when; end loop; loop number_RN times loop number_large_N/2 times obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_p+obs_phs_rec+120), obs.amp.obs_amp_RN, obs.atn.obs_atn); obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_m+obs_phs_rec+120), obs.amp.obs_amp_RN, obs.atn.obs_atn); end loop; when supercycle = "S0Sinv" do loop number_large_N/2 times obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_m+obs_phs_rec-120), obs.amp.obs_amp_RN, obs.atn.obs_atn); obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_p+obs_phs_rec-120), obs.amp.obs_amp_RN, obs.atn.obs_atn); end loop; end when; end loop; loop number_RN times loop number_large_N/2 times obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_p+obs_phs_rec+240), obs.amp.obs_amp_RN, obs.atn.obs_atn); obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_m+obs_phs_rec+240), obs.amp.obs_amp_RN, obs.atn.obs_atn); end loop; when supercycle = "S0Sinv" do loop number_large_N/2 times obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_m+obs_phs_rec-240), obs.amp.obs_amp_RN, obs.atn.obs_atn); obs_width_RN, (obs.gate, obs.phs.(obs_phs_RN_p+obs_phs_rec-240), obs.amp.obs_amp_RN, obs.atn.obs_atn); end loop; end when; end loop; z_filter2; obs_width_90, (obs.gate, obs.phs.obs_phs_read, obs.amp.obs_amp_pulse, obs.atn.obs_atn); acq(dead_time, delay, obs_phs_acq1 ); irr_width_90, (irr.gate, irr.phs.irr_phs_restore, irr.amp.irr_amp_pulse, irr.atn.irr_atn); 0[us] zstep 1/z_sweep, (obs.GATE, obs.PHS.obs_phs_dec, obs.AMP.obs_amp_dec, obs.ATN.obs_atn, obs.noise.obs_noise); irr_width_90, (irr.gate, irr.phs.irr_phs_befHORROR, irr.amp.irr_amp_pulse, irr.atn.irr_atn); tau_rr, (OBS.GATE, OBS.PHS.obs_phs_rrx, OBS.AMP.obs_amp_rr, OBS.ATN.obs_atn); tau_rr, (OBS.GATE, OBS.PHS.obs_phs_rry, OBS.AMP.obs_amp_rr, OBS.ATN.obs_atn); tau_rr, (OBS.GATE, OBS.PHS.obs_phs_rrx, OBS.AMP.obs_amp_rr, OBS.ATN.obs_atn); tau_rr, (OBS.GATE, OBS.PHS.obs_phs_rry, OBS.AMP.obs_amp_rr, OBS.ATN.obs_atn); irr_width_90, (irr.gate, irr.phs.irr_phs_aftHORROR, irr.amp.irr_amp_pulse, irr.atn.irr_atn); contact_time2, (obs.GATE, obs.PHS.obs_phs_cp2, obs.shape.{obs_shape_cp2, "obs"}, obs.ATN.obs_atn, irr.GATE, irr.PHS.irr_phs_cp2, irr.SHAPE.{irr_shape_cp2, "irr"}, irr.ATN.irr_atn); acq( dead_time, delay, obs_phs_acq2 ); end pulse;