79 lines
1.6 KiB
Plaintext
79 lines
1.6 KiB
Plaintext
/*******************************************************************************
|
|
*
|
|
* McStas, neutron ray-tracing package
|
|
* Copyright (C) 1997-2008, All rights reserved
|
|
* Risoe National Laboratory, Roskilde, Denmark
|
|
* Institut Laue Langevin, Grenoble, France
|
|
*
|
|
* Component: Beamstop
|
|
*
|
|
* %ID
|
|
*
|
|
* Written by: Peter Willendrup
|
|
* Date: November 2008
|
|
* Origin: Risoe
|
|
*
|
|
* Box-shaped absorbing slab.
|
|
*
|
|
* %D
|
|
* Infinitely absorbing slab of material.
|
|
*
|
|
* Example: Absorber(xmin=-0.01, xmax=0.01, ymin=-0.05, ymax=0.05, zmin=-0.2, zmax=0)
|
|
*
|
|
* %P
|
|
* INPUT PARAMETERS
|
|
*
|
|
* xmin: [m] Lower x bound
|
|
* xmax: [m] Upper x bound
|
|
* ymin: [m] Lower y bound
|
|
* ymax: [m] Upper y bound
|
|
* zmin: [m] Lower z bound
|
|
* zmax: [m] Upper z bound
|
|
*
|
|
* %END
|
|
*******************************************************************************/
|
|
|
|
DEFINE COMPONENT AbsorberFixed
|
|
DEFINITION PARAMETERS ()
|
|
SETTING PARAMETERS (xmin=0, xmax=0, ymin=0, ymax=0, zmin=0, zmax=0)
|
|
OUTPUT PARAMETERS (xw, yh, zt, xm, ym, zm)
|
|
|
|
DECLARE
|
|
%{
|
|
double t0,t1,xp,yp,zp,xm,ym,zm,xw, yh, zt;
|
|
%}
|
|
|
|
INITIALIZE
|
|
%{
|
|
xw = xmax-xmin;
|
|
yh = ymax-ymin;
|
|
zt = zmax-zmin;
|
|
xm = (xmax+xmin)/2;
|
|
ym = (ymax+ymin)/2;
|
|
zm = (zmax+zmin)/2;
|
|
if (xw == 0 || yh == 0 || zt == 0)
|
|
{ fprintf(stderr,"Absorber: %s: Error: Slab volume is zero!\n", NAME_CURRENT_COMP); exit(-1); }
|
|
%}
|
|
|
|
TRACE
|
|
%{
|
|
xp = x - xm;
|
|
yp = y - ym;
|
|
zp = z - zm;
|
|
if (box_intersect(&t0, &t1, xp, yp, zp, vx, vy, vz, xw, yh, zt)) {
|
|
if (t1>=0) {
|
|
PROP_DT((t1+t0)/2);
|
|
SCATTER;
|
|
ABSORB;
|
|
}
|
|
}
|
|
%}
|
|
|
|
MCDISPLAY
|
|
%{
|
|
magnify("xy");
|
|
box(xm, ym, zm, xw, yh, zt);
|
|
%}
|
|
|
|
END
|