Note:
This discrete numerical simulation is based on:
L. Wilen and R. Giannetta, Impedance Methods for Surface State Electrons, J. Low Temp. Phys. 72, 353–369 (1988). https://doi.org/10.1007/BF00682147
Intermediate steps follow CGS units; final results are converted to SI.
- Use
Create_Green_Function_njit.ipynb.
⚠️ Note: The use of@njit(from Numba) is essential for speeding up core numerical loops. It compiles Python functions into fast machine code, enabling efficient computation.
The Green's function computed with a threshold error of
GreenFunction/Green_njit_R0pt75_H0pt2_N500_M200_posiE100_epsE-10.npy
This file was used in both the Rydberg FM paper and the Plasmon paper.
- Use
Calculate_DensityProfile_Vmb_sweep.ipynbto compute electron density profiles for your desired voltage configurations. - Use
Calculate_DensityProfile_Vmb_sweep_cupy.ipynbif you have a GPU.
⚠️ Note: Please note that there may be more effective ways to optimize the program usingnjitorcupymore appropriately than what we implemented above.
It is important not to usenjitandcupytogether.
njitcompiles functions to run on the CPU, whilecupymanages data on the GPU.
Using onlycupymay result in longer execution times, depending on the situation.
(Here is a link where this issue is discussed: numba/numba#8784)
This notebook includes an example with the following settings:
-
$V_\mathrm{ib} = 10$ V -
$V_\mathrm{ob} = -32$ V -
$V_\mathrm{mb}$ is swept from$-32$ V to$10$ V, while keeping the total number of electrons fixed
(determined from the saturation condition at$V_\mathrm{ib} = 10$ V and$V_\mathrm{mb} = V_\mathrm{ob} = -32$ V).
The DC potential created by the applied electrode voltages,
VmbSweep/Vib10V_Vobm32V/Phi_R0pt75_H0pt2_N500_M200_posiE100_epsE-10.0_Vmb_step=0pt2_Vmb_start=-32_Vmb_stop=10.npy
The density profile obtained for each value of
(red corresponds to
The data is stored in:
VmbSweep/Vib10V_Vobm32V/fixed_electron_number_density/
- Use
Calculate_DensityProfile_Vob_sweep.ipynbto compute electron density profiles for your desired voltage configurations. - Use
Calculate_DensityProfile_Vob_sweep_cupy.ipynbif you have a GPU.
This notebook includes an example with the following settings:
-
$V_\mathrm{ib} = 17$ V -
$V_\mathrm{mb} = 17$ V -
$V_\mathrm{ob}$ is swept from$0$ V to$-160$ V, while keeping the total number of electrons fixed
(determined from "Pencentage" % of the saturation condition at$V_\mathrm{ob} = 0$ V and$V_\mathrm{ib} = V_\mathrm{mb} = 17$ V).
The DC potential created by the applied electrode voltages,
VobSweep/Vib17V_Vmb17V/Phi_R0pt75_H0pt2_N500_M200_posiE100_epsE-10.0_Vob_step=-0pt3_Vob_start=0_Vob_stop=-160.npy
The data for "Pencentage"=100 is stored in:
VobSweep/Vib17V_Vmb17V/fixed_electron_number_density_100_percent_SatENum/
and the data for "Pencentage"=80 is stored in:
VobSweep/Vib17V_Vmb17V/fixed_electron_number_density_80_percent_SatENum/
- Use
Calculate_DensityProfile_Vib_sweep.ipynbto compute electron density profiles for your desired voltage configurations. - Use
Calculate_DensityProfile_Vib_sweep_cupy.ipynbto compute electron density profiles for your desired voltage configurations.
- Use the computed density profiles to calculate the electric field experienced by the electron in the Rydberg detection simulation,
or to calculate the plasmon impedance for the plasmon simulation.
GreenFunction/, VmbSweep/ and VobSweep/ could not be uploaded to GitHub.
Please refer to the following Google Drive link to access the data: