-
Notifications
You must be signed in to change notification settings - Fork 4
Description
So as you might know, the transformer boostfactor breaks down for small disks, starting at a radius of ~4-5cm. Since it's collapsing quite suddendly, it might be a bug/numerical instability rather than wrong assumptions. The assumptions might still be invalid for small disks but I would rather expect a wrong boostfactor and not a collapse to zero from that.

One suspect I have is the following:
For smaller disks the X-Y grid should be smaller and finer than for large disks. Usually, we set it up like this:
# Coordinate System
dx = 0.02
coords = SeedCoordinateSystem(X = -0.5:dx:0.5, Y = -0.5:dx:0.5)
If dx is very small than the momentum grid kX, kY in SeedCoordinateSystem containts values larger than k0.
In boost_fractor.jl, line 167 this leads to the situation the comment already warns us from:
#TODO: If maximum k is higher than k0, then it is not defined
# what happens with this mode
# We should give a warning and handle this here
# At the moment the script will just also propagate with a loss for those components
# Propagate through space
k0 = 2*pi/lambda*sqrt(eps)
k_prop = [conj(sqrt( Complex{Float64}(k0^2 - Kx^2 - Ky^2) )) for Kx in coords.kX, Ky in coords.kY]
E0 = E0 .* exp.(-1im*k_prop*dz)
The exponent becomes real and we have absorption. If I just scale the X-Y grid linearly with disk radius, almost all of kX,kY are large than k0 in magnitude at which point they could maybe overwhelm the propagating smaller kX,kY...
Just my theory at the moment, could be something else or a combination of things.
Cheers,
Jacob