WARPXM v1.10.0
Loading...
Searching...
No Matches
examples.dg.floquet-bloch_bc.bloch_periodic_2D Namespace Reference

Functions

def probe_name (loc)
 

Variables

str torder = 'SSPRK3'
 
str sorder = 'thirdOrder'
 
float e = 1.6022e-19
 
float c_0 = 2.9979e8
 
float epsilon_0 = 8.8542e-12
 
int mu_0 = 4 * pi * 1.0e-7
 
float mass_p = 1.6726e-27
 
int gas_gamma = 5. / 3.
 
float dt = 2.4e-3
 
int frames = 2**14
 
int t_end = 400.
 
float L = 0.5e-3
 
float elem_size = 0.01
 
str mesh_file = 'meshes/unit_cell_ax1ay1dx04'
 
float A_e = 1.0
 
float A_i = 1.0
 
float Z_e = -1.0
 
float Z_i = 1.0
 
float temp = 1.0
 
float charge_e = -e
 
float charge_i = e
 
list f_pe = [100.e9, 300.e9, 400.e9]
 
int omega_p_e = 2. * pi * f_pe[0]
 
int omega_p_i = omega_p_e * math.sqrt(A_e / A_i)
 
int n = omega_p_i * omega_p_i * epsilon_0 * A_i * mass_p / (e*e)
 
int nu_p = 0
 
log coulomb_log = log(10.)
 
int epsilon_r = 1.
 
float v_0 = c_0
 
float tau = L / v_0
 
int n_0 = n
 
float T_0 = mass_p * v_0**2
 
sqrt B_0 = sqrt(mu_0 * mass_p * n_0 * v_0**2)
 
float E_0 = v_0 * B_0
 
int nu_p_tau = nu_p * tau
 
float mass_e_norm = A_e
 
float mass_i_norm = A_i
 
float charge_e_norm = Z_e
 
float charge_i_norm = Z_i
 
int n_e_norm = n / n_0
 
int n_i_norm = n / n_0
 
float T_e_norm = temp / T_0
 
float T_i_norm = temp / T_0
 
int omega_p_tau = omega_p_i * tau
 
float skin_depth_norm = c_0 / v_0 / omega_p_tau
 
int col_jump = 1.
 
float col_radius = 0.25
 
float num_cols = 1.0
 
list col_centers_x = [0.]
 
bool poly_profile = True
 
int poly_degree = 6
 
float E_max = 1.0e0
 
float E_norm = E_max / E_0
 
float B_norm = E_norm / (omega_p_tau*skin_depth_norm)
 
float B_max = B_norm * B_0
 
list bloch_k = [pi * i / 20., 0., 0.]
 
list bloch_a = [1., 1., 0.]
 
str run_family = 'BlochPeriodic/2D/Drude100GhzSine2D50-1Vm'
 
str run_name
 
list left_subdomains = ['top']
 
list right_subdomains = ['bottom']
 
list left_periodic_boundaries = ['upperWall', 'leftWall']
 
list right_periodic_boundaries = ['lowerWall', 'rightWall']
 
list interface_boundaries = ['interface']
 
bool drude = True
 
bool plasma = False
 
warpy mesh
 
warpy field
 
warpy electron_fluid
 
warpy ion_fluid
 
list va_ics = []
 
 background_value
 
 pert_amplitude
 
 wavelength
 
 components
 
 value
 
warpy ha_ic = warpy.host_actions.va_runner(name='ha_ic', variable_adjusters=va_ics)
 
list apps_left = []
 
list apps_right = []
 
warpy apps_fluids
 
warpy apps_fields
 
warpy apps_field_source
 
list va_bc_bloch = []
 
 k_vector
 
 a_vector
 
warpy spatial_solver_left
 
warpy spatial_solver_right
 
warpy temporal_solver
 
warpy variables_left = field.get_vars(region='region1')
 
warpy variables_right = field.get_vars(region='region2')
 
warpy writer
 
list probe_loc_left
 
list probe_loc_right
 
list probes_left
 
list probes_right
 
warpy dt_fixed = warpy.dt_calc.fixed_dt(dt)
 
