How to set the spectral width of the laser in the laser block of epoch.
Closed this issue · 6 comments
Dear teacher
In the actual experiments,the laser always has its frequency bandwidth.Whether can the EPOCH set the frequency bandwidth of laser.If it is,how to set it in the laser block.For instance, the frequency of laser is 800 nm,its bandwidth is 50 nm.
I'm really sorry to trouble you.It is urgent question. I'm very sincere to acknowledge for you, if it can be work out.
Hey @ouyangchen666,
Bandwidth can mean a few different things. In a short-pulse laser, the bandwidth is coherent, and we get a Gaussian envelope around a fixed wavelength. Given the wavelength and bandwidth you provide, I would imagine this is what you mean. You cannot set the bandwidth directly, but you can copy its effect by adding a gaussian temporal profile - see our laser pulse example.
A relationship between bandwidth and the resulting temporal profile seems to be covered on this external page.
Hope this helps,
Stuart
Dear teacher
I have a question that has been bothering me for a long time. From the laser pulse settings, I clearly understand that the t_profile describes the electric field. Based on my laser wavelength of 800±25 nm, I have transformed it into the time domain using a Fourier transform. Below are the laser parameter settings in my EPOCH:
begin:constant
las_lambda = 0.8 * micron
las_omega = 2.0 * pi * c / las_lambda
laser_period = las_lambda/c
x_m = 2*micron
laser_k = 2*pi/las_lambda
deta_lambda =50*nano
deta_omega=2*pi*c*deta_lambda/las_lambda^2
w_t=1/deta_omega
w0 = 20* micron # spot size 2.5 *micron
rayleigh_length = pi*w0^2/las_lambda
wz = w0*sqrt(1+(x_m/rayleigh_length)^2)
radius_curv = x_m*(1.0+(rayleigh_length/x_m)^2)
a0 = 2.0
Intensity = (1.37*10^18)*a0^2/((las_lambda^2)*10^12) #8.56e20[W/cm^2]
n_crit = ###1.1*10^27/((las_lambda^2)*10^12)
las_t_fwhm = 8 * laser_period
end:constant
begin:laser
boundary = x_max
intensity_w_cm2 = Intensity * (w0/wz)^2
lambda = las_lambda
pol_angle = 0.5*pi #0.5*pi
phase = 0.0
t_profile = gauss(time,0,w_t) * sin(0.5*pi*time/las_t_fwhm)
t_start = 0.0
t_end = 2*las_t_fwhm
profile = gauss(r,0, w0)
end:laser
However, based on the results of my simulation of Compton scattering, this laser parameter is incorrect and does not yield the expected results.
However, another laser parameter setting can acquire a correct results :
begin:laser
boundary = x_max
intensity_w_cm2 = Intensity * w0/wz
lambda = las_lambda
pol_angle = 0.5*pi #0.5*pi
phase = 0.0
t_profile = sin(0.5*pi*time/las_t_fwhm) * sin(0.5*pi*time/las_t_fwhm)
t_start = 0.0
t_end = 2*las_t_fwhm
profile = gauss(r,0, w0)
end:laser
The electron parameter settings for both cases are the same. In the first case, no photons are produced, and the photon angular spectrum is just noise.I apologize for bothering you, but I would be really grateful if you could help me to solve the problem.
The complete EPOCH simulation settings are as follows:
begin:constant
las_lambda = 0.8 * micron
las_omega = 2.0 * pi * c / las_lambda
laser_period = las_lambda/c
x_m = 2*micron
laser_k = 2*pi/las_lambda
deta_lambda =50*nano
deta_omega=2*pi*c*deta_lambda/las_lambda^2
w_t=1/deta_omega
w0 = 20* micron # spot size 2.5 *micron
rayleigh_length = pi*w0^2/las_lambda
wz = w0*sqrt(1+(x_m/rayleigh_length)^2)
radius_curv = x_m*(1.0+(rayleigh_length/x_m)^2)
a0 = 2.0
Intensity = (1.37*10^18)*a0^2/((las_lambda^2)*10^12) #8.56e20[W/cm^2]
n_crit = 1.1*10^27/((las_lambda^2)*10^12)
las_t_fwhm = 8 * laser_period # 12 periods
r = sqrt(y^2 + z^2)
E = 100 * mev # 350MeV
p = E/c # E^2>>me^2*c^4
E0=50*mev
p0 = E0/c
ps=0.001*p0
w_ps=ps/sqrt(2*loge(2))
q0=50*pico
sigma_r=2*micron
sigma_x=4*micron
nb=q0/(qe*pi*(sigma_r/2)^2*sigma_x)
end:constant
begin:control
nx = 1000
ny = 500
nz = 500
# final time of simulation
t_end = 167.0 * femto
# size of domain
y_min = -25 * micron
y_max = 25 * micron
z_min = -25 * micron
z_max = 25 * micron
x_min = 0.0 * micron
x_max = 50.0 * micron
stdout_frequency =10
end:control
begin:boundaries
bc_x_min_field = simple_laser
bc_x_max_field = simple_laser
bc_y_min_field = simple_laser
bc_y_max_field = simple_outflow
bc_z_min_field = simple_laser
bc_z_max_field = simple_outflow
bc_x_min_particle = open
bc_x_max_particle = open
bc_y_min_particle = open
bc_y_max_particle = open
bc_z_min_particle = open
bc_z_max_particle = open
end:boundaries
begin:species
name = electron
charge = -1.0
mass = 1.0
npart_per_cell =27
tracer = F
dist_fn= gauss(px,p0,w_ps)
dist_fn_px_range = (p0 - 3*ps, p0 + 3*ps)
density = if((abs(r) lt sigma_r/2) and (x gt 0 * micron) and (x lt sigma_x), nb, 0.0)
temp_ev = 10
identify:electron
end:species
begin:species
name = Photon
charge = 0.0
npart = 0
mass = 0.0
dumpmask = always
identify:photon
end:species
begin:collisions
use_collisions = F
coulomb_log = auto
collide = all
end:collisions
begin:qed
use_qed = T
qed_start_time = 1.0 * femto #0.1 * pico
produce_photons = T
use_radiation_reaction = T
photon_energy_min = 10.0 * kev
produce_pairs = F
photon_dynamics = T
end:qed
begin:laser
boundary = x_max
intensity_w_cm2 = Intensity * (w0/wz)^2
lambda = las_lambda
pol_angle = 0.5*pi #0.5*pi
phase = 0.0
t_profile = gauss(time,0,w_t) * sin(0.5*pi*time/las_t_fwhm)
t_start = 0.0
t_end = 2*las_t_fwhm
profile = gauss(r,0, w0)
end:laser
begin:window
move_window = F
window_v_x = c
window_start_time = (x_max - x_min) / c
bc_x_min_after_move = simple_outflow
bc_x_max_after_move = simple_outflow
end:window
begin:subset
name = selected
random_fraction = 0.1
include_species = Photon
end:subset
begin:subset
name = selected1
random_fraction = 1.0
include_species = electron
end:subset
begin:output
# number of timesteps between output dumps
dt_snapshot = 10.0 * femto
dt_average = 1.0*laser_period
# Properties at particle positions
particles = selected+selected1
vx = never
vy = never
vz = never
gamma = never
ek = selected +selected1
px = selected +selected1
py = selected +selected1
pz = selected
charge = never
mass = never
particle_weight = selected +selected1
id = always
# Properties on grid
grid = always
ex = never
ey = never
ez = always
bx = never
by = never
bz = never
jx = never
jy = never
jz = never
ekbar = never + species + no_sum
charge_density = never
number_density = always + species + no_sum
temperature = never + species
total_energy_sum = never
distribution_functions = never
end:output
Hi @ouyangchen666,
This simulation is too large for me to run myself, but I think I understand why your two input decks are giving different results.
The key difference is in your laser profile. You have a gauss*sin
function, and a sin^2
function for your t_profile
. The rate of photon production in the nonlinear Compton scatter process is related to the laser intensity. Let's consider both of your profiles with this in mind:
-
t_profile = sin(0.5*pi*time/las_t_fwhm) * sin(0.5*pi*time/las_t_fwhm)
. These sine functions are identical, and you have a maximumt_profile
value of 1 attime = las_t_fwhm
. These profiles apply to the electric field$E$ , and intensity is proportional to$E^2$ , so a high$E$ yields a high intensity. -
t_profile = gauss(time,0,w_t) * sin(0.5*pi*time/las_t_fwhm)
. Here, thegauss
function has a maximum value whentime=0
, but here we also havesin=0
. Similarly, at the peak of thesin
function,gauss
is low. Yourt_profile
is low at all times, which produces a lower intensity at all times, and fewer photons. Remember from the maths parser that the second argument of thegauss
function in EPOCH refers to the maximum of the function. I think you would have more success witht_profile = gauss(time,las_t_fwhm,w_t) * sin(0.5*pi*time/las_t_fwhm)
.
If this is correct, you should be able to see this if you output the electric field values. I believe your peak fields will be lower in the simulation without photon production.
Hope this helps,
Stuart
I'm going to mark this issue as closed for now, but feel free to re-open if there are still problems.
ouyangchen666),
How to interpret your laser boundary conditions? Wat was tried to accomplish?
bc_x_min_field = simple_laser
bc_x_max_field = simple_laser
bc_y_min_field = simple_laser
bc_y_max_field = simple_outflow
bc_z_min_field = simple_laser
bc_z_max_field = simple_outflow