示例#1
0
def get_min_a0(z, U_i, ctau, max_a=10, ion_thres=0.01):
    """
	Calculates the lowest value of a0 that is needed for ionization

	-INPUT:	-z [array]:				Array over the laser pulse
			-w0 [float]:			Waist of the laser in the focus (in microns)
			-ctau [float]:			Laser duration (in femtoseconds)
			-zf [float]:			Laser focus (in microns)
			-lambda_0 [float]:		Laser wavelength (in microns)
			-U_i [float]:			Ionization energy (in eV)
			-energy [float]:		Final energy of the ionized electrons (in J)
			-max_a [float,opt]:		The upper limit for the laser peak a0 
			-ion_thres [float,opt]:	The threshold/ minimum ionization degree

	-RETURN: -min_a0 [float]:		The lower limit of a0 for ionization
			
	"""
    #Calculate the ionization probability
    prob = ionization_probability(z, U_i, max_a, ctau)

    #Calculate the ionization degree
    degree = ionization_degree(z, prob)

    #Get the laser envelope
    envelope = las.gaussian_a0(z, max_a, ctau)

    #Check for which value of a0 the ionization degree is higher than the threshold
    for i in range(0, len(degree)):
        if degree[i] > ion_thres:
            min_a0 = envelope[i]
            break

    return (min_a0)
示例#2
0
def ionization_probability(z, U_i, max_a, ctau, lambda_0=0.8, energy=0):
    """
    Calculates the ionization probability in dependence of laser parameters
	
    INPUT:	- U_i [float]: 		Ionization energy of the atom and the ionization level
        - energy [float]:	Kinetic energy of the ionized electron after ionization (in MeV)
        - max_a [float]:	Peak a0 of the laser
        - z [array]:		Array over the laser pulse
        - w0 [float]:		Waist of the laser in the focus (in microns)	
        - ctau [float]:		Laser duration (in femtoseconds)
        - zf [float]:		Focus position of the laser (in microns)
        - lambda_0 [float]:	Laser wavelength (in microns)
        - plot [boolean,opt.]:	Wether to plot the result
        - r [float, opt.]:	Radial position of the laser (in microns)
        - t [float, opt.]:	Temporal position of the laser
		
    RETURN:	- prob [array]: Ionization probability
    """
    #Constants and important parameters
    U_H = 13.6
    epsilon_0 = 8.854e-12
    lambda_c = const.h / (const.m_e * const.c)
    omega_0 = 2 * np.pi * const.c / lambda_0

    E_k = (1 / const.e) * (2 * np.pi / lambda_0) * (const.c**2) * const.m_e

    #Electrical field of the laser
    E_L = las.gaussian_field_envelope(z, max_a, ctau, lambda_0)

    #Envelope of the laser
    amplitude = las.gaussian_a0(z, max_a, ctau)

    #Keldysh parameter
    gamma_k = (const.alpha / amplitude) * np.sqrt(U_i / U_H)

    #Argument of the exponential function
    laser_ion = lambda_0 / lambda_c * amplitude**3 * gamma_k**3 * (
        E_k / (np.abs(E_L)))
    tunnel_ion = (gamma_k**3 * energy) / (const.hbar * omega_0)

    #ADK rate
    rate = np.exp(-2 / 3 * (laser_ion + tunnel_ion))

    return (rate)
示例#3
0
def potentialeq(phi, zz, z, zi, max_a, ctau, n_e):
    """
	Non-linear, 1d differential wave-equation
	
	-INPUT:		-phi [array]:	Potential of the wake
			-zz [array]:	Array over the plasma target
			-zi [integer]:	Order of the solution of the wave-equation
			-max_a [float]:	Peak a0 of the laser
			-ctau [float]:	Laser duration (in femtoseconds)
			-n_e [float]:	Max. plasma density (in 1/cm^3)
	
	-RETURN:	-potentialeq [array]:	Wave-equation of the non-linear, 1D plasma wave
	"""

    return array([
        phi[1],
        ((1 + las.gaussian_a0(zz, max_a, ctau)**2) /
         (2 * (phi[0] + 1)) - 0.5) * (kp(z, n_e)[zi] / 1e6)**2
    ])
示例#4
0
def condition(z, max_a, ctau, lambda_0, n_e):
    """
	Calculates the condition for trapping (i.e. H_e < H_s, where H_e = Hamiltonian of the electron and 
	H_s = Hamiltonian of the separatrix)
	
	-INPUT:		-z [array]:		Array over the plasma target
			-max_a [float]:		Peak a0 of the laser
			-ctau [float]:		Laser duration (in femtoseconds)
			-lambda_0 [float]:	Laser wavelength (in microns)
			-n_e [float]:		Max. plasma density (in 1/cm^3)
			
	-RETURN:	cond [array]:		H_s - H_e
	"""
    #Calculate the solution of the wave-equation
    phi = potential(z, max_a, ctau, n_e)

    #Calculate the hamiltonian of the separatrix
    right_side = np.sqrt(1 + las.gaussian_a0(z, max_a, ctau)**2) / gammap(
        z, max_a, lambda_0, n_e)

    #Calculate the hamiltonian of the separatrix
    left_side = 1 + get_phi_min(z, max_a, lambda_0, n_e) - phi[3][:, 0]

    return (right_side - left_side)
示例#5
0
#------------------------------------

#Ionization energy
U_i = ptcl.get_ion_energy(element,ion_level)

#Ionization probability
prob = ion.ionization_probability(zz,a0,w0,ctau,zf,lambda_0,U_i,energy,)

#Ionization degree
degree = ion.ionization_degree(zz,prob)

#Laser field
laser_field = las.gaussian_field(zz, a0,w0,ctau,zf,lambda_0)

#Laser envelope
laser_envelope = las.gaussian_a0(zz, a0,ctau)

#Wakefield
wake = pot.wakefield(zz,a0,ctau,ne)

#Ionization energy distribution
#distribution = ion.ionization_energy_distribution(zz,a0,w0,ctau,zf,lambda_0,U_i,energy_range=(0,5,0.1))

#Critical plasma density
n_c = plsm.get_critical_density(lambda_0*1e-6)

#-------------------
# Print the results
#-------------------

print("")