-------------------------------------------------------------------------------
--                                                                           --
--                          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        => "RNTQ_2D";
	sample_id       => "";
	comment         => "RNTQ_2D";
    process   		=  "1d_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			=>	12;
	x_prescans		=>	0;
	mod_return		=>	1;

    y_domain         =  x_domain;
    y_offset         =  x_offset * 3;
    y_sweep          => x_sweep;
    y_dwell          =? 1/y_sweep;
    y_points         => 24;

    include "acquisition_solid";
    include "acquisition_2d";
end acquisition;

pulse
	collect COMPLEX,OBS COMPLEX;
	initial_wait		=	10.0[ms];

Pulse_Setup	=? "-----------Setup hard pulses-----------";

	obs_width_90		=>	x90,										help "90deg pulse width";
	obs_amp_pulse		=>	100[%], 0[%]->100[%]:0.01[%],				help "ampliper";

	irr_domain	=	x_domain;
	irr_offset	=	x_offset;

RN_Setup	=? "-----------Setup RN pulses-----------";
	spinning_freq		=> 100 [kHz];
	number_large_N		=>	12;
	number_n		=>	2;
	number_nu		=>	5;
	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","S0S180","S0Sinv","S0Sinv_180");
	recoupling			=?	if supercycle = "S0" then number_RN*number_n/spinning_freq
					else	if supercycle = "S0S180" then 2*number_RN*number_n/spinning_freq
					else	if supercycle = "S0Sinv" then 2*number_RN*number_n/spinning_freq
					else	if supercycle = "S0Sinv_180" then 4*number_RN*number_n/spinning_freq
					else 0[us];

	z_filter		=>	100[us],0[ns]	->	50[ms]	:	20[ns],		help "total echo time";

MISC_Setup	=? "-----------Setup Miscellaneous-----------";

	relaxation_delay	=>	5.0[s],								help "inter-pulse delay";
	repetition_time		=?	relaxation_delay + x_acq_time,				help "relaxation_delay+x_acq_time";

	obs_atn				=>	xatn,										help "attenuator for x pulse";

	obs_phs_exc		=	{  0..300:60, 30..330:60}.ystep(60%2);
	obs_phs_rec		=	{  0};

	obs_phs_restore	=	{6(  0),6(120),6(240)};
	obs_phs_acq		=	{3(  0,180),3(120,300),3(240, 60)}.ystep(180%2);

	include "pulse_solid";
	module_config		=	"solid_sample";

begin
	initial_wait;
     relaxation_delay;

	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 = "S0S180" do
	loop number_large_N/2 times
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_p+obs_phs_exc+180),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_m+obs_phs_exc+180),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	end loop;
end when;
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;
when supercycle = "S0Sinv_180" 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;
	loop number_large_N/2 times
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_p+obs_phs_exc+180),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_m+obs_phs_exc+180),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	end loop;
	loop number_large_N/2 times
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_m+obs_phs_exc+180),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_p+obs_phs_exc+180),	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 = "S0S180" do
	loop number_large_N/2 times
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_p+obs_phs_exc+300),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_m+obs_phs_exc+300),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	end loop;
end when;
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;
when supercycle = "S0Sinv_180" 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;
	loop number_large_N/2 times
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_p+obs_phs_exc+300),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_m+obs_phs_exc+300),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	end loop;
	loop number_large_N/2 times
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_m+obs_phs_exc+ 60),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_p+obs_phs_exc+ 60),	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 = "S0S180" do
	loop number_large_N/2 times
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_p+obs_phs_exc+ 60),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_m+obs_phs_exc+ 60),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	end loop;
end when;
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;
when supercycle = "S0Sinv_180" 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;
	loop number_large_N/2 times
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_p+obs_phs_exc+180),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_m+obs_phs_exc+180),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	end loop;
	loop number_large_N/2 times
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_m+obs_phs_exc- 60),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_p+obs_phs_exc- 60),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	end loop;
end when;
	end loop;

	0[us] ystep 1/y_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;
when supercycle = "S0S180" do
	loop number_large_N/2 times
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_p+obs_phs_rec+180),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_m+obs_phs_rec+180),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	end loop;
end when;
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;
when supercycle = "S0Sinv_180" 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;
	loop number_large_N/2 times
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_p+obs_phs_rec+180),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_m+obs_phs_rec+180),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	end loop;
	loop number_large_N/2 times
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_m+obs_phs_rec+180),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_p+obs_phs_rec+180),	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 = "S0S180" do
	loop number_large_N/2 times
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_p+obs_phs_rec+300),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_m+obs_phs_rec+300),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	end loop;
end when;
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;
when supercycle = "S0Sinv_180" 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;
	loop number_large_N/2 times
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_p+obs_phs_rec+300),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_m+obs_phs_rec+300),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	end loop;
	loop number_large_N/2 times
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_m+obs_phs_rec+ 60),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_p+obs_phs_rec+ 60),	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 = "S0S180" do
	loop number_large_N/2 times
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_p+obs_phs_rec+ 60),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_m+obs_phs_rec+ 60),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	end loop;
end when;
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;
when supercycle = "S0Sinv_180" 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;
	loop number_large_N/2 times
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_p+obs_phs_rec+ 60),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_m+obs_phs_rec+ 60),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	end loop;
	loop number_large_N/2 times
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_m+obs_phs_rec- 60),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	obs_width_RN,	(obs.gate,	obs.phs.(obs_phs_RN_p+obs_phs_rec- 60),	obs.amp.obs_amp_RN,	obs.atn.obs_atn);
	end loop;
end when;
	end loop;

	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;