LupoLab / Luna.jl

Nonlinear optical pulse propagator
MIT License
60 stars 27 forks source link

How to output electron density? #348

Open zhangxinyao999 opened 1 year ago

zhangxinyao999 commented 1 year ago

Hi!

I'm interested in the density distribution of plasma in the free space transport simulation, but I can't find any sample code.

Can you tell me how to solve this problem?

Thank you!

chrisbrahms commented 12 months ago

Hi!

Unfortunately we haven't had time to implement statistics for the free-space simulation cases yet, which is why there is no sample code.

You can extract it from the output field using the following code:

##
import FFTW
Etr = FFTW.irfft(q \ output["Eω"], length(grid.t), 1) # transform from E(ω, k, z) to E(t, r, z)

ionpot = PhysData.ionisation_potential(gas) # ionisation potential
ionrate = Ionisation.ionrate_fun!_PPTcached(gas, λ0) # ionisation rate function

ionfrac = Ionisation.ionfrac(ionrate, Etr, grid.t[2]-grid.t[1]) # ionisation fraction at each (t, r, z)

ionfrac_end = ionfrac[end, :, :] # ionisation fraction at the end of the time window

##
plt.figure()
plt.pcolormesh(zout*1e2, q.r*1e3, ionfrac_end)
plt.xlim(1e2L/2 .+ [-5, 5])
plt.ylim(0, 0.1)
plt.xlabel("Distance (cm)")
plt.ylabel("Radial position (mm)")
plt.colorbar(label="Ionisation fraction")

Note that I've assumed the existence of a few variables here--see the radial.jl example file for their meanings. This produces a plot which looks like this (for the radial.jl example with 200 μJ of energy, when the output contains 501 z points):

image

Running this code takes a while, because the inverse transform of the whole output is quite a lot of work. But it should get you the output you need, I hope.

zhangxinyao999 commented 11 months ago

Thanks! I am now looking at the code about tunnel ionization(ADK model) in Luna. I found something that puzzled me.

In https://github.com/LupoLab/Luna.jl/blob/master/src/Ionisation.jl, the formula of ADK rate do not have a term $g{lm}$, which is different for different materials. In this book, Zenghu Chang: Fundamentals of Attosecond Optics (2011) p. 181,182. Helium: $G{lm}=1$, Neon: $G{lm} = 3$. So, I don't understand why there is no this term $G{lm}$.

截屏2023-10-02 17 08 29 截屏2023-10-02 17 07 54

Besides, the calculate of this term cn_sq, I wonder why it don't consider $l$. Also in that book, this term is

截屏2023-10-02 17 04 53

Is this an approximation because $l^{*}$ is small compared with $n^{*}$?