Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
e19da57
candice test
ajnonaka Feb 7, 2025
8db5cc2
shorter run
ajnonaka Feb 7, 2025
08d1d59
simplify inputs - still WIP
ajnonaka Feb 7, 2025
e0069cd
tests
ajnonaka Feb 13, 2025
128554a
frequency
ajnonaka Feb 13, 2025
676aaea
updates
ajnonaka Feb 13, 2025
fea7296
candice
ajnonaka Feb 13, 2025
fb14d1e
inputs_candice7 - invert logic to subtract off superconductor, add mu…
ajnonaka Feb 18, 2025
436b499
curve
ajnonaka Feb 18, 2025
b6ff401
hard source robustness
ajnonaka Feb 18, 2025
80bdbb3
candice9
ajnonaka Feb 18, 2025
75d0370
inputs_candice10
ajnonaka Feb 19, 2025
0c4dad7
move soft source back
ajnonaka Feb 19, 2025
b3581c9
12
ajnonaka Feb 19, 2025
7a2461e
meanding line
ajnonaka Feb 20, 2025
8671e54
14
ajnonaka Feb 21, 2025
1c8e099
tweaks
ajnonaka Feb 21, 2025
cf6cc22
more geom features
ajnonaka Feb 25, 2025
9406898
second meandering
ajnonaka Feb 25, 2025
94c53e1
offset meandering
ajnonaka Feb 25, 2025
9dfc938
complete circuit
ajnonaka Feb 25, 2025
9eeafe1
end caps
ajnonaka Feb 25, 2025
92bddb6
move source
ajnonaka Feb 25, 2025
bdeec11
v01
ajnonaka Mar 27, 2025
1920ea7
updated circuit, fixed a few edge logic errors. cleaned up syntax so…
ajnonaka Mar 28, 2025
37b50f5
capacitors
ajnonaka Mar 28, 2025
86e3512
qubit control lines
ajnonaka Mar 28, 2025
7b79552
toward moving signal to qubit control line
ajnonaka Mar 28, 2025
605b77b
source on qubit line
ajnonaka Mar 28, 2025
cb6b6ec
4 gpu case4 gpu case4 gpu case4 gpu case
ajnonaka Mar 30, 2025
03deb56
fix soft source
ajnonaka Mar 31, 2025
79eb67a
18
ajnonaka Apr 7, 2025
783b674
resonator
ajnonaka Apr 8, 2025
d04599a
18
ajnonaka May 8, 2025
955b12b
zero sigma substrate
ajnonaka May 20, 2025
6123863
cfl=0.8
ajnonaka May 20, 2025
09ead9a
cleanup
ajnonaka May 20, 2025
e588fd7
fix excitation and max_grid_size
ajnonaka May 22, 2025
540f671
Merge branch 'development' into candice
ajnonaka May 23, 2025
b794af0
updates
ajnonaka Jun 5, 2025
9c68e98
Merge branch 'development' into candice
ajnonaka Jun 11, 2025
7a24f33
small test file
ajnonaka Jun 11, 2025
809b23d
demonstration for how to use PEC/PML combo for tranmission line cleaner
ajnonaka Jun 25, 2025
afdee4a
Merge branch 'development' into candice
ajnonaka Jul 6, 2025
870ce03
new finite thickness conductivity test
ajnonaka Jul 29, 2025
28f2c2f
typo
ajnonaka Jul 29, 2025
e2c599e
starting lumped inductor setup; copying London class to start
ajnonaka Jul 30, 2025
39f17e9
split london class into 3 inductor currents
ajnonaka Jul 30, 2025
ac3977e
more work
ajnonaka Jul 31, 2025
aa7ebf5
more inductor framework
ajnonaka Jul 31, 2025
9e93d25
Merge branch 'development' into candice
ajnonaka Jul 31, 2025
ffe1b9e
Merge branch 'development' into lumped_inductor
ajnonaka Jul 31, 2025
40aaf93
note for future flag fix
ajnonaka Aug 4, 2025
8d3e019
more inductor fun
ajnonaka Aug 4, 2025
6bb6631
Merge branch 'candice' into lumped_inductor
ajnonaka Aug 4, 2025
0a7d180
inductor setup - still not working yet
ajnonaka Aug 4, 2025
5c56576
fix inductor update
ajnonaka Aug 4, 2025
83cc273
turn off pushParticlesDepose, it resets current
ajnonaka Aug 6, 2025
1993de0
move inductor
ajnonaka Aug 6, 2025
46dc95a
broken sigma logic
ajnonaka Aug 6, 2025
f0450ee
smaller inductor
ajnonaka Aug 6, 2025
fe5d9df
lumped element inductor control via algo.lumped_inductor = on/off
ajnonaka Aug 6, 2025
b5251eb
Merge branch 'development' into lumped_inductor
ajnonaka Aug 8, 2025
c125e92
test problem
ajnonaka Aug 8, 2025
a1566e5
fix soft source
ajnonaka Aug 8, 2025
2dbdda6
fix soft source widths
ajnonaka Aug 11, 2025
7cba16f
sigma outside domain fix
ajnonaka Aug 11, 2025
048f12e
fix PEC silicon
ajnonaka Aug 11, 2025
286b509
more source
ajnonaka Aug 11, 2025
14cee35
more source
ajnonaka Aug 11, 2025
cb74d48
more source off boundary
ajnonaka Aug 12, 2025
f47784b
fix PML for both PEC and conductivity cases for inductor test
ajnonaka Aug 14, 2025
a49a5ae
cleanup
ajnonaka Aug 18, 2025
ac1c8aa
test commit
ajnonaka Aug 19, 2025
7a4d8a9
fix end-of-line whitespa
ajnonaka Aug 19, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions Examples/Tests/circuits/Candice/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
Starting with inputs_pd_curved:

inputs_candice0 - straightened
inputs_candice1 - orient wave to travel in x-direction
inputs_candice2 - add shoulder
inputs_candice2s - change input to soft source
inputs_candice3 - turn metal to PEC layer
inputs_candice3a - parameterize by frequency, not wavelength
inputs_candice4 - length/time scale to match 2.5 micron dx/dy
inputs_candice5 - increase dx to 10 microns, increase thickness of substrate, change width of line and air gaps
inputs_candice6 - put buffer behind x=0, truncate line to 635 micron length
inputs_candice7 - invert logic to subtract off superconductor, add mu difference above etch
inputs_candice8 - first curve
inputs_candice9 - fix PEC edges, robustify "do nothing" case to for work for flag 0, -1, -2, ...
inputs_candice10 - use Ey source with alternating sign on each side of the signal line
inputs_candice11 - add another curve and straight line, move soft source inside of etch region
inputs_candice12 - more curves
inputs_candice13 - completed meadering line
inputs_candice14 - left etch behind source
inputs_candice15 - finish geometry
inputs_candice16 - move source to vertical line
inputs_candice16 - v01 geometry file
inputs_candice17 - PML truncating qubit control line
inputs_candice17 - CFL to 0.8, file_min_digits=7, freq=8.6e9
inputs_candice18 - finite thickness conductivity, move prob_lox to edge of charge line
171 changes: 171 additions & 0 deletions Examples/Tests/circuits/Candice/inputs_PMLdemo
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
# See parameters in https://github.com/ECP-WarpX/artemis/pull/43

################################
####### GENERAL PARAMETERS ######
#################################
max_step = 20000

amr.n_cell = n_cellx n_celly n_cellz
amr.max_grid_size = max_grid_sizex max_grid_sizey max_grid_sizez
amr.blocking_factor = blocking_factor
amr.refine_grid_layout = 1 # if n_MPI > n_grids, the grids will be successively divided in half until n_MPI <= n_grids

geometry.dims = 3
geometry.prob_lo = prob_lox prob_loy prob_loz
geometry.prob_hi = prob_hix prob_hiy prob_hiz

amr.max_level = 0

# use pec instead of pml overlaying current source so you don't get a reflection
boundary.field_lo = pml pml pml
boundary.field_hi = pml pml pml

my_constants.offset_y = -1100.e-6

#################################
############ NUMERICS ###########
#################################
warpx.verbose = 1

warpx.cfl = 0.8

# vacuum or macroscopic
algo.em_solver_medium = macroscopic

# laxwendroff or backwardeuler
algo.macroscopic_sigma_method = laxwendroff

macroscopic.sigma_function(x,y,z) = "sigma_0 + (sigma_si - sigma_0) * (z <= h_si)
+ (sigma_metal - sigma_0) * (z > h_si) * (z < h_si + dz) * (x < prob_lox) *
(1
-(y > -32.5e-6 + ddy) * (y < -27.5e-6 - ddy)
-(y > -20.e-6 + ddy) * (y < -15.e-6 - ddy)
)"

macroscopic.epsilon_function(x,y,z) = "eps_0 + eps_0 * (eps_r_si - 1.) * (z <= h_si)"

# lines 1-4: qubit control
# lines 5-9: readout resonator
# lines 9-13: capacitor
# lines 14-18: entrance to meanding line
# lines 19-68: meandering line
macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_test - 1.) * (z > h_si) * (z < h_si + dz) *
(1
-(y > -32.5e-6 + ddy) * (y < -27.5e-6 - ddy)
-(y > -20.e-6 + ddy) * (y < -15.e-6 - ddy)
)"
#################################
############ FIELDS #############
#################################

###############
# domain size
# n_cellx/y/z and Lx/y/z are needed to calculate dx/dy/dz
###############
my_constants.n_cellx = 200
my_constants.n_celly = 40
my_constants.n_cellz = 32

my_constants.max_grid_sizex = 200
my_constants.max_grid_sizey = 40
my_constants.max_grid_sizez = 32
my_constants.blocking_factor = 2

my_constants.prob_lox = -1750.e-6
my_constants.prob_loy = -75.e-6
my_constants.prob_loz = 0.

my_constants.prob_hix = -1250.e-6
my_constants.prob_hiy = 25.e-6
my_constants.prob_hiz = 320.e-6

my_constants.Lx = prob_hix - prob_lox
my_constants.Ly = prob_hiy - prob_loy
my_constants.Lz = prob_hiz - prob_loz

###############
# material properties
###############
my_constants.sigma_0 = 0.0
my_constants.sigma_si = 0.
my_constants.sigma_metal = 1.e10

my_constants.eps_0 = 8.8541878128e-12
my_constants.eps_r_si = 11.7

my_constants.mu_0 = 1.25663706212e-06
my_constants.mu_r_si = 1.0
my_constants.mu_r_test = 0.999999

###############
# silicon and palladium cross section
###############
my_constants.h_si = 160.e-6

###############
# waveguide port parameters
###############
my_constants.h_port = 160.e-6
my_constants.w_port = 320.e-6

###############
# derived quantities and fundamental constants - don't touch these
###############

my_constants.pi = 3.14159265358979

my_constants.freq = 500.e9
my_constants.TP = 1./freq

# grid spacing
my_constants.dx = Lx / n_cellx
my_constants.dy = Ly / n_celly
my_constants.dz = Lz / n_cellz

my_constants.ddx = dx/1.e6
my_constants.ddy = dy/1.e6
my_constants.ddz = dz/1.e6

my_constants.flag_none = 0
my_constants.flag_hs = 1
my_constants.flag_ss = 2

###############
# excitation
###############

warpx.E_excitation_on_grid_style = parse_E_excitation_grid_function

warpx.Ex_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) *
(1
-(y > -32.5e-6 + ddy) * (y < -27.5e-6 - ddy)
-(y > -20.e-6 + ddy) * (y < -15.e-6 - ddy)
)"

warpx.Ey_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) *
(1
-(y > -32.5e-6 + ddy) * (y < -27.5e-6 - ddy)
-(y > -20.e-6 + ddy) * (y < -15.e-6 - ddy)
)
+ 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)"

warpx.Ez_excitation_flag_function(x,y,z) = "flag_none"


# This is a source on a qubit control line
warpx.Ex_excitation_grid_function(x,y,z,t) = "0."
warpx.Ey_excitation_grid_function(x,y,z,t) = "exp(-(t-3*TP)**2/(TP**2))*sin(2*pi*freq*t) *
( (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)"
warpx.Ez_excitation_grid_function(x,y,z,t) = "0."

###############
# diagnostics
###############

diagnostics.diags_names = plt
###############
# full plotfiles
plt.intervals = 100
plt.fields_to_plot = Ex Ey Ez Bx By Bz mu sigma
plt.diag_type = Full
plt.file_min_digits = 7
137 changes: 137 additions & 0 deletions Examples/Tests/circuits/Candice/inputs_candice0
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
# See parameters in https://github.com/ECP-WarpX/artemis/pull/43

################################
####### GENERAL PARAMETERS ######
#################################
max_step = 4000

amr.n_cell = n_cellx n_celly n_cellz
amr.max_grid_size = max_grid_size
amr.blocking_factor = blocking_factor
amr.refine_grid_layout = 1 # if n_MPI > n_grids, the grids will be successively divided in half until n_MPI <= n_grids

geometry.dims = 3
geometry.prob_lo = -Lx/2. 0. 0.
geometry.prob_hi = Lx/2. Ly Lz

amr.max_level = 0

# use pec instead of pml overlaying current source so you don't get a reflection
boundary.field_lo = pml pml pml
boundary.field_hi = pml pml pml

#################################
############ NUMERICS ###########
#################################
warpx.verbose = 1

warpx.cfl = 0.8

# vacuum or macroscopic
algo.em_solver_medium = macroscopic

# laxwendroff or backwardeuler
algo.macroscopic_sigma_method = laxwendroff

macroscopic.sigma_function(x,y,z) = "sigma_0
+ (sigma_si - sigma_0) * (z <= h_si)
+ (sigma_pd - sigma_0) * (x >= -w_pd/2.) * (x <= w_pd/2.) * (z > h_si) * (z <= h_si + h_pd)"

macroscopic.epsilon_function(x,y,z) = "eps_0
+ eps_0 * (eps_r_si - 1.) * (z <= h_si)
+ eps_0 * (eps_r_pd - 1.) * (x >= -w_pd/2.) * (x <= w_pd/2.) * (z > h_si) * (z <= h_si + h_pd)"

macroscopic.mu_function(x,y,z) = "mu_0
+ mu_0 * (mu_r_si - 1.) * (z <= h_si)
+ mu_0 * (mu_r_pd - 1.) * (x >= -w_pd/2.) * (x <= w_pd/2.) * (z > h_si) * (z <= h_si + h_pd)"

#################################
############ FIELDS #############
#################################

###############
# domain size
# n_cellx/y/z and Lx/y/z are needed to calculate dx/dy/dz
###############
my_constants.n_cellx = 256
my_constants.n_celly = 384
my_constants.n_cellz = 32
my_constants.max_grid_size = 384
my_constants.blocking_factor = 32

my_constants.Lx = 32.e-6
my_constants.Ly = 48.e-6
my_constants.Lz = 4.e-6

###############
# material properties
###############
my_constants.sigma_0 = 0.0
my_constants.sigma_pd = 1.e7
my_constants.sigma_si = 0.

my_constants.eps_0 = 8.8541878128e-12
my_constants.eps_r_pd = 13.
my_constants.eps_r_si = 12.

my_constants.mu_0 = 1.25663706212e-06
my_constants.mu_r_pd = 1.0
my_constants.mu_r_si = 1.0

###############
# silicon and palladium cross section
###############
my_constants.h_si = 1.e-6
my_constants.w_pd = 2.e-6
my_constants.h_pd = 1.e-6

###############
# waveguide port parameters
###############
my_constants.h_port = 1.e-6
my_constants.w_port = 16.e-6
my_constants.wavelength = 4.e-6

###############
# derived quantities and fundamental constants - don't touch these
###############

my_constants.pi = 3.14159265358979

# c is 1/sqrt(eps*mu) using silicon material properties
my_constants.c = 1./sqrt(eps_0*eps_r_si*mu_0*mu_r_si)

my_constants.TP = wavelength / c

# grid spacing
my_constants.dx = Lx / n_cellx
my_constants.dy = Ly / n_celly
my_constants.dz = Lz / n_cellz

my_constants.tiny = 1.e-12

###############
# excitation
###############

warpx.E_excitation_on_grid_style = parse_E_excitation_grid_function

warpx.Ex_excitation_flag_function(x,y,z) = "0."
warpx.Ey_excitation_flag_function(x,y,z) = "0."
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.)"

warpx.Ex_excitation_grid_function(x,y,z,t) = "0."
warpx.Ey_excitation_grid_function(x,y,z,t) = "0."
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))"

###############
# diagnostics
###############

diagnostics.diags_names = plt

###############
# full plotfiles
plt.intervals = 100
plt.fields_to_plot = Ex Ey Ez Bx By Bz sigma epsilon mu
plt.diag_type = Full
Loading
Loading