warpy dt_conv = warpy.dt_calc.convergence_dt(max_dt=10. * dt, init_dt=dt)
 
warpy sim
 
str sim_parameters
 
 gen_xdmf
 
 detect_nonscalar
 
 sim_param
 
 wxm_args
 

Function Documentation

◆ probe_name()

def examples.dg.floquet-bloch_bc.bloch_periodic_2D.probe_name (   loc)

Variable Documentation

◆ A_e

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.A_e = 1.0

◆ A_i

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.A_i = 1.0

◆ a_vector

examples.dg.floquet-bloch_bc.bloch_periodic_2D.a_vector

◆ apps_field_source

warpy examples.dg.floquet-bloch_bc.bloch_periodic_2D.apps_field_source
Initial value:
1= field.apps_maxwell_fluid_source(
2 fluid=electron_fluid,
3 momentum_components=['px', 'py', 'pz'],
4 mass=mass_e_norm,
5 charge=charge_e_norm,
6 omega_p_norm=omega_p_tau,
7 skin_depth_norm=skin_depth_norm,
8 rel_permittivity=epsilon_r)

◆ apps_fields

warpy examples.dg.floquet-bloch_bc.bloch_periodic_2D.apps_fields
Initial value:
1= field.apps_maxwell_flux(
2 skin_depth_norm=skin_depth_norm,
3 omega_p_norm=omega_p_tau,
4 rel_permittivity=epsilon_r)

◆ apps_fluids

warpy examples.dg.floquet-bloch_bc.bloch_periodic_2D.apps_fluids
Initial value:
1= electron_fluid.apps_euler_field_source(
2 field=field, mass=A_e, charge=charge_e_norm, skin_depth_norm=skin_depth_norm)

◆ apps_left

list examples.dg.floquet-bloch_bc.bloch_periodic_2D.apps_left = []

◆ apps_right

list examples.dg.floquet-bloch_bc.bloch_periodic_2D.apps_right = []

◆ B_0

sqrt examples.dg.floquet-bloch_bc.bloch_periodic_2D.B_0 = sqrt(mu_0 * mass_p * n_0 * v_0**2)

◆ B_max

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.B_max = B_norm * B_0

◆ B_norm

examples.dg.floquet-bloch_bc.bloch_periodic_2D.B_norm = E_norm / (omega_p_tau*skin_depth_norm)

◆ background_value

examples.dg.floquet-bloch_bc.bloch_periodic_2D.background_value

◆ bloch_a

list examples.dg.floquet-bloch_bc.bloch_periodic_2D.bloch_a = [1., 1., 0.]

◆ bloch_k

list examples.dg.floquet-bloch_bc.bloch_periodic_2D.bloch_k = [pi * i / 20., 0., 0.]

◆ c_0

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.c_0 = 2.9979e8

◆ charge_e

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.charge_e = -e

◆ charge_e_norm

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.charge_e_norm = Z_e

◆ charge_i

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.charge_i = e

◆ charge_i_norm

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.charge_i_norm = Z_i

◆ col_centers_x

list examples.dg.floquet-bloch_bc.bloch_periodic_2D.col_centers_x = [0.]

◆ col_jump

int examples.dg.floquet-bloch_bc.bloch_periodic_2D.col_jump = 1.

◆ col_radius

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.col_radius = 0.25

◆ components

examples.dg.floquet-bloch_bc.bloch_periodic_2D.components

◆ coulomb_log

log examples.dg.floquet-bloch_bc.bloch_periodic_2D.coulomb_log = log(10.)

◆ detect_nonscalar

examples.dg.floquet-bloch_bc.bloch_periodic_2D.detect_nonscalar

◆ drude

bool examples.dg.floquet-bloch_bc.bloch_periodic_2D.drude = True

◆ dt

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.dt = 2.4e-3

◆ dt_conv

warpy examples.dg.floquet-bloch_bc.bloch_periodic_2D.dt_conv = warpy.dt_calc.convergence_dt(max_dt=10. * dt, init_dt=dt)

◆ dt_fixed

