def build_beamline(): beamLine = raycing.BeamLine() beamLine.geometricSource01 = rsources.GeometricSource( bl=beamLine, name=None, center=[0, 0, 0], nrays=1000, distE=r"flat", dx=0.001, dz=0.001, dxprime=0, dzprime=0, energies=[Emin, Emax]) beamLine.screen02 = rscreens.Screen(bl=beamLine, center=[0, 10000, 0]) beamLine.lauePlate01 = roes.BentLaueCylinder( # beamLine.lauePlate01 = roes.LauePlate( bl=beamLine, name=None, center=[0, 10000, 0], pitch=0.0, R=1e4, crossSection='parabolic', material=crystalSi01, targetOpenCL='CPU') beamLine.screen01 = rscreens.Screen(bl=beamLine, name=None, center=[0.0, 20000, 0.0]) return beamLine
def build_beamline(): beamLine = raycing.BeamLine(height=0) rs.GeometricSource(beamLine, 'GeometricSource', dx=3., dz=3., dxprime=1.6e-4, distzprime=None) beamLine.fsm1 = rsc.Screen(beamLine, 'FSM1', (0, pLaueSCM - 100, 0)) beamLine.laueSCM = roe.BentLaueCylinder( beamLine, 'LaueSCM', (0, pLaueSCM, 0), material=(siCrystal,)) beamLine.fsm2 = rsc.Screen(beamLine, 'FSM2', [0, pLaueSCM + qLaueSCM, 0]) return beamLine
def build_beamline(nrays=1e5): beamLine = raycing.BeamLine(height=0) rs.GeometricSource(beamLine, 'GeometricSource', nrays=nrays, dx=3., dz=3., dxprime=1.6e-4, distzprime=None) beamLine.fsm1 = rsc.Screen(beamLine, 'FSM1', (0, pLaueDCM - 100, 0)) beamLine.laueDCM1 = roe.BentLaueCylinder(beamLine, 'LaueDCM1', (0, pLaueDCM, 0), material=(si111, )) beamLine.laueDCM2 = roe.BentLaueCylinder(beamLine, 'LaueDCM2', [0, 0, fixedExit], material=(si111, )) beamLine.fsm2 = rsc.Screen(beamLine, 'FSM2', [0, pLaueDCM + qLaueDCM, fixedExit]) return beamLine
def build_beamline(nrays=raycing.nrays): fixedExit = 15. beamLine = raycing.BeamLine(azimuth=0, height=0) hDiv = 1.5e-3 vDiv = 2.5e-4 rs.GeometricSource(beamLine, 'GeometricSource', (0, 0, 0), nrays=nrays, dx=0.1, dy=0, dz=2., dxprime=hDiv / 2, dzprime=0, distE='flat', energies=eLimits, polarization='horizontal') beamLine.feMovableMaskLT = ra.RectangularAperture(beamLine, 'FEMovableMaskLT', [0, 10000, 0], ('left', 'top'), [-10, 3.]) beamLine.feMovableMaskRB = ra.RectangularAperture(beamLine, 'FEMovableMaskRB', [0, 10500, 0], ('right', 'bottom'), [10, -3.]) beamLine.feMovableMaskLT.set_divergence(beamLine.sources[0], [-hDiv / 2, vDiv / 2]) beamLine.feMovableMaskRB.set_divergence(beamLine.sources[0], [hDiv / 2, -vDiv / 2]) si111 = rm.CrystalSi(hkl=(1, 1, 1), tK=-171 + 273.15) beamLine.dcm = roe.DCM(beamLine, 'DCM', (0, yDCM, 0), surface=('Si111', ), material=(si111, )) beamLine.dcm.bragg = math.asin(rm.ch / (2 * si111.d * E0)) beamLine.dcm.cryst2perpTransl = fixedExit / 2. / math.cos( beamLine.dcm.bragg) beamLine.fsm1 = rsc.Screen(beamLine, 'FSM1', (0, yDCM + 700, 0)) beamLine.vfm = roe.ToroidMirror(beamLine, 'VFM', (0, yVFM, fixedExit), pitch=4e-3) beamLine.vfm.R = yVFM / beamLine.vfm.pitch beamLine.vfm.r = 2. / 3. * yVFM * beamLine.vfm.pitch yFlatMirror = yVFM + 2000. zFlatMirror = (yFlatMirror - yVFM) * 2. * beamLine.vfm.pitch + fixedExit beamLine.vdm = roe.OE(beamLine, 'FlatMirror', (0, yFlatMirror, zFlatMirror), pitch=-beamLine.vfm.pitch, positionRoll=math.pi) beamLine.qwp = roe.BentLaueCylinder(beamLine, 'QWP', (0, yQWP, zFlatMirror), roll=math.pi / 4, material=(crystalDiamond, ), R=3000.) beamLine.qwp.pitch = theta0 + math.pi / 2 beamLine.fsm2 = rsc.Screen(beamLine, 'FSM2', (0, ySample, zFlatMirror)) return beamLine