给定一组评估电场的点,我想从高斯光束中获得功率。请按照我的推理告诉我什么假设可能是错误的
功率定义为:
我们在面积上积分,那么功率是一个不依赖于几何的量。如果我们计算高斯光束横截面或球面上的积分,两个结果应该是相同的(我认为??)
为了测试这一点,我编写了一个代码来获取两个区域的电场(下面的代码),我在这里寻求如何在两种情况下集成电场的帮助。
高斯电场
我正在使用这个pdf中的表达式 (3.11)并且不改变传播方向,它是腰部的高斯光束,在方向上传播
横截面
查看 Stackoverflow结果,我正在使用半径等于高斯腰的向日葵种子排列
领域
没什么特别的,我有均匀分布在和球坐标中的点矩阵。
现在,我的源代码是用 Julia 语言编写的:
using Plots
plotly()
function E_gaussian(x,y,z, k₀, w₀, E₀)
first_term = exp(im*k₀*z)/(1 + 2*im*z/(k₀*w₀^2))
second_term = exp( - ((x^2 + y^2)/w₀^2)*(1/(1 + 2*im*z/(k₀*w₀^2))) )
E = E₀*first_term*second_term
return E
end
function createGaussianSection(nPoints, α, w₀ )
b = round(α*sqrt(nPoints)) # number of boundary points
ϕ = (sqrt(5)+1)/2 # golden ratio
screen = zeros(nPoints,3)
for k=1:nPoints
r = radius_sunflower(k,nPoints,b)
θ = 2*pi*k/ϕ^2
screen[k,1] = w₀*r*cos(θ)
screen[k,2] = w₀*r*sin(θ)
screen[k,3] = 0
end
return screen
end
function radius_sunflower(k,n,b)
if k>n-b
r = 1 # put on the boundary
else
r = sqrt(k-1/2)/sqrt(n-(b+1)/2) # apply square root
end
return r
end
function getE_GassianSection(screen, k₀, w₀, E₀)
nPoints = size(screen,1)
E_laser = zeros(Complex{Float64}, nPoints )
for k =1:nPoints
xₛ = screen[k,1]
yₛ = screen[k,2]
zₛ = screen[k,3]
E_laser[k] = E_gaussian(xₛ, yₛ, zₛ, k₀, w₀, E₀)
end
return E_laser
end
function createSphere(Radius, θNintervals, φNintervals, w₀, k₀)
θ_range = range(0, stop=π, length=θNintervals)
φ_range = range(0, stop=2π, length=φNintervals)
xₛ = Radius.*[cos(φ)*sin(θ) for θ in θ_range, φ in φ_range]
yₛ = Radius.*[sin(φ)*sin(θ) for θ in θ_range, φ in φ_range]
zₛ = Radius.*[cos(θ) for θ in θ_range, φ in φ_range]
screen = zeros(size(xₛ,1),size(xₛ,2),3)
screen[:,:,1] = xₛ
screen[:,:,2] = yₛ
screen[:,:,3] = zₛ
return screen, θ_range, φ_range
end
function getE_Sphere(screen, k₀, w₀, E₀)
nΘ = size(screen,1)
nΦ = size(screen,2)
E_sphere = zeros(Complex{Float64},nΘ, nΦ )
for θ in 1:nΘ, φ in 1:nΦ
xₛ = screen[θ,φ,1]
yₛ = screen[θ,φ,2]
zₛ = screen[θ,φ,3]
E_sphere[θ,φ] = E_gaussian(xₛ, yₛ, zₛ, k₀, w₀, E₀)
end
return E_sphere
end
k₀ = 1
w₀ = 30/k₀
E₀ = 1
screenGaussin = createGaussianSection(5000, 0, w₀)
E_section = getE_GassianSection(screenGaussin, k₀, w₀, E₀)
Intensity_section = real.( conj.(E_section).*E_section)
scatter(screenGaussin[:,1], screenGaussin[:,2], zcolor=Intensity_section, axis=:equal, label="", xlabel="x", ylabel="y")
Radius = 50/k₀
θNintervals = φNintervals = 25
screen, θ_range, φ_range = createSphere(Radius, θNintervals, φNintervals, w₀, k₀)
E_sphere = getE_Sphere(screen, k₀, w₀, E₀)
Intensity_sphere = real.( conj.(E_sphere).*E_sphere)
scatter3d(screen[:,:,1],screen[:,:,2],screen[:,:,3], zcolor =Intensity_sphere , label="")
从我展示的所有内容中,我只有Points。我如何找到区域并整合它们???