warpy examples.dg.floquet-bloch_bc.bloch_periodic_2D.dt_fixed = warpy.dt_calc.fixed_dt(dt)

◆ e

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.e = 1.6022e-19

◆ E_0

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.E_0 = v_0 * B_0

◆ E_max

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.E_max = 1.0e0

◆ E_norm

examples.dg.floquet-bloch_bc.bloch_periodic_2D.E_norm = E_max / E_0

◆ electron_fluid

warpy examples.dg.floquet-bloch_bc.bloch_periodic_2D.electron_fluid
Initial value:
1= warpy.helpers.bloch_var(
2 variable_name='electron_fluid',
3 components=['rho', 'px', 'py', 'pz', 'e'],
4 sorder=sorder,
5 region1=left_subdomains,
6 region2=right_subdomains,
7 region1_periodic=left_periodic_boundaries,
8 region2_periodic=right_periodic_boundaries,
9 region12_interface=interface_boundaries)

◆ elem_size

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.elem_size = 0.01

◆ epsilon_0

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.epsilon_0 = 8.8542e-12

◆ epsilon_r

int examples.dg.floquet-bloch_bc.bloch_periodic_2D.epsilon_r = 1.

◆ f_pe

list examples.dg.floquet-bloch_bc.bloch_periodic_2D.f_pe = [100.e9, 300.e9, 400.e9]

◆ field

warpy examples.dg.floquet-bloch_bc.bloch_periodic_2D.field
Initial value:
1= warpy.helpers.bloch_var(
2 variable_name='field',
3 components=['Ex', 'Ey', 'Ez', 'Bx', 'By', 'Bz'],
4 sorder=sorder,
5 region1=left_subdomains,
6 region2=right_subdomains,
7 region1_periodic=left_periodic_boundaries,
8 region2_periodic=right_periodic_boundaries,
9 region12_interface=interface_boundaries)

◆ frames

int examples.dg.floquet-bloch_bc.bloch_periodic_2D.frames = 2**14

◆ gas_gamma

int examples.dg.floquet-bloch_bc.bloch_periodic_2D.gas_gamma = 5. / 3.

◆ gen_xdmf

examples.dg.floquet-bloch_bc.bloch_periodic_2D.gen_xdmf

◆ ha_ic

warpy examples.dg.floquet-bloch_bc.bloch_periodic_2D.ha_ic = warpy.host_actions.va_runner(name='ha_ic', variable_adjusters=va_ics)

◆ interface_boundaries

list examples.dg.floquet-bloch_bc.bloch_periodic_2D.interface_boundaries = ['interface']

◆ ion_fluid

warpy examples.dg.floquet-bloch_bc.bloch_periodic_2D.ion_fluid
Initial value:
1= warpy.helpers.bloch_var(
2 variable_name='ion_fluid',
3 components=['rho', 'px', 'py', 'pz', 'e'],
4 sorder=sorder,
5 region1=left_subdomains,
6 region2=right_subdomains,
7 region1_periodic=left_periodic_boundaries,
8 region2_periodic=right_periodic_boundaries,
9 region12_interface=interface_boundaries)

◆ k_vector

examples.dg.floquet-bloch_bc.bloch_periodic_2D.k_vector

◆ L

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.L = 0.5e-3

◆ left_periodic_boundaries

list examples.dg.floquet-bloch_bc.bloch_periodic_2D.left_periodic_boundaries = ['upperWall', 'leftWall']

◆ left_subdomains

list examples.dg.floquet-bloch_bc.bloch_periodic_2D.left_subdomains = ['top']

◆ mass_e_norm

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.mass_e_norm = A_e

◆ mass_i_norm

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.mass_i_norm = A_i

◆ mass_p

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.mass_p = 1.6726e-27

◆ mesh

warpy examples.dg.floquet-bloch_bc.bloch_periodic_2D.mesh
Initial value:
2 MeshFile=str(mesh_file + '.inp'),
3 NumLayers=1,
4 PeriodicBoundaries=['upperWall', 'lowerWall', 'rightWall',
5 'leftWall'], # boundary pairs
6 basis_array_set=sorder)
general unstructured mesh
Definition: mesh.py:56

