Skip to content

Commit 595afcb

Browse files
authored
Merge pull request #127 from ajnonaka/lumped_inductor
Lumped Inductor
2 parents 01b32a3 + 7a4d8a9 commit 595afcb

42 files changed

Lines changed: 6295 additions & 7 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
Starting with inputs_pd_curved:
2+
3+
inputs_candice0 - straightened
4+
inputs_candice1 - orient wave to travel in x-direction
5+
inputs_candice2 - add shoulder
6+
inputs_candice2s - change input to soft source
7+
inputs_candice3 - turn metal to PEC layer
8+
inputs_candice3a - parameterize by frequency, not wavelength
9+
inputs_candice4 - length/time scale to match 2.5 micron dx/dy
10+
inputs_candice5 - increase dx to 10 microns, increase thickness of substrate, change width of line and air gaps
11+
inputs_candice6 - put buffer behind x=0, truncate line to 635 micron length
12+
inputs_candice7 - invert logic to subtract off superconductor, add mu difference above etch
13+
inputs_candice8 - first curve
14+
inputs_candice9 - fix PEC edges, robustify "do nothing" case to for work for flag 0, -1, -2, ...
15+
inputs_candice10 - use Ey source with alternating sign on each side of the signal line
16+
inputs_candice11 - add another curve and straight line, move soft source inside of etch region
17+
inputs_candice12 - more curves
18+
inputs_candice13 - completed meadering line
19+
inputs_candice14 - left etch behind source
20+
inputs_candice15 - finish geometry
21+
inputs_candice16 - move source to vertical line
22+
inputs_candice16 - v01 geometry file
23+
inputs_candice17 - PML truncating qubit control line
24+
inputs_candice17 - CFL to 0.8, file_min_digits=7, freq=8.6e9
25+
inputs_candice18 - finite thickness conductivity, move prob_lox to edge of charge line
Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
# See parameters in https://github.com/ECP-WarpX/artemis/pull/43
2+
3+
################################
4+
####### GENERAL PARAMETERS ######
5+
#################################
6+
max_step = 20000
7+
8+
amr.n_cell = n_cellx n_celly n_cellz
9+
amr.max_grid_size = max_grid_sizex max_grid_sizey max_grid_sizez
10+
amr.blocking_factor = blocking_factor
11+
amr.refine_grid_layout = 1 # if n_MPI > n_grids, the grids will be successively divided in half until n_MPI <= n_grids
12+
13+
geometry.dims = 3
14+
geometry.prob_lo = prob_lox prob_loy prob_loz
15+
geometry.prob_hi = prob_hix prob_hiy prob_hiz
16+
17+
amr.max_level = 0
18+
19+
# use pec instead of pml overlaying current source so you don't get a reflection
20+
boundary.field_lo = pml pml pml
21+
boundary.field_hi = pml pml pml
22+
23+
my_constants.offset_y = -1100.e-6
24+
25+
#################################
26+
############ NUMERICS ###########
27+
#################################
28+
warpx.verbose = 1
29+
30+
warpx.cfl = 0.8
31+
32+
# vacuum or macroscopic
33+
algo.em_solver_medium = macroscopic
34+
35+
# laxwendroff or backwardeuler
36+
algo.macroscopic_sigma_method = laxwendroff
37+
38+
macroscopic.sigma_function(x,y,z) = "sigma_0 + (sigma_si - sigma_0) * (z <= h_si)
39+
+ (sigma_metal - sigma_0) * (z > h_si) * (z < h_si + dz) * (x < prob_lox) *
40+
(1
41+
-(y > -32.5e-6 + ddy) * (y < -27.5e-6 - ddy)
42+
-(y > -20.e-6 + ddy) * (y < -15.e-6 - ddy)
43+
)"
44+
45+
macroscopic.epsilon_function(x,y,z) = "eps_0 + eps_0 * (eps_r_si - 1.) * (z <= h_si)"
46+
47+
# lines 1-4: qubit control
48+
# lines 5-9: readout resonator
49+
# lines 9-13: capacitor
50+
# lines 14-18: entrance to meanding line
51+
# lines 19-68: meandering line
52+
macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_test - 1.) * (z > h_si) * (z < h_si + dz) *
53+
(1
54+
-(y > -32.5e-6 + ddy) * (y < -27.5e-6 - ddy)
55+
-(y > -20.e-6 + ddy) * (y < -15.e-6 - ddy)
56+
)"
57+
#################################
58+
############ FIELDS #############
59+
#################################
60+
61+
###############
62+
# domain size
63+
# n_cellx/y/z and Lx/y/z are needed to calculate dx/dy/dz
64+
###############
65+
my_constants.n_cellx = 200
66+
my_constants.n_celly = 40
67+
my_constants.n_cellz = 32
68+
69+
my_constants.max_grid_sizex = 200
70+
my_constants.max_grid_sizey = 40
71+
my_constants.max_grid_sizez = 32
72+
my_constants.blocking_factor = 2
73+
74+
my_constants.prob_lox = -1750.e-6
75+
my_constants.prob_loy = -75.e-6
76+
my_constants.prob_loz = 0.
77+
78+
my_constants.prob_hix = -1250.e-6
79+
my_constants.prob_hiy = 25.e-6
80+
my_constants.prob_hiz = 320.e-6
81+
82+
my_constants.Lx = prob_hix - prob_lox
83+
my_constants.Ly = prob_hiy - prob_loy
84+
my_constants.Lz = prob_hiz - prob_loz
85+
86+
###############
87+
# material properties
88+
###############
89+
my_constants.sigma_0 = 0.0
90+
my_constants.sigma_si = 0.
91+
my_constants.sigma_metal = 1.e10
92+
93+
my_constants.eps_0 = 8.8541878128e-12
94+
my_constants.eps_r_si = 11.7
95+
96+
my_constants.mu_0 = 1.25663706212e-06
97+
my_constants.mu_r_si = 1.0
98+
my_constants.mu_r_test = 0.999999
99+
100+
###############
101+
# silicon and palladium cross section
102+
###############
103+
my_constants.h_si = 160.e-6
104+
105+
###############
106+
# waveguide port parameters
107+
###############
108+
my_constants.h_port = 160.e-6
109+
my_constants.w_port = 320.e-6
110+
111+
###############
112+
# derived quantities and fundamental constants - don't touch these
113+
###############
114+
115+
my_constants.pi = 3.14159265358979
116+
117+
my_constants.freq = 500.e9
118+
my_constants.TP = 1./freq
119+
120+
# grid spacing
121+
my_constants.dx = Lx / n_cellx
122+
my_constants.dy = Ly / n_celly
123+
my_constants.dz = Lz / n_cellz
124+
125+
my_constants.ddx = dx/1.e6
126+
my_constants.ddy = dy/1.e6
127+
my_constants.ddz = dz/1.e6
128+
129+
my_constants.flag_none = 0
130+
my_constants.flag_hs = 1
131+
my_constants.flag_ss = 2
132+
133+
###############
134+
# excitation
135+
###############
136+
137+
warpx.E_excitation_on_grid_style = parse_E_excitation_grid_function
138+
139+
warpx.Ex_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) *
140+
(1
141+
-(y > -32.5e-6 + ddy) * (y < -27.5e-6 - ddy)
142+
-(y > -20.e-6 + ddy) * (y < -15.e-6 - ddy)
143+
)"
144+
145+
warpx.Ey_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) *
146+
(1
147+
-(y > -32.5e-6 + ddy) * (y < -27.5e-6 - ddy)
148+
-(y > -20.e-6 + ddy) * (y < -15.e-6 - ddy)
149+
)
150+
+ flag_ss * ( (y >= -20.e-6 + ddy) * (y <= -15.e-6 - ddy) + (y >= -32.5e-6 + ddy) * (y <= -27.5e-6 - ddy)) * (z > h_si - ddz) * (z < h_si + ddz) * (x > -1750.e-6 + dx - ddx) * (x < -1750.e-6 + dx + ddx)"
151+
152+
warpx.Ez_excitation_flag_function(x,y,z) = "flag_none"
153+
154+
155+
# This is a source on a qubit control line
156+
warpx.Ex_excitation_grid_function(x,y,z,t) = "0."
157+
warpx.Ey_excitation_grid_function(x,y,z,t) = "exp(-(t-3*TP)**2/(TP**2))*sin(2*pi*freq*t) *
158+
( (y >= -20.e-6 + ddy) * (y <= -15.e-6 - ddy) - (y >= -32.5e-6 + ddy) * (y <= -27.5e-6 - ddy)) * (z > h_si - ddz) * (z < h_si + ddz) * (x > -1750.e-6 + dx - ddx) * (x < -1750.e-6 + dx + ddx)"
159+
warpx.Ez_excitation_grid_function(x,y,z,t) = "0."
160+
161+
###############
162+
# diagnostics
163+
###############
164+
165+
diagnostics.diags_names = plt
166+
###############
167+
# full plotfiles
168+
plt.intervals = 100
169+
plt.fields_to_plot = Ex Ey Ez Bx By Bz mu sigma
170+
plt.diag_type = Full
171+
plt.file_min_digits = 7
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
# See parameters in https://github.com/ECP-WarpX/artemis/pull/43
2+
3+
################################
4+
####### GENERAL PARAMETERS ######
5+
#################################
6+
max_step = 4000
7+
8+
amr.n_cell = n_cellx n_celly n_cellz
9+
amr.max_grid_size = max_grid_size
10+
amr.blocking_factor = blocking_factor
11+
amr.refine_grid_layout = 1 # if n_MPI > n_grids, the grids will be successively divided in half until n_MPI <= n_grids
12+
13+
geometry.dims = 3
14+
geometry.prob_lo = -Lx/2. 0. 0.
15+
geometry.prob_hi = Lx/2. Ly Lz
16+
17+
amr.max_level = 0
18+
19+
# use pec instead of pml overlaying current source so you don't get a reflection
20+
boundary.field_lo = pml pml pml
21+
boundary.field_hi = pml pml pml
22+
23+
#################################
24+
############ NUMERICS ###########
25+
#################################
26+
warpx.verbose = 1
27+
28+
warpx.cfl = 0.8
29+
30+
# vacuum or macroscopic
31+
algo.em_solver_medium = macroscopic
32+
33+
# laxwendroff or backwardeuler
34+
algo.macroscopic_sigma_method = laxwendroff
35+
36+
macroscopic.sigma_function(x,y,z) = "sigma_0
37+
+ (sigma_si - sigma_0) * (z <= h_si)
38+
+ (sigma_pd - sigma_0) * (x >= -w_pd/2.) * (x <= w_pd/2.) * (z > h_si) * (z <= h_si + h_pd)"
39+
40+
macroscopic.epsilon_function(x,y,z) = "eps_0
41+
+ eps_0 * (eps_r_si - 1.) * (z <= h_si)
42+
+ eps_0 * (eps_r_pd - 1.) * (x >= -w_pd/2.) * (x <= w_pd/2.) * (z > h_si) * (z <= h_si + h_pd)"
43+
44+
macroscopic.mu_function(x,y,z) = "mu_0
45+
+ mu_0 * (mu_r_si - 1.) * (z <= h_si)
46+
+ mu_0 * (mu_r_pd - 1.) * (x >= -w_pd/2.) * (x <= w_pd/2.) * (z > h_si) * (z <= h_si + h_pd)"
47+
48+
#################################
49+
############ FIELDS #############
50+
#################################
51+
52+
###############
53+
# domain size
54+
# n_cellx/y/z and Lx/y/z are needed to calculate dx/dy/dz
55+
###############
56+
my_constants.n_cellx = 256
57+
my_constants.n_celly = 384
58+
my_constants.n_cellz = 32
59+
my_constants.max_grid_size = 384
60+
my_constants.blocking_factor = 32
61+
62+
my_constants.Lx = 32.e-6
63+
my_constants.Ly = 48.e-6
64+
my_constants.Lz = 4.e-6
65+
66+
###############
67+
# material properties
68+
###############
69+
my_constants.sigma_0 = 0.0
70+
my_constants.sigma_pd = 1.e7
71+
my_constants.sigma_si = 0.
72+
73+
my_constants.eps_0 = 8.8541878128e-12
74+
my_constants.eps_r_pd = 13.
75+
my_constants.eps_r_si = 12.
76+
77+
my_constants.mu_0 = 1.25663706212e-06
78+
my_constants.mu_r_pd = 1.0
79+
my_constants.mu_r_si = 1.0
80+
81+
###############
82+
# silicon and palladium cross section
83+
###############
84+
my_constants.h_si = 1.e-6
85+
my_constants.w_pd = 2.e-6
86+
my_constants.h_pd = 1.e-6
87+
88+
###############
89+
# waveguide port parameters
90+
###############
91+
my_constants.h_port = 1.e-6
92+
my_constants.w_port = 16.e-6
93+
my_constants.wavelength = 4.e-6
94+
95+
###############
96+
# derived quantities and fundamental constants - don't touch these
97+
###############
98+
99+
my_constants.pi = 3.14159265358979
100+
101+
# c is 1/sqrt(eps*mu) using silicon material properties
102+
my_constants.c = 1./sqrt(eps_0*eps_r_si*mu_0*mu_r_si)
103+
104+
my_constants.TP = wavelength / c
105+
106+
# grid spacing
107+
my_constants.dx = Lx / n_cellx
108+
my_constants.dy = Ly / n_celly
109+
my_constants.dz = Lz / n_cellz
110+
111+
my_constants.tiny = 1.e-12
112+
113+
###############
114+
# excitation
115+
###############
116+
117+
warpx.E_excitation_on_grid_style = parse_E_excitation_grid_function
118+
119+
warpx.Ex_excitation_flag_function(x,y,z) = "0."
120+
warpx.Ey_excitation_flag_function(x,y,z) = "0."
121+
warpx.Ez_excitation_flag_function(x,y,z) = "(x > -w_port/2.) * (x < w_port/2.) * (z > 0.) * (z < h_port) * (y >= -dy/2.) * (y <= dy/2.)"
122+
123+
warpx.Ex_excitation_grid_function(x,y,z,t) = "0."
124+
warpx.Ey_excitation_grid_function(x,y,z,t) = "0."
125+
warpx.Ez_excitation_grid_function(x,y,z,t) = "cos((pi*x)/w_port) * sin(2*pi*c*t/wavelength) * exp(-(t-3*TP)**2/(2*TP**2))"
126+
127+
###############
128+
# diagnostics
129+
###############
130+
131+
diagnostics.diags_names = plt
132+
133+
###############
134+
# full plotfiles
135+
plt.intervals = 100
136+
plt.fields_to_plot = Ex Ey Ez Bx By Bz sigma epsilon mu
137+
plt.diag_type = Full

0 commit comments

Comments
 (0)