def __init__(self,
                 name="Undefined",
                 elliptic_mirror=MirrorElliptic(f1=98,
                                                f2=1.2,
                                                Alpha=numpy.deg2rad(2.5),
                                                L=0.4),
                 position_directives=PositioningDirectives()):
        #:TODO boundary shape must be checked, is actually useless right now

        max_0 = 0.0 if position_directives.XYCentre is None else position_directives.XYCentre[
            0]
        min_0 = 0.0 if position_directives.XYCentre is None else position_directives.XYCentre[
            1]

        super(WiseEllipticMirror,
              self).__init__(name=name,
                             boundary_shape=Ellipse(
                                 a_axis_min=-0.5 * elliptic_mirror.f1 + min_0,
                                 a_axis_max=0.5 * elliptic_mirror.f1 + min_0,
                                 b_axis_min=-0.5 * elliptic_mirror.f2 + max_0,
                                 b_axis_max=-0.5 * elliptic_mirror.f2 + max_0),
                             wise_optical_element=OpticalElement(
                                 Element=elliptic_mirror,
                                 PositioningDirectives=position_directives,
                                 Name=name,
                                 IsSource=False))
 def __init__(self, name="Undefined", source_gaussian = SourceGaussian(Waist0=0.0, Lambda=10.0), position_directives=PositioningDirectives()):
     #:TODO boundary shape must be checked, is actually useless right now
     super(WiseGaussianSource, self).__init__(name=name,
                                              boundary_shape=None,
                                              wise_optical_element = OpticalElement(Element=source_gaussian,
                                                                                    PositioningDirectives=position_directives,
                                                                                    Name=name,
                                                                                    IsSource=True))
Exemplo n.º 3
0
 def __init__(self,
              name="Undefined",
              detector=Detector(L=400e-6, AngleGrazing=numpy.deg2rad(90)),
              position_directives=PositioningDirectives()):
     super(WiseDetector,
           self).__init__(name=name,
                          boundary_shape=None,
                          wise_optical_element=OpticalElement(
                              Element=detector,
                              PositioningDirectives=position_directives,
                              Name=name,
                              IsSource=False))
 def __init__(self,
              name="Undefined",
              spheric_mirror=MirrorSpheric(),
              position_directives=PositioningDirectives()):
     #:TODO boundary shape must be checked, is actually useless right now
     super(WiseSphericMirror,
           self).__init__(name=name,
                          boundary_shape=Sphere(radius=spheric_mirror.f2),
                          wise_optical_element=OpticalElement(
                              Element=spheric_mirror,
                              PositioningDirectives=position_directives,
                              Name=name,
                              IsSource=False))
 def __init__(self,
              name="Undefined",
              plane_mirror=MirrorPlane(L=0.4,
                                       AngleGrazing=numpy.deg2rad(2.5)),
              position_directives=PositioningDirectives()):
     super(WisePlaneMirror,
           self).__init__(name=name,
                          boundary_shape=Plane(),
                          wise_optical_element=OpticalElement(
                              Element=plane_mirror,
                              PositioningDirectives=position_directives,
                              Name=name,
                              IsSource=False))
Exemplo n.º 6
0
    def __init__(self,
						name="Undefined",
						boundary_shape = None, #syned object
						native_CoreOptics = None, # a LibWISEr.Optics.Optics object
						native_PositioningDirectives = lw.Fundation.PositioningDirectives()
						):
						# we might also add the parameter
#						native_OpticalElement = none
						# then decide what to take. But it is confusing

		# Init SynedOpticalElement
		# Fills: name, boundary_shape
		super(WiseOpticalElement, self).__init__(name=name,
                                                 boundary_shape=boundary_shape)


		# Build the native Wiser OpticalElement
		# fills native_optica_element
		self.native_optical_element = OpticalElement(CoreOpticsElement=native_CoreOptics,
																	   PositioningDirectives=native_PositioningDirectives,
																	   Name = name, #syned name and Wiser name will never be automatically synced...
																		IsSource=False))
if __name__ == '__main__':

    tl.Debug.On = True
    N = 7000
    UseCustomSampling = True
    # SOURCE
    #==========================================================================
    Lambda = 32e-9
    Waist0 = Fermi.Waist0E(Lambda)
    s_k = Optics.SourceGaussian(Lambda, Waist0)      # Kernel delle ottiche
    s_pd = Fundation.PositioningDirectives(            # Direttive di posizionamento
                        ReferTo = Fundation.PositioningDirectives.ReferTo.AbsoluteReference,
                        XYCentre = [0.0, 0.0],
                        Angle = 0.0)
    s = OpticalElement(s_k,
                       PositioningDirectives = s_pd,
                       Name = 'source',
                       IsSource = True)

    # PM1A (h)
    #==========================================================================
    pm1a_k = Optics.MirrorPlane(L=0.4, AngleGrazing = deg2rad(2.5) )
    pm1a_pd = Fundation.PositioningDirectives(
                                    ReferTo = 'upstream',
                                    PlaceWhat = 'centre',
                                    PlaceWhere = 'centre',
                                    Distance = 48.0901)
    pm1a = OpticalElement(pm1a_k, 
                          PositioningDirectives = pm1a_pd,
                          Name = 'pm1a')
    pm1a.ComputationSettings.Ignore = False          # Lo user decide di non simulare lo specchio ()
    pm1a.ComputationSettings.UseCustomSampling = UseCustomSampling # l'utente decide di impostare a mano il campionamento