◆ mesh_file

str examples.dg.floquet-bloch_bc.bloch_periodic_2D.mesh_file = 'meshes/unit_cell_ax1ay1dx04'

◆ mu_0

int examples.dg.floquet-bloch_bc.bloch_periodic_2D.mu_0 = 4 * pi * 1.0e-7

◆ n

int examples.dg.floquet-bloch_bc.bloch_periodic_2D.n = omega_p_i * omega_p_i * epsilon_0 * A_i * mass_p / (e*e)

◆ n_0

int examples.dg.floquet-bloch_bc.bloch_periodic_2D.n_0 = n

◆ n_e_norm

int examples.dg.floquet-bloch_bc.bloch_periodic_2D.n_e_norm = n / n_0

◆ n_i_norm

int examples.dg.floquet-bloch_bc.bloch_periodic_2D.n_i_norm = n / n_0

◆ nu_p

int examples.dg.floquet-bloch_bc.bloch_periodic_2D.nu_p = 0

◆ nu_p_tau

int examples.dg.floquet-bloch_bc.bloch_periodic_2D.nu_p_tau = nu_p * tau

◆ num_cols

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.num_cols = 1.0

◆ omega_p_e

int examples.dg.floquet-bloch_bc.bloch_periodic_2D.omega_p_e = 2. * pi * f_pe[0]

◆ omega_p_i

int examples.dg.floquet-bloch_bc.bloch_periodic_2D.omega_p_i = omega_p_e * math.sqrt(A_e / A_i)

◆ omega_p_tau

int examples.dg.floquet-bloch_bc.bloch_periodic_2D.omega_p_tau = omega_p_i * tau

◆ pert_amplitude

examples.dg.floquet-bloch_bc.bloch_periodic_2D.pert_amplitude

◆ plasma

bool examples.dg.floquet-bloch_bc.bloch_periodic_2D.plasma = False

◆ poly_degree

int examples.dg.floquet-bloch_bc.bloch_periodic_2D.poly_degree = 6

◆ poly_profile

bool examples.dg.floquet-bloch_bc.bloch_periodic_2D.poly_profile = True

◆ probe_loc_left

list examples.dg.floquet-bloch_bc.bloch_periodic_2D.probe_loc_left
Initial value:
1= [
2 [0., 0., 0.],
3 [0.25, 0., 0.],
4 ]

◆ probe_loc_right

list examples.dg.floquet-bloch_bc.bloch_periodic_2D.probe_loc_right
Initial value:
1= [
2 [0.5, 0., 0.],
3 [0.75, 0., 0.],
4 ]

◆ probes_left

list examples.dg.floquet-bloch_bc.bloch_periodic_2D.probes_left
Initial value:
1= [
3 name=probe_name(loc),
4 ReadVars=variables_left,
5 Location=loc,
6 OutputFilename='data/%s' % probe_name(loc),
7 BasisArraySet=sorder) for loc in probe_loc_left
8 ]
Writes out variables for single node at each time point into single file.
Definition: probe.py:4

◆ probes_right

list examples.dg.floquet-bloch_bc.bloch_periodic_2D.probes_right
Initial value:
1= [
3 name=probe_name(loc),
4 ReadVars=variables_right,
5 Location=loc,
6 OutputFilename='data/%s' % probe_name(loc),
7 BasisArraySet=sorder) for loc in probe_loc_right
8 ]

◆ right_periodic_boundaries

list examples.dg.floquet-bloch_bc.bloch_periodic_2D.right_periodic_boundaries = ['lowerWall', 'rightWall']

◆ right_subdomains

list examples.dg.floquet-bloch_bc.bloch_periodic_2D.right_subdomains = ['bottom']

◆ run_family

str examples.dg.floquet-bloch_bc.bloch_periodic_2D.run_family = 'BlochPeriodic/2D/Drude100GhzSine2D50-1Vm'

◆ run_name

