-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathtunnel_ionization_1d.py
103 lines (81 loc) · 2.12 KB
/
tunnel_ionization_1d.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
from math import pi, sqrt
l0 = 2.*pi # wavelength in normalized units
t0 = l0 # optical cycle in normalized units
resx = 64. # nb cells in 1 wavelength
rest = resx/0.95 # temporal resolution
Lv = 2.*l0
Lp = l0/32.
Lx = 2.*l0+Lp # simulation length in x direction
Ly = 2.*l0+Lp # simulation length in y direction
tmax = 20.*t0
Tsim = Lv+Lp+tmax # duration of the simulation
nppc = 2048*4 # nb of particle per cells
n0 = 1.e-2 # neutral density
Lmu = 0.8
I18 = 5.0e-2
aL = sqrt(I18*Lmu**2/1.38)
def n_(x):
if (Lv<x<Lv+Lp):
return n0
else:
return 0.
Main(
geometry = "1Dcartesian",
interpolation_order = 2,
cell_length = [l0/resx],
grid_length = [Lx],
number_of_patches = [ 1 ],
timestep = t0/rest,
simulation_time = Tsim,
EM_boundary_conditions = [['silver-muller']],
reference_angular_frequency_SI = 2.*pi * 3.e8/(Lmu*1.e-6),
random_seed = 0
)
Species(
name = 'carbon',
ionization_model = 'tunnel',
ionization_electrons = 'electron',
atomic_number = 6,
position_initialization = 'regular',
momentum_initialization = 'cold',
particles_per_cell = nppc,
mass = 12.*1836.0,
charge = 0.0,
number_density = n_,
boundary_conditions = [['reflective']]
)
Species(
name = 'electron',
position_initialization = 'regular',
momentum_initialization = 'cold',
particles_per_cell = 0,
mass = 1.0,
charge = -1.0,
charge_density = 0.0,
boundary_conditions = [['reflective']],
# time_frozen = 2.*Tsim
)
LaserPlanar1D(
box_side = "xmin",
a0 = aL,
omega = 1.,
polarization_phi = 0.,
ellipticity = 0.,
time_envelope = tgaussian(start=0., duration=None, fwhm=5.*t0, center=Lv+tmax/2., order=2)
)
DiagScalar(
every = 1
)
DiagFields(
every = 1,
time_average = 1,
fields = ["Ex", "Ey", "Ez"]
)
DiagParticleBinning(
deposited_quantity = "weight",
every = 1,
species = ["carbon"],
axes = [
["charge", -0.5, 6.5, 7]
]
)