Warwick-Plasma / epoch

Particle-in-cell code for plasma physics simulations
https://epochpic.github.io
GNU General Public License v3.0
173 stars 54 forks source link

How to set the spectral width of the laser in the laser block of epoch. #678

Open ouyangchen666 opened 2 weeks ago

ouyangchen666 commented 2 weeks ago

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.

Status-Mirror commented 2 weeks ago

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

ouyangchen666 commented 1 day ago

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.

ouyangchen666 commented 1 day ago

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
Status-Mirror commented 12 hours ago

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:

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