------------------------------------------------------------------------------- -- -- -- Experiment Source Code -- -- Delta NMR Experiment & Machine Control Interface -- -- -- -- Copyright (c) 2000 JEOL Ltd -- -- All Rights Reserved -- -- -- ------------------------------------------------------------------------------- -- HELP.eng: spin echo -- Category: solids, spin echo, solids relaxation header filename => "BABA-TQ_3D"; sample_id => ""; comment => "BABA-TQ_2D"; process = "1d_solid.list"; include "header_solid"; end header; instrument include "instrument_solid"; end instrument; acquisition x_domain => "Proton"; x_offset => 7[ppm]; x_sweep => 100[kHz]; x_points => 2048; scans => 60; x_prescans => 6; mod_return => 1; y_domain = x_domain; y_offset = x_offset * 3; y_sweep => 70[kHz]; y_dwell =? 1 / y_sweep; y_points => 16; z_domain = x_domain; z_offset = x_offset * 2; z_sweep => 35[kHz]; z_dwell =? 1 / z_sweep; z_points => 16; x_acq_time =? x_points / x_sweep; x_resolution =? 1 / x_acq_time; x_dwell =? 1 / x_sweep; y_acq_time =? y_points / y_sweep; y_resolution =? 1 / y_acq_time; end acquisition; pulse collect COMPLEX,OBS COMPLEX COMPLEX; macro baba_exc( number_baba, obs_width_baba, obs_phs_exc, obs_amp_pulse, obs_atn, tau_baba ) is loop number_baba times obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_exc + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); end loop; end baba_exc; macro baba_rec( number_baba, obs_width_baba, obs_phs_rec, obs_amp_pulse, obs_atn, tau_baba ) is loop number_baba times obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 90, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 270, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); tau_baba; obs_width_baba, (OBS.GATE, OBS.PHS.obs_phs_rec + 180, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); end loop; end baba_rec; macro obs_rdrfdr( number_rd_rfdr_m, relaxation_delay_rfdr, number_rd_rfdr, tau_rdrfdr, obs_width_rd_rfdr, obs_phs_rd_rfdr, obs_amp_rd_rfdr, obs_atn ) is loop number_rd_rfdr_m times relaxation_delay_rfdr; loop number_rd_rfdr times tau_rdrfdr; obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 0, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn); tau_rdrfdr; tau_rdrfdr; obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 90, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn); tau_rdrfdr; tau_rdrfdr; obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 0, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn); tau_rdrfdr; tau_rdrfdr; obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 90, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn); tau_rdrfdr; tau_rdrfdr; obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 90, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn); tau_rdrfdr; tau_rdrfdr; obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 180, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn); tau_rdrfdr; tau_rdrfdr; obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 90, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn); tau_rdrfdr; tau_rdrfdr; obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 180, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn); tau_rdrfdr; tau_rdrfdr; obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 180, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn); tau_rdrfdr; tau_rdrfdr; obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 270, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn); tau_rdrfdr; tau_rdrfdr; obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 180, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn); tau_rdrfdr; tau_rdrfdr; obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 270, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn); tau_rdrfdr; tau_rdrfdr; obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 270, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn); tau_rdrfdr; tau_rdrfdr; obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 0, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn); tau_rdrfdr; tau_rdrfdr; obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 270, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn); tau_rdrfdr; tau_rdrfdr; obs_width_rd_rfdr, (OBS.GATE, OBS.PHS.obs_phs_rd_rfdr + 0, OBS.AMP.obs_amp_rd_rfdr, OBS.ATN.obs_atn); tau_rdrfdr; end loop; end loop; relaxation_delay_rfdr; end obs_rdrfdr; macro acq( dead_time, delay, phase ) is dead_time, OBS.PHS.0; delay, (OBS.PHS.0, RCV.GATE); acquire (OBS.PHS.0, RCV.PHS.phase); end acq; experiment = "BABA-TQ-DQ-SQ"; initial_wait = 10[ms]; pulse_setup =? "-----------Setup hard pulses---------------"; obs_width_90 => 1.1[us], help "90deg pulse width"; obs_width_2q => 1.6[us], help "90deg pulse width"; obs_amp_pulse => 100[%]; irr_domain = x_domain; irr_offset = x_offset; baba_setup =? "-----------Setup BABA ------------------"; obs_width_baba => 0.65[us], help "90deg pulse width"; number_baba => 1, help "number of baba cycle"; spinning_freq => 70[kHz], help "spinning frequency"; tau_baba = 1 / spinning_freq / 2 - obs_width_baba * 2; baba_duration =? 8 * (1 / spinning_freq) * number_baba; obs_width_baba2 => 0.65[us], help "90deg pulse width"; number_baba2 => 1, help "number of baba cycle"; tau_baba2 = 1 / spinning_freq / 2 - obs_width_baba2 * 2; baba_duration2 =? 8 * (1 / spinning_freq) * number_baba2; z_filter => 1[ms]; misc_setup =? "----------Setup Miscellaneous ------------"; relaxation_delay => 1.2[s], help "inter-pulse delay"; repetition_time =? relaxation_delay + x_acq_time, help "relaxation_delay+x_acq_time"; obs_rdrfdr_setup =? "--------Setup obs rdrfdr------------------"; rd_rfdr => FALSE; when rd_rfdr do obs_width_rd_rfdr => x90 * 2; obs_amp_rd_rfdr => 100[%], 0[%]->100[%] : 0.01[%], help "set ampliper for x pulse"; number_rd_rfdr => 1; number_rd_rfdr_m => 1; tau_rdrfdr = (1 / spinning_freq - obs_width_rd_rfdr) / 2; end when; relaxation_delay_rfdr = relaxation_delay / (number_rd_rfdr_m + 1); obs_phs_rd_rfdr = {0}; obs_atn => 7[dB], help "attenuator for x pulse"; obs_phs_exc = {0..300 : 60, 30..330 : 60, 0..300 : 60, 30..330 : 60}.ystep(60 % 2); obs_phs_2q = ({{4(0), 2(0), 4(36), 2(36), 4(72), 2(72), 4(108), 2(108), 4(144), 2(144), 4(180), 2(180), 4(216), 2(216), 4(252), 2(252), 4(288), 2(288), 4(324), 2(324)}, {4(0), 2(0), 4(36), 2(36), 4(72), 2(72), 4(108), 2(108), 4(144), 2(144), 4(180), 2(180), 4(216), 2(216), 4(252), 2(252), 4(288), 2(288), 4(324), 2(324)}, {4(18), 2(18), 4(54), 2(54), 4(90), 2(90), 4(126), 2(126), 4(162), 2(162), 4(198), 2(198), 4(234), 2(234), 4(270), 2(270), 4(306), 2(306), 4(342), 2(342)}, {4(18), 2(18), 4(54), 2(54), 4(90), 2(90), 4(126), 2(126), 4(162), 2(162), 4(198), 2(198), 4(234), 2(234), 4(270), 2(270), 4(306), 2(306), 4(342), 2(342)}}).zstep(36 % 2); obs_phs_rec = {128(0), 32(0), 16(0), 4(0), 128(90), 32(90), 16(90), 4(90), 128(180), 32(180), 16(180), 4(180), 128(270), 32(270), 16(270), 4(270)}; obs_phs_restore = {32(0), 16(0), 8(0), 4(0), 32(120), 16(120), 8(120), 4(120), 32(240), 16(240), 8(240), 4(240)}; obs_phs_acq = ({2(0, 180), 0, 2(180), 2(0, 180), 2(0), 2(180, 0), 2(180), 2(0, 180), 2(0), 2(180, 0), 2(180), 2(0, 180), 2(0), 2(180, 0), 2(180), 2(0, 180), 2(0), 2(180, 0), 2(180), 2(0, 180), 0, 2(120, 300), 120, 2(300), 2(120, 300), 2(120), 2(300, 120), 2(300), 2(120, 300), 2(120), 2(300, 120), 2(300), 2(120, 300), 2(120), 2(300, 120), 2(300), 2(120, 300), 2(120), 2(300, 120), 2(300), 2(120, 300), 120, 2(240, 60), 240, 2(60), 2(240, 60), 2(240), 2(60, 240), 2(60), 2(240, 60), 2(240), 2(60, 240), 2(60), 2(240, 60), 2(240), 2(60, 240), 2(60), 2(240, 60), 2(240), 2(60, 240), 2(60), 2(240, 60), 240, 2(180, 0), 180, 2(0), 2(180, 0), 2(180), 2(0, 180), 2(0), 2(180, 0), 2(180), 2(0, 180), 2(0), 2(180, 0), 2(180), 2(0, 180), 2(0), 2(180, 0), 2(180), 2(0, 180), 2(0), 2(180, 0), 180, 2(300, 120), 300, 2(120), 2(300, 120), 2(300), 2(120, 300), 2(120), 2(300, 120), 2(300), 2(120, 300), 2(120), 2(300, 120), 2(300), 2(120, 300), 2(120), 2(300, 120), 2(300), 2(120, 300), 2(120), 2(300, 120), 300, 2(60, 240), 60, 2(240), 2(60, 240), 2(60), 2(240, 60), 2(240), 2(60, 240), 2(60), 2(240, 60), 2(240), 2(60, 240), 2(60), 2(240, 60), 2(240), 2(60, 240), 2(60), 2(240, 60), 2(240), 2(60, 240), 60}).ystep(180 % 2).zstep(180 % 2); mas_frequency = mas_spin_get; dead_time = if not auto_dwell then 0.5 / x_sweep else 0[us]; delay = if not auto_dwell then 0.5 / x_sweep else 0[us]; module_config = "solid_sample"; begin initial_wait; when rd_rfdr do obs_rdrfdr( number_rd_rfdr_m, relaxation_delay_rfdr, number_rd_rfdr, tau_rdrfdr, obs_width_rd_rfdr, obs_phs_rd_rfdr, obs_amp_rd_rfdr, obs_atn ); end when; when not rd_rfdr do relaxation_delay; end when; obs_width_90, (OBS.GATE, OBS.PHS.obs_phs_exc, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); baba_exc( number_baba, obs_width_baba, obs_phs_exc, obs_amp_pulse, obs_atn, tau_baba ); 0[us] ystep 1 / y_sweep; obs_width_2q, (OBS.GATE, OBS.PHS.obs_phs_2q, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); 1 / spinning_freq - obs_width_2q zstep 1 / z_sweep; baba_rec( number_baba2, obs_width_baba2, obs_phs_rec, obs_amp_pulse, obs_atn, tau_baba2 ); z_filter; obs_width_90, (OBS.GATE, OBS.PHS.obs_phs_restore, OBS.AMP.obs_amp_pulse, OBS.ATN.obs_atn); acq( dead_time, delay, obs_phs_acq ); end pulse;