def example_of_gaussian(): # Fixed values are set onepxtom = pow(10, -5) distance = 0.7 wavelength = 500 * pow(10, -9) aperturesize = 40 pxx = 128 pxy = 128 diffrac = odak.diffractions() aperture = odak.aperture() beam = odak.beams() #aperture.show(rectangle,onepxtom,wavelength,'Aperture') # Defining a gaussian beam amplitude = 10 waistsize = 20 * onepxtom # Distance in between beam waist and the simulation origin focal = 8 for distance in xrange(5, 10): distance *= 1 gaussianbeam = beam.gaussian(pxx, pxy, distance, wavelength, onepxtom, amplitude, waistsize, focal) aperture.show(diffrac.intensity(gaussianbeam, onepxtom), onepxtom, wavelength, 'Detector at %s m' % (distance)) aperture.show3d(gaussianbeam) return True
def example_of_retroreflector(): onepxtom = pow(10, -5) distance = 0.8 wavelength = 500 * pow(10, -9) aperturesize = 40 pxx = 1920 pxy = 1920 pitch = 40 diffrac = odak.diffractions() aperture = odak.aperture() beam = odak.beams() # Retroreflector corner cube array is created retro = aperture.retroreflector(pxx, pxy, wavelength, pitch, 'normal') aperture.show(retro, onepxtom, wavelength, 'Detector') #aperture.show(diffrac.fft(retro),onepxtom,wavelength,'FFT') #aperture.show3d(retro) # Divergin gaussian beam defined focal = 0.8 amplitude = 1 waistsize = 50 * onepxtom gaussianbeam = beam.gaussian(pxx, pxy, distance, wavelength, onepxtom, amplitude, waistsize, focal) aperture.show(gaussianbeam, onepxtom, wavelength, 'Detector at %s m' % (distance)) # Output after the gaussian beam reflects from retroreflector output1 = gaussianbeam * retro aperture.show(output1, onepxtom, wavelength, 'Detector') # Output at the far distance distance = 1 output2 = diffrac.fresnelfraunhofer(output1, wavelength, distance, onepxtom, aperturesize) aperture.show(diffrac.intensity(output2, onepxtom), onepxtom, wavelength, 'Detector', 'normal') return True
def example_of_retroreflector(): onepxtom = pow(10,-5) distance = 0.8 wavelength = 500*pow(10,-9) aperturesize = 40 pxx = 1920 pxy = 1920 pitch = 40 diffrac = odak.diffractions() aperture = odak.aperture() beam = odak.beams() # Retroreflector corner cube array is created retro = aperture.retroreflector(pxx,pxy,wavelength,pitch,'normal') aperture.show(retro,onepxtom,wavelength,'Detector') #aperture.show(diffrac.fft(retro),onepxtom,wavelength,'FFT') #aperture.show3d(retro) # Divergin gaussian beam defined focal = 0.8 amplitude = 1 waistsize = 50*onepxtom gaussianbeam = beam.gaussian(pxx,pxy,distance,wavelength,onepxtom,amplitude,waistsize,focal) aperture.show(gaussianbeam,onepxtom,wavelength,'Detector at %s m' % (distance)) # Output after the gaussian beam reflects from retroreflector output1 = gaussianbeam*retro aperture.show(output1,onepxtom,wavelength,'Detector') # Output at the far distance distance = 1 output2 = diffrac.fresnelfraunhofer(output1,wavelength,distance,onepxtom,aperturesize) aperture.show(diffrac.intensity(output2,onepxtom),onepxtom,wavelength,'Detector','normal') return True
def example_of_fresnel_fraunhofer(): # Fixed values are set. onepxtom = pow(10,-6) # Aperture size in mm. wavelength = 500*pow(10,-9) pxx = 2048 pxy = pxx diffrac = odak.diffractions() aperture = odak.aperture() beam = odak.beams() # A spherical beam traveled from a point to a pinhole, with a distance in mm. focal = pow(10,-4) distance = 9. distance *= pow(10,-3) spherical = beam.spherical(pxx,pxy,distance,wavelength,onepxtom,focal,1) # aperture.show(spherical,onepxtom,wavelength,'Spherical wave') for i in xrange(1,20): da = i*0.01 aperturesize = da*pow(10,-3)/onepxtom circle = aperture.circle(pxx,pxy,aperturesize) # aperture.show(circle,onepxtom,wavelength,'Aperture') # Spherical wave transmitted from a pinhole. AfterPinhole = diffrac.transmittance(spherical,circle) # aperture.show(AfterPinhole,onepxtom,wavelength,'After a pinhole') # Distance between pinhole and a lens in mm. distance = 43. distance *= pow(10,-3) # Sample Fresnel and Fraunhofer region calculation of the given aperture print 'lambda*d/w = %s m' % (wavelength*distance/(aperturesize*onepxtom)) # Calculating far field behaviour. BeforeLens = diffrac.fresnelfraunhofer(AfterPinhole,wavelength,distance,onepxtom,aperturesize) # Calculating the fresnel number. fresnelno = diffrac.fresnelnumber(aperturesize,onepxtom,wavelength,distance) # aperture.show(diffrac.intensity(BeforeLens,onepxtom),onepxtom,wavelength,'Before a lens, Distance: %s m Wavelength: %s m Fresnel Number: %s'% (distance,wavelength,fresnelno)) # aperture.showrow(diffrac.intensity(BeforeLens,onepxtom),wavelength,onepxtom,distance) # Multiply it with lens transmittance function. Focal length in mm. focal = 22. focal *= pow(10,-3) AfterLens = diffrac.lens(BeforeLens,wavelength,focal,onepxtom) # Calculating far field behaviour. distance = 22. distance *= pow(10,-3) aperturesize = 20.*pow(10,-3)/onepxtom output = diffrac.fresnelfraunhofer(AfterLens,wavelength,distance,onepxtom,aperturesize) # Calculating the fresnel number. fresnelno = diffrac.fresnelnumber(aperturesize,onepxtom,wavelength,distance) aperture.show(diffrac.intensity(output,onepxtom),onepxtom,wavelength,'Retina, Distance: %s m Wavelength: %s m Fresnel Number: %s'% (distance,wavelength,fresnelno),'normal','da=%smm.png'%da) aperture.showrow(diffrac.intensity(output,onepxtom),wavelength,onepxtom,distance,'row_da=%smm.png' % da) # Show a 3D plot of the output. # aperture.show3d(diffrac.intensity(output,onepxtom)) # Showing plots. # aperture.showplots() return True
def example_of_spherical_wave(): # Fixed values are set onepxtom = pow(10,-5) distance = 0.7 wavelength = 500*pow(10,-9) aperturesize = 40 pxx = 128 pxy = 128 diffrac = odak.diffractions() aperture = odak.aperture() beam = odak.beams() # Defining a diverging spherical wave focal = 0.0001 for distance in xrange(1,20): # Focal point distance fromn the origin of the spherical wave distance *= 0.00001 spherical = beam.spherical(pxx,pxy,distance,wavelength,onepxtom,focal,1) aperture.show(diffrac.intensity(spherical,onepxtom),onepxtom,wavelength,'Detector at %s m' % distance) aperture.show3d(spherical) return True
def example_of_spherical_wave(): # Fixed values are set onepxtom = pow(10, -5) distance = 0.7 wavelength = 500 * pow(10, -9) aperturesize = 40 pxx = 128 pxy = 128 diffrac = odak.diffractions() aperture = odak.aperture() beam = odak.beams() # Defining a diverging spherical wave focal = 0.0001 for distance in xrange(1, 20): # Focal point distance fromn the origin of the spherical wave distance *= 0.00001 spherical = beam.spherical(pxx, pxy, distance, wavelength, onepxtom, focal, 1) aperture.show(diffrac.intensity(spherical, onepxtom), onepxtom, wavelength, 'Detector at %s m' % distance) aperture.show3d(spherical) return True
def example_of_gaussian(): # Fixed values are set onepxtom = pow(10,-5) distance = 0.7 wavelength = 500*pow(10,-9) aperturesize = 40 pxx = 128 pxy = 128 diffrac = odak.diffractions() aperture = odak.aperture() beam = odak.beams() #aperture.show(rectangle,onepxtom,wavelength,'Aperture') # Defining a gaussian beam amplitude = 10 waistsize = 20*onepxtom # Distance in between beam waist and the simulation origin focal = 8 for distance in xrange(5,10): distance *= 1 gaussianbeam = beam.gaussian(pxx,pxy,distance,wavelength,onepxtom,amplitude,waistsize,focal) aperture.show(diffrac.intensity(gaussianbeam,onepxtom),onepxtom,wavelength,'Detector at %s m' % (distance)) aperture.show3d(gaussianbeam) return True
def example_of_fresnel_fraunhofer(): # Fixed values are set. onepxtom = pow(10, -6) # Aperture size in mm. wavelength = 500 * pow(10, -9) pxx = 2048 pxy = pxx diffrac = odak.diffractions() aperture = odak.aperture() beam = odak.beams() # A spherical beam traveled from a point to a pinhole, with a distance in mm. focal = pow(10, -4) distance = 9. distance *= pow(10, -3) spherical = beam.spherical(pxx, pxy, distance, wavelength, onepxtom, focal, 1) # aperture.show(spherical,onepxtom,wavelength,'Spherical wave') for i in xrange(1, 20): da = i * 0.01 aperturesize = da * pow(10, -3) / onepxtom circle = aperture.circle(pxx, pxy, aperturesize) # aperture.show(circle,onepxtom,wavelength,'Aperture') # Spherical wave transmitted from a pinhole. AfterPinhole = diffrac.transmittance(spherical, circle) # aperture.show(AfterPinhole,onepxtom,wavelength,'After a pinhole') # Distance between pinhole and a lens in mm. distance = 43. distance *= pow(10, -3) # Sample Fresnel and Fraunhofer region calculation of the given aperture print 'lambda*d/w = %s m' % (wavelength * distance / (aperturesize * onepxtom)) # Calculating far field behaviour. BeforeLens = diffrac.fresnelfraunhofer(AfterPinhole, wavelength, distance, onepxtom, aperturesize) # Calculating the fresnel number. fresnelno = diffrac.fresnelnumber(aperturesize, onepxtom, wavelength, distance) # aperture.show(diffrac.intensity(BeforeLens,onepxtom),onepxtom,wavelength,'Before a lens, Distance: %s m Wavelength: %s m Fresnel Number: %s'% (distance,wavelength,fresnelno)) # aperture.showrow(diffrac.intensity(BeforeLens,onepxtom),wavelength,onepxtom,distance) # Multiply it with lens transmittance function. Focal length in mm. focal = 22. focal *= pow(10, -3) AfterLens = diffrac.lens(BeforeLens, wavelength, focal, onepxtom) # Calculating far field behaviour. distance = 22. distance *= pow(10, -3) aperturesize = 20. * pow(10, -3) / onepxtom output = diffrac.fresnelfraunhofer(AfterLens, wavelength, distance, onepxtom, aperturesize) # Calculating the fresnel number. fresnelno = diffrac.fresnelnumber(aperturesize, onepxtom, wavelength, distance) aperture.show( diffrac.intensity(output, onepxtom), onepxtom, wavelength, 'Retina, Distance: %s m Wavelength: %s m Fresnel Number: %s' % (distance, wavelength, fresnelno), 'normal', 'da=%smm.png' % da) aperture.showrow(diffrac.intensity(output, onepxtom), wavelength, onepxtom, distance, 'row_da=%smm.png' % da) # Show a 3D plot of the output. # aperture.show3d(diffrac.intensity(output,onepxtom)) # Showing plots. # aperture.showplots() return True