/******************************************************************************* * * McStas, neutron ray-tracing package * Copyright 1997-2002, All rights reserved * Risoe National Laboratory, Roskilde, Denmark * Institut Laue Langevin, Grenoble, France * * Instrument: ILL_D9 * * %Identification * Written by: Chris Ling. DIF Group. * Date: 6th Jan 2004. * Origin: ILL (France) * Release: McStas 1.8 * Version: $Revision: 1.4 $ * %INSTRUMENT_SITE: ILL * * The D9 hot diffractometer at the ILL. * * %Description * The hot neutron four-circle diffractometer D9 at the ILL. * For structural analysis beyond the determination of average atomic positions, * high resolution nuclear density maps are required. D9 is ideally suited for * this purpose. Because of the short wavelength very small atomic displacements * can be identified, accurate to typically 0.001 � A two-dimensional * multidetector is employed. * This simulation uses a quartz single crystal sample. * * NOTE: as no transmission monochromator component is presently available, * this simulation uses a monochromator in reflection, the width of which is * automatically adjusted so that the outcoming beam has the same width as * that of a 6.5 cm wide transmission monochromator at the same take-off angle * * example (single image on detector): * mcrun D9_instr -n 1e8 Lambda=0.65 TwoTheta=60 Nu=15 delta_Omega=0 * * example (peak scan): * mcrun D9_instr -n 1e7 Lambda=0.65 TwoTheta=60 Nu=0 * delta_Omega=-1.8,1.8 -N 31 -d Scan_0.65_60_0 * * %Parameters * input parameters : * Lambda : wavelength [Angstrom] * TwoTheta : 2-Theta of sample reflection [degree] * Nu : lifting-arm angle [degree] * delta_Omega : start,end of omega scan [degree] * * %Link * D9@ILL (YellowBook) * %End */ DEFINE INSTRUMENT ILL_D9(Lambda=0.65,TwoTheta=60,Nu=15,delta_Omega=0) DECLARE %{ /* global variables */ double L1 = 7.0; /* source-mono distance (m) */ double L2 = 2.58; /* mono-sample */ double L3 = 0.49; /* sample-det */ double VD = 0.0835; /* opening of vertical diaphragm before mono (m) */ /* fully open VD = 0.0835 m for Cu mono 6 cm high */ double HD = 0.0525; /* opening of horizontal diaphragm before mono (m) */ /* fully open HD = 0.0525 m for Cu mono 6.5 cm wide */ double DM = 1.2815; /* monochromator d-spacing [Angstrom] */ /* Cu220 1st order d = 1.2815 */ double AP = 0.003; /* radius of final B4C aperture before sample (m) */ double ND = 0.05; /* distance of final B4C aperture from sample (m) */ double CS = 0.005; /* side length of cubic sample crystal (m) */ double CD = 1e-4; /* delta_d/d of sample crystal */ double CM = 5; /* mosaic of sample crystal */ int SM = 1; /* scattering at mono to the right (-1)/left(+1) */ int SS = -1; /* scattering at sample to the right (-1)/left(+1) */ int SN = -1; /* scattering at sample up (-1)/down(+1) */ /* variables to be computed */ double A1,A2,A3,A4,A5; double DS; double MW,R_vf,R_hf; double dLambda; double MN,BN; double VD_l,VD_u,HD_l,HD_u; int SM,SS,SN; %} INITIALIZE %{ DS = Lambda/(2*(sin((TwoTheta/2)*DEG2RAD))); /* d-spacing sample [Angstrom] */ A2 = 2*asin(Lambda/(2*DM))*RAD2DEG; /* mono 2 theta (arm to sample) */ A2 *= SM; A1 = A2/2; /* mono theta (crystal) */ A4 = TwoTheta; A4 *= SS; /* sample 2 theta (arm to detector) */ A3 = A4/2; /* sample theta (crystal omega) */ A5 = Nu; A5 *= SN; /* lifting angle Nu (arm to detector) */ MW = 0.009/tan(A1*DEG2RAD); /* width of one blade of a 7-blade reflection mono */ /* required to output a beam the same size as that */ /* from a 6.5 cm wide 7-blade transmission mono */ R_vf = 2*(L2)*sin(A1*DEG2RAD); R_hf = 2*(L2)/sin(A1*DEG2RAD); /* vertical and horizontal mono focussing */ /* radii (to detector) */ dLambda = Lambda*0.025; /* delta lambda out of source */ VD_u = VD/2; VD_l = -VD_u; /* upper and lower bounds of vertical diaphragm */ HD_u = HD/2; HD_l = -HD_u; /* upper and lower bounds of horizontal diaphragm */ MN = L2 - ND - 0.01; /* used to place monitor 1 cm before nose */ BN = L2 - ND; /* used to place B4C aperture ND m before mono */ %} TRACE /* * 2000 K hot source 20 cm thick defined by beamtube entrance 5 cm wide * by 20 cm high, sending neutrons towards the exit of the graphite nose * at the end of the beamtube */ COMPONENT source = Source_gen( dist = 3.1943, xw = 0.03264, yh = 0.136114, Lambda0 = Lambda, dLambda = dLambda, h = 0.2, w = 0.05, T1 = 2000, length = 0.2) AT (0, 0, 0) ABSOLUTE /* exit of graphite nose of beamtube */ COMPONENT beamtube_nose = Slit( xmin = -0.01632, xmax = 0.01632, ymin = -0.068057, ymax = 0.068057) AT (0, 0, 3.1943) RELATIVE source /* exits of the 3 rotating slits in the "bouchon" */ COMPONENT rotor_1 = Slit( xmin = -0.015355, xmax = 0.015355, ymin = -0.064507, ymax = 0.064507) AT (0, 0, 3.5893) RELATIVE source COMPONENT rotor_2 = Slit( xmin = -0.01395, xmax = 0.01395, ymin = -0.05935, ymax = 0.05935) AT (0, 0, 4.0668) RELATIVE source COMPONENT rotor_3 = Slit( xmin = -0.0125745, xmax = 0.0125745, ymin = -0.054257, ymax = 0.054257) AT (0, 0, 4.6103) RELATIVE source /* diaphragm in box with Al windows */ COMPONENT mon_d_b = PSD_monitor( nx = 60, ny = 60, filename = "Before_Diaphragms", xmin = -0.06, xmax = 0.06, ymin = -0.06, ymax = 0.06) AT (0, 0, 5.374) RELATIVE source COMPONENT window_in = Al_window( win_thick = 0.0005) AT (0, 0, 5.384) RELATIVE source COMPONENT diaphragm_v = Slit( xmin = -0.05, xmax = 0.05, ymin = VD_l, ymax = VD_u) AT (0, 0, 5.821) RELATIVE source COMPONENT diaphragm_h = Slit( xmin = HD_l, xmax = HD_u, ymin = -0.1, ymax = 0.1) AT (0, 0, 6.239) RELATIVE source COMPONENT window_out = Al_window( win_thick = 0.0005) AT (0, 0, 6.254) RELATIVE source COMPONENT mon_d_a = PSD_monitor( nx = 60, ny = 60, filename = "After_Diaphragms", xmin = -0.06, xmax = 0.06, ymin = -0.06, ymax = 0.06) AT (0, 0, 0.01) RELATIVE diaphragm_h /* monochromator */ COMPONENT mono_cradle = Arm( ) AT (0, 0, L1) RELATIVE source ROTATED (0, A1, 0) RELATIVE source COMPONENT mono = Monochromator_curved( zwidth = MW, yheight = 0.0085, gap = 0.0005, NH = 7, NV = 7, mosaich = 12.3, mosaicv = 30, r0 = 0.7, t0 = 0.3, DM = DM, RV = R_vf, RH = R_hf) AT (0, 0, 0) RELATIVE mono_cradle COMPONENT mono_out = Arm( ) AT (0, 0, 0) RELATIVE mono_cradle ROTATED (0, A2, 0) RELATIVE source COMPONENT mon_m = PSD_monitor( nx = 60, ny = 60, filename = "After_Mono_20cm", xmin = -0.06, xmax = 0.06, ymin = -0.06, ymax = 0.06) AT (0, 0, 0.2) RELATIVE mono_out /* B4C collimator at exit of mono housing, in and out positions */ COMPONENT mon_c_b = PSD_monitor( nx = 60, ny = 60, filename = "Before_Coll", xmin = -0.06, xmax = 0.06, ymin = -0.06, ymax = 0.06) AT (0, 0, 1.19) RELATIVE mono_out COMPONENT coll_in = Slit( xmin = -0.022, xmax = 0.022, ymin = -0.0205, ymax = 0.0205) AT (0, 0, 1.2) RELATIVE mono_out COMPONENT coll_out = Slit( xmin = -0.0185, xmax = 0.0185, ymin = -0.0175, ymax = 0.0175) AT (0, 0, 1.6) RELATIVE mono_out COMPONENT mon_c_e = PSD_monitor( nx = 60, ny = 60, filename = "After_Coll", xmin = -0.06, xmax = 0.06, ymin = -0.06, ymax = 0.06) AT (0, 0, 0.01) RELATIVE coll_out /* B4C aperture */ COMPONENT mon_n_b = PSD_monitor( nx = 60, ny = 60, filename = "Before_Nose", xmin = -0.06, xmax = 0.06, ymin = -0.06, ymax = 0.06) AT (0, 0, MN) RELATIVE mono_out COMPONENT nose = Slit( radius = AP) AT (0, 0, BN) RELATIVE mono_out COMPONENT mon_n_a = PSD_monitor( nx = 60, ny = 60, filename = "After_Nose", xmin = -0.06, xmax = 0.06, ymin = -0.06, ymax = 0.06) AT (0, 0, 0.01) RELATIVE nose /* sample */ COMPONENT four_circle = Arm( /* sample reference frame */ ) AT (0, 0, L2) RELATIVE mono_out ROTATED (0, 0, 0) RELATIVE mono_out COMPONENT omega_circle = Arm( /* rotate sample in omega scan */ ) AT (0, 0, 0) RELATIVE four_circle ROTATED (0, delta_Omega, 0) RELATIVE four_circle COMPONENT sample_cradle = Arm( /* rotate sample in nu */ ) AT (0, 0, 0) RELATIVE omega_circle ROTATED (0, 0, A5) RELATIVE omega_circle COMPONENT detector_cradle = Arm( /* position detector in nu */ ) AT (0, 0, 0) RELATIVE four_circle ROTATED (0, 0, A5) RELATIVE four_circle COMPONENT sample = Single_crystal( /* rotate sample in omega */ xwidth = CS, yheight = CS, zthick = CS, delta_d_d = CD, mosaic = CM, ax = DS, ay = 0, az = 0, bx = 0, by = DS, bz = 0, cx = 0, cy = 0, cz = DS, reflections = "quartz.lau") AT (0, 0, 0) RELATIVE sample_cradle ROTATED (0, A3, 0) RELATIVE sample_cradle COMPONENT sample_out = Arm( /* position detector in gamma */ ) AT (0, 0, 0) RELATIVE detector_cradle ROTATED (0, A4, 0) RELATIVE detector_cradle /* detector */ COMPONENT PSD_flat = PSD_monitor( nx = 32, ny = 32, filename = "Detector", xmin = -0.032, xmax = 0.032, ymin = -0.032, ymax = 0.032) AT (0, 0, L3) RELATIVE sample_out END