-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Determination of the Electric Field at Contacts #280
Comments
For the electric field energy calculation we already determine the electric field for each voxel SolidStateDetectors.jl/src/Simulation/ElectricFieldEnergy.jl Lines 22 to 68 in 3cb4d47
|
Alternatively, we could drop support (prohibit) 2D-objects. Which I am actually in favor of as our geometry is based on extended objects. Though, for certain (rotated) objects there still could be the case where the neighbors in one dimension |
Yes, exactly, also as the contacts are painted onto a grid, situations may occur where only grid point in a dimension is assigned as contact. Just prohibiting 2D volumes does not necessarily solve this. |
I would not get rid of interpolation per se. |
I just looked up the Interpolations.jl doc again. using SolidStateDetectors, Unitful, Interpolations
sim = Simulation(SSD_examples[:Coax])
calculate_electric_potential!(sim)
itp = interpolate(broadcast(i -> sim.electric_potential.grid[i].ticks, (1,2,3)), sim.electric_potential.data, Gridded(Linear()));
pt = CylindricalPoint{Float32}(0.02, 0.01, 0.03)
Interpolations.gradient(itp, pt...) Maybe we could also switch to other kind of interpolations than We interpolate anyhow already in the drift. But we could switch to interpolating the electric field vector directly from the electric potential by this. |
The issue came up from #279
Right now, we assign an electric field vector to each grid point of the grid of the electric potential.
The components of the vector is calculated by the differences in potential to the neighboring grid points in the respective dimensions. However, for 2D-contacts, e.g. a plane in
x-y
, a wrong value is determined for the component inz
:E_z
.#279 is a hotfix for this issue such that the value which corresponds to the side lying in the semiconductor is assigned to the grid point. Which is okay for calculating the drift of charge carriers inside the semiconductor.
However, in general this is not correct.
I think instead of assigning electric field vectors to all grid points of the electric potential,
we should assign electric field vectors to each volume between the grid points of the electric potential.
Thus, the grid of the electric field would be smaller by one in each dimension
as its ticks would be the midpoints of the ticks of the grid of the electric potential.
This would also require changes in the interpolation of the electric field vector during the drift.
The text was updated successfully, but these errors were encountered: