diff --git a/Examples/Tests/circuits/Candice/README b/Examples/Tests/circuits/Candice/README new file mode 100644 index 000000000..3a7e2908f --- /dev/null +++ b/Examples/Tests/circuits/Candice/README @@ -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 diff --git a/Examples/Tests/circuits/Candice/inputs_PMLdemo b/Examples/Tests/circuits/Candice/inputs_PMLdemo new file mode 100644 index 000000000..5db7fd289 --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_PMLdemo @@ -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 diff --git a/Examples/Tests/circuits/Candice/inputs_candice0 b/Examples/Tests/circuits/Candice/inputs_candice0 new file mode 100644 index 000000000..fbed653d5 --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_candice0 @@ -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 diff --git a/Examples/Tests/circuits/Candice/inputs_candice1 b/Examples/Tests/circuits/Candice/inputs_candice1 new file mode 100644 index 000000000..736e4f3b0 --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_candice1 @@ -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 = 0. -Ly/2. 0. +geometry.prob_hi = Lx Ly/2. 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) * (y >= -w_pd/2.) * (y <= 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.) * (y >= -w_pd/2.) * (y <= 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.) * (y >= -w_pd/2.) * (y <= 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 = 384 +my_constants.n_celly = 256 +my_constants.n_cellz = 32 +my_constants.max_grid_size = 384 +my_constants.blocking_factor = 32 + +my_constants.Lx = 48.e-6 +my_constants.Ly = 32.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) = "(y > -w_port/2.) * (y < w_port/2.) * (z > 0.) * (z < h_port) * (x >= -dx/2.) * (x <= dx/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*y)/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 diff --git a/Examples/Tests/circuits/Candice/inputs_candice10 b/Examples/Tests/circuits/Candice/inputs_candice10 new file mode 100644 index 000000000..5be9c8800 --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_candice10 @@ -0,0 +1,165 @@ +# 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 = -0.1*Lx -Ly/2. 0. +geometry.prob_hi = 0.9*Lx Ly/2. 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)" + +macroscopic.epsilon_function(x,y,z) = "eps_0 + eps_0 * (eps_r_si - 1.) * (z <= h_si)" + +#macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_si - 1.) * (z <= h_si)" +macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_test - 1.) * (z > h_si) * (z < h_si + dz) * + (1 + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air + ddy) * (y < -w_sc/2. - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + )" +################################# +############ FIELDS ############# +################################# + +############### +# domain size +# n_cellx/y/z and Lx/y/z are needed to calculate dx/dy/dz +############### +my_constants.n_cellx = 400 +my_constants.n_celly = 256 +my_constants.n_cellz = 32 +my_constants.max_grid_size = 384 +my_constants.blocking_factor = 2 + +my_constants.Lx = 1000.e-6 +my_constants.Ly = 640.e-6 +my_constants.Lz = 320.e-6 + +############### +# material properties +############### +my_constants.sigma_0 = 0.0 +my_constants.sigma_si = 0. + +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 +my_constants.w_sc = 20.e-6 +my_constants.w_air = 10.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 = 1.e12 +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 + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air + ddy) * (y < -w_sc/2. - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + )" + +warpx.Ey_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * + (1 + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air + ddy) * (y < -w_sc/2. - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + ) + + flag_ss * ( (y >= w_sc/2. + ddy) * (y <= w_sc/2. + w_air - ddy) + (y >= -w_sc/2. - w_air + ddy) * (y <= -w_sc/2. - ddy)) * (z > h_si - ddz) * (z < h_si + ddz) * (x > -dx - ddx) * (x < -dx + ddx) " + +warpx.Ez_excitation_flag_function(x,y,z) = "flag_none" + +warpx.Ex_excitation_grid_function(x,y,z,t) = "0." +warpx.Ey_excitation_grid_function(x,y,z,t) = "1.0 * exp(-(t-3*TP)**2/(2*TP**2))*sin(2*pi*freq*t) * + ( (y >= w_sc/2. + ddy) * (y <= w_sc/2. + w_air - ddy) - (y >= -w_sc/2. - w_air + ddy) * (y <= -w_sc/2. - ddy)) * (z > h_si - ddz) * (z < h_si + ddz) * (x > -dx - ddx) * (x < 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 +plt.diag_type = Full diff --git a/Examples/Tests/circuits/Candice/inputs_candice11 b/Examples/Tests/circuits/Candice/inputs_candice11 new file mode 100644 index 000000000..bd2e16558 --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_candice11 @@ -0,0 +1,189 @@ +# 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 = -100.e-6 -Ly/2. 0. +geometry.prob_hi = 1200.e-6 Ly/2. 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)" + +macroscopic.epsilon_function(x,y,z) = "eps_0 + eps_0 * (eps_r_si - 1.) * (z <= h_si)" + +#macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_si - 1.) * (z <= h_si)" +macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_test - 1.) * (z > h_si) * (z < h_si + dz) * + (1 + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air + ddy) * (y < -w_sc/2. - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 190.e-6 - w_sc/2. - w_air + ddy) * (y < 190.e-6 - w_sc/2. - ddy) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 190.e-6 + w_sc/2. + ddy) * (y < 190.e-6 + w_sc/2. + w_air - ddy) + )" +################################# +############ FIELDS ############# +################################# + +############### +# domain size +# n_cellx/y/z and Lx/y/z are needed to calculate dx/dy/dz +############### +my_constants.n_cellx = 520 +my_constants.n_celly = 256 +my_constants.n_cellz = 32 +my_constants.max_grid_size = 1024 +my_constants.blocking_factor = 2 + +my_constants.Lx = 1300.e-6 +my_constants.Ly = 640.e-6 +my_constants.Lz = 320.e-6 + +############### +# material properties +############### +my_constants.sigma_0 = 0.0 +my_constants.sigma_si = 0. + +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 +my_constants.w_sc = 20.e-6 +my_constants.w_air = 10.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 = 1.e12 +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 + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air + ddy) * (y < -w_sc/2. - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 190.e-6 - w_sc/2. - w_air + ddy) * (y < 190.e-6 - w_sc/2. - ddy) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 190.e-6 + w_sc/2. + ddy) * (y < 190.e-6 + w_sc/2. + w_air - ddy) + )" + +warpx.Ey_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * + (1 + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air + ddy) * (y < -w_sc/2. - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 190.e-6 - w_sc/2. - w_air + ddy) * (y < 190.e-6 - w_sc/2. - ddy) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 190.e-6 + w_sc/2. + ddy) * (y < 190.e-6 + w_sc/2. + w_air - ddy) + ) + + flag_ss * ( (y >= w_sc/2. + ddy) * (y <= w_sc/2. + w_air - ddy) + (y >= -w_sc/2. - w_air + ddy) * (y <= -w_sc/2. - ddy)) * (z > h_si - ddz) * (z < h_si + ddz) * (x > dx - ddx) * (x < dx + ddx) " + +warpx.Ez_excitation_flag_function(x,y,z) = "flag_none" + +warpx.Ex_excitation_grid_function(x,y,z,t) = "0." +warpx.Ey_excitation_grid_function(x,y,z,t) = "1.0 * exp(-(t-3*TP)**2/(2*TP**2))*sin(2*pi*freq*t) * + ( (y >= w_sc/2. + ddy) * (y <= w_sc/2. + w_air - ddy) - (y >= -w_sc/2. - w_air + ddy) * (y <= -w_sc/2. - ddy)) * (z > h_si - ddz) * (z < h_si + ddz) * (x > dx - ddx) * (x < 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 +plt.diag_type = Full diff --git a/Examples/Tests/circuits/Candice/inputs_candice12 b/Examples/Tests/circuits/Candice/inputs_candice12 new file mode 100644 index 000000000..49f10a910 --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_candice12 @@ -0,0 +1,231 @@ +# 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 = -100.e-6 -Ly/2. 0. +geometry.prob_hi = 1500.e-6 Ly/2. 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)" + +macroscopic.epsilon_function(x,y,z) = "eps_0 + eps_0 * (eps_r_si - 1.) * (z <= h_si)" + +#macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_si - 1.) * (z <= h_si)" +macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_test - 1.) * (z > h_si) * (z < h_si + dz) * + (1 + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air + ddy) * (y < -w_sc/2. - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 170.e-6 + ddy) * (y < 180.e-6 - ddy) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 200.e-6 + ddy) * (y < 210.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 115.e-6) + )" +################################# +############ FIELDS ############# +################################# + +############### +# domain size +# n_cellx/y/z and Lx/y/z are needed to calculate dx/dy/dz +############### +my_constants.n_cellx = 640 +my_constants.n_celly = 256 +my_constants.n_cellz = 32 +my_constants.max_grid_size = 1024 +my_constants.blocking_factor = 2 + +my_constants.Lx = 1600.e-6 +my_constants.Ly = 640.e-6 +my_constants.Lz = 320.e-6 + +############### +# material properties +############### +my_constants.sigma_0 = 0.0 +my_constants.sigma_si = 0. + +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 +my_constants.w_sc = 20.e-6 +my_constants.w_air = 10.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 = 1.e12 +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 + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air + ddy) * (y < -w_sc/2. - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 170.e-6 + ddy) * (y < 180.e-6 - ddy) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 200.e-6 + ddy) * (y < 210.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 115.e-6) + )" + +warpx.Ey_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * + (1 + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air + ddy) * (y < -w_sc/2. - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 170.e-6 + ddy) * (y < 180.e-6 - ddy) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 200.e-6 + ddy) * (y < 210.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 115.e-6) + ) + + flag_ss * ( (y >= w_sc/2. + ddy) * (y <= w_sc/2. + w_air - ddy) + (y >= -w_sc/2. - w_air + ddy) * (y <= -w_sc/2. - ddy)) * (z > h_si - ddz) * (z < h_si + ddz) * (x > dx - ddx) * (x < dx + ddx) " + +warpx.Ez_excitation_flag_function(x,y,z) = "flag_none" + +warpx.Ex_excitation_grid_function(x,y,z,t) = "0." +warpx.Ey_excitation_grid_function(x,y,z,t) = "1.0 * exp(-(t-3*TP)**2/(2*TP**2))*sin(2*pi*freq*t) * + ( (y >= w_sc/2. + ddy) * (y <= w_sc/2. + w_air - ddy) - (y >= -w_sc/2. - w_air + ddy) * (y <= -w_sc/2. - ddy)) * (z > h_si - ddz) * (z < h_si + ddz) * (x > dx - ddx) * (x < 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 +plt.diag_type = Full diff --git a/Examples/Tests/circuits/Candice/inputs_candice13 b/Examples/Tests/circuits/Candice/inputs_candice13 new file mode 100644 index 000000000..2d71b48ae --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_candice13 @@ -0,0 +1,285 @@ +# See parameters in https://github.com/ECP-WarpX/artemis/pull/43 + +################################ +####### GENERAL PARAMETERS ###### +################################# +max_step = 8000 + +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 = -100.e-6 -680.e-6 0. +geometry.prob_hi = 1500.e-6 320.e-6 320.e-6 + +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)" + +macroscopic.epsilon_function(x,y,z) = "eps_0 + eps_0 * (eps_r_si - 1.) * (z <= h_si)" + +#macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_si - 1.) * (z <= h_si)" +macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_test - 1.) * (z > h_si) * (z < h_si + dz) * + (1 + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air + ddy) * (y < -w_sc/2. - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 170.e-6 + ddy) * (y < 180.e-6 - ddy) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 200.e-6 + ddy) * (y < 210.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 115.e-6) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -210.e-6 + ddy) * (y < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -180.e-6 + ddy) * (y < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -360.e-6 + ddy) * (y < -350.e-6 - ddy) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 80.e-6) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -570.e-6 + ddy) * (y < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -540.e-6 + ddy) * (y < -530.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 = 640 +my_constants.n_celly = 400 +my_constants.n_cellz = 32 +my_constants.max_grid_size = 1024 +my_constants.blocking_factor = 2 + +my_constants.Lx = 1600.e-6 +my_constants.Ly = 1000.e-6 +my_constants.Lz = 320.e-6 + +############### +# material properties +############### +my_constants.sigma_0 = 0.0 +my_constants.sigma_si = 0. + +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 +my_constants.w_sc = 20.e-6 +my_constants.w_air = 10.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 = 1.e12 +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 + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air + ddy) * (y < -w_sc/2. - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 170.e-6 + ddy) * (y < 180.e-6 - ddy) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 200.e-6 + ddy) * (y < 210.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 115.e-6) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -210.e-6 + ddy) * (y < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -180.e-6 + ddy) * (y < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -360.e-6 + ddy) * (y < -350.e-6 - ddy) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 80.e-6) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -570.e-6 + ddy) * (y < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -540.e-6 + ddy) * (y < -530.e-6 - ddy) + )" + +warpx.Ey_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * + (1 + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air + ddy) * (y < -w_sc/2. - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 170.e-6 + ddy) * (y < 180.e-6 - ddy) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 200.e-6 + ddy) * (y < 210.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 115.e-6) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -210.e-6 + ddy) * (y < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -180.e-6 + ddy) * (y < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -360.e-6 + ddy) * (y < -350.e-6 - ddy) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 80.e-6) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -570.e-6 + ddy) * (y < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -540.e-6 + ddy) * (y < -530.e-6 - ddy) + ) + + flag_ss * ( (y >= w_sc/2. + ddy) * (y <= w_sc/2. + w_air - ddy) + (y >= -w_sc/2. - w_air + ddy) * (y <= -w_sc/2. - ddy)) * (z > h_si - ddz) * (z < h_si + ddz) * (x > dx - ddx) * (x < dx + ddx) " + +warpx.Ez_excitation_flag_function(x,y,z) = "flag_none" + +warpx.Ex_excitation_grid_function(x,y,z,t) = "0." +warpx.Ey_excitation_grid_function(x,y,z,t) = "1.0 * exp(-(t-3*TP)**2/(2*TP**2))*sin(2*pi*freq*t) * + ( (y >= w_sc/2. + ddy) * (y <= w_sc/2. + w_air - ddy) - (y >= -w_sc/2. - w_air + ddy) * (y <= -w_sc/2. - ddy)) * (z > h_si - ddz) * (z < h_si + ddz) * (x > dx - ddx) * (x < 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 +plt.diag_type = Full diff --git a/Examples/Tests/circuits/Candice/inputs_candice14 b/Examples/Tests/circuits/Candice/inputs_candice14 new file mode 100644 index 000000000..2b8626b6f --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_candice14 @@ -0,0 +1,300 @@ +# See parameters in https://github.com/ECP-WarpX/artemis/pull/43 + +################################ +####### GENERAL PARAMETERS ###### +################################# +max_step = 8000 + +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 = -100.e-6 -640.e-6 0. +geometry.prob_hi = 1500.e-6 360.e-6 320.e-6 + +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)" + +macroscopic.epsilon_function(x,y,z) = "eps_0 + eps_0 * (eps_r_si - 1.) * (z <= h_si)" + +#macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_si - 1.) * (z <= h_si)" +macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_test - 1.) * (z > h_si) * (z < h_si + dz) * + (1 + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * (y > -335.e-6 + ddy) * (y < 335.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > 325.e-6 + ddy) * (y < 335.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > -335.e-6 + ddy) * (y < -325.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > 20.e-6 - ddy) * (y < 335.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -335.e-6 + ddy) * (y < -20.e-6 + ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air + ddy) * (y < -w_sc/2. - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 170.e-6 + ddy) * (y < 180.e-6 - ddy) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 200.e-6 + ddy) * (y < 210.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 115.e-6) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -210.e-6 + ddy) * (y < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -180.e-6 + ddy) * (y < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -360.e-6 + ddy) * (y < -350.e-6 - ddy) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 80.e-6) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -570.e-6 + ddy) * (y < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -540.e-6 + ddy) * (y < -530.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 = 640 +my_constants.n_celly = 400 +my_constants.n_cellz = 32 +my_constants.max_grid_size = 1024 +my_constants.blocking_factor = 2 + +my_constants.Lx = 1600.e-6 +my_constants.Ly = 1000.e-6 +my_constants.Lz = 320.e-6 + +############### +# material properties +############### +my_constants.sigma_0 = 0.0 +my_constants.sigma_si = 0. + +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 +my_constants.w_sc = 20.e-6 +my_constants.w_air = 10.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 = 1.e12 +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 + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * (y > -335.e-6 + ddy) * (y < 335.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > 325.e-6 + ddy) * (y < 335.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > -335.e-6 + ddy) * (y < -325.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > 20.e-6 - ddy) * (y < 335.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -335.e-6 + ddy) * (y < -20.e-6 + ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air + ddy) * (y < -w_sc/2. - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 170.e-6 + ddy) * (y < 180.e-6 - ddy) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 200.e-6 + ddy) * (y < 210.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 115.e-6) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -210.e-6 + ddy) * (y < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -180.e-6 + ddy) * (y < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -360.e-6 + ddy) * (y < -350.e-6 - ddy) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 80.e-6) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -570.e-6 + ddy) * (y < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -540.e-6 + ddy) * (y < -530.e-6 - ddy) + )" + +warpx.Ey_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * + (1 + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * (y > -335.e-6 + ddy) * (y < 335.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > 325.e-6 + ddy) * (y < 335.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > -335.e-6 + ddy) * (y < -325.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > 20.e-6 - ddy) * (y < 335.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -335.e-6 + ddy) * (y < -20.e-6 + ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air + ddy) * (y < -w_sc/2. - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 170.e-6 + ddy) * (y < 180.e-6 - ddy) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 200.e-6 + ddy) * (y < 210.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 115.e-6) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -210.e-6 + ddy) * (y < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -180.e-6 + ddy) * (y < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -360.e-6 + ddy) * (y < -350.e-6 - ddy) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 80.e-6) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -570.e-6 + ddy) * (y < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -540.e-6 + ddy) * (y < -530.e-6 - ddy) + ) + + flag_ss * ( (y >= w_sc/2. + ddy) * (y <= w_sc/2. + w_air - ddy) + (y >= -w_sc/2. - w_air + ddy) * (y <= -w_sc/2. - ddy)) * (z > h_si - ddz) * (z < h_si + ddz) * (x > dx - ddx) * (x < dx + ddx) " + +warpx.Ez_excitation_flag_function(x,y,z) = "flag_none" + +warpx.Ex_excitation_grid_function(x,y,z,t) = "0." +warpx.Ey_excitation_grid_function(x,y,z,t) = "1.0 * exp(-(t-3*TP)**2/(2*TP**2))*sin(2*pi*freq*t) * + ( (y >= w_sc/2. + ddy) * (y <= w_sc/2. + w_air - ddy) - (y >= -w_sc/2. - w_air + ddy) * (y <= -w_sc/2. - ddy)) * (z > h_si - ddz) * (z < h_si + ddz) * (x > dx - ddx) * (x < 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 +plt.diag_type = Full diff --git a/Examples/Tests/circuits/Candice/inputs_candice15 b/Examples/Tests/circuits/Candice/inputs_candice15 new file mode 100644 index 000000000..4d5beb752 --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_candice15 @@ -0,0 +1,469 @@ +# See parameters in https://github.com/ECP-WarpX/artemis/pull/43 + +################################ +####### GENERAL PARAMETERS ###### +################################# +max_step = 8000 + +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 = -100.e-6 -3000.e-6 0. +geometry.prob_hi = 1500.e-6 2000.e-6 320.e-6 + +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)" + +macroscopic.epsilon_function(x,y,z) = "eps_0 + eps_0 * (eps_r_si - 1.) * (z <= h_si)" + +#macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_si - 1.) * (z <= h_si)" +macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_test - 1.) * (z > h_si) * (z < h_si + dz) * + (1 + -(x > 1237.5e-6) * (x < 1255.e-6) * (y > -2500.e-6 - ddy) * (y < 1635.5e-6 + ddy) + -(x > 1285.5e-6) * (x < 1302.5e-6) * (y > -2500.e-6 - ddy) * (y < 1635.5e-6 + ddy) + -(x > 1237.5e-6) * (x < 1302.5e-6) * (y > 1635.e-6) * (y < 1700.e-6) + -(x > 1237.5e-6) * (x < 1302.5e-6) * (y > -2565.e-6) * (y < -2500.e-6) + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * (y > -335.e-6 + ddy) * (y < 335.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > 325.e-6 + ddy) * (y < 335.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > -335.e-6 + ddy) * (y < -325.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > 20.e-6 - ddy) * (y < 335.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -335.e-6 + ddy) * (y < -20.e-6 + ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -20.e-6 + ddy) * (y < -10.e-6 - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > 10.e-6 + ddy) * (y < 20.e-6 - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 170.e-6 + ddy) * (y < 180.e-6 - ddy) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 200.e-6 + ddy) * (y < 210.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 115.e-6) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -210.e-6 + ddy) * (y < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -180.e-6 + ddy) * (y < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -360.e-6 + ddy) * (y < -350.e-6 - ddy) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 80.e-6) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -570.e-6 + ddy) * (y < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -540.e-6 + ddy) * (y < -530.e-6 - ddy) + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * (y > -1435.e-6 + ddy) * (y < -765.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > -775.e-6 + ddy) * (y < -765.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > -1435.e-6 + ddy) * (y < -1425.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -1080.e-6 - ddy) * (y < -765.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -1435.e-6 + ddy) * (y < -1120.e-6 + ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -1120.e-6 + ddy) * (y < -1110.e-6 - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -1090.e-6 + ddy) * (y < -1080.e-6 - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -1120.e-6 + ddy) * (y < -1005.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -1120.e-6 + ddy) * (y < -1005.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -930.e-6 + ddy) * (y < -920.e-6 - ddy) + -(x > 820.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -900.e-6 + ddy) * (y < -890.e-6 - ddy) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 75.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 85.e-6) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 105.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 115.e-6) + -(x > 1160.e-6 + ddx) * (x < 1170.e-6 - ddx) * (y < -1005.e-6 + ddy) * (y > -1195.e-6 - ddy) + -(x > 1190.e-6 + ddx) * (x < 1200.e-6 - ddx) * (y < -1005.e-6 + ddy) * (y > -1195.e-6 - ddy) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1310.e-6 + ddy) * (y < -1195.e-6 + ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) > 75.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) < 85.e-6) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1310.e-6 + ddy) * (y < -1195.e-6 + ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) > 105.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) < 115.e-6) + -(x > 460.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -1310.e-6 + ddy) * (y < -1300.e-6 - ddy) + -(x > 460.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -1280.e-6 + ddy) * (y < -1270.e-6 - ddy) + -(x > 350.e-6 + ddx) * (x < 460.e-6 + ddx) * (y > -1490.e-6 + ddy) * (y < -1270.e-6 - ddy) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) > 70.e-6) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) < 80.e-6) + -(x > 350.e-6 + ddx) * (x < 460.e-6 + ddx) * (y > -1490.e-6 + ddy) * (y < -1270.e-6 - ddy) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) > 100.e-6) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) < 110.e-6) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1490.e-6 + ddy) * (y < -1480.e-6 - ddy) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1460.e-6 + ddy) * (y < -1450.e-6 - ddy) + -(x > 845.e-6 - ddx) * (x < 955.e-6 - ddx) * (y > -1670.e-6 + ddy) * (y < -1450.e-6 - ddy) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) > 70.e-6) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) < 80.e-6) + -(x > 845.e-6 - ddx) * (x < 955.e-6 - ddx) * (y > -1670.e-6 + ddy) * (y < -1450.e-6 - ddy) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) > 100.e-6) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) < 110.e-6) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1670.e-6 + ddy) * (y < -1660.e-6 - ddy) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1640.e-6 + ddy) * (y < -1630.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 = 640 +my_constants.n_celly = 2000 +my_constants.n_cellz = 32 +my_constants.max_grid_size = 2000 +my_constants.blocking_factor = 2 + +my_constants.Lx = 1600.e-6 +my_constants.Ly = 1000.e-6 +my_constants.Lz = 320.e-6 + +############### +# material properties +############### +my_constants.sigma_0 = 0.0 +my_constants.sigma_si = 0. + +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 = 1.e12 +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 + -(x > 1237.5e-6) * (x < 1255.e-6) * (y > -2500.e-6 - ddy) * (y < 1635.5e-6 + ddy) + -(x > 1285.5e-6) * (x < 1302.5e-6) * (y > -2500.e-6 - ddy) * (y < 1635.5e-6 + ddy) + -(x > 1237.5e-6) * (x < 1302.5e-6) * (y > 1635.e-6) * (y < 1700.e-6) + -(x > 1237.5e-6) * (x < 1302.5e-6) * (y > -2565.e-6) * (y < -2500.e-6) + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * (y > -335.e-6 + ddy) * (y < 335.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > 325.e-6 + ddy) * (y < 335.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > -335.e-6 + ddy) * (y < -325.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > 20.e-6 - ddy) * (y < 335.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -335.e-6 + ddy) * (y < -20.e-6 + ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -20.e-6 + ddy) * (y < -10.e-6 - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > 10.e-6 + ddy) * (y < 20.e-6 - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 170.e-6 + ddy) * (y < 180.e-6 - ddy) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 200.e-6 + ddy) * (y < 210.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 115.e-6) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -210.e-6 + ddy) * (y < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -180.e-6 + ddy) * (y < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -360.e-6 + ddy) * (y < -350.e-6 - ddy) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 80.e-6) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -570.e-6 + ddy) * (y < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -540.e-6 + ddy) * (y < -530.e-6 - ddy) + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * (y > -1435.e-6 + ddy) * (y < -765.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > -775.e-6 + ddy) * (y < -765.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > -1435.e-6 + ddy) * (y < -1425.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -1080.e-6 - ddy) * (y < -765.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -1435.e-6 + ddy) * (y < -1120.e-6 + ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -1120.e-6 + ddy) * (y < -1110.e-6 - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -1090.e-6 + ddy) * (y < -1080.e-6 - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -1120.e-6 + ddy) * (y < -1005.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -1120.e-6 + ddy) * (y < -1005.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -930.e-6 + ddy) * (y < -920.e-6 - ddy) + -(x > 820.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -900.e-6 + ddy) * (y < -890.e-6 - ddy) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 75.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 85.e-6) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 105.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 115.e-6) + -(x > 1160.e-6 + ddx) * (x < 1170.e-6 - ddx) * (y < -1005.e-6 + ddy) * (y > -1195.e-6 - ddy) + -(x > 1190.e-6 + ddx) * (x < 1200.e-6 - ddx) * (y < -1005.e-6 + ddy) * (y > -1195.e-6 - ddy) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1310.e-6 + ddy) * (y < -1195.e-6 + ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) > 75.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) < 85.e-6) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1310.e-6 + ddy) * (y < -1195.e-6 + ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) > 105.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) < 115.e-6) + -(x > 460.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -1310.e-6 + ddy) * (y < -1300.e-6 - ddy) + -(x > 460.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -1280.e-6 + ddy) * (y < -1270.e-6 - ddy) + -(x > 350.e-6 + ddx) * (x < 460.e-6 + ddx) * (y > -1490.e-6 + ddy) * (y < -1270.e-6 - ddy) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) > 70.e-6) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) < 80.e-6) + -(x > 350.e-6 + ddx) * (x < 460.e-6 + ddx) * (y > -1490.e-6 + ddy) * (y < -1270.e-6 - ddy) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) > 100.e-6) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) < 110.e-6) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1490.e-6 + ddy) * (y < -1480.e-6 - ddy) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1460.e-6 + ddy) * (y < -1450.e-6 - ddy) + -(x > 845.e-6 - ddx) * (x < 955.e-6 - ddx) * (y > -1670.e-6 + ddy) * (y < -1450.e-6 - ddy) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) > 70.e-6) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) < 80.e-6) + -(x > 845.e-6 - ddx) * (x < 955.e-6 - ddx) * (y > -1670.e-6 + ddy) * (y < -1450.e-6 - ddy) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) > 100.e-6) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) < 110.e-6) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1670.e-6 + ddy) * (y < -1660.e-6 - ddy) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1640.e-6 + ddy) * (y < -1630.e-6 - ddy) + )" + +warpx.Ey_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * + (1 + -(x > 1237.5e-6) * (x < 1255.e-6) * (y > -2500.e-6 - ddy) * (y < 1635.5e-6 + ddy) + -(x > 1285.5e-6) * (x < 1302.5e-6) * (y > -2500.e-6 - ddy) * (y < 1635.5e-6 + ddy) + -(x > 1237.5e-6) * (x < 1302.5e-6) * (y > 1635.e-6) * (y < 1700.e-6) + -(x > 1237.5e-6) * (x < 1302.5e-6) * (y > -2565.e-6) * (y < -2500.e-6) + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * (y > -335.e-6 + ddy) * (y < 335.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > 325.e-6 + ddy) * (y < 335.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > -335.e-6 + ddy) * (y < -325.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > 20.e-6 - ddy) * (y < 335.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -335.e-6 + ddy) * (y < -20.e-6 + ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -20.e-6 + ddy) * (y < -10.e-6 - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > 10.e-6 + ddy) * (y < 20.e-6 - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 170.e-6 + ddy) * (y < 180.e-6 - ddy) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 200.e-6 + ddy) * (y < 210.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 115.e-6) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -210.e-6 + ddy) * (y < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -180.e-6 + ddy) * (y < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -360.e-6 + ddy) * (y < -350.e-6 - ddy) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 80.e-6) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -570.e-6 + ddy) * (y < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -540.e-6 + ddy) * (y < -530.e-6 - ddy) + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * (y > -1435.e-6 + ddy) * (y < -765.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > -775.e-6 + ddy) * (y < -765.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > -1435.e-6 + ddy) * (y < -1425.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -1080.e-6 - ddy) * (y < -765.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -1435.e-6 + ddy) * (y < -1120.e-6 + ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -1120.e-6 + ddy) * (y < -1110.e-6 - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -1090.e-6 + ddy) * (y < -1080.e-6 - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -1120.e-6 + ddy) * (y < -1005.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -1120.e-6 + ddy) * (y < -1005.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -930.e-6 + ddy) * (y < -920.e-6 - ddy) + -(x > 820.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -900.e-6 + ddy) * (y < -890.e-6 - ddy) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 75.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 85.e-6) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 105.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 115.e-6) + -(x > 1160.e-6 + ddx) * (x < 1170.e-6 - ddx) * (y < -1005.e-6 + ddy) * (y > -1195.e-6 - ddy) + -(x > 1190.e-6 + ddx) * (x < 1200.e-6 - ddx) * (y < -1005.e-6 + ddy) * (y > -1195.e-6 - ddy) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1310.e-6 + ddy) * (y < -1195.e-6 + ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) > 75.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) < 85.e-6) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1310.e-6 + ddy) * (y < -1195.e-6 + ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) > 105.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) < 115.e-6) + -(x > 460.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -1310.e-6 + ddy) * (y < -1300.e-6 - ddy) + -(x > 460.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -1280.e-6 + ddy) * (y < -1270.e-6 - ddy) + -(x > 350.e-6 + ddx) * (x < 460.e-6 + ddx) * (y > -1490.e-6 + ddy) * (y < -1270.e-6 - ddy) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) > 70.e-6) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) < 80.e-6) + -(x > 350.e-6 + ddx) * (x < 460.e-6 + ddx) * (y > -1490.e-6 + ddy) * (y < -1270.e-6 - ddy) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) > 100.e-6) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) < 110.e-6) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1490.e-6 + ddy) * (y < -1480.e-6 - ddy) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1460.e-6 + ddy) * (y < -1450.e-6 - ddy) + -(x > 845.e-6 - ddx) * (x < 955.e-6 - ddx) * (y > -1670.e-6 + ddy) * (y < -1450.e-6 - ddy) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) > 70.e-6) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) < 80.e-6) + -(x > 845.e-6 - ddx) * (x < 955.e-6 - ddx) * (y > -1670.e-6 + ddy) * (y < -1450.e-6 - ddy) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) > 100.e-6) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) < 110.e-6) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1670.e-6 + ddy) * (y < -1660.e-6 - ddy) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1640.e-6 + ddy) * (y < -1630.e-6 - ddy) + ) + + flag_ss * ( (y >= 10.e-6 + ddy) * (y <= 20.e-6 - ddy) + (y >= -20.e-6 + ddy) * (y <= -10.e-6 - ddy)) * (z > h_si - ddz) * (z < h_si + ddz) * (x > dx - ddx) * (x < dx + ddx) " + +warpx.Ez_excitation_flag_function(x,y,z) = "flag_none" + +warpx.Ex_excitation_grid_function(x,y,z,t) = "0." +warpx.Ey_excitation_grid_function(x,y,z,t) = "exp(-(t-3*TP)**2/(2*TP**2))*sin(2*pi*freq*t) * + ( (y >= 10.e-6 + ddy) * (y <= 20.e-6 - ddy) - (y >= -20.e-6 + ddy) * (y <= -10.e-6 - ddy)) * (z > h_si - ddz) * (z < h_si + ddz) * (x > dx - ddx) * (x < 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 +plt.diag_type = Full diff --git a/Examples/Tests/circuits/Candice/inputs_candice16 b/Examples/Tests/circuits/Candice/inputs_candice16 new file mode 100644 index 000000000..8d5da8537 --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_candice16 @@ -0,0 +1,470 @@ +# See parameters in https://github.com/ECP-WarpX/artemis/pull/43 + +################################ +####### GENERAL PARAMETERS ###### +################################# +max_step = 8000 + +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 = -100.e-6 -3000.e-6 0. +geometry.prob_hi = 1500.e-6 2000.e-6 320.e-6 + +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)" + +macroscopic.epsilon_function(x,y,z) = "eps_0 + eps_0 * (eps_r_si - 1.) * (z <= h_si)" + +#macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_si - 1.) * (z <= h_si)" +macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_test - 1.) * (z > h_si) * (z < h_si + dz) * + (1 + -(x > 1237.5e-6) * (x < 1255.e-6) * (y > -2500.e-6 - ddy) * (y < 1635.5e-6 + ddy) + -(x > 1285.5e-6) * (x < 1302.5e-6) * (y > -2500.e-6 - ddy) * (y < 1635.5e-6 + ddy) + -(x > 1237.5e-6) * (x < 1302.5e-6) * (y > 1635.e-6) * (y < 1700.e-6) + -(x > 1237.5e-6) * (x < 1302.5e-6) * (y > -2565.e-6) * (y < -2500.e-6) + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * (y > -335.e-6 + ddy) * (y < 335.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > 325.e-6 + ddy) * (y < 335.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > -335.e-6 + ddy) * (y < -325.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > 20.e-6 - ddy) * (y < 335.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -335.e-6 + ddy) * (y < -20.e-6 + ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -20.e-6 + ddy) * (y < -10.e-6 - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > 10.e-6 + ddy) * (y < 20.e-6 - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 170.e-6 + ddy) * (y < 180.e-6 - ddy) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 200.e-6 + ddy) * (y < 210.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 115.e-6) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -210.e-6 + ddy) * (y < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -180.e-6 + ddy) * (y < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -360.e-6 + ddy) * (y < -350.e-6 - ddy) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 80.e-6) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -570.e-6 + ddy) * (y < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -540.e-6 + ddy) * (y < -530.e-6 - ddy) + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * (y > -1435.e-6 + ddy) * (y < -765.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > -775.e-6 + ddy) * (y < -765.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > -1435.e-6 + ddy) * (y < -1425.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -1080.e-6 - ddy) * (y < -765.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -1435.e-6 + ddy) * (y < -1120.e-6 + ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -1120.e-6 + ddy) * (y < -1110.e-6 - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -1090.e-6 + ddy) * (y < -1080.e-6 - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -1120.e-6 + ddy) * (y < -1005.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -1120.e-6 + ddy) * (y < -1005.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -930.e-6 + ddy) * (y < -920.e-6 - ddy) + -(x > 820.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -900.e-6 + ddy) * (y < -890.e-6 - ddy) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 75.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 85.e-6) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 105.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 115.e-6) + -(x > 1160.e-6 + ddx) * (x < 1170.e-6 - ddx) * (y < -1005.e-6 + ddy) * (y > -1195.e-6 - ddy) + -(x > 1190.e-6 + ddx) * (x < 1200.e-6 - ddx) * (y < -1005.e-6 + ddy) * (y > -1195.e-6 - ddy) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1310.e-6 + ddy) * (y < -1195.e-6 + ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) > 75.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) < 85.e-6) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1310.e-6 + ddy) * (y < -1195.e-6 + ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) > 105.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) < 115.e-6) + -(x > 460.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -1310.e-6 + ddy) * (y < -1300.e-6 - ddy) + -(x > 460.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -1280.e-6 + ddy) * (y < -1270.e-6 - ddy) + -(x > 350.e-6 + ddx) * (x < 460.e-6 + ddx) * (y > -1490.e-6 + ddy) * (y < -1270.e-6 - ddy) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) > 70.e-6) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) < 80.e-6) + -(x > 350.e-6 + ddx) * (x < 460.e-6 + ddx) * (y > -1490.e-6 + ddy) * (y < -1270.e-6 - ddy) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) > 100.e-6) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) < 110.e-6) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1490.e-6 + ddy) * (y < -1480.e-6 - ddy) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1460.e-6 + ddy) * (y < -1450.e-6 - ddy) + -(x > 845.e-6 - ddx) * (x < 955.e-6 - ddx) * (y > -1670.e-6 + ddy) * (y < -1450.e-6 - ddy) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) > 70.e-6) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) < 80.e-6) + -(x > 845.e-6 - ddx) * (x < 955.e-6 - ddx) * (y > -1670.e-6 + ddy) * (y < -1450.e-6 - ddy) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) > 100.e-6) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) < 110.e-6) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1670.e-6 + ddy) * (y < -1660.e-6 - ddy) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1640.e-6 + ddy) * (y < -1630.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 = 640 +my_constants.n_celly = 2000 +my_constants.n_cellz = 32 +my_constants.max_grid_size = 2000 +my_constants.blocking_factor = 2 + +my_constants.Lx = 1600.e-6 +my_constants.Ly = 1000.e-6 +my_constants.Lz = 320.e-6 + +############### +# material properties +############### +my_constants.sigma_0 = 0.0 +my_constants.sigma_si = 0. + +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 = 1.e12 +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 + -(x > 1237.5e-6) * (x < 1255.e-6) * (y > -2500.e-6 - ddy) * (y < 1635.5e-6 + ddy) + -(x > 1285.5e-6) * (x < 1302.5e-6) * (y > -2500.e-6 - ddy) * (y < 1635.5e-6 + ddy) + -(x > 1237.5e-6) * (x < 1302.5e-6) * (y > 1635.e-6) * (y < 1700.e-6) + -(x > 1237.5e-6) * (x < 1302.5e-6) * (y > -2565.e-6) * (y < -2500.e-6) + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * (y > -335.e-6 + ddy) * (y < 335.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > 325.e-6 + ddy) * (y < 335.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > -335.e-6 + ddy) * (y < -325.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > 20.e-6 - ddy) * (y < 335.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -335.e-6 + ddy) * (y < -20.e-6 + ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -20.e-6 + ddy) * (y < -10.e-6 - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > 10.e-6 + ddy) * (y < 20.e-6 - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 170.e-6 + ddy) * (y < 180.e-6 - ddy) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 200.e-6 + ddy) * (y < 210.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 115.e-6) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -210.e-6 + ddy) * (y < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -180.e-6 + ddy) * (y < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -360.e-6 + ddy) * (y < -350.e-6 - ddy) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 80.e-6) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -570.e-6 + ddy) * (y < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -540.e-6 + ddy) * (y < -530.e-6 - ddy) + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * (y > -1435.e-6 + ddy) * (y < -765.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > -775.e-6 + ddy) * (y < -765.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > -1435.e-6 + ddy) * (y < -1425.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -1080.e-6 - ddy) * (y < -765.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -1435.e-6 + ddy) * (y < -1120.e-6 + ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -1120.e-6 + ddy) * (y < -1110.e-6 - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -1090.e-6 + ddy) * (y < -1080.e-6 - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -1120.e-6 + ddy) * (y < -1005.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -1120.e-6 + ddy) * (y < -1005.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -930.e-6 + ddy) * (y < -920.e-6 - ddy) + -(x > 820.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -900.e-6 + ddy) * (y < -890.e-6 - ddy) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 75.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 85.e-6) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 105.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 115.e-6) + -(x > 1160.e-6 + ddx) * (x < 1170.e-6 - ddx) * (y < -1005.e-6 + ddy) * (y > -1195.e-6 - ddy) + -(x > 1190.e-6 + ddx) * (x < 1200.e-6 - ddx) * (y < -1005.e-6 + ddy) * (y > -1195.e-6 - ddy) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1310.e-6 + ddy) * (y < -1195.e-6 + ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) > 75.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) < 85.e-6) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1310.e-6 + ddy) * (y < -1195.e-6 + ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) > 105.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) < 115.e-6) + -(x > 460.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -1310.e-6 + ddy) * (y < -1300.e-6 - ddy) + -(x > 460.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -1280.e-6 + ddy) * (y < -1270.e-6 - ddy) + -(x > 350.e-6 + ddx) * (x < 460.e-6 + ddx) * (y > -1490.e-6 + ddy) * (y < -1270.e-6 - ddy) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) > 70.e-6) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) < 80.e-6) + -(x > 350.e-6 + ddx) * (x < 460.e-6 + ddx) * (y > -1490.e-6 + ddy) * (y < -1270.e-6 - ddy) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) > 100.e-6) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) < 110.e-6) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1490.e-6 + ddy) * (y < -1480.e-6 - ddy) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1460.e-6 + ddy) * (y < -1450.e-6 - ddy) + -(x > 845.e-6 - ddx) * (x < 955.e-6 - ddx) * (y > -1670.e-6 + ddy) * (y < -1450.e-6 - ddy) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) > 70.e-6) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) < 80.e-6) + -(x > 845.e-6 - ddx) * (x < 955.e-6 - ddx) * (y > -1670.e-6 + ddy) * (y < -1450.e-6 - ddy) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) > 100.e-6) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) < 110.e-6) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1670.e-6 + ddy) * (y < -1660.e-6 - ddy) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1640.e-6 + ddy) * (y < -1630.e-6 - ddy) + ) + + flag_ss * ( (x > 1237.5e-6 + ddx) * (x < 1255.e-6 - ddx) + (x > 1285.e-6 + ddx) * (x < 1302.5e-6 - ddx)) * (y > -2500.e-6 - ddy) * (y < -2500.e-6 + ddy) * (z > h_si - ddz) * (z < h_si + ddz)" + +warpx.Ey_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * + (1 + -(x > 1237.5e-6) * (x < 1255.e-6) * (y > -2500.e-6 - ddy) * (y < 1635.5e-6 + ddy) + -(x > 1285.5e-6) * (x < 1302.5e-6) * (y > -2500.e-6 - ddy) * (y < 1635.5e-6 + ddy) + -(x > 1237.5e-6) * (x < 1302.5e-6) * (y > 1635.e-6) * (y < 1700.e-6) + -(x > 1237.5e-6) * (x < 1302.5e-6) * (y > -2565.e-6) * (y < -2500.e-6) + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * (y > -335.e-6 + ddy) * (y < 335.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > 325.e-6 + ddy) * (y < 335.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > -335.e-6 + ddy) * (y < -325.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > 20.e-6 - ddy) * (y < 335.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -335.e-6 + ddy) * (y < -20.e-6 + ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -20.e-6 + ddy) * (y < -10.e-6 - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > 10.e-6 + ddy) * (y < 20.e-6 - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 170.e-6 + ddy) * (y < 180.e-6 - ddy) + -(x > 820.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > 200.e-6 + ddy) * (y < 210.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 95.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * (y < 95.e-6 + ddy) * (y > -95.e-6 - ddy) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 75.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 85.e-6) + -(x > 1120.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -95.e-6 + ddy) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) > 105.e-6) * + (sqrt( (x-1120.e-6)*(x-1120.e-6) + (y+95.e-6)*(y+95.e-6) ) < 115.e-6) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -210.e-6 + ddy) * (y < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1120.e-6 + ddx) * (y > -180.e-6 + ddy) * (y < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y+280.e-6)*(y+280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -360.e-6 + ddy) * (y < -350.e-6 - ddy) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 80.e-6) + -(x > 880.e-6 - ddx) * (x < 990.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y+460.e-6)*(y+460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -570.e-6 + ddy) * (y < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 880.e-6 + ddx) * (y > -540.e-6 + ddy) * (y < -530.e-6 - ddy) + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * (y > -1435.e-6 + ddy) * (y < -765.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > -775.e-6 + ddy) * (y < -765.e-6 - ddy) + -(x > -40.e-6 - ddx) * (x < ddx) * (y > -1435.e-6 + ddy) * (y < -1425.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -1080.e-6 - ddy) * (y < -765.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -1435.e-6 + ddy) * (y < -1120.e-6 + ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -1120.e-6 + ddy) * (y < -1110.e-6 - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -1090.e-6 + ddy) * (y < -1080.e-6 - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -1120.e-6 + ddy) * (y < -1005.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -1120.e-6 + ddy) * (y < -1005.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 115.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 75.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 85.e-6) + -(x > 705.e-6 + ddx) * (x < 820.e-6 + ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 105.e-6) * + (sqrt( (x-820.e-6)*(x-820.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 115.e-6) + -(x > 820.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -930.e-6 + ddy) * (y < -920.e-6 - ddy) + -(x > 820.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -900.e-6 + ddy) * (y < -890.e-6 - ddy) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 75.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 85.e-6) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1005.e-6 - ddy) * (y < -890.e-6 - ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) > 105.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1005.e-6)*(y+1005.e-6) ) < 115.e-6) + -(x > 1160.e-6 + ddx) * (x < 1170.e-6 - ddx) * (y < -1005.e-6 + ddy) * (y > -1195.e-6 - ddy) + -(x > 1190.e-6 + ddx) * (x < 1200.e-6 - ddx) * (y < -1005.e-6 + ddy) * (y > -1195.e-6 - ddy) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1310.e-6 + ddy) * (y < -1195.e-6 + ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) > 75.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) < 85.e-6) + -(x > 1085.e-6 - ddx) * (x < 1200.e-6 - ddx) * (y > -1310.e-6 + ddy) * (y < -1195.e-6 + ddy) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) > 105.e-6) * + (sqrt( (x-1085.e-6)*(x-1085.e-6) + (y+1195.e-6)*(y+1195.e-6) ) < 115.e-6) + -(x > 460.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -1310.e-6 + ddy) * (y < -1300.e-6 - ddy) + -(x > 460.e-6 - ddx) * (x < 1085.e-6 + ddx) * (y > -1280.e-6 + ddy) * (y < -1270.e-6 - ddy) + -(x > 350.e-6 + ddx) * (x < 460.e-6 + ddx) * (y > -1490.e-6 + ddy) * (y < -1270.e-6 - ddy) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) > 70.e-6) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) < 80.e-6) + -(x > 350.e-6 + ddx) * (x < 460.e-6 + ddx) * (y > -1490.e-6 + ddy) * (y < -1270.e-6 - ddy) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) > 100.e-6) * + (sqrt( (x-460.e-6)*(x-460.e-6) + (y+1380.e-6)*(y+1380.e-6) ) < 110.e-6) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1490.e-6 + ddy) * (y < -1480.e-6 - ddy) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1460.e-6 + ddy) * (y < -1450.e-6 - ddy) + -(x > 845.e-6 - ddx) * (x < 955.e-6 - ddx) * (y > -1670.e-6 + ddy) * (y < -1450.e-6 - ddy) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) > 70.e-6) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) < 80.e-6) + -(x > 845.e-6 - ddx) * (x < 955.e-6 - ddx) * (y > -1670.e-6 + ddy) * (y < -1450.e-6 - ddy) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) > 100.e-6) * + (sqrt( (x-845.e-6)*(x-845.e-6) + (y+1560.e-6)*(y+1560.e-6) ) < 110.e-6) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1670.e-6 + ddy) * (y < -1660.e-6 - ddy) + -(x > 460.e-6 - ddx) * (x < 845.e-6 + ddx) * (y > -1640.e-6 + ddy) * (y < -1630.e-6 - ddy) + )" + +warpx.Ez_excitation_flag_function(x,y,z) = "flag_none" + +warpx.Ex_excitation_grid_function(x,y,z,t) = "exp(-(t-3*TP)**2/(2*TP**2))*sin(2*pi*freq*t) * + ( (x > 1237.5e-6 + ddx) * (x < 1255.e-6 - ddx) - (x > 1285.e-6 + ddx) * (x < 1302.5e-6 - ddx)) * (y > -2500.e-6 - ddy) * (y < -2500.e-6 + ddy) * (z > h_si - ddz) * (z < h_si + ddz)" + +warpx.Ey_excitation_grid_function(x,y,z,t) = "0." +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 +plt.diag_type = Full diff --git a/Examples/Tests/circuits/Candice/inputs_candice17 b/Examples/Tests/circuits/Candice/inputs_candice17 new file mode 100644 index 000000000..10d36524b --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_candice17 @@ -0,0 +1,566 @@ +# See parameters in https://github.com/ECP-WarpX/artemis/pull/43 + +################################ +####### GENERAL PARAMETERS ###### +################################# +max_step = 1000000 + +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)" + +macroscopic.epsilon_function(x,y,z) = "eps_0 + eps_0 * (eps_r_si - 1.) * (z <= h_si)" + +#macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_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 + -(x > -1760.e-6 + ddx) * (x < -795.e-6 - ddx) * (y > -32.5e-6 + ddy) * (y < -27.5e-6 - ddy) + -(x > -1760.e-6 + ddx) * (x < -795.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < -15.e-6 - ddy) + -(x > -1760.e-6 + ddx) * (x < -1755.e-6 - ddx) * (y > -27.5e-6 - ddy) * (y < -20.e-6 + ddy) + -(x > -800.e-6 + ddx) * (x < -795.e-6 - ddx) * (y > -27.5e-6 - ddy) * (y < -20.e-6 + ddy) + -(x > 1237.5e-6 + ddx) * (x < 1255.e-6 - ddx) * (y > -2565.e-6 - ddy) * (y < 1795.e-6 + ddy) + -(x > 1285.5e-6 + ddx) * (x < 1302.5e-6 - ddx) * (y > -2565.e-6 - ddy) * (y < 1795.e-6 + ddy) + -(x > 1237.5e-6 + ddx) * (x < 1302.5e-6 - ddx) * (y > -2582.5e-6 + ddy) * (y < -2565.e-6 - ddy) + -(x > 1237.5e-6 + ddx) * (x < 1302.5e-6 - ddx) * (y > 1795.e-6 + ddy) * (y < 1812.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > -372.5e-6 + ddy) * (y < -272.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > 272.5e-6 + ddy) * (y < 372.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -595.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + -(x > -460.e-6 + ddx) * (x < -395.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + -(x > -260.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * (y > -325.e-6 - ddy) * (y < 325.e-6 + ddy) + -(x > -50.e-6 + ddx) * (x < 10.e-6 - ddx) * (y > 325.e-6 + ddy) * (y < 335.e-6 - ddy) + -(x > -50.e-6 + ddx) * (x < 10.e-6 - ddx) * (y > -335.e-6 + ddy) * (y < -325.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > 20.e-6 - ddy) * (y < 325.e-6 + ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -325.e-6 - ddy) * (y < -20.e-6 + ddy) + -(x > ddx) * (x < 635.e-6 + ddx) * (y > -20.e-6 + ddy) * (y < -10.e-6 - ddy) + -(x > ddx) * (x < 635.e-6 + ddx) * (y > 10.e-6 + ddy) * (y < 20.e-6 - ddy) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) > 70.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) < 80.e-6) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) > 100.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) < 110.e-6) + -(x > 705.e-6 + ddx) * (x < 715.e-6 - ddx) * (y > 90.e-6 - ddy) * (y < 100.e-6 + ddy) + -(x > 735.e-6 + ddx) * (x < 745.e-6 - ddx) * (y > 90.e-6 - ddy) * (y < 100.e-6 + ddy) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 70.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 80.e-6) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 100.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 110.e-6) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > 170.e-6 + ddy) * (y < 180.e-6 - ddy) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > 200.e-6 + ddy) * (y < 210.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 110.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * (y < 100.e-6 + ddy) * (y > -100.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * (y < 100.e-6 + ddy) * (y > -100.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > -210.e-6 + ddy) * (y < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > -180.e-6 + ddy) * (y < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -360.e-6 + ddy) * (y < -350.e-6 - ddy) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) < 80.e-6) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -570.e-6 + ddy) * (y < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -540.e-6 + ddy) * (y < -530.e-6 - ddy) + -(x > -1760.e-6 + ddx) * (x < -795.e-6 - ddx) * ((y - offset_y) > -32.5e-6 + ddy) * ((y - offset_y) < -27.5e-6 - ddy) + -(x > -1760.e-6 + ddx) * (x < -795.e-6 - ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < -15.e-6 - ddy) + -(x > -1760.e-6 + ddx) * (x < -1755.e-6 - ddx) * ((y - offset_y) > -27.5e-6 - ddy) * ((y - offset_y) < -20.e-6 + ddy) + -(x > -800.e-6 + ddx) * (x < -795.e-6 - ddx) * ((y - offset_y) > -27.5e-6 - ddy) * ((y - offset_y) < -20.e-6 + ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * ((y - offset_y) > -372.5e-6 + ddy) * ((y - offset_y) < -272.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * ((y - offset_y) > 272.5e-6 + ddy) * ((y - offset_y) < 372.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -595.e-6 - ddx) * ((y - offset_y) > -272.5e-6 - ddy) * ((y - offset_y) < 272.5e-6 + ddy) + -(x > -460.e-6 + ddx) * (x < -395.e-6 - ddx) * ((y - offset_y) > -272.5e-6 - ddy) * ((y - offset_y) < 272.5e-6 + ddy) + -(x > -260.e-6 + ddx) * (x < -160.e-6 - ddx) * ((y - offset_y) > -272.5e-6 - ddy) * ((y - offset_y) < 272.5e-6 + ddy) + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * ((y - offset_y) > -325.e-6 - ddy) * ((y - offset_y) < 325.e-6 + ddy) + -(x > -50.e-6 + ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > 325.e-6 + ddy) * ((y - offset_y) < 335.e-6 - ddy) + -(x > -50.e-6 + ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > -335.e-6 + ddy) * ((y - offset_y) < -325.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > 20.e-6 - ddy) * ((y - offset_y) < 325.e-6 + ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > -325.e-6 - ddy) * ((y - offset_y) < -20.e-6 + ddy) + -(x > ddx) * (x < 635.e-6 + ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < -10.e-6 - ddy) + -(x > ddx) * (x < 635.e-6 + ddx) * ((y - offset_y) > 10.e-6 + ddy) * ((y - offset_y) < 20.e-6 - ddy) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) > 70.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) < 80.e-6) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) > 100.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) < 110.e-6) + -(x > 705.e-6 + ddx) * (x < 715.e-6 - ddx) * ((y - offset_y) > 90.e-6 - ddy) * ((y - offset_y) < 100.e-6 + ddy) + -(x > 735.e-6 + ddx) * (x < 745.e-6 - ddx) * ((y - offset_y) > 90.e-6 - ddy) * ((y - offset_y) < 100.e-6 + ddy) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 70.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 80.e-6) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 100.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 110.e-6) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > 170.e-6 + ddy) * ((y - offset_y) < 180.e-6 - ddy) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > 200.e-6 + ddy) * ((y - offset_y) < 210.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 110.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * ((y - offset_y) < 100.e-6 + ddy) * ((y - offset_y) > -100.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) < 100.e-6 + ddy) * ((y - offset_y) > -100.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > -210.e-6 + ddy) * ((y - offset_y) < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > -210.e-6 + ddy) * ((y - offset_y) < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > -210.e-6 + ddy) * ((y - offset_y) < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > -180.e-6 + ddy) * ((y - offset_y) < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * ((y - offset_y) > -390.e-6 + ddy) * ((y - offset_y) < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * ((y - offset_y) > -390.e-6 + ddy) * ((y - offset_y) < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -390.e-6 + ddy) * ((y - offset_y) < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -360.e-6 + ddy) * ((y - offset_y) < -350.e-6 - ddy) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * ((y - offset_y) > -570.e-6 + ddy) * ((y - offset_y) < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) < 80.e-6) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * ((y - offset_y) > -570.e-6 + ddy) * ((y - offset_y) < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -570.e-6 + ddy) * ((y - offset_y) < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -540.e-6 + ddy) * ((y - offset_y) < -530.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 = 1400 +my_constants.n_celly = 2000 +my_constants.n_cellz = 32 + +my_constants.max_grid_sizex = 1400 +my_constants.max_grid_sizey = 2000 +my_constants.max_grid_sizez = 32 +my_constants.blocking_factor = 2 + +my_constants.prob_lox = -2000.e-6 +my_constants.prob_loy = -3000.e-6 +my_constants.prob_loz = 0. + +my_constants.prob_hix = 1500.e-6 +my_constants.prob_hiy = 2000.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.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 = 8.6e9 +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 + -(x > -1760.e-6 + ddx) * (x < -795.e-6 - ddx) * (y > -32.5e-6 + ddy) * (y < -27.5e-6 - ddy) + -(x > -1760.e-6 + ddx) * (x < -795.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < -15.e-6 - ddy) + -(x > -1760.e-6 + ddx) * (x < -1755.e-6 - ddx) * (y > -27.5e-6 - ddy) * (y < -20.e-6 + ddy) + -(x > -800.e-6 + ddx) * (x < -795.e-6 - ddx) * (y > -27.5e-6 - ddy) * (y < -20.e-6 + ddy) + -(x > 1237.5e-6 + ddx) * (x < 1255.e-6 - ddx) * (y > -2565.e-6 - ddy) * (y < 1795.e-6 + ddy) + -(x > 1285.5e-6 + ddx) * (x < 1302.5e-6 - ddx) * (y > -2565.e-6 - ddy) * (y < 1795.e-6 + ddy) + -(x > 1237.5e-6 + ddx) * (x < 1302.5e-6 - ddx) * (y > -2582.5e-6 + ddy) * (y < -2565.e-6 - ddy) + -(x > 1237.5e-6 + ddx) * (x < 1302.5e-6 - ddx) * (y > 1795.e-6 + ddy) * (y < 1812.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > -372.5e-6 + ddy) * (y < -272.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > 272.5e-6 + ddy) * (y < 372.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -595.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + -(x > -460.e-6 + ddx) * (x < -395.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + -(x > -260.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * (y > -325.e-6 - ddy) * (y < 325.e-6 + ddy) + -(x > -50.e-6 + ddx) * (x < 10.e-6 - ddx) * (y > 325.e-6 + ddy) * (y < 335.e-6 - ddy) + -(x > -50.e-6 + ddx) * (x < 10.e-6 - ddx) * (y > -335.e-6 + ddy) * (y < -325.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > 20.e-6 - ddy) * (y < 325.e-6 + ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -325.e-6 - ddy) * (y < -20.e-6 + ddy) + -(x > ddx) * (x < 635.e-6 + ddx) * (y > -20.e-6 + ddy) * (y < -10.e-6 - ddy) + -(x > ddx) * (x < 635.e-6 + ddx) * (y > 10.e-6 + ddy) * (y < 20.e-6 - ddy) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) > 70.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) < 80.e-6) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) > 100.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) < 110.e-6) + -(x > 705.e-6 + ddx) * (x < 715.e-6 - ddx) * (y > 90.e-6 - ddy) * (y < 100.e-6 + ddy) + -(x > 735.e-6 + ddx) * (x < 745.e-6 - ddx) * (y > 90.e-6 - ddy) * (y < 100.e-6 + ddy) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 70.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 80.e-6) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 100.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 110.e-6) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > 170.e-6 + ddy) * (y < 180.e-6 - ddy) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > 200.e-6 + ddy) * (y < 210.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 110.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * (y < 100.e-6 + ddy) * (y > -100.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * (y < 100.e-6 + ddy) * (y > -100.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > -210.e-6 + ddy) * (y < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > -180.e-6 + ddy) * (y < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -360.e-6 + ddy) * (y < -350.e-6 - ddy) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) < 80.e-6) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -570.e-6 + ddy) * (y < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -540.e-6 + ddy) * (y < -530.e-6 - ddy) + -(x > -1760.e-6 + ddx) * (x < -795.e-6 - ddx) * ((y - offset_y) > -32.5e-6 + ddy) * ((y - offset_y) < -27.5e-6 - ddy) + -(x > -1760.e-6 + ddx) * (x < -795.e-6 - ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < -15.e-6 - ddy) + -(x > -1760.e-6 + ddx) * (x < -1755.e-6 - ddx) * ((y - offset_y) > -27.5e-6 - ddy) * ((y - offset_y) < -20.e-6 + ddy) + -(x > -800.e-6 + ddx) * (x < -795.e-6 - ddx) * ((y - offset_y) > -27.5e-6 - ddy) * ((y - offset_y) < -20.e-6 + ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * ((y - offset_y) > -372.5e-6 + ddy) * ((y - offset_y) < -272.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * ((y - offset_y) > 272.5e-6 + ddy) * ((y - offset_y) < 372.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -595.e-6 - ddx) * ((y - offset_y) > -272.5e-6 - ddy) * ((y - offset_y) < 272.5e-6 + ddy) + -(x > -460.e-6 + ddx) * (x < -395.e-6 - ddx) * ((y - offset_y) > -272.5e-6 - ddy) * ((y - offset_y) < 272.5e-6 + ddy) + -(x > -260.e-6 + ddx) * (x < -160.e-6 - ddx) * ((y - offset_y) > -272.5e-6 - ddy) * ((y - offset_y) < 272.5e-6 + ddy) + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * ((y - offset_y) > -325.e-6 - ddy) * ((y - offset_y) < 325.e-6 + ddy) + -(x > -50.e-6 + ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > 325.e-6 + ddy) * ((y - offset_y) < 335.e-6 - ddy) + -(x > -50.e-6 + ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > -335.e-6 + ddy) * ((y - offset_y) < -325.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > 20.e-6 - ddy) * ((y - offset_y) < 325.e-6 + ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > -325.e-6 - ddy) * ((y - offset_y) < -20.e-6 + ddy) + -(x > ddx) * (x < 635.e-6 + ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < -10.e-6 - ddy) + -(x > ddx) * (x < 635.e-6 + ddx) * ((y - offset_y) > 10.e-6 + ddy) * ((y - offset_y) < 20.e-6 - ddy) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) > 70.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) < 80.e-6) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) > 100.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) < 110.e-6) + -(x > 705.e-6 + ddx) * (x < 715.e-6 - ddx) * ((y - offset_y) > 90.e-6 - ddy) * ((y - offset_y) < 100.e-6 + ddy) + -(x > 735.e-6 + ddx) * (x < 745.e-6 - ddx) * ((y - offset_y) > 90.e-6 - ddy) * ((y - offset_y) < 100.e-6 + ddy) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 70.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 80.e-6) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 100.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 110.e-6) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > 170.e-6 + ddy) * ((y - offset_y) < 180.e-6 - ddy) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > 200.e-6 + ddy) * ((y - offset_y) < 210.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 110.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * ((y - offset_y) < 100.e-6 + ddy) * ((y - offset_y) > -100.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) < 100.e-6 + ddy) * ((y - offset_y) > -100.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > -210.e-6 + ddy) * ((y - offset_y) < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > -210.e-6 + ddy) * ((y - offset_y) < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > -210.e-6 + ddy) * ((y - offset_y) < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > -180.e-6 + ddy) * ((y - offset_y) < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * ((y - offset_y) > -390.e-6 + ddy) * ((y - offset_y) < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * ((y - offset_y) > -390.e-6 + ddy) * ((y - offset_y) < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -390.e-6 + ddy) * ((y - offset_y) < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -360.e-6 + ddy) * ((y - offset_y) < -350.e-6 - ddy) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * ((y - offset_y) > -570.e-6 + ddy) * ((y - offset_y) < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) < 80.e-6) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * ((y - offset_y) > -570.e-6 + ddy) * ((y - offset_y) < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -570.e-6 + ddy) * ((y - offset_y) < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -540.e-6 + ddy) * ((y - offset_y) < -530.e-6 - ddy) + )" + +# This is a source on the signal line +#+ flag_ss * ( (x > 1237.5e-6 + ddx) * (x < 1255.e-6 - ddx) + (x > 1285.e-6 + ddx) * (x < 1302.5e-6 - ddx)) * (y > -2565.e-6 - ddy) * (y < -2565.e-6 + ddy) * (z > h_si - ddz) * (z < h_si + ddz)" + +warpx.Ey_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * + (1 + -(x > -1760.e-6 + ddx) * (x < -795.e-6 - ddx) * (y > -32.5e-6 + ddy) * (y < -27.5e-6 - ddy) + -(x > -1760.e-6 + ddx) * (x < -795.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < -15.e-6 - ddy) + -(x > -1760.e-6 + ddx) * (x < -1755.e-6 - ddx) * (y > -27.5e-6 - ddy) * (y < -20.e-6 + ddy) + -(x > -800.e-6 + ddx) * (x < -795.e-6 - ddx) * (y > -27.5e-6 - ddy) * (y < -20.e-6 + ddy) + -(x > 1237.5e-6 + ddx) * (x < 1255.e-6 - ddx) * (y > -2565.e-6 - ddy) * (y < 1795.e-6 + ddy) + -(x > 1285.5e-6 + ddx) * (x < 1302.5e-6 - ddx) * (y > -2565.e-6 - ddy) * (y < 1795.e-6 + ddy) + -(x > 1237.5e-6 + ddx) * (x < 1302.5e-6 - ddx) * (y > -2582.5e-6 + ddy) * (y < -2565.e-6 - ddy) + -(x > 1237.5e-6 + ddx) * (x < 1302.5e-6 - ddx) * (y > 1795.e-6 + ddy) * (y < 1812.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > -372.5e-6 + ddy) * (y < -272.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > 272.5e-6 + ddy) * (y < 372.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -595.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + -(x > -460.e-6 + ddx) * (x < -395.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + -(x > -260.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * (y > -325.e-6 - ddy) * (y < 325.e-6 + ddy) + -(x > -50.e-6 + ddx) * (x < 10.e-6 - ddx) * (y > 325.e-6 + ddy) * (y < 335.e-6 - ddy) + -(x > -50.e-6 + ddx) * (x < 10.e-6 - ddx) * (y > -335.e-6 + ddy) * (y < -325.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > 20.e-6 - ddy) * (y < 325.e-6 + ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -325.e-6 - ddy) * (y < -20.e-6 + ddy) + -(x > ddx) * (x < 635.e-6 + ddx) * (y > -20.e-6 + ddy) * (y < -10.e-6 - ddy) + -(x > ddx) * (x < 635.e-6 + ddx) * (y > 10.e-6 + ddy) * (y < 20.e-6 - ddy) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) > 70.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) < 80.e-6) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) > 100.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) < 110.e-6) + -(x > 705.e-6 + ddx) * (x < 715.e-6 - ddx) * (y > 90.e-6 - ddy) * (y < 100.e-6 + ddy) + -(x > 735.e-6 + ddx) * (x < 745.e-6 - ddx) * (y > 90.e-6 - ddy) * (y < 100.e-6 + ddy) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 70.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 80.e-6) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 100.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 110.e-6) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > 170.e-6 + ddy) * (y < 180.e-6 - ddy) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > 200.e-6 + ddy) * (y < 210.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 110.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * (y < 100.e-6 + ddy) * (y > -100.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * (y < 100.e-6 + ddy) * (y > -100.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > -210.e-6 + ddy) * (y < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > -180.e-6 + ddy) * (y < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -360.e-6 + ddy) * (y < -350.e-6 - ddy) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) < 80.e-6) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -570.e-6 + ddy) * (y < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -540.e-6 + ddy) * (y < -530.e-6 - ddy) + -(x > -1760.e-6 + ddx) * (x < -795.e-6 - ddx) * ((y - offset_y) > -32.5e-6 + ddy) * ((y - offset_y) < -27.5e-6 - ddy) + -(x > -1760.e-6 + ddx) * (x < -795.e-6 - ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < -15.e-6 - ddy) + -(x > -1760.e-6 + ddx) * (x < -1755.e-6 - ddx) * ((y - offset_y) > -27.5e-6 - ddy) * ((y - offset_y) < -20.e-6 + ddy) + -(x > -800.e-6 + ddx) * (x < -795.e-6 - ddx) * ((y - offset_y) > -27.5e-6 - ddy) * ((y - offset_y) < -20.e-6 + ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * ((y - offset_y) > -372.5e-6 + ddy) * ((y - offset_y) < -272.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * ((y - offset_y) > 272.5e-6 + ddy) * ((y - offset_y) < 372.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -595.e-6 - ddx) * ((y - offset_y) > -272.5e-6 - ddy) * ((y - offset_y) < 272.5e-6 + ddy) + -(x > -460.e-6 + ddx) * (x < -395.e-6 - ddx) * ((y - offset_y) > -272.5e-6 - ddy) * ((y - offset_y) < 272.5e-6 + ddy) + -(x > -260.e-6 + ddx) * (x < -160.e-6 - ddx) * ((y - offset_y) > -272.5e-6 - ddy) * ((y - offset_y) < 272.5e-6 + ddy) + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * ((y - offset_y) > -325.e-6 - ddy) * ((y - offset_y) < 325.e-6 + ddy) + -(x > -50.e-6 + ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > 325.e-6 + ddy) * ((y - offset_y) < 335.e-6 - ddy) + -(x > -50.e-6 + ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > -335.e-6 + ddy) * ((y - offset_y) < -325.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > 20.e-6 - ddy) * ((y - offset_y) < 325.e-6 + ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > -325.e-6 - ddy) * ((y - offset_y) < -20.e-6 + ddy) + -(x > ddx) * (x < 635.e-6 + ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < -10.e-6 - ddy) + -(x > ddx) * (x < 635.e-6 + ddx) * ((y - offset_y) > 10.e-6 + ddy) * ((y - offset_y) < 20.e-6 - ddy) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) > 70.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) < 80.e-6) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) > 100.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) < 110.e-6) + -(x > 705.e-6 + ddx) * (x < 715.e-6 - ddx) * ((y - offset_y) > 90.e-6 - ddy) * ((y - offset_y) < 100.e-6 + ddy) + -(x > 735.e-6 + ddx) * (x < 745.e-6 - ddx) * ((y - offset_y) > 90.e-6 - ddy) * ((y - offset_y) < 100.e-6 + ddy) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 70.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 80.e-6) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 100.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 110.e-6) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > 170.e-6 + ddy) * ((y - offset_y) < 180.e-6 - ddy) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > 200.e-6 + ddy) * ((y - offset_y) < 210.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 110.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * ((y - offset_y) < 100.e-6 + ddy) * ((y - offset_y) > -100.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) < 100.e-6 + ddy) * ((y - offset_y) > -100.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > -210.e-6 + ddy) * ((y - offset_y) < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > -210.e-6 + ddy) * ((y - offset_y) < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > -210.e-6 + ddy) * ((y - offset_y) < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > -180.e-6 + ddy) * ((y - offset_y) < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * ((y - offset_y) > -390.e-6 + ddy) * ((y - offset_y) < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * ((y - offset_y) > -390.e-6 + ddy) * ((y - offset_y) < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -390.e-6 + ddy) * ((y - offset_y) < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -360.e-6 + ddy) * ((y - offset_y) < -350.e-6 - ddy) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * ((y - offset_y) > -570.e-6 + ddy) * ((y - offset_y) < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) < 80.e-6) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * ((y - offset_y) > -570.e-6 + ddy) * ((y - offset_y) < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -570.e-6 + ddy) * ((y - offset_y) < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -540.e-6 + ddy) * ((y - offset_y) < -530.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 > -1755.e-6 + dx - ddx) * (x < -1755.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/(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 > -1755.e-6 + dx - ddx) * (x < -1755.e-6 + dx + ddx)" +warpx.Ez_excitation_grid_function(x,y,z,t) = "0." + +# This is a source on the signal line +#warpx.Ex_excitation_grid_function(x,y,z,t) = "exp(-(t-3*TP)**2/(2*TP**2))*sin(2*pi*freq*t) * +# ( (x > 1237.5e-6 + ddx) * (x < 1255.e-6 - ddx) - (x > 1285.e-6 + ddx) * (x < 1302.5e-6 - ddx)) * (y > -2565.e-6 - ddy) * (y < -2565.e-6 + ddy) * (z > h_si - ddz) * (z < h_si + ddz)" +#warpx.Ey_excitation_grid_function(x,y,z,t) = "0." +#warpx.Ez_excitation_grid_function(x,y,z,t) = "0." + +############### +# diagnostics +############### + +diagnostics.diags_names = plt +############### +# full plotfiles +plt.intervals = 1000 +plt.fields_to_plot = Ex Ey Ez Bx By Bz mu +plt.diag_type = Full +plt.file_min_digits = 7 diff --git a/Examples/Tests/circuits/Candice/inputs_candice18 b/Examples/Tests/circuits/Candice/inputs_candice18 new file mode 100644 index 000000000..70012faad --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_candice18 @@ -0,0 +1,284 @@ +# See parameters in https://github.com/ECP-WarpX/artemis/pull/43 + +################################ +####### GENERAL PARAMETERS ###### +################################# +max_step = 1000000 + +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) * + (1 + -(x > -1750.e-6 + ddx) * (x < -795.e-6 - ddx) * (y > -32.5e-6 + ddy) * (y < -27.5e-6 - ddy) + -(x > -1750.e-6 + ddx) * (x < -795.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < -15.e-6 - ddy) + -(x > -800.e-6 + ddx) * (x < -795.e-6 - ddx) * (y > -27.5e-6 - ddy) * (y < -20.e-6 + ddy) + -(x > 1237.5e-6 + ddx) * (x < 1255.e-6 - ddx) * (y > -2565.e-6 - ddy) * (y < 1795.e-6 + ddy) + -(x > 1285.5e-6 + ddx) * (x < 1302.5e-6 - ddx) * (y > -2565.e-6 - ddy) * (y < 1795.e-6 + ddy) + -(x > 1237.5e-6 + ddx) * (x < 1302.5e-6 - ddx) * (y > -2582.5e-6 + ddy) * (y < -2565.e-6 - ddy) + -(x > 1237.5e-6 + ddx) * (x < 1302.5e-6 - ddx) * (y > 1795.e-6 + ddy) * (y < 1812.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > -372.5e-6 + ddy) * (y < -272.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > 272.5e-6 + ddy) * (y < 372.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -595.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + -(x > -460.e-6 + ddx) * (x < -395.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + -(x > -260.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * (y > -325.e-6 - ddy) * (y < 325.e-6 + ddy) + -(x > -50.e-6 + ddx) * (x < 10.e-6 - ddx) * (y > 325.e-6 + ddy) * (y < 335.e-6 - ddy) + -(x > -50.e-6 + ddx) * (x < 10.e-6 - ddx) * (y > -335.e-6 + ddy) * (y < -325.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > 20.e-6 - ddy) * (y < 325.e-6 + ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * (y > -325.e-6 - ddy) * (y < -20.e-6 + ddy) + -(x > ddx) * (x < 635.e-6 + ddx) * (y > -20.e-6 + ddy) * (y < -10.e-6 - ddy) + -(x > ddx) * (x < 635.e-6 + ddx) * (y > 10.e-6 + ddy) * (y < 20.e-6 - ddy) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) > 70.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) < 80.e-6) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) > 100.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) < 110.e-6) + -(x > 705.e-6 + ddx) * (x < 715.e-6 - ddx) * (y > 90.e-6 - ddy) * (y < 100.e-6 + ddy) + -(x > 735.e-6 + ddx) * (x < 745.e-6 - ddx) * (y > 90.e-6 - ddy) * (y < 100.e-6 + ddy) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 70.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 80.e-6) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 100.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 110.e-6) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > 170.e-6 + ddy) * (y < 180.e-6 - ddy) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > 200.e-6 + ddy) * (y < 210.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 110.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * (y < 100.e-6 + ddy) * (y > -100.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * (y < 100.e-6 + ddy) * (y > -100.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > -210.e-6 + ddy) * (y < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > -180.e-6 + ddy) * (y < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -360.e-6 + ddy) * (y < -350.e-6 - ddy) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) < 80.e-6) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -570.e-6 + ddy) * (y < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -540.e-6 + ddy) * (y < -530.e-6 - ddy) + -(x > -1750.e-6 + ddx) * (x < -795.e-6 - ddx) * ((y - offset_y) > -32.5e-6 + ddy) * ((y - offset_y) < -27.5e-6 - ddy) + -(x > -1750.e-6 + ddx) * (x < -795.e-6 - ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < -15.e-6 - ddy) + -(x > -800.e-6 + ddx) * (x < -795.e-6 - ddx) * ((y - offset_y) > -27.5e-6 - ddy) * ((y - offset_y) < -20.e-6 + ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * ((y - offset_y) > -372.5e-6 + ddy) * ((y - offset_y) < -272.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * ((y - offset_y) > 272.5e-6 + ddy) * ((y - offset_y) < 372.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -595.e-6 - ddx) * ((y - offset_y) > -272.5e-6 - ddy) * ((y - offset_y) < 272.5e-6 + ddy) + -(x > -460.e-6 + ddx) * (x < -395.e-6 - ddx) * ((y - offset_y) > -272.5e-6 - ddy) * ((y - offset_y) < 272.5e-6 + ddy) + -(x > -260.e-6 + ddx) * (x < -160.e-6 - ddx) * ((y - offset_y) > -272.5e-6 - ddy) * ((y - offset_y) < 272.5e-6 + ddy) + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * ((y - offset_y) > -325.e-6 - ddy) * ((y - offset_y) < 325.e-6 + ddy) + -(x > -50.e-6 + ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > 325.e-6 + ddy) * ((y - offset_y) < 335.e-6 - ddy) + -(x > -50.e-6 + ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > -335.e-6 + ddy) * ((y - offset_y) < -325.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > 20.e-6 - ddy) * ((y - offset_y) < 325.e-6 + ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > -325.e-6 - ddy) * ((y - offset_y) < -20.e-6 + ddy) + -(x > ddx) * (x < 635.e-6 + ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < -10.e-6 - ddy) + -(x > ddx) * (x < 635.e-6 + ddx) * ((y - offset_y) > 10.e-6 + ddy) * ((y - offset_y) < 20.e-6 - ddy) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) > 70.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) < 80.e-6) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) > 100.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) < 110.e-6) + -(x > 705.e-6 + ddx) * (x < 715.e-6 - ddx) * ((y - offset_y) > 90.e-6 - ddy) * ((y - offset_y) < 100.e-6 + ddy) + -(x > 735.e-6 + ddx) * (x < 745.e-6 - ddx) * ((y - offset_y) > 90.e-6 - ddy) * ((y - offset_y) < 100.e-6 + ddy) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 70.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 80.e-6) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 100.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 110.e-6) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > 170.e-6 + ddy) * ((y - offset_y) < 180.e-6 - ddy) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > 200.e-6 + ddy) * ((y - offset_y) < 210.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 110.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * ((y - offset_y) < 100.e-6 + ddy) * ((y - offset_y) > -100.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) < 100.e-6 + ddy) * ((y - offset_y) > -100.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > -210.e-6 + ddy) * ((y - offset_y) < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > -210.e-6 + ddy) * ((y - offset_y) < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > -210.e-6 + ddy) * ((y - offset_y) < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > -180.e-6 + ddy) * ((y - offset_y) < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * ((y - offset_y) > -390.e-6 + ddy) * ((y - offset_y) < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * ((y - offset_y) > -390.e-6 + ddy) * ((y - offset_y) < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -390.e-6 + ddy) * ((y - offset_y) < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -360.e-6 + ddy) * ((y - offset_y) < -350.e-6 - ddy) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * ((y - offset_y) > -570.e-6 + ddy) * ((y - offset_y) < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) < 80.e-6) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * ((y - offset_y) > -570.e-6 + ddy) * ((y - offset_y) < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -570.e-6 + ddy) * ((y - offset_y) < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -540.e-6 + ddy) * ((y - offset_y) < -530.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_si - 1.) * (z <= h_si)" + +################################# +############ FIELDS ############# +################################# + +############### +# domain size +# n_cellx/y/z and Lx/y/z are needed to calculate dx/dy/dz +############### +my_constants.n_cellx = 1400 +my_constants.n_celly = 2000 +my_constants.n_cellz = 32 + +my_constants.max_grid_sizex = 1400 +my_constants.max_grid_sizey = 2000 +my_constants.max_grid_sizez = 32 +my_constants.blocking_factor = 2 + +my_constants.prob_lox = -1750.e-6 +my_constants.prob_loy = -3000.e-6 +my_constants.prob_loz = 0. + +my_constants.prob_hix = 1750.e-6 +my_constants.prob_hiy = 2000.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.e11 + +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 = 8.6e9 +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_none" +warpx.Ey_excitation_flag_function(x,y,z) = "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 - ddx) * (x < -1750.e-6 + 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/(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 - ddx) * (x < -1750.e-6 + ddx)" +warpx.Ez_excitation_grid_function(x,y,z,t) = "0." + +############### +# diagnostics +############### + +diagnostics.diags_names = plt +############### +# full plotfiles +plt.intervals = 1000 +plt.fields_to_plot = Ex Ey Ez Bx By Bz sigma +plt.diag_type = Full +plt.file_min_digits = 7 diff --git a/Examples/Tests/circuits/Candice/inputs_candice2 b/Examples/Tests/circuits/Candice/inputs_candice2 new file mode 100644 index 000000000..4799c4412 --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_candice2 @@ -0,0 +1,142 @@ +# 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 = 0. -Ly/2. 0. +geometry.prob_hi = Lx Ly/2. 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) * (y >= -w_pd/2.) * (y <= w_pd/2.) * (z > h_si) * (z <= h_si + h_pd) ++ (sigma_pd - sigma_0) * (y <= -3*w_pd/2.) * (z > h_si) * (z <= h_si + h_pd) ++ (sigma_pd - sigma_0) * (y >= 3*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.) * (y >= -w_pd/2.) * (y <= w_pd/2.) * (z > h_si) * (z <= h_si + h_pd) ++ eps_0 * (eps_r_pd - 1.) * (y <= -3*w_pd/2.) * (z > h_si) * (z <= h_si + h_pd) ++ eps_0 * (eps_r_pd - 1.) * (y >= 3*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.) * (y >= -w_pd/2.) * (y <= w_pd/2.) * (z > h_si) * (z <= h_si + h_pd) ++ mu_0 * (mu_r_pd - 1.) * (y <= -3*w_pd/2.) * (z > h_si) * (z <= h_si + h_pd) ++ mu_0 * (mu_r_pd - 1.) * (y >= 3*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 = 384 +my_constants.n_celly = 256 +my_constants.n_cellz = 32 +my_constants.max_grid_size = 384 +my_constants.blocking_factor = 32 + +my_constants.Lx = 48.e-6 +my_constants.Ly = 32.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) = "(y > -w_port/2.) * (y < w_port/2.) * (z > 0.) * (z < h_port) * (x >= -dx/2.) * (x <= dx/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*y)/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 diff --git a/Examples/Tests/circuits/Candice/inputs_candice2s b/Examples/Tests/circuits/Candice/inputs_candice2s new file mode 100644 index 000000000..4acf42fcc --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_candice2s @@ -0,0 +1,142 @@ +# 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 = 0. -Ly/2. 0. +geometry.prob_hi = Lx Ly/2. 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) * (y >= -w_pd/2.) * (y <= w_pd/2.) * (z > h_si) * (z <= h_si + h_pd) ++ (sigma_pd - sigma_0) * (y <= -3*w_pd/2.) * (z > h_si) * (z <= h_si + h_pd) ++ (sigma_pd - sigma_0) * (y >= 3*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.) * (y >= -w_pd/2.) * (y <= w_pd/2.) * (z > h_si) * (z <= h_si + h_pd) ++ eps_0 * (eps_r_pd - 1.) * (y <= -3*w_pd/2.) * (z > h_si) * (z <= h_si + h_pd) ++ eps_0 * (eps_r_pd - 1.) * (y >= 3*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.) * (y >= -w_pd/2.) * (y <= w_pd/2.) * (z > h_si) * (z <= h_si + h_pd) ++ mu_0 * (mu_r_pd - 1.) * (y <= -3*w_pd/2.) * (z > h_si) * (z <= h_si + h_pd) ++ mu_0 * (mu_r_pd - 1.) * (y >= 3*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 = 384 +my_constants.n_celly = 256 +my_constants.n_cellz = 32 +my_constants.max_grid_size = 384 +my_constants.blocking_factor = 32 + +my_constants.Lx = 48.e-6 +my_constants.Ly = 32.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) = "2 * (y > -w_port/2.) * (y < w_port/2.) * (z > 0.) * (z < h_port) * (x >= -dx/2.) * (x <= dx/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*y)/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 diff --git a/Examples/Tests/circuits/Candice/inputs_candice3 b/Examples/Tests/circuits/Candice/inputs_candice3 new file mode 100644 index 000000000..b1e8b0d38 --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_candice3 @@ -0,0 +1,141 @@ +# 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 = 0. -Ly/2. 0. +geometry.prob_hi = Lx Ly/2. 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)" + +macroscopic.epsilon_function(x,y,z) = "eps_0 ++ eps_0 * (eps_r_si - 1.) * (z <= h_si)" + +macroscopic.mu_function(x,y,z) = "mu_0 ++ mu_0 * (mu_r_si - 1.) * (z <= h_si)" + +################################# +############ FIELDS ############# +################################# + +############### +# domain size +# n_cellx/y/z and Lx/y/z are needed to calculate dx/dy/dz +############### +my_constants.n_cellx = 384 +my_constants.n_celly = 256 +my_constants.n_cellz = 32 +my_constants.max_grid_size = 384 +my_constants.blocking_factor = 32 + +my_constants.Lx = 48.e-6 +my_constants.Ly = 32.e-6 +my_constants.Lz = 4.e-6 + +############### +# material properties +############### +my_constants.sigma_0 = 0.0 +my_constants.sigma_si = 0. + +my_constants.eps_0 = 8.8541878128e-12 +my_constants.eps_r_si = 12. + +my_constants.mu_0 = 1.25663706212e-06 +my_constants.mu_r_si = 1.0 + +############### +# silicon and palladium cross section +############### +my_constants.h_si = 1.e-6 +my_constants.w_sc = 2.e-6 +my_constants.w_air = 2.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.ddx = dx/1.e6 +my_constants.ddy = dy/1.e6 +my_constants.ddz = dz/1.e6 + +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) * (y >= -w_sc/2.) * (y <= w_sc/2.) + + flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y <= -w_sc/2. - w_air) + + flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y >= w_sc/2. + w_air)" + +warpx.Ey_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y >= -w_sc/2.) * (y <= w_sc/2.) + + flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y <= -w_sc/2. - w_air) + + flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y >= w_sc/2. + w_air)" + +warpx.Ez_excitation_flag_function(x,y,z) = "flag_ss * (y > -w_port/2.) * (y < w_port/2.) * (z > 0.) * (z < h_port) * (x >= -ddx) * (x <= ddx)" + +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*y)/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 diff --git a/Examples/Tests/circuits/Candice/inputs_candice3a b/Examples/Tests/circuits/Candice/inputs_candice3a new file mode 100644 index 000000000..8c60d4e64 --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_candice3a @@ -0,0 +1,138 @@ +# 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 = 0. -Ly/2. 0. +geometry.prob_hi = Lx Ly/2. 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)" + +macroscopic.epsilon_function(x,y,z) = "eps_0 ++ eps_0 * (eps_r_si - 1.) * (z <= h_si)" + +macroscopic.mu_function(x,y,z) = "mu_0 ++ mu_0 * (mu_r_si - 1.) * (z <= h_si)" + +################################# +############ FIELDS ############# +################################# + +############### +# domain size +# n_cellx/y/z and Lx/y/z are needed to calculate dx/dy/dz +############### +my_constants.n_cellx = 384 +my_constants.n_celly = 256 +my_constants.n_cellz = 32 +my_constants.max_grid_size = 384 +my_constants.blocking_factor = 32 + +my_constants.Lx = 48.e-6 +my_constants.Ly = 32.e-6 +my_constants.Lz = 4.e-6 + +############### +# material properties +############### +my_constants.sigma_0 = 0.0 +my_constants.sigma_si = 0. + +my_constants.eps_0 = 8.8541878128e-12 +my_constants.eps_r_si = 12. + +my_constants.mu_0 = 1.25663706212e-06 +my_constants.mu_r_si = 1.0 + +############### +# silicon and palladium cross section +############### +my_constants.h_si = 1.e-6 +my_constants.w_sc = 2.e-6 +my_constants.w_air = 2.e-6 + +############### +# waveguide port parameters +############### +my_constants.h_port = 1.e-6 +my_constants.w_port = 16.e-6 + +############### +# derived quantities and fundamental constants - don't touch these +############### + +my_constants.pi = 3.14159265358979 + +my_constants.freq = 21.63565704091541e12 +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_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) * (y >= -w_sc/2.) * (y <= w_sc/2.) + + flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y <= -w_sc/2. - w_air) + + flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y >= w_sc/2. + w_air)" + +warpx.Ey_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y >= -w_sc/2.) * (y <= w_sc/2.) + + flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y <= -w_sc/2. - w_air) + + flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y >= w_sc/2. + w_air)" + +warpx.Ez_excitation_flag_function(x,y,z) = "flag_ss * (y > -w_port/2.) * (y < w_port/2.) * (z > 0.) * (z < h_port) * (x >= -ddx) * (x <= ddx)" + +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*y)/w_port) * sin(2*pi*freq*t) * 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 diff --git a/Examples/Tests/circuits/Candice/inputs_candice4 b/Examples/Tests/circuits/Candice/inputs_candice4 new file mode 100644 index 000000000..4823b7e3e --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_candice4 @@ -0,0 +1,138 @@ +# 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 = 0. -Ly/2. 0. +geometry.prob_hi = Lx Ly/2. 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)" + +macroscopic.epsilon_function(x,y,z) = "eps_0 ++ eps_0 * (eps_r_si - 1.) * (z <= h_si)" + +macroscopic.mu_function(x,y,z) = "mu_0 ++ mu_0 * (mu_r_si - 1.) * (z <= h_si)" + +################################# +############ FIELDS ############# +################################# + +############### +# domain size +# n_cellx/y/z and Lx/y/z are needed to calculate dx/dy/dz +############### +my_constants.n_cellx = 384 +my_constants.n_celly = 256 +my_constants.n_cellz = 32 +my_constants.max_grid_size = 384 +my_constants.blocking_factor = 32 + +my_constants.Lx = 960.e-6 +my_constants.Ly = 640.e-6 +my_constants.Lz = 80.e-6 + +############### +# material properties +############### +my_constants.sigma_0 = 0.0 +my_constants.sigma_si = 0. + +my_constants.eps_0 = 8.8541878128e-12 +my_constants.eps_r_si = 12. + +my_constants.mu_0 = 1.25663706212e-06 +my_constants.mu_r_si = 1.0 + +############### +# silicon and palladium cross section +############### +my_constants.h_si = 20.e-6 +my_constants.w_sc = 40.e-6 +my_constants.w_air = 40.e-6 + +############### +# waveguide port parameters +############### +my_constants.h_port = 20.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 = 1.e12 +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_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) * (y >= -w_sc/2.) * (y <= w_sc/2.) + + flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y <= -w_sc/2. - w_air) + + flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y >= w_sc/2. + w_air)" + +warpx.Ey_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y >= -w_sc/2.) * (y <= w_sc/2.) + + flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y <= -w_sc/2. - w_air) + + flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y >= w_sc/2. + w_air)" + +warpx.Ez_excitation_flag_function(x,y,z) = "flag_ss * (y > -w_port/2.) * (y < w_port/2.) * (z > 0.) * (z < h_port) * (x >= -ddx) * (x <= ddx)" + +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*y)/w_port) * sin(2*pi*freq*t) * 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 diff --git a/Examples/Tests/circuits/Candice/inputs_candice5 b/Examples/Tests/circuits/Candice/inputs_candice5 new file mode 100644 index 000000000..401aea4bf --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_candice5 @@ -0,0 +1,138 @@ +# 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 = 0. -Ly/2. 0. +geometry.prob_hi = Lx Ly/2. 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)" + +macroscopic.epsilon_function(x,y,z) = "eps_0 ++ eps_0 * (eps_r_si - 1.) * (z <= h_si)" + +macroscopic.mu_function(x,y,z) = "mu_0 ++ mu_0 * (mu_r_si - 1.) * (z <= h_si)" + +################################# +############ FIELDS ############# +################################# + +############### +# domain size +# n_cellx/y/z and Lx/y/z are needed to calculate dx/dy/dz +############### +my_constants.n_cellx = 384 +my_constants.n_celly = 256 +my_constants.n_cellz = 32 +my_constants.max_grid_size = 384 +my_constants.blocking_factor = 32 + +my_constants.Lx = 960.e-6 +my_constants.Ly = 640.e-6 +my_constants.Lz = 320.e-6 + +############### +# material properties +############### +my_constants.sigma_0 = 0.0 +my_constants.sigma_si = 0. + +my_constants.eps_0 = 8.8541878128e-12 +my_constants.eps_r_si = 12. + +my_constants.mu_0 = 1.25663706212e-06 +my_constants.mu_r_si = 1.0 + +############### +# silicon and palladium cross section +############### +my_constants.h_si = 160.e-6 +my_constants.w_sc = 20.e-6 +my_constants.w_air = 10.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 = 1.e12 +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_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) * (y >= -w_sc/2.) * (y <= w_sc/2.) + + flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y <= -w_sc/2. - w_air) + + flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y >= w_sc/2. + w_air)" + +warpx.Ey_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y >= -w_sc/2.) * (y <= w_sc/2.) + + flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y <= -w_sc/2. - w_air) + + flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y >= w_sc/2. + w_air)" + +warpx.Ez_excitation_flag_function(x,y,z) = "flag_ss * (y > -w_port/2.) * (y < w_port/2.) * (z > 0.) * (z < h_port) * (x >= -ddx) * (x <= ddx)" + +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*y)/w_port) * sin(2*pi*freq*t) * 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 diff --git a/Examples/Tests/circuits/Candice/inputs_candice6 b/Examples/Tests/circuits/Candice/inputs_candice6 new file mode 100644 index 000000000..7d140b376 --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_candice6 @@ -0,0 +1,138 @@ +# 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 = -0.1*Lx -Ly/2. 0. +geometry.prob_hi = 0.9*Lx Ly/2. 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)" + +macroscopic.epsilon_function(x,y,z) = "eps_0 ++ eps_0 * (eps_r_si - 1.) * (z <= h_si)" + +macroscopic.mu_function(x,y,z) = "mu_0 ++ mu_0 * (mu_r_si - 1.) * (z <= h_si)" + +################################# +############ FIELDS ############# +################################# + +############### +# domain size +# n_cellx/y/z and Lx/y/z are needed to calculate dx/dy/dz +############### +my_constants.n_cellx = 400 +my_constants.n_celly = 256 +my_constants.n_cellz = 32 +my_constants.max_grid_size = 384 +my_constants.blocking_factor = 2 + +my_constants.Lx = 1000.e-6 +my_constants.Ly = 640.e-6 +my_constants.Lz = 320.e-6 + +############### +# material properties +############### +my_constants.sigma_0 = 0.0 +my_constants.sigma_si = 0. + +my_constants.eps_0 = 8.8541878128e-12 +my_constants.eps_r_si = 12. + +my_constants.mu_0 = 1.25663706212e-06 +my_constants.mu_r_si = 1.0 + +############### +# silicon and palladium cross section +############### +my_constants.h_si = 160.e-6 +my_constants.w_sc = 20.e-6 +my_constants.w_air = 10.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 = 1.e12 +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_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) * (y >= -w_sc/2. - ddy) * (y <= w_sc/2. + ddy) * (x >= -ddx) * (x <= 635.e-6 + ddx) + + flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y <= -w_sc/2. - w_air + ddy) * (x >= -ddx) * (x <= 635.e-6 + ddx) + + flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y >= w_sc/2. + w_air - ddy) * (x >= -ddx) * (x <= 635.e-6 + ddx)" + +warpx.Ey_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y >= -w_sc/2. - ddy) * (y <= w_sc/2. + ddy) * (x >= -ddx) * (x <= 635.e-6 + ddx) + + flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y <= -w_sc/2. - w_air + ddy) * (x >= -ddx) * (x <= 635.e-6 + ddx) + + flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * (y >= w_sc/2. + w_air - ddy) * (x >= -ddx) * (x <= 635.e-6 + ddx)" + +warpx.Ez_excitation_flag_function(x,y,z) = "flag_ss * (y > -w_port/2. - ddy) * (y < w_port/2. + ddy) * (z > -ddz) * (z < h_port + ddz) * (x >= -ddx) * (x <= ddx)" + +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*y)/w_port) * sin(2*pi*freq*t) * 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 diff --git a/Examples/Tests/circuits/Candice/inputs_candice7 b/Examples/Tests/circuits/Candice/inputs_candice7 new file mode 100644 index 000000000..8f17b2c6b --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_candice7 @@ -0,0 +1,145 @@ +# 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 = -0.1*Lx -Ly/2. 0. +geometry.prob_hi = 0.9*Lx Ly/2. 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)" + +macroscopic.epsilon_function(x,y,z) = "eps_0 + eps_0 * (eps_r_si - 1.) * (z <= h_si)" + +#macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_si - 1.) * (z <= h_si)" +macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_test - 1.) * (z > h_si) * (z < h_si + dz) * + (1 + -(x > -ddx) * (x < 635.e-6 + ddx) * (y > -w_sc/2. - w_air - ddy) * (y < -w_sc/2. + ddy) + -(x > -ddx) * (x < 635.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air + ddy) + )" + +################################# +############ FIELDS ############# +################################# + +############### +# domain size +# n_cellx/y/z and Lx/y/z are needed to calculate dx/dy/dz +############### +my_constants.n_cellx = 400 +my_constants.n_celly = 256 +my_constants.n_cellz = 32 +my_constants.max_grid_size = 384 +my_constants.blocking_factor = 2 + +my_constants.Lx = 1000.e-6 +my_constants.Ly = 640.e-6 +my_constants.Lz = 320.e-6 + +############### +# material properties +############### +my_constants.sigma_0 = 0.0 +my_constants.sigma_si = 0. + +my_constants.eps_0 = 8.8541878128e-12 +my_constants.eps_r_si = 12. + +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 +my_constants.w_sc = 20.e-6 +my_constants.w_air = 10.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 = 1.e12 +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_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 + -(x > -ddx) * (x < 635.e-6 + ddx) * (y > -w_sc/2. - w_air - ddy) * (y < -w_sc/2. + ddy) + -(x > -ddx) * (x < 635.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air + ddy) + )" + +warpx.Ey_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * + (1 + -(x > -ddx) * (x < 635.e-6 + ddx) * (y > -w_sc/2. - w_air - ddy) * (y < -w_sc/2. + ddy) + -(x > -ddx) * (x < 635.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air + ddy) + )" + +warpx.Ez_excitation_flag_function(x,y,z) = "flag_ss * (y > -w_port/2. - ddy) * (y < w_port/2. + ddy) * (z > -ddz) * (z < h_port + ddz) * (x >= -ddx) * (x <= ddx)" + +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*y)/w_port) * sin(2*pi*freq*t) * 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 diff --git a/Examples/Tests/circuits/Candice/inputs_candice8 b/Examples/Tests/circuits/Candice/inputs_candice8 new file mode 100644 index 000000000..6a1312d4c --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_candice8 @@ -0,0 +1,163 @@ +# 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 = -0.1*Lx -Ly/2. 0. +geometry.prob_hi = 0.9*Lx Ly/2. 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)" + +macroscopic.epsilon_function(x,y,z) = "eps_0 + eps_0 * (eps_r_si - 1.) * (z <= h_si)" + +#macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_si - 1.) * (z <= h_si)" +macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_test - 1.) * (z > h_si) * (z < h_si + dz) * + (1 + -(x > -ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air - ddy) * (y < -w_sc/2. + ddy) + -(x > -ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air + ddy) + -(x > 630.e-6) * (x < 745.e-6 + ddx) * (y > -20.e-6 - ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6) * (x < 745.e-6 + ddx) * (y > -20.e-6 - ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + )" + +################################# +############ FIELDS ############# +################################# + +############### +# domain size +# n_cellx/y/z and Lx/y/z are needed to calculate dx/dy/dz +############### +my_constants.n_cellx = 400 +my_constants.n_celly = 256 +my_constants.n_cellz = 32 +my_constants.max_grid_size = 384 +my_constants.blocking_factor = 2 + +my_constants.Lx = 1000.e-6 +my_constants.Ly = 640.e-6 +my_constants.Lz = 320.e-6 + +############### +# material properties +############### +my_constants.sigma_0 = 0.0 +my_constants.sigma_si = 0. + +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 +my_constants.w_sc = 20.e-6 +my_constants.w_air = 10.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 = 1.e12 +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_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 + -(x > -ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air - ddy) * (y < -w_sc/2. + ddy) + -(x > -ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air + ddy) + -(x > 630.e-6) * (x < 745.e-6 + ddx) * (y > -20.e-6 - ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6) * (x < 745.e-6 + ddx) * (y > -20.e-6 - ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + )" + +warpx.Ey_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * + (1 + -(x > -ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air - ddy) * (y < -w_sc/2. + ddy) + -(x > -ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air + ddy) + -(x > 630.e-6) * (x < 745.e-6 + ddx) * (y > -20.e-6 - ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6) * (x < 745.e-6 + ddx) * (y > -20.e-6 - ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + )" + +warpx.Ez_excitation_flag_function(x,y,z) = "flag_ss * (y > -w_port/2. - ddy) * (y < w_port/2. + ddy) * (z > -ddz) * (z < h_port + ddz) * (x >= -ddx) * (x <= ddx)" + +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*y)/w_port) * sin(2*pi*freq*t) * 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 mu +plt.diag_type = Full diff --git a/Examples/Tests/circuits/Candice/inputs_candice8_small b/Examples/Tests/circuits/Candice/inputs_candice8_small new file mode 100644 index 000000000..e16b06ba4 --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_candice8_small @@ -0,0 +1,162 @@ +# 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 = -0.1*Lx -Ly/2. 0. +geometry.prob_hi = 0.9*Lx Ly/2. 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)" + +macroscopic.epsilon_function(x,y,z) = "eps_0 + eps_0 * (eps_r_si - 1.) * (z <= h_si)" + +macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_test - 1.) * (z > h_si) * (z < h_si + dz) * + (1 + -(x > -ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air - ddy) * (y < -w_sc/2. + ddy) + -(x > -ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air + ddy) + -(x > 630.e-6) * (x < 745.e-6 + ddx) * (y > -20.e-6 - ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6) * (x < 745.e-6 + ddx) * (y > -20.e-6 - ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + )" + +################################# +############ FIELDS ############# +################################# + +############### +# domain size +# n_cellx/y/z and Lx/y/z are needed to calculate dx/dy/dz +############### +my_constants.n_cellx = 400 +my_constants.n_celly = 64 +my_constants.n_cellz = 16 +my_constants.max_grid_size = 400 +my_constants.blocking_factor = 2 + +my_constants.Lx = 1000.e-6 +my_constants.Ly = 160.e-6 +my_constants.Lz = 160.e-6 + +############### +# material properties +############### +my_constants.sigma_0 = 0.0 +my_constants.sigma_si = 0. + +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 = 80.e-6 +my_constants.w_sc = 20.e-6 +my_constants.w_air = 10.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 = 1.e12 +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_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 + -(x > -ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air - ddy) * (y < -w_sc/2. + ddy) + -(x > -ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air + ddy) + -(x > 630.e-6) * (x < 745.e-6 + ddx) * (y > -20.e-6 - ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6) * (x < 745.e-6 + ddx) * (y > -20.e-6 - ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + )" + +warpx.Ey_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * + (1 + -(x > -ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air - ddy) * (y < -w_sc/2. + ddy) + -(x > -ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air + ddy) + -(x > 630.e-6) * (x < 745.e-6 + ddx) * (y > -20.e-6 - ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6) * (x < 745.e-6 + ddx) * (y > -20.e-6 - ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + )" + +warpx.Ez_excitation_flag_function(x,y,z) = "flag_ss * (y > -w_port/2. - ddy) * (y < w_port/2. + ddy) * (z > -ddz) * (z < h_port + ddz) * (x >= -ddx) * (x <= ddx)" + +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*y)/w_port) * sin(2*pi*freq*t) * 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 mu +plt.diag_type = Full diff --git a/Examples/Tests/circuits/Candice/inputs_candice9 b/Examples/Tests/circuits/Candice/inputs_candice9 new file mode 100644 index 000000000..f34570670 --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_candice9 @@ -0,0 +1,162 @@ +# 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 = -0.1*Lx -Ly/2. 0. +geometry.prob_hi = 0.9*Lx Ly/2. 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)" + +macroscopic.epsilon_function(x,y,z) = "eps_0 + eps_0 * (eps_r_si - 1.) * (z <= h_si)" + +#macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_si - 1.) * (z <= h_si)" +macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_test - 1.) * (z > h_si) * (z < h_si + dz) * + (1 + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air + ddy) * (y < -w_sc/2. - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + )" +################################# +############ FIELDS ############# +################################# + +############### +# domain size +# n_cellx/y/z and Lx/y/z are needed to calculate dx/dy/dz +############### +my_constants.n_cellx = 400 +my_constants.n_celly = 256 +my_constants.n_cellz = 32 +my_constants.max_grid_size = 384 +my_constants.blocking_factor = 2 + +my_constants.Lx = 1000.e-6 +my_constants.Ly = 640.e-6 +my_constants.Lz = 320.e-6 + +############### +# material properties +############### +my_constants.sigma_0 = 0.0 +my_constants.sigma_si = 0. + +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 +my_constants.w_sc = 20.e-6 +my_constants.w_air = 10.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 = 1.e12 +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_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 + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air + ddy) * (y < -w_sc/2. - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + )" + +warpx.Ey_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * + (1 + -(x > ddx) * (x < 630.e-6 + ddx) * (y > -w_sc/2. - w_air + ddy) * (y < -w_sc/2. - ddy) + -(x > ddx) * (x < 630.e-6 + ddx) * (y > w_sc/2. + ddy) * (y < w_sc/2. + w_air - ddy) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 75.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 85.e-6) + -(x > 630.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 95.e-6 + ddy) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) > 105.e-6) * + (sqrt( (x-630.e-6)*(x-630.e-6) + (y-95.e-6)*(y-95.e-6) ) < 115.e-6) + )" + +warpx.Ez_excitation_flag_function(x,y,z) = "flag_ss * (y > -w_port/2. - ddy) * (y < w_port/2. + ddy) * (z > -ddz) * (z < h_port + ddz) * (x >= -ddx) * (x <= ddx)" + +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*y)/w_port) * sin(2*pi*freq*t) * 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 mu +plt.diag_type = Full diff --git a/Examples/Tests/circuits/Candice/inputs_inductor_on_cap b/Examples/Tests/circuits/Candice/inputs_inductor_on_cap new file mode 100644 index 000000000..1e7573dbf --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_inductor_on_cap @@ -0,0 +1,163 @@ +# See parameters in https://github.com/ECP-WarpX/artemis/pull/43 + +################################ +####### GENERAL PARAMETERS ###### +################################# +max_step = 200000 + +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 + +algo.lumped_inductor = on + +inductor.inductor_x_function(x,y,z) = "4.e-13 * (x > -460.e-6) * (x < -395.e-6) * (y > -ddy) * (y < ddy) * (z > h_si - ddz) * (z < h_si + ddz)" +inductor.inductor_y_function(x,y,z) = "0." +inductor.inductor_z_function(x,y,z) = "0." + +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) * + (1 + -(x < -795.e-6 - ddx) * (y > -32.5e-6 + ddy) * (y < -27.5e-6 - ddy) + -(x < -795.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < -15.e-6 - ddy) + -(x > -800.e-6 + ddx) * (x < -795.e-6 - ddx) * (y > -27.5e-6 - ddy) * (y < -20.e-6 + ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > -372.5e-6 + ddy) * (y < -272.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > 272.5e-6 + ddy) * (y < 372.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -595.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + -(x > -460.e-6 + ddx) * (x < -395.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + -(x > -260.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + )" + +macroscopic.epsilon_function(x,y,z) = "eps_0 + eps_0 * (eps_r_si - 1.) * (z <= h_si)" + +macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_si - 1.) * (z <= h_si)" + +################################# +############ FIELDS ############# +################################# + +############### +# domain size +# n_cellx/y/z and Lx/y/z are needed to calculate dx/dy/dz +############### +my_constants.n_cellx = 700 +my_constants.n_celly = 400 +my_constants.n_cellz = 32 + +my_constants.max_grid_sizex = 700 +my_constants.max_grid_sizey = 400 +my_constants.max_grid_sizez = 32 +my_constants.blocking_factor = 2 + +my_constants.prob_lox = -1750.e-6 +my_constants.prob_loy = -500.e-6 +my_constants.prob_loz = 0. + +my_constants.prob_hix = 0.e-6 +my_constants.prob_hiy = 500.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.e11 + +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 = 1.9e11 +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_none" +warpx.Ey_excitation_flag_function(x,y,z) = "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 > -1745.e-6 - ddx) * (x < -1745.e-6 + 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/(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 > -1745.e-6 - ddx) * (x < -1745.e-6 + ddx)" +warpx.Ez_excitation_grid_function(x,y,z,t) = "0." + +############### +# diagnostics +############### + +diagnostics.diags_names = plt +############### +# full plotfiles +plt.intervals = 1000 +plt.fields_to_plot = Ex Ey Ez Bx By Bz sigma +plt.diag_type = Full +plt.file_min_digits = 7 diff --git a/Examples/Tests/circuits/Candice/inputs_inductor_on_cap_PEC b/Examples/Tests/circuits/Candice/inputs_inductor_on_cap_PEC new file mode 100644 index 000000000..d2348ae4e --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_inductor_on_cap_PEC @@ -0,0 +1,190 @@ +# See parameters in https://github.com/ECP-WarpX/artemis/pull/43 + +################################ +####### GENERAL PARAMETERS ###### +################################# +max_step = 200000 + +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 + +algo.lumped_inductor = on + +inductor.inductor_x_function(x,y,z) = "4.e-13 * (x > -460.e-6) * (x < -395.e-6) * (y > -ddy) * (y < ddy) * (z > h_si - ddz) * (z < h_si + ddz)" +inductor.inductor_y_function(x,y,z) = "0." +inductor.inductor_z_function(x,y,z) = "0." + +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) * + (1 + -(x > prob_lox) * (x < prob_hix) * (y > prob_loy) * (y < prob_hiy) + -(x < prob_lox) * (y > -32.5e-6) * (y < -27.5e-6) + -(x < prob_lox) * (y > -20.0e-6) * (y < -15.0e-6) + )" + +macroscopic.epsilon_function(x,y,z) = "eps_0 + eps_0 * (eps_r_si - 1.) * (z <= h_si)" + +macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_r_test - 1.) * (z > h_si) * (z < h_si + dz) * + (1 + -(x < -795.e-6 - ddx) * (y > -32.5e-6 + ddy) * (y < -27.5e-6 - ddy) + -(x < -795.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < -15.e-6 - ddy) + -(x > -800.e-6 + ddx) * (x < -795.e-6 - ddx) * (y > -27.5e-6 - ddy) * (y < -20.e-6 + ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > -372.5e-6 + ddy) * (y < -272.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > 272.5e-6 + ddy) * (y < 372.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -595.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + -(x > -460.e-6 + ddx) * (x < -395.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + -(x > -260.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + )" + +################################# +############ FIELDS ############# +################################# + +############### +# domain size +# n_cellx/y/z and Lx/y/z are needed to calculate dx/dy/dz +############### +my_constants.n_cellx = 700 +my_constants.n_celly = 400 +my_constants.n_cellz = 32 + +my_constants.max_grid_sizex = 700 +my_constants.max_grid_sizey = 400 +my_constants.max_grid_sizez = 32 +my_constants.blocking_factor = 2 + +my_constants.prob_lox = -1750.e-6 +my_constants.prob_loy = -500.e-6 +my_constants.prob_loz = 0. + +my_constants.prob_hix = 0.e-6 +my_constants.prob_hiy = 500.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.e11 + +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 = 1.9e11 +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 + -(x < -795.e-6 - ddx) * (y > -32.5e-6 + ddy) * (y < -27.5e-6 - ddy) + -(x < -795.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < -15.e-6 - ddy) + -(x > -800.e-6 + ddx) * (x < -795.e-6 - ddx) * (y > -27.5e-6 - ddy) * (y < -20.e-6 + ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > -372.5e-6 + ddy) * (y < -272.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > 272.5e-6 + ddy) * (y < 372.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -595.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + -(x > -460.e-6 + ddx) * (x < -395.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + -(x > -260.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + )" + +warpx.Ey_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * + (1 + -(x < -795.e-6 - ddx) * (y > -32.5e-6 + ddy) * (y < -27.5e-6 - ddy) + -(x < -795.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < -15.e-6 - ddy) + -(x > -800.e-6 + ddx) * (x < -795.e-6 - ddx) * (y > -27.5e-6 - ddy) * (y < -20.e-6 + ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > -372.5e-6 + ddy) * (y < -272.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > 272.5e-6 + ddy) * (y < 372.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -595.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + -(x > -460.e-6 + ddx) * (x < -395.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-6 + ddy) + -(x > -260.e-6 + ddx) * (x < -160.e-6 - ddx) * (y > -272.5e-6 - ddy) * (y < 272.5e-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 > -1745.e-6 - ddx) * (x < -1745.e-6 + 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/(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 > -1745.e-6 - ddx) * (x < -1745.e-6 + ddx)" +warpx.Ez_excitation_grid_function(x,y,z,t) = "0." + +############### +# diagnostics +############### + +diagnostics.diags_names = plt +############### +# full plotfiles +plt.intervals = 1000 +plt.fields_to_plot = Ex Ey Ez Bx By Bz mu +plt.diag_type = Full +plt.file_min_digits = 7 diff --git a/Examples/Tests/circuits/Candice/inputs_inductortest b/Examples/Tests/circuits/Candice/inputs_inductortest new file mode 100644 index 000000000..37ca5ce8d --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_inductortest @@ -0,0 +1,163 @@ +# See parameters in https://github.com/ECP-WarpX/artemis/pull/43 + +################################ +####### GENERAL PARAMETERS ###### +################################# +max_step = 2000 + +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 + +algo.lumped_inductor = on + +inductor.inductor_x_function(x,y,z) = "10.e-12 * (x > -800.e-6) * (x < -797.5e-6) * (y > -25.e-6 - ddy) * (y < -25.e-6 + ddy) * (z > h_si - ddz) * (z < h_si + ddz)" +inductor.inductor_y_function(x,y,z) = "0." +inductor.inductor_z_function(x,y,z) = "0." + +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) * + (1 + -(x > -1750.e-6 + ddx) * (x < -795.e-6 - ddx) * (y > -35.e-6 + ddy) * (y < -30.e-6 - ddy) + -(x > -1750.e-6 + ddx) * (x < -795.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < -15.e-6 - ddy) + -(x > -800.e-6 + ddx) * (x < -795.e-6 - ddx) * (y > -30.e-6 - ddy) * (y < -20.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_si - 1.) * (z <= h_si)" + +################################# +############ FIELDS ############# +################################# + +############### +# domain size +# n_cellx/y/z and Lx/y/z are needed to calculate dx/dy/dz +############### +my_constants.n_cellx = 400 +my_constants.n_celly = 20 +my_constants.n_cellz = 32 + +my_constants.max_grid_sizex = 400 +my_constants.max_grid_sizey = 20 +my_constants.max_grid_sizez = 32 +my_constants.blocking_factor = 2 + +my_constants.prob_lox = -1750.e-6 +my_constants.prob_loy = -50.e-6 +my_constants.prob_loz = 0. + +my_constants.prob_hix = -750.e-6 +my_constants.prob_hiy = 0.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.e11 + +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 = 8.6e9 +my_constants.freq = 1.e12 +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_none" +warpx.Ey_excitation_flag_function(x,y,z) = "flag_ss * ( (y >= -20.e-6 + ddy) * (y <= -10.e-6 - ddy) + (y >= -35.e-6 + ddy) * (y <= -30.e-6 - ddy)) * (z > h_si - ddz) * (z < h_si + ddz) * (x > -1750.e-6 - ddx) * (x < -1750.e-6 + 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/(2*TP**2))*sin(2*pi*freq*t) * + ( (y >= -20.e-6 + ddy) * (y <= -10.e-6 - ddy) - (y >= -35.e-6 + ddy) * (y <= -30.e-6 - ddy)) * (z > h_si - ddz) * (z < h_si + ddz) * (x > -1750.e-6 - ddx) * (x < -1750.e-6 + 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 sigma +plt.diag_type = Full +plt.file_min_digits = 7 diff --git a/Examples/Tests/circuits/Candice/inputs_singleresonator b/Examples/Tests/circuits/Candice/inputs_singleresonator new file mode 100644 index 000000000..56f0cbc61 --- /dev/null +++ b/Examples/Tests/circuits/Candice/inputs_singleresonator @@ -0,0 +1,451 @@ +# See parameters in https://github.com/ECP-WarpX/artemis/pull/43 + +################################ +####### GENERAL PARAMETERS ###### +################################# +max_step = 10000 + +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)" + +macroscopic.epsilon_function(x,y,z) = "eps_0 + eps_0 * (eps_r_si - 1.) * (z <= h_si)" + +#macroscopic.mu_function(x,y,z) = "mu_0 + mu_0 * (mu_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 + -(x > -50.0e-6 + ddx) * (x < -40.e-6 + ddx) * (y > -10.e-6 - ddy) * (y < 10.e-6 + ddy) + -(x > -85.0e-6 - ddx) * (x < 635.e-6 + ddx) * (y > -20.e-6 + ddy) * (y < -10.e-6 - ddy) + -(x > -85.0e-6 - ddx) * (x < 635.e-6 + ddx) * (y > 10.e-6 + ddy) * (y < 20.e-6 - ddy) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) > 70.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) < 80.e-6) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) > 100.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) < 110.e-6) + -(x > 705.e-6 + ddx) * (x < 715.e-6 - ddx) * (y > 90.e-6 - ddy) * (y < 100.e-6 + ddy) + -(x > 735.e-6 + ddx) * (x < 745.e-6 - ddx) * (y > 90.e-6 - ddy) * (y < 100.e-6 + ddy) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 70.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 80.e-6) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 100.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 110.e-6) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > 170.e-6 + ddy) * (y < 180.e-6 - ddy) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > 200.e-6 + ddy) * (y < 210.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 110.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * (y < 100.e-6 + ddy) * (y > -100.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * (y < 100.e-6 + ddy) * (y > -100.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > -210.e-6 + ddy) * (y < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > -180.e-6 + ddy) * (y < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -360.e-6 + ddy) * (y < -350.e-6 - ddy) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) < 80.e-6) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -570.e-6 + ddy) * (y < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -540.e-6 + ddy) * (y < -530.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 = 612 +my_constants.n_celly = 720 +my_constants.n_cellz = 32 + +my_constants.max_grid_sizex = 612 +my_constants.max_grid_sizey = 720 +my_constants.max_grid_sizez = 32 + +my_constants.blocking_factor = 2 + +my_constants.prob_lox = -85.e-6 +my_constants.prob_loy = -1000.e-6 +my_constants.prob_loz = 0. + +my_constants.prob_hix = 1445.e-6 +my_constants.prob_hiy = 800.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.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 = 1.e12 +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 + -(x > -50.0e-6 - ddx) * (x < -40.e-6 + ddx) * (y > -10.e-6 - ddy) * (y < 10.e-6 + ddy) + -(x > -85.0e-6 - ddx) * (x < 635.e-6 + ddx) * (y > -20.e-6 + ddy) * (y < -10.e-6 - ddy) + -(x > -85.0e-6 + ddx) * (x < 635.e-6 + ddx) * (y > 10.e-6 + ddy) * (y < 20.e-6 - ddy) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) > 70.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) < 80.e-6) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) > 100.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) < 110.e-6) + -(x > 705.e-6 + ddx) * (x < 715.e-6 - ddx) * (y > 90.e-6 - ddy) * (y < 100.e-6 + ddy) + -(x > 735.e-6 + ddx) * (x < 745.e-6 - ddx) * (y > 90.e-6 - ddy) * (y < 100.e-6 + ddy) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 70.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 80.e-6) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 100.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 110.e-6) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > 170.e-6 + ddy) * (y < 180.e-6 - ddy) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > 200.e-6 + ddy) * (y < 210.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 110.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * (y < 100.e-6 + ddy) * (y > -100.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * (y < 100.e-6 + ddy) * (y > -100.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > -210.e-6 + ddy) * (y < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > -180.e-6 + ddy) * (y < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -360.e-6 + ddy) * (y < -350.e-6 - ddy) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) < 80.e-6) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -570.e-6 + ddy) * (y < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -540.e-6 + ddy) * (y < -530.e-6 - ddy) + -(x > -1760.e-6 + ddx) * (x < -795.e-6 - ddx) * ((y - offset_y) > -32.5e-6 + ddy) * ((y - offset_y) < -27.5e-6 - ddy) + -(x > -1760.e-6 + ddx) * (x < -795.e-6 - ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < -15.e-6 - ddy) + -(x > -1760.e-6 + ddx) * (x < -1755.e-6 - ddx) * ((y - offset_y) > -27.5e-6 - ddy) * ((y - offset_y) < -20.e-6 + ddy) + -(x > -800.e-6 + ddx) * (x < -795.e-6 - ddx) * ((y - offset_y) > -27.5e-6 - ddy) * ((y - offset_y) < -20.e-6 + ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * ((y - offset_y) > -372.5e-6 + ddy) * ((y - offset_y) < -272.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * ((y - offset_y) > 272.5e-6 + ddy) * ((y - offset_y) < 372.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -595.e-6 - ddx) * ((y - offset_y) > -272.5e-6 - ddy) * ((y - offset_y) < 272.5e-6 + ddy) + -(x > -460.e-6 + ddx) * (x < -395.e-6 - ddx) * ((y - offset_y) > -272.5e-6 - ddy) * ((y - offset_y) < 272.5e-6 + ddy) + -(x > -260.e-6 + ddx) * (x < -160.e-6 - ddx) * ((y - offset_y) > -272.5e-6 - ddy) * ((y - offset_y) < 272.5e-6 + ddy) + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * ((y - offset_y) > -325.e-6 - ddy) * ((y - offset_y) < 325.e-6 + ddy) + -(x > -50.e-6 + ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > 325.e-6 + ddy) * ((y - offset_y) < 335.e-6 - ddy) + -(x > -50.e-6 + ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > -335.e-6 + ddy) * ((y - offset_y) < -325.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > 20.e-6 - ddy) * ((y - offset_y) < 325.e-6 + ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > -325.e-6 - ddy) * ((y - offset_y) < -20.e-6 + ddy) + -(x > ddx) * (x < 635.e-6 + ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < -10.e-6 - ddy) + -(x > ddx) * (x < 635.e-6 + ddx) * ((y - offset_y) > 10.e-6 + ddy) * ((y - offset_y) < 20.e-6 - ddy) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) > 70.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) < 80.e-6) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) > 100.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) < 110.e-6) + -(x > 705.e-6 + ddx) * (x < 715.e-6 - ddx) * ((y - offset_y) > 90.e-6 - ddy) * ((y - offset_y) < 100.e-6 + ddy) + -(x > 735.e-6 + ddx) * (x < 745.e-6 - ddx) * ((y - offset_y) > 90.e-6 - ddy) * ((y - offset_y) < 100.e-6 + ddy) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 70.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 80.e-6) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 100.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 110.e-6) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > 170.e-6 + ddy) * ((y - offset_y) < 180.e-6 - ddy) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > 200.e-6 + ddy) * ((y - offset_y) < 210.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 110.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * ((y - offset_y) < 100.e-6 + ddy) * ((y - offset_y) > -100.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) < 100.e-6 + ddy) * ((y - offset_y) > -100.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > -210.e-6 + ddy) * ((y - offset_y) < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > -210.e-6 + ddy) * ((y - offset_y) < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > -210.e-6 + ddy) * ((y - offset_y) < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > -180.e-6 + ddy) * ((y - offset_y) < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * ((y - offset_y) > -390.e-6 + ddy) * ((y - offset_y) < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * ((y - offset_y) > -390.e-6 + ddy) * ((y - offset_y) < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -390.e-6 + ddy) * ((y - offset_y) < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -360.e-6 + ddy) * ((y - offset_y) < -350.e-6 - ddy) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * ((y - offset_y) > -570.e-6 + ddy) * ((y - offset_y) < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) < 80.e-6) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * ((y - offset_y) > -570.e-6 + ddy) * ((y - offset_y) < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -570.e-6 + ddy) * ((y - offset_y) < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -540.e-6 + ddy) * ((y - offset_y) < -530.e-6 - ddy) + )" + +# This is a source on the signal line +#+ flag_ss * ( (x > 1237.5e-6 + ddx) * (x < 1255.e-6 - ddx) + (x > 1285.e-6 + ddx) * (x < 1302.5e-6 - ddx)) * (y > -2565.e-6 - ddy) * (y < -2565.e-6 + ddy) * (z > h_si - ddz) * (z < h_si + ddz)" + +warpx.Ey_excitation_flag_function(x,y,z) = "flag_hs * (z > h_si - ddz) * (z < h_si + ddz) * + (1 + -(x > -50.0e-6 + ddx) * (x < -40.e-6 + ddx) * (y > -10.e-6 - ddy) * (y < 10.e-6 + ddy) + -(x > -85.0e-6 - ddx) * (x < 635.e-6 + ddx) * (y > -20.e-6 + ddy) * (y < -10.e-6 - ddy) + -(x > -85.0e-6 - ddx) * (x < 635.e-6 + ddx) * (y > 10.e-6 + ddy) * (y < 20.e-6 - ddy) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) > 70.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) < 80.e-6) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * (y > -20.e-6 + ddy) * (y < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) > 100.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + (y - 90.e-6)*(y - 90.e-6) ) < 110.e-6) + -(x > 705.e-6 + ddx) * (x < 715.e-6 - ddx) * (y > 90.e-6 - ddy) * (y < 100.e-6 + ddy) + -(x > 735.e-6 + ddx) * (x < 745.e-6 - ddx) * (y > 90.e-6 - ddy) * (y < 100.e-6 + ddy) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 70.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 80.e-6) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 100.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 110.e-6) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > 170.e-6 + ddy) * (y < 180.e-6 - ddy) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > 200.e-6 + ddy) * (y < 210.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > 100.e-6 - ddy) * (y < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y - 100.e-6)*(y - 100.e-6) ) < 110.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * (y < 100.e-6 + ddy) * (y > -100.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * (y < 100.e-6 + ddy) * (y > -100.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * (y > -210.e-6 + ddy) * (y < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + (y + 100.e-6)*(y + 100.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > -210.e-6 + ddy) * (y < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * (y > -180.e-6 + ddy) * (y < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + (y + 280.e-6)*(y + 280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -390.e-6 + ddy) * (y < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -360.e-6 + ddy) * (y < -350.e-6 - ddy) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) < 80.e-6) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * (y > -570.e-6 + ddy) * (y < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + (y + 460.e-6)*(y + 460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -570.e-6 + ddy) * (y < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * (y > -540.e-6 + ddy) * (y < -530.e-6 - ddy) + -(x > -1760.e-6 + ddx) * (x < -795.e-6 - ddx) * ((y - offset_y) > -32.5e-6 + ddy) * ((y - offset_y) < -27.5e-6 - ddy) + -(x > -1760.e-6 + ddx) * (x < -795.e-6 - ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < -15.e-6 - ddy) + -(x > -1760.e-6 + ddx) * (x < -1755.e-6 - ddx) * ((y - offset_y) > -27.5e-6 - ddy) * ((y - offset_y) < -20.e-6 + ddy) + -(x > -800.e-6 + ddx) * (x < -795.e-6 - ddx) * ((y - offset_y) > -27.5e-6 - ddy) * ((y - offset_y) < -20.e-6 + ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * ((y - offset_y) > -372.5e-6 + ddy) * ((y - offset_y) < -272.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -160.e-6 - ddx) * ((y - offset_y) > 272.5e-6 + ddy) * ((y - offset_y) < 372.5e-6 - ddy) + -(x > -695.e-6 + ddx) * (x < -595.e-6 - ddx) * ((y - offset_y) > -272.5e-6 - ddy) * ((y - offset_y) < 272.5e-6 + ddy) + -(x > -460.e-6 + ddx) * (x < -395.e-6 - ddx) * ((y - offset_y) > -272.5e-6 - ddy) * ((y - offset_y) < 272.5e-6 + ddy) + -(x > -260.e-6 + ddx) * (x < -160.e-6 - ddx) * ((y - offset_y) > -272.5e-6 - ddy) * ((y - offset_y) < 272.5e-6 + ddy) + -(x > -50.e-6 + ddx) * (x < -40.e-6 - ddx) * ((y - offset_y) > -325.e-6 - ddy) * ((y - offset_y) < 325.e-6 + ddy) + -(x > -50.e-6 + ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > 325.e-6 + ddy) * ((y - offset_y) < 335.e-6 - ddy) + -(x > -50.e-6 + ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > -335.e-6 + ddy) * ((y - offset_y) < -325.e-6 - ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > 20.e-6 - ddy) * ((y - offset_y) < 325.e-6 + ddy) + -(x > ddx) * (x < 10.e-6 - ddx) * ((y - offset_y) > -325.e-6 - ddy) * ((y - offset_y) < -20.e-6 + ddy) + -(x > ddx) * (x < 635.e-6 + ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < -10.e-6 - ddy) + -(x > ddx) * (x < 635.e-6 + ddx) * ((y - offset_y) > 10.e-6 + ddy) * ((y - offset_y) < 20.e-6 - ddy) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) > 70.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) < 80.e-6) + -(x > 635.e-6 - ddx) * (x < 745.e-6 - ddx) * ((y - offset_y) > -20.e-6 + ddy) * ((y - offset_y) < 90.e-6 + ddy) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) > 100.e-6) * + (sqrt( (x-635.e-6)*(x-635.e-6) + ((y - offset_y) - 90.e-6)*((y - offset_y) - 90.e-6) ) < 110.e-6) + -(x > 705.e-6 + ddx) * (x < 715.e-6 - ddx) * ((y - offset_y) > 90.e-6 - ddy) * ((y - offset_y) < 100.e-6 + ddy) + -(x > 735.e-6 + ddx) * (x < 745.e-6 - ddx) * ((y - offset_y) > 90.e-6 - ddy) * ((y - offset_y) < 100.e-6 + ddy) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 70.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 80.e-6) + -(x > 705.e-6 + ddx) * (x < 815.e-6 + ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 100.e-6) * + (sqrt( (x-815.e-6)*(x-815.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 110.e-6) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > 170.e-6 + ddy) * ((y - offset_y) < 180.e-6 - ddy) + -(x > 815.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > 200.e-6 + ddy) * ((y - offset_y) < 210.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > 100.e-6 - ddy) * ((y - offset_y) < 210.e-6 - ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) - 100.e-6)*((y - offset_y) - 100.e-6) ) < 110.e-6) + -(x > 1195.e-6 + ddx) * (x < 1205.e-6 - ddx) * ((y - offset_y) < 100.e-6 + ddy) * ((y - offset_y) > -100.e-6 - ddy) + -(x > 1225.e-6 + ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) < 100.e-6 + ddy) * ((y - offset_y) > -100.e-6 - ddy) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > -210.e-6 + ddy) * ((y - offset_y) < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) > 70.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) < 80.e-6) + -(x > 1125.e-6 - ddx) * (x < 1235.e-6 - ddx) * ((y - offset_y) > -210.e-6 + ddy) * ((y - offset_y) < -100.e-6 + ddy) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) > 100.e-6) * + (sqrt( (x-1125.e-6)*(x-1125.e-6) + ((y - offset_y) + 100.e-6)*((y - offset_y) + 100.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > -210.e-6 + ddy) * ((y - offset_y) < -200.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 1125.e-6 + ddx) * ((y - offset_y) > -180.e-6 + ddy) * ((y - offset_y) < -170.e-6 - ddy) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * ((y - offset_y) > -390.e-6 + ddy) * ((y - offset_y) < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) > 70.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) < 80.e-6) + -(x > 385.e-6 + ddx) * (x < 495.e-6 + ddx) * ((y - offset_y) > -390.e-6 + ddy) * ((y - offset_y) < -170.e-6 - ddy) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) > 100.e-6) * + (sqrt( (x-495.e-6)*(x-495.e-6) + ((y - offset_y) + 280.e-6)*((y - offset_y) + 280.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -390.e-6 + ddy) * ((y - offset_y) < -380.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -360.e-6 + ddy) * ((y - offset_y) < -350.e-6 - ddy) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * ((y - offset_y) > -570.e-6 + ddy) * ((y - offset_y) < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) > 70.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) < 80.e-6) + -(x > 885.e-6 - ddx) * (x < 995.e-6 - ddx) * ((y - offset_y) > -570.e-6 + ddy) * ((y - offset_y) < -350.e-6 - ddy) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) > 100.e-6) * + (sqrt( (x-880.e-6)*(x-880.e-6) + ((y - offset_y) + 460.e-6)*((y - offset_y) + 460.e-6) ) < 110.e-6) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -570.e-6 + ddy) * ((y - offset_y) < -560.e-6 - ddy) + -(x > 495.e-6 - ddx) * (x < 885.e-6 + ddx) * ((y - offset_y) > -540.e-6 + ddy) * ((y - offset_y) < -530.e-6 - ddy) + ) + + flag_ss * ( (y >= -20.e-6 + ddy) * (y <= -10.e-6 - ddy) + (y >= 10.0e-6 + ddy) * (y <= 20.0e-6 - ddy)) * (z > h_si - ddz) * (z < h_si + ddz) * (x > -85.e-6 - ddx) * (x < -85.e-6 + 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/(2*TP**2))*sin(2*pi*freq*t) * + ( -(y >= -20.e-6 + ddy) * (y <= -10.e-6 - ddy) + (y >= 10.0e-6 + ddy) * (y <= 20.0e-6 - ddy)) * (z > h_si - ddz) * (z < h_si + ddz) * (x > -85.e-6 - ddx) * (x < -85.e-6 + ddx)" +warpx.Ez_excitation_grid_function(x,y,z,t) = "0." + +# This is a source on the signal line +#warpx.Ex_excitation_grid_function(x,y,z,t) = "exp(-(t-3*TP)**2/(2*TP**2))*sin(2*pi*freq*t) * +# ( (x > 1237.5e-6 + ddx) * (x < 1255.e-6 - ddx) - (x > 1285.e-6 + ddx) * (x < 1302.5e-6 - ddx)) * (y > -2565.e-6 - ddy) * (y < -2565.e-6 + ddy) * (z > h_si - ddz) * (z < h_si + ddz)" +#warpx.Ey_excitation_grid_function(x,y,z,t) = "0." +#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 +plt.diag_type = Full diff --git a/Source/Diagnostics/FlushFormats/FlushFormatCheckpoint.cpp b/Source/Diagnostics/FlushFormats/FlushFormatCheckpoint.cpp index a148e58d6..c9ee4ef56 100644 --- a/Source/Diagnostics/FlushFormats/FlushFormatCheckpoint.cpp +++ b/Source/Diagnostics/FlushFormats/FlushFormatCheckpoint.cpp @@ -113,7 +113,9 @@ FlushFormatCheckpoint::WriteToFile ( amrex::MultiFabFileFullPrefix(lev, checkpointname, default_level_prefix, "Bz_avg_fp")); } - if (warpx.getis_synchronized() || WarpX::yee_coupled_solver_algo == CoupledYeeSolver::MaxwellLondon) { + if (warpx.getis_synchronized() + || WarpX::yee_coupled_solver_algo == CoupledYeeSolver::MaxwellLondon + || WarpX::lumped_inductor_algo == LumpedInductor::On) { // Need to save j if synchronized because after restart we need j to evolve E by dt/2. VisMF::Write(warpx.getcurrent_fp(lev, 0), amrex::MultiFabFileFullPrefix(lev, checkpointname, default_level_prefix, "jx_fp")); @@ -176,7 +178,9 @@ FlushFormatCheckpoint::WriteToFile ( amrex::MultiFabFileFullPrefix(lev, checkpointname, default_level_prefix, "Bz_avg_cp")); } - if (warpx.getis_synchronized() || WarpX::yee_coupled_solver_algo == CoupledYeeSolver::MaxwellLondon) { + if (warpx.getis_synchronized() + || WarpX::yee_coupled_solver_algo == CoupledYeeSolver::MaxwellLondon + || WarpX::lumped_inductor_algo == LumpedInductor::On) { // Need to save j if synchronized because after restart we need j to evolve E by dt/2. VisMF::Write(warpx.getcurrent_cp(lev, 0), amrex::MultiFabFileFullPrefix(lev, checkpointname, default_level_prefix, "jx_cp")); diff --git a/Source/Diagnostics/FullDiagnostics.cpp b/Source/Diagnostics/FullDiagnostics.cpp index e233102ef..f9814c84a 100644 --- a/Source/Diagnostics/FullDiagnostics.cpp +++ b/Source/Diagnostics/FullDiagnostics.cpp @@ -710,6 +710,12 @@ FullDiagnostics::InitializeFieldFunctors (int lev) m_all_field_functors[lev][comp] = std::make_unique(warpx.get_pointer_Bfield_sc_fp(lev, 1), lev, m_crse_ratio); } else if ( m_varnames[comp] == "Bz_sc" ){ m_all_field_functors[lev][comp] = std::make_unique(warpx.get_pointer_Bfield_sc_fp(lev, 2), lev, m_crse_ratio); + } else if ( m_varnames[comp] == "inductorx" ){ + m_all_field_functors[lev][comp] = std::make_unique(warpx.getInductor().m_inductor_x_mf.get(), lev, m_crse_ratio); + } else if ( m_varnames[comp] == "inductory" ){ + m_all_field_functors[lev][comp] = std::make_unique(warpx.getInductor().m_inductor_y_mf.get(), lev, m_crse_ratio); + } else if ( m_varnames[comp] == "inductorz" ){ + m_all_field_functors[lev][comp] = std::make_unique(warpx.getInductor().m_inductor_z_mf.get(), lev, m_crse_ratio); } else { diff --git a/Source/Diagnostics/WarpXIO.cpp b/Source/Diagnostics/WarpXIO.cpp index 8960818b0..6567222b6 100644 --- a/Source/Diagnostics/WarpXIO.cpp +++ b/Source/Diagnostics/WarpXIO.cpp @@ -357,7 +357,10 @@ WarpX::InitFromCheckpoint () amrex::MultiFabFileFullPrefix(lev, restart_chkfile, level_prefix, "Bz_avg_fp")); } - if (is_synchronized || WarpX::yee_coupled_solver_algo == CoupledYeeSolver::MaxwellLondon) { + if (is_synchronized + || WarpX::yee_coupled_solver_algo == CoupledYeeSolver::MaxwellLondon + || WarpX::lumped_inductor_algo == LumpedInductor::On) + { VisMF::Read(*current_fp[lev][0], amrex::MultiFabFileFullPrefix(lev, restart_chkfile, level_prefix, "jx_fp")); VisMF::Read(*current_fp[lev][1], @@ -421,7 +424,9 @@ WarpX::InitFromCheckpoint () amrex::MultiFabFileFullPrefix(lev, restart_chkfile, level_prefix, "Bz_avg_cp")); } - if (is_synchronized || WarpX::yee_coupled_solver_algo == CoupledYeeSolver::MaxwellLondon) { + if (is_synchronized + || WarpX::yee_coupled_solver_algo == CoupledYeeSolver::MaxwellLondon + || WarpX::lumped_inductor_algo == LumpedInductor::On) { VisMF::Read(*current_cp[lev][0], amrex::MultiFabFileFullPrefix(lev, restart_chkfile, level_prefix, "jx_cp")); VisMF::Read(*current_cp[lev][1], diff --git a/Source/Evolve/WarpXEvolve.cpp b/Source/Evolve/WarpXEvolve.cpp index 7e025938b..7820986e4 100644 --- a/Source/Evolve/WarpXEvolve.cpp +++ b/Source/Evolve/WarpXEvolve.cpp @@ -150,6 +150,10 @@ WarpX::Evolve (int numsteps) m_london->EvolveLondonJ(-0.5_rt*dt[0]); // J^(n) to J^(n-1/2) using E^(n) FillBoundaryJ(guard_cells.ng_alloc_EB); } + if (WarpX::lumped_inductor_algo == LumpedInductor::On) { + m_inductor->EvolveInductorJ(-0.5_rt*dt[0]); // J^(n) to J^(n-1/2) using E^(n) + FillBoundaryJ(guard_cells.ng_alloc_EB); + } is_synchronized = false; } else { if (electrostatic_solver_id == ElectrostaticSolverAlgo::None) { @@ -200,7 +204,8 @@ WarpX::Evolve (int numsteps) if (electromagnetic_solver_id == ElectromagneticSolverAlgo::None) { const bool skip_deposition = true; - if (WarpX::yee_coupled_solver_algo != CoupledYeeSolver::MaxwellLondon) { + if (WarpX::yee_coupled_solver_algo != CoupledYeeSolver::MaxwellLondon && + WarpX::lumped_inductor_algo != LumpedInductor::On) { PushParticlesandDepose(cur_time, skip_deposition); } } @@ -426,7 +431,8 @@ WarpX::OneStep_nosub (Real cur_time) ExecutePythonCallback("particlescraper"); ExecutePythonCallback("beforedeposition"); - if (WarpX::yee_coupled_solver_algo != CoupledYeeSolver::MaxwellLondon) { + if (WarpX::yee_coupled_solver_algo != CoupledYeeSolver::MaxwellLondon && + WarpX::lumped_inductor_algo != LumpedInductor::On) { PushParticlesandDepose(cur_time); } #ifndef WARPX_MAG_LLG @@ -438,6 +444,10 @@ WarpX::OneStep_nosub (Real cur_time) // fill boundary here } #endif + if (WarpX::lumped_inductor_algo == LumpedInductor::On) { + m_inductor->EvolveInductorJ(dt[0]); // J^(n-1/2) to J^(n+1/2) using E^(n) + FillBoundaryJ(guard_cells.ng_alloc_EB); + } ExecutePythonCallback("afterdeposition"); diff --git a/Source/FieldSolver/LumpedElement/CMakeLists.txt b/Source/FieldSolver/LumpedElement/CMakeLists.txt new file mode 100644 index 000000000..a1f411f4a --- /dev/null +++ b/Source/FieldSolver/LumpedElement/CMakeLists.txt @@ -0,0 +1,4 @@ +target_sources(WarpX + PRIVATE + Inductor.cpp +) diff --git a/Source/FieldSolver/LumpedElement/Inductor.H b/Source/FieldSolver/LumpedElement/Inductor.H new file mode 100644 index 000000000..5813df3fa --- /dev/null +++ b/Source/FieldSolver/LumpedElement/Inductor.H @@ -0,0 +1,54 @@ +/* + * This file is part of MicroEleX + * + * License: BSD-3-Clause-LBNL + */ + + +#ifndef INDUCTOR_H +#define INDUCTOR_H + +#include +#include +#include +#include +#include +#include +#include +#include + + +class Inductor { + +public: + //Constructor + Inductor (); + + void ReadParameters (); + void InitData (); + void EvolveInductorJ (amrex::Real dt); + + void InitializeInductorMultiFabUsingParser ( amrex::MultiFab *inductor_mf, + amrex::ParserExecutor<3> const& inductor_parser, const int lev); + + std::string m_str_inductor_x_function; + std::string m_str_inductor_y_function; + std::string m_str_inductor_z_function; + std::unique_ptr m_inductor_x_parser; + std::unique_ptr m_inductor_y_parser; + std::unique_ptr m_inductor_z_parser; + std::unique_ptr m_inductor_x_mf; + std::unique_ptr m_inductor_y_mf; + std::unique_ptr m_inductor_z_mf; + + /** Gpu Vector with index type of the jx multifab */ + amrex::GpuArray jx_IndexType; + /** Gpu Vector with index type of the jy multifab */ + amrex::GpuArray jy_IndexType; + /** Gpu Vector with index type of the jz multifab */ + amrex::GpuArray jz_IndexType; + +}; + + +#endif diff --git a/Source/FieldSolver/LumpedElement/Inductor.cpp b/Source/FieldSolver/LumpedElement/Inductor.cpp new file mode 100644 index 000000000..48c9e987a --- /dev/null +++ b/Source/FieldSolver/LumpedElement/Inductor.cpp @@ -0,0 +1,164 @@ +#include "Inductor.H" +#include "FieldSolver/FiniteDifferenceSolver/MacroscopicProperties/MacroscopicProperties.H" +#include "Utils/WarpXUtil.H" +#include "WarpX.H" +#include +#include "Utils/Parser/IntervalsParser.H" +#include "Utils/Parser/ParserUtils.H" +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +Inductor::Inductor () +{ + amrex::Print() << " Inductor class is constructed \n"; + ReadParameters(); +} + +void +Inductor::ReadParameters () +{ + amrex::ParmParse pp_inductor("inductor"); + + utils::parser::Store_parserString(pp_inductor, "inductor_x_function(x,y,z)", m_str_inductor_x_function); + m_inductor_x_parser = std::make_unique( + utils::parser::makeParser(m_str_inductor_x_function, {"x", "y", "z"})); + + utils::parser::Store_parserString(pp_inductor, "inductor_y_function(x,y,z)", m_str_inductor_y_function); + m_inductor_y_parser = std::make_unique( + utils::parser::makeParser(m_str_inductor_y_function, {"x", "y", "z"})); + + utils::parser::Store_parserString(pp_inductor, "inductor_z_function(x,y,z)", m_str_inductor_z_function); + m_inductor_z_parser = std::make_unique( + utils::parser::makeParser(m_str_inductor_z_function, {"x", "y", "z"})); +} + +void +Inductor::InitData() +{ + auto& warpx = WarpX::GetInstance(); + + const int lev = 0; + amrex::BoxArray ba = warpx.boxArray(lev); + amrex::DistributionMapping dmap = warpx.DistributionMap(lev); + // number of guard cells used in EB solver + const amrex::IntVect ng_EB_alloc = warpx.getngEB(); + // Define a nodal multifab to store if region is on super conductor (1) or not (0) + + amrex::IntVect jx_stag = warpx.get_pointer_current_fp(lev,0)->ixType().toIntVect(); + amrex::IntVect jy_stag = warpx.get_pointer_current_fp(lev,1)->ixType().toIntVect(); + amrex::IntVect jz_stag = warpx.get_pointer_current_fp(lev,2)->ixType().toIntVect(); + + for ( int idim = 0; idim < AMREX_SPACEDIM; ++idim) { + jx_IndexType[idim] = jx_stag[idim]; + jy_IndexType[idim] = jy_stag[idim]; + jz_IndexType[idim] = jz_stag[idim]; + } + + const int ncomps = 1; + m_inductor_x_mf = std::make_unique(amrex::convert(ba,jx_stag), dmap, ncomps, ng_EB_alloc); + m_inductor_y_mf = std::make_unique(amrex::convert(ba,jy_stag), dmap, ncomps, ng_EB_alloc); + m_inductor_z_mf = std::make_unique(amrex::convert(ba,jz_stag), dmap, ncomps, ng_EB_alloc); + + InitializeInductorMultiFabUsingParser(m_inductor_x_mf.get(), m_inductor_x_parser->compile<3>(), lev); + InitializeInductorMultiFabUsingParser(m_inductor_y_mf.get(), m_inductor_y_parser->compile<3>(), lev); + InitializeInductorMultiFabUsingParser(m_inductor_z_mf.get(), m_inductor_z_parser->compile<3>(), lev); + + +} + +void +Inductor::EvolveInductorJ (amrex::Real dt) +{ + amrex::Print() << " evolve inductor J using E\n"; + auto & warpx = WarpX::GetInstance(); + const int lev = 0; + + const amrex::GpuArray dx = warpx.Geom(lev).CellSizeArray(); + + amrex::MultiFab * jx = warpx.get_pointer_current_fp(lev, 0); + amrex::MultiFab * jy = warpx.get_pointer_current_fp(lev, 1); + amrex::MultiFab * jz = warpx.get_pointer_current_fp(lev, 2); + + amrex::MultiFab * Ex = warpx.get_pointer_Efield_fp(lev, 0); + amrex::MultiFab * Ey = warpx.get_pointer_Efield_fp(lev, 1); + amrex::MultiFab * Ez = warpx.get_pointer_Efield_fp(lev, 2); + + for (amrex::MFIter mfi(*jx, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi) { + + // Extract pointers to field data + amrex::Array4 const& jx_arr = jx->array(mfi); + amrex::Array4 const& jy_arr = jy->array(mfi); + amrex::Array4 const& jz_arr = jz->array(mfi); + amrex::Array4 const& Ex_arr = Ex->array(mfi); + amrex::Array4 const& Ey_arr = Ey->array(mfi); + amrex::Array4 const& Ez_arr = Ez->array(mfi); + amrex::Array4 const& inductor_x_arr = m_inductor_x_mf->array(mfi); + amrex::Array4 const& inductor_y_arr = m_inductor_y_mf->array(mfi); + amrex::Array4 const& inductor_z_arr = m_inductor_z_mf->array(mfi); + amrex::Box const& tjx = mfi.tilebox(jx->ixType().toIntVect()); + amrex::Box const& tjy = mfi.tilebox(jy->ixType().toIntVect()); + amrex::Box const& tjz = mfi.tilebox(jz->ixType().toIntVect()); + + amrex::ParallelFor(tjx, tjy, tjz, + [=] AMREX_GPU_DEVICE (int i, int j, int k) { + if (inductor_x_arr(i,j,k) != 0.) { + jx_arr(i,j,k) += dt * Ex_arr(i,j,k) * dx[0] / (dx[1]*dx[2]*inductor_x_arr(i,j,k)); // should be dt * E / (A L') + } + }, + [=] AMREX_GPU_DEVICE (int i, int j, int k) { + if (inductor_y_arr(i,j,k) != 0.) { + jy_arr(i,j,k) += dt * Ey_arr(i,j,k) * dx[1] / (dx[0]*dx[2]*inductor_y_arr(i,j,k)); // should be dt * E / (A L') + } + }, + [=] AMREX_GPU_DEVICE (int i, int j, int k) { + if (inductor_z_arr(i,j,k) != 0.) { + jz_arr(i,j,k) += dt * Ez_arr(i,j,k) * dx[2] / (dx[0]*dx[1]*inductor_z_arr(i,j,k)); // should be dt * E / (A L') + } + }); + } + +} + +void +Inductor::InitializeInductorMultiFabUsingParser (amrex::MultiFab *inductor_mf, + amrex::ParserExecutor<3> const& inductor_parser, + const int lev) +{ + using namespace amrex::literals; + + WarpX& warpx = WarpX::GetInstance(); + const amrex::GpuArray dx = warpx.Geom(lev).CellSizeArray(); + const amrex::RealBox& real_box = warpx.Geom(lev).ProbDomain(); + amrex::IntVect iv = inductor_mf->ixType().toIntVect(); + for ( amrex::MFIter mfi(*inductor_mf, amrex::TilingIfNotGPU()); mfi.isValid(); ++mfi ) { + // Initialize ghost cells in addition to valid cells + + const amrex::Box& tb = mfi.tilebox( iv, inductor_mf->nGrowVect()); + amrex::Array4 const& inductor_fab = inductor_mf->array(mfi); + amrex::ParallelFor (tb, + [=] AMREX_GPU_DEVICE (int i, int j, int k) { + // Shift x, y, z position based on index type (only 3D supported for now) + amrex::Real fac_x = (1._rt - iv[0]) * dx[0] * 0.5_rt; + amrex::Real x = i * dx[0] + real_box.lo(0) + fac_x; + amrex::Real fac_y = (1._rt - iv[1]) * dx[1] * 0.5_rt; + amrex::Real y = j * dx[1] + real_box.lo(1) + fac_y; + amrex::Real fac_z = (1._rt - iv[2]) * dx[2] * 0.5_rt; + amrex::Real z = k * dx[2] + real_box.lo(2) + fac_z; + // initialize the macroparameter + inductor_fab(i,j,k) = inductor_parser(x,y,z); + }); + + } +} + diff --git a/Source/FieldSolver/LumpedElement/Make.package b/Source/FieldSolver/LumpedElement/Make.package new file mode 100644 index 000000000..a45b200ca --- /dev/null +++ b/Source/FieldSolver/LumpedElement/Make.package @@ -0,0 +1,3 @@ +CEXE_sources += Inductor.cpp + +VPATH_LOCATIONS += $(WARPX_HOME)/Source/FieldSolver/LumpedElement diff --git a/Source/FieldSolver/Make.package b/Source/FieldSolver/Make.package index 223d2f7ac..90854c2e7 100644 --- a/Source/FieldSolver/Make.package +++ b/Source/FieldSolver/Make.package @@ -7,6 +7,7 @@ ifeq ($(USE_PSATD),TRUE) endif include $(WARPX_HOME)/Source/FieldSolver/FiniteDifferenceSolver/Make.package include $(WARPX_HOME)/Source/FieldSolver/London/Make.package +include $(WARPX_HOME)/Source/FieldSolver/LumpedElement/Make.package include $(WARPX_HOME)/Source/FieldSolver/MagnetostaticSolver/Make.package VPATH_LOCATIONS += $(WARPX_HOME)/Source/FieldSolver diff --git a/Source/Initialization/WarpXInitData.cpp b/Source/Initialization/WarpXInitData.cpp index 000082fca..6e945ab44 100644 --- a/Source/Initialization/WarpXInitData.cpp +++ b/Source/Initialization/WarpXInitData.cpp @@ -426,6 +426,11 @@ WarpX::InitData () m_london->InitData(); } + if (WarpX::lumped_inductor_algo == LumpedInductor::On) { + amrex::Print() << " calling inductor \n"; + m_inductor->InitData(); + } + if (ParallelDescriptor::IOProcessor()) { std::cout << "\nGrids Summary:\n"; printGridSummary(std::cout, 0, finestLevel()); diff --git a/Source/Utils/WarpXAlgorithmSelection.H b/Source/Utils/WarpXAlgorithmSelection.H index 36ea28051..0e5de537c 100644 --- a/Source/Utils/WarpXAlgorithmSelection.H +++ b/Source/Utils/WarpXAlgorithmSelection.H @@ -30,6 +30,13 @@ struct CoupledYeeSolver { }; }; +struct LumpedInductor { + enum { + Off = 0, + On = 1 + }; +}; + /** * \brief struct to select algorithm for macroscopic Maxwell solver LaxWendroff (semi-implicit) represents sigma*E = sigma*0.5*(E^(n) + E^(n+1)) diff --git a/Source/Utils/WarpXAlgorithmSelection.cpp b/Source/Utils/WarpXAlgorithmSelection.cpp index 3e4f7f560..7527ad1aa 100644 --- a/Source/Utils/WarpXAlgorithmSelection.cpp +++ b/Source/Utils/WarpXAlgorithmSelection.cpp @@ -145,6 +145,12 @@ const std::map CoupledYeeSolver_algo_to_int = { {"default", CoupledYeeSolver::None} }; +const std::map LumpedInductor_algo_to_int = { + {"on", LumpedInductor::On}, + {"off", LumpedInductor::Off}, + {"default",LumpedInductor::Off} +}; + int GetAlgorithmInteger( amrex::ParmParse& pp, const char* pp_search_key ){ @@ -190,6 +196,8 @@ GetAlgorithmInteger( amrex::ParmParse& pp, const char* pp_search_key ){ algo_to_int = IntegrationType_algo_to_int; } else if (0 == std::strcmp(pp_search_key, "yee_coupled_solver")) { algo_to_int = CoupledYeeSolver_algo_to_int; + } else if (0 == std::strcmp(pp_search_key, "lumped_inductor")) { + algo_to_int = LumpedInductor_algo_to_int; } else { std::string pp_search_string = pp_search_key; amrex::Abort("Unknown algorithm type: " + pp_search_string); diff --git a/Source/WarpX.H b/Source/WarpX.H index a9a511817..df00c2091 100644 --- a/Source/WarpX.H +++ b/Source/WarpX.H @@ -39,6 +39,7 @@ #include "Utils/Parser/IntervalsParser.H" #include "Utils/WarpXAlgorithmSelection.H" #include "FieldSolver/London/London.H" +#include "FieldSolver/LumpedElement/Inductor.H" #include #include @@ -100,6 +101,7 @@ public: MultiParticleContainer& GetPartContainer () { return *mypc; } MacroscopicProperties& GetMacroscopicProperties () { return *m_macroscopic_properties; } London& getLondon () { return *m_london; } + Inductor& getInductor () { return *m_inductor; } MultiDiagnostics& GetMultiDiags () {return *multi_diags;} ParticleBoundaryBuffer& GetParticleBoundaryBuffer () { return *m_particle_boundary_buffer; } @@ -315,6 +317,7 @@ public: */ static amrex::Vector particle_boundary_hi; static int yee_coupled_solver_algo; + static int lumped_inductor_algo; //! Integer that corresponds to the order of the PSATD solution //! (whether the PSATD equations are derived from first-order or @@ -1732,7 +1735,8 @@ private: std::unique_ptr m_macroscopic_properties; // London solver std::unique_ptr m_london; - + // Lumped inductor + std::unique_ptr m_inductor; #ifdef WARPX_MAG_LLG // time advancement scheme of M field diff --git a/Source/WarpX.cpp b/Source/WarpX.cpp index ae93680ec..f4fe28ed4 100644 --- a/Source/WarpX.cpp +++ b/Source/WarpX.cpp @@ -223,6 +223,7 @@ amrex::Vector WarpX::field_boundary_hi(AMREX_SPACEDIM,0); amrex::Vector WarpX::particle_boundary_lo(AMREX_SPACEDIM,ParticleBoundaryType::Absorbing); amrex::Vector WarpX::particle_boundary_hi(AMREX_SPACEDIM,ParticleBoundaryType::Absorbing); int WarpX::yee_coupled_solver_algo; +int WarpX::lumped_inductor_algo; bool WarpX::do_current_centering = false; @@ -487,6 +488,11 @@ WarpX::WarpX () m_london = std::make_unique(); } + // Lumped inductor + if (lumped_inductor_algo == LumpedInductor::On) { + m_inductor = std::make_unique(); + } + // Set default values for particle and cell weights for costs update; // Default values listed here for the case AMREX_USE_GPU are determined // from single-GPU tests on Summit. @@ -1257,6 +1263,8 @@ WarpX::ReadParameters () yee_coupled_solver_algo = GetAlgorithmInteger(pp_algo, "yee_coupled_solver"); + lumped_inductor_algo = GetAlgorithmInteger(pp_algo, "lumped_inductor"); + // Load balancing parameters std::vector load_balance_intervals_string_vec = {"0"}; pp_algo.queryarr("load_balance_intervals", load_balance_intervals_string_vec);