Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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