Exemplo n.º 1
0
AtomicDen_RingVec = np.vectorize(AtomicDen_Ring)

# %%  Derived Values  #########################################################
k = 2 * np.pi * 10**(3) / lamda  # Wave number [um-1]

# %%  Input Field: Point Object Field #########################################
# Define Array ================================================================
ROI_rad = 1.5 * max(w0, Rad_airy)  # radius of ROI, defines small ROI [um]
x = np.linspace(-ROI_rad, ROI_rad, Nx)
y = np.linspace(-ROI_rad, ROI_rad, Ny)
[X1, Y1] = np.meshgrid(x, y)
R1 = np.sqrt(X1**2 + Y1**2)
# Generating Data =============================================================
E1 = GB.PointSourceVec(1, R1[:, :], 0, w0, k)
I1 = GB.BeamInt(E1, P)
# Generating the PSF, ASF = sqrt(PSF) and generating the Image ================
ASF = OE.ASF(X1, Y1, Rad_airy, kind='airy')


def func(x):
    return np.sum(OE.ImageViaPSF(X1, Y1, E1, ASF, norm=x)) - np.sum(I1)


norm = optimize.fsolve(func, 1 / np.sum(ASF))
I1_blur = OE.ImageViaPSF(X1, Y1, E1, ASF, norm=norm)

figure = plotAll3(11, X1, Y1, I1, (norm * ASF), I1_blur, ROI_rad, 1, 1, NA=NA)
cwd = os.getcwd()
os.chdir(startUp.saveDir)
figure.set_size_inches(10, 5)
Exemplo n.º 2
0
        raise Exception('GreenSheet::CircularAperture::I, X and Y should have same dimensions.')
    r0 = r0*10**3
    x0 = x0*10**3
    y0 = y0*10**3
    X = X-x0
    Y = Y-y0
    R = np.sqrt(X**2+Y**2)
    E[R>r0] = 0    
    return E

# %% Input Beam ###############################################################
# Generating Data %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
X1 = X[:,:,0]
Y1 = Y[:,:,0]
E1 = GB.PlaneWaveFieldVec(1,R[:,:,0],0,w0,k)
I1 = GB.BeamInt(E1,P)
# Generating Fit %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
I1 = I1.astype(float)
p0 = [np.max(I1),0,0,w0,w0]
[params1,_] = optimize.curve_fit(GB.GaussBeamFit, [X1,Y1], I1.ravel(), p0=p0)
I1_fit = GB.GaussBeamFit([X1,Y1],*params1).reshape(Ny,Nx)
figure = plotGaussianBeam(1,X1,Y1,I1,I1_fit,params1,1,1)
cwd = os.getcwd()
os.chdir(startUp.saveDir)
figure.set_size_inches(10, 7)
figure.savefig('GS_inputBeam.png')
os.chdir(cwd)

# %% Cylindrical Lens f1 = -40 mm #############################################
# Generating Data %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[E2, X2, Y2] = OE.CylLensAction(E1,X1,Y1,k,f1,FocusingAxis = 'Y')
Exemplo n.º 3
0
    r0 = r0 * 10**3
    x0 = x0 * 10**3
    y0 = y0 * 10**3
    X = X - x0
    Y = Y - y0
    R = np.sqrt(X**2 + Y**2)
    E[R > r0] = 0
    return E


# %% Input Beam ###############################################################
# Generating Data %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
X1 = X[:, :, 0]
Y1 = Y[:, :, 0]
E1 = GB.PlaneWaveFieldVec(1, R[:, :, 0], 0, w0, k)
I1 = GB.BeamInt(E1, P)
# Generating Fit %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
I1 = I1.astype(float)
p0 = [np.max(I1), 0, 0, w0, w0]
[params1, _] = optimize.curve_fit(GB.GaussBeamFit, [X1, Y1], I1.ravel(), p0=p0)
I1_fit = GB.GaussBeamFit([X1, Y1], *params1).reshape(Ny, Nx)
figure = plotGaussianBeam(1, X1, Y1, I1, I1_fit, params1, 1, 1)
cwd = os.getcwd()
os.chdir(startUp.saveDir)
figure.set_size_inches(10, 7)
figure.savefig('GS_inputBeam.png')
os.chdir(cwd)

# %% Cylindrical Lens f_cyY1 #################################################
# Generating Data %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[E2, X2, Y2] = OE.CylLensAction(E1,
Exemplo n.º 4
0
    r0 = r0 * 10**3
    x0 = x0 * 10**3
    y0 = y0 * 10**3
    X = X - x0
    Y = Y - y0
    R = np.sqrt(X**2 + Y**2)
    E[R > r0] = 0
    return E


# %% PROBE Field: Input Probe Beam ############################################
#Generating Data ==============================================================
X1 = X_L[:, :, 0]
Y1 = Y_L[:, :, 0]
E1 = GB.PlaneWaveFieldVec(1, R_L[:, :, 0], 0, w0, k)
I1 = GB.BeamInt(E1, P)
#Generating Fit ===============================================================
I1 = I1.astype(float)
p0 = [np.max(I1), 0, 0, w0, w0]
[params1, _] = optimize.curve_fit(GB.GaussBeamFit, [X1, Y1], I1.ravel(), p0=p0)
I1_fit = GB.GaussBeamFit([X1, Y1], *params1).reshape(Ny, Nx)
plotGaussianBeam(1,
                 X1,
                 Y1,
                 I1,
                 ROI_rad_L,
                 1.5,
                 1.5,
                 Fit=I1_fit,
                 params=params1)