str examples.dg.floquet-bloch_bc.bloch_periodic_2D.run_name
Initial value:
1= 'kx{:05.2f}ky{:05.2f}_2Ddx04_3rdOrd_t400p16384'.format(
2 bloch_k[0], bloch_k[1])

◆ sim

warpy examples.dg.floquet-bloch_bc.bloch_periodic_2D.sim
Initial value:
2 name=run_name,
3 meshes=[mesh],
4 initial_conditions=[ha_ic],
5 temporal_solvers=[temporal_solver],
6 writers=[writer] + probes_left + probes_right,
7 time=[0, t_end],
8 dt_controller=dt_fixed,
9 flexible_writeout=True,
10 write_steps=frames,
11 verbosity='info',
12 enable_fpe=False)
Discontinuous finite element RK simulation.
Definition: dg_sim.py:11

◆ sim_param

examples.dg.floquet-bloch_bc.bloch_periodic_2D.sim_param

◆ sim_parameters

str examples.dg.floquet-bloch_bc.bloch_periodic_2D.sim_parameters

◆ skin_depth_norm

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.skin_depth_norm = c_0 / v_0 / omega_p_tau

◆ sorder

str examples.dg.floquet-bloch_bc.bloch_periodic_2D.sorder = 'thirdOrder'

◆ spatial_solver_left

warpy examples.dg.floquet-bloch_bc.bloch_periodic_2D.spatial_solver_left
Initial value:
1= warpy.spatial_solvers.dg(
2 name="dg_left",
3 spatial_order=sorder,
4 applications=apps_left,
5 on_subdomains=left_subdomains)

◆ spatial_solver_right

warpy examples.dg.floquet-bloch_bc.bloch_periodic_2D.spatial_solver_right
Initial value:
1= warpy.spatial_solvers.dg(
2 name="dg_right",
3 spatial_order=sorder,
4 applications=apps_right,
5 on_subdomains=right_subdomains)

◆ T_0

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.T_0 = mass_p * v_0**2

◆ T_e_norm

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.T_e_norm = temp / T_0

◆ t_end

int examples.dg.floquet-bloch_bc.bloch_periodic_2D.t_end = 400.

◆ T_i_norm

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.T_i_norm = temp / T_0

◆ tau

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.tau = L / v_0

◆ temp

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.temp = 1.0

◆ temporal_solver

warpy examples.dg.floquet-bloch_bc.bloch_periodic_2D.temporal_solver
Initial value:
2 name="rk",
3 scheme=torder,
4 spatial_solvers=[spatial_solver_left, spatial_solver_right],
5 variable_adjusters=va_bc_bloch)
Explicit Runge-Kutta temporal solver Note: Dormand45 currently will not work correctly with limiters ...
Definition: erk.py:5

◆ torder

str examples.dg.floquet-bloch_bc.bloch_periodic_2D.torder = 'SSPRK3'

◆ v_0

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.v_0 = c_0

◆ va_bc_bloch

list examples.dg.floquet-bloch_bc.bloch_periodic_2D.va_bc_bloch = []

◆ va_ics

list examples.dg.floquet-bloch_bc.bloch_periodic_2D.va_ics = []

◆ value

examples.dg.floquet-bloch_bc.bloch_periodic_2D.value

◆ variables_left

warpy examples.dg.floquet-bloch_bc.bloch_periodic_2D.variables_left = field.get_vars(region='region1')

◆ variables_right

warpy examples.dg.floquet-bloch_bc.bloch_periodic_2D.variables_right = field.get_vars(region='region2')

◆ wavelength

examples.dg.floquet-bloch_bc.bloch_periodic_2D.wavelength

◆ writer

warpy examples.dg.floquet-bloch_bc.bloch_periodic_2D.writer
Initial value:
2 name='writer', WriteInterval=1000, ReadVars=variables_left + variables_right)
Writes out a list of variables.
Definition: writer.py:4

◆ wxm_args

examples.dg.floquet-bloch_bc.bloch_periodic_2D.wxm_args

◆ Z_e

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.Z_e = -1.0

◆ Z_i

float examples.dg.floquet-bloch_bc.bloch_periodic_2D.Z_i = 1.0