Exemplo n.º 8
0
from wiselib2.Fundation import OpticalElement

print(__name__)
if __name__ == '__main__':

    tl.Debug.On = True
    # SOURCE
    #------------------------------------------------------------
    Lambda = 5e-9
    Waist0 = 60e-6
    s_k = Optics.SourceGaussian(Lambda, Waist0)
    s_pd = Fundation.PositioningDirectives(ReferTo='absolute',
                                           XYCentre=[0, 0],
                                           Angle=np.deg2rad(0))
    s = OpticalElement(s_k,
                       PositioningDirectives=s_pd,
                       Name='source',
                       IsSource=True)

    # KB(h)
    #------------------------------------------------------------
    f1 = 16
    f2 = 4
    kbh_k = Optics.MirrorElliptic(f1=f1, f2=f2, L=0.4, Alpha=np.deg2rad(2.5))
    kbh_pd = Fundation.PositioningDirectives(ReferTo='source',
                                             PlaceWhat='upstream focus',
                                             PlaceWhere='centre')
    kbh = OpticalElement(kbh_k, PositioningDirectives=kbh_pd, Name='kbh')

    # detector (h)
    #------------------------------------------------------------
    d_k = Optics.Detector(L=100e-6, AngleGrazing=np.deg2rad(90))
Exemplo n.º 9
0
    tl.Debug.On = True
    N = 7000
    UseCustomSampling = True
    # SOURCE
    #==========================================================================
    Lambda = 32e-9
    Waist0 = Fermi.Waist0E(Lambda)
    s_k = Optics.SourceGaussian(Lambda, Waist0)  # Kernel delle ottiche
    s_pd = Fundation.PositioningDirectives(  # Direttive di posizionamento
        ReferTo=Fundation.PositioningDirectives.ReferTo.AbsoluteReference,
        XYCentre=[0, 0],
        Angle=deg2rad(0))
    s = OpticalElement(  # Optical Element (la cosa più vicina al pupolo Oasys)
        s_k,
        PositioningDirectives=s_pd,
        Name='source',
        IsSource=True)

    # PM1A (h)
    #==========================================================================
    pm1a_k = Optics.MirrorPlane(L=0.4, AngleGrazing=deg2rad(2.5))
    pm1a_pd = Fundation.PositioningDirectives(ReferTo='upstream',
                                              PlaceWhat='centre',
                                              PlaceWhere='centre',
                                              Distance=48090.1)
    pm1a = OpticalElement(pm1a_k, PositioningDirectives=pm1a_pd, Name='pm1a')
    pm1a.ComputationSettings.Ignore = False  # Lo user decide di non simulare lo specchio ()
    pm1a.ComputationSettings.UseCustomSampling = UseCustomSampling  # l'utente decide di impostare a mano il campionamento
    pm1a.ComputationSettings.NSamples = N
Exemplo n.º 10
0
# SOURCE
#----------------------------------------------------
tl.Debug.On = False
Lambda = 5e-9

# Gaussian Source (if used)
FermiFactor = {'fel1': 1.25, 'fel2': 1.5}['fel2']
FermiSigma = FermiFactor * Lambda * 1e9
FermiWaist = FermiSigma * np.sqrt(2)
FermiDivergence = Lambda / np.pi / FermiWaist

s = OpticalElement(
    Optics.SourceGaussian(Lambda,
                          FermiWaist,
                          PropagationAngle=0 * 0.0008257924757473173),
    PositioningDirectives=Fundation.PositioningDirectives(ReferTo='absolute',
                                                          XYCentre=[0, 1],
                                                          Angle=np.deg2rad(0)),
    Name='source',
    IsSource=True)

#----------------------------------------------------
# kb1
#----------------------------------------------------
kb1 = OpticalElement(Optics.MirrorElliptic(f1=98.5,
                                           f2=1.180,
                                           L=0.4,
                                           Alpha=np.deg2rad(2)),
                     PositioningDirectives=Fundation.PositioningDirectives(
                         ReferTo='upstream',
                         PlaceWhat='upstream focus',