------------------------------------------------------------------------------- -- -- -- 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/21 header filename => "SQ_DQ_SQ_double_cp_3d"; 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]; z_dwell =? 1/z_sweep; z_points => 32; z_acq_time =? z_points / z_sweep; y_domain =? x_domain; y_offset =? x_offset; y_sweep => 15[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_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; RFDR_Setup =? "-----------Setup RFDR-----------"; obs_width_rfdr => x90*2; obs_amp_rfdr => 100.0[%], 0[%]->100[%]:0.01[%], help "set ampliper for x pulse"; spinning_freq => 60[kHz]; tau1 = (1/spinning_freq-obs_width_rfdr)/2; number_rfdr => 1; mixing =? 16*number_rfdr/spinning_freq; RN_Setup =? "-----------Setup RN pulses-----------"; number_large_N => 18; number_n => 4; number_nu => 7; number_RN => 1; obs_amp_RN => 0[%]; 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#"; obs_phs_rfdr ={ 0}; obs_phs_first = {{0},{90},{0},{90}}.ystep(180%2); obs_phs_second = {4(0),4(180)}; obs_phs_exc = { {0,90,180,270},{0,90,180,270},{45, 135, 225, 315},{45, 135, 225, 315}}.zstep(90%2); obs_phs_rec = { 0}; obs_phs_restore = { 8( 0),8(120),8(240)}; obs_phs_acq1 = { 2(0,180),2(180,0),2(120,300),2(300,120),2(240,60),2(60,240)}.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_read = {8(0),8(120),8(240)}; 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; obs_width_90, (obs.gate, obs.phs.obs_phs_first, obs.amp.obs_amp_pulse, obs.atn.obs_atn); 0[us] ystep 1/y_sweep; obs_width_90, (obs.gate, obs.phs.obs_phs_second, obs.amp.obs_amp_pulse, obs.atn.obs_atn); ------- RFDR Recoupling ------------------------------------------------------------------------------ loop number_rfdr times tau1; obs_width_rfdr, (obs.gate, obs.phs.obs_phs_rfdr+ 0, obs.amp.obs_amp_rfdr, obs.atn.obs_atn); tau1; tau1; obs_width_rfdr, (obs.gate, obs.phs.obs_phs_rfdr+ 90, obs.amp.obs_amp_rfdr, obs.atn.obs_atn); tau1; tau1; obs_width_rfdr, (obs.gate, obs.phs.obs_phs_rfdr+ 0, obs.amp.obs_amp_rfdr, obs.atn.obs_atn); tau1; tau1; obs_width_rfdr, (obs.gate, obs.phs.obs_phs_rfdr+ 90, obs.amp.obs_amp_rfdr, obs.atn.obs_atn); tau1; tau1; obs_width_rfdr, (obs.gate, obs.phs.obs_phs_rfdr+ 90, obs.amp.obs_amp_rfdr, obs.atn.obs_atn); tau1; tau1; obs_width_rfdr, (obs.gate, obs.phs.obs_phs_rfdr+180, obs.amp.obs_amp_rfdr, obs.atn.obs_atn); tau1; tau1; obs_width_rfdr, (obs.gate, obs.phs.obs_phs_rfdr+ 90, obs.amp.obs_amp_rfdr, obs.atn.obs_atn); tau1; tau1; obs_width_rfdr, (obs.gate, obs.phs.obs_phs_rfdr+180, obs.amp.obs_amp_rfdr, obs.atn.obs_atn); tau1; tau1; obs_width_rfdr, (obs.gate, obs.phs.obs_phs_rfdr+180, obs.amp.obs_amp_rfdr, obs.atn.obs_atn); tau1; tau1; obs_width_rfdr, (obs.gate, obs.phs.obs_phs_rfdr+270, obs.amp.obs_amp_rfdr, obs.atn.obs_atn); tau1; tau1; obs_width_rfdr, (obs.gate, obs.phs.obs_phs_rfdr+180, obs.amp.obs_amp_rfdr, obs.atn.obs_atn); tau1; tau1; obs_width_rfdr, (obs.gate, obs.phs.obs_phs_rfdr+270, obs.amp.obs_amp_rfdr, obs.atn.obs_atn); tau1; tau1; obs_width_rfdr, (obs.gate, obs.phs.obs_phs_rfdr+270, obs.amp.obs_amp_rfdr, obs.atn.obs_atn); tau1; tau1; obs_width_rfdr, (obs.gate, obs.phs.obs_phs_rfdr+ 0, obs.amp.obs_amp_rfdr, obs.atn.obs_atn); tau1; tau1; obs_width_rfdr, (obs.gate, obs.phs.obs_phs_rfdr+270, obs.amp.obs_amp_rfdr, obs.atn.obs_atn); tau1; tau1; obs_width_rfdr, (obs.gate, obs.phs.obs_phs_rfdr+ 0, obs.amp.obs_amp_rfdr, obs.atn.obs_atn); tau1; end loop; ------------------------------ DQ excitation ----------------------------------------------------------- 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; end loop; 0[us] zstep 1/z_sweep; 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; 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;