diff --git a/programs/multipulse_2d/2pulse_start.cfg b/programs/multipulse_2d/2pulse_start.cfg new file mode 100644 index 00000000..c1ef6941 --- /dev/null +++ b/programs/multipulse_2d/2pulse_start.cfg @@ -0,0 +1,168 @@ + ############################################## + ### Configuration file ### + ############################################## + + # Add electrode with the following settings + use_electrode = T + + # Ensure grid spacing around electrode is less than this value: + refine_electrode_dx = 5.0000E-05 + + # Whether the electrode is grounded or at the applied voltage: + field_electrode_grounded = F + + # The size of the coarse grid: coarse_grid_size = 32 32 + + # Electrode relative start position (for standard rod electrode): + field_rod_r0 = 0.0 0.90 + + # Electrode relative end position (for standard rod electrode): + field_rod_r1 = 0.0 1.0 + + # Electrode radius (in m, for standard rod electrode): + field_rod_radius = 1.0000E-04 + + cylindrical = T + + # The desired endtime in seconds of the simulation: + end_time = 1000e-9 + + # The length of the (square) domain: + domain_len = 10e-3 10e-3 + + # Whether the domain is periodic (per dimension): + periodic = F F + + # How the electric field or voltage is specified: + field_given_by = "voltage 16e3" + + # Specifying the pulse parameters + field_rise_time = 1.0e-9 + field_fall_time = 1.0e-9 + + field_pulse_width = 13.0e-9 + + field_num_pulses = 10 + + field_pulse_period = 100e-9 + # The background ion and electron density in 1/m^3: + background_density = 0.1000E+15 + + # Memory limit (GB): + memory_limit_GB = 32 + +[gas] + # Gas component names: + components = 'N2' 'O2' + + # Whether the gas dynamics are simulated: + dynamics = T + + # Fast Joule heating efficiency (between 0.0 and 1.0): + fast_heating_efficiency = 3.0000E-01 + + # Gas component fractions: + fractions = 8.0000E-01 2.0000E-01 + + # Gas mean molecular weight (kg), for gas dynamics: + molecular_weight = 4.7824E-26 + + # The gas pressure (bar): + pressure = 1.0000E+00 + + # Slow Joule heating efficiency (between 0.0 and 1.0 with 1-fast_heating_efficency): + slow_heating_efficiency = 3.0000E-01 + + # Vibration-Translation relaxation time (default=20e-6 sec): + tau_vt = 2.0000E-05 + +# Number of simulation steps to wait before initializing "the starting position of the streamer: +initial_streamer_pos_steps_wait = 5 + + [photoi] + # Whether photoionization is enabled: + enabled = T + + # Which photoionization method to use (helmholtz, montecarlo): + method = 'helmholtz' + + # Update photoionization every N time step: + per_steps = 4 + + # Input file with transport data: + input_data%file = ../../transport_data/air_chemistry_v3.txt + + [input_data] + # List of ion mobilities (m^2/Vs) at 1 bar, 300 K: + ion_mobilities = 2.2000E-04 2.2000E-04 2.2000E-04 2.2000E-04 2.2000E-04 2.2000E-04 2.2000E-04 + + # List of ions that are considered mobile: + mobile_ions = 'N2_plus' 'O2_plus' 'N4_plus' 'O4_plus' 'O2_min' 'O_min' 'O3_min' + + # Input file with transport data: + file = ../../transport_data/air_chemistry_v3.txt + + # Use old style transport data (alpha, eta, mu, D vs V/m): + old_style = F + +[table_data] + # Input interpolation method (linear, cubic_spline): + #input_interpolation = 'linear' + input_interpolation = 'linear' + + # Maximal field (in Td) for the rate coeff. lookup table: + max_townsend = 1.0000E+03 + + # Minimal field (in Td) for the rate coeff. lookup table: + min_townsend = 1.0000E+00 + + # Size of the lookup table for reaction rates: + size = 1000 + + # x-spacing for lookup table (linear, quadratic): + #xspacing = 'linear' + xspacing = 'quadratic' + +[output] + # Output the conductivity of the plasma: + conductivity = T + + # The timestep for writing output (s): + dt = 5.0000E-10 + + # To reduce output when the voltage is off: + dt_factor_pulse_off = 10 + + # Show the electron energy in eV from the local field approximation: + electron_energy = F + + # Name for the output files (e.g. output/my_sim): + name = './output/2pulse_start' + + # Print status every this many seconds: + status_delay = 1.0000E+01 + +[datfile] + # Write binary output files every N outputs: + per_outputs = 50 + + # Write binary output files (to resume later): + write = T + +# Only derefine if grid spacing if smaller than this value: +derefine_dx = 5.0000E-05 + +# Small density for the chemistry time step: +# dt_chemistry_nmin = 1.0000E+15 + +# The maximum timestep (s): +dt_max = 1.0000E+00 + +# The minimum timestep (s): +dt_min = 1.0000E-15 + +# Safety factor for the time step: +dt_safety_factor = 9.0000E-01 + +# Multiplication factor to derefine electrode during interpulse: +electrode_derefine_factor = 2.0000E+00 diff --git a/programs/multipulse_2d/multipulse_start.cfg b/programs/multipulse_2d/multipulse_start.cfg index d803ede4..46103042 100644 --- a/programs/multipulse_2d/multipulse_start.cfg +++ b/programs/multipulse_2d/multipulse_start.cfg @@ -1,91 +1,55 @@ + ############################################## + ### Configuration file ### + ############################################## + # Add electrode with the following settings + use_electrode = T -# The desired endtime (s) of the simulation: -end_time = 1.2002E-03 -# Time of one complete voltage pulse (s): -field_pulse_period = 1.0000E-04 -# Pulse width excluding rise and fall time (s): -field_pulse_width = 1.0000E-08 -# Linear rise time of field (s): -field_rise_time = 1.0000E-09 -# Linear rise time of field (s): -field_fall_time = 1.0000E-09 -# Number of voltage pulses (default: 1): -field_num_pulses = 20 + # Ensure grid spacing around electrode is less than this value: + refine_electrode_dx = 5.0000E-05 -# How the electric field or voltage is specified: -field_given_by = 'voltage 2.7e4' + # Whether the electrode is grounded or at the applied voltage: + field_electrode_grounded = F + # The size of the coarse grid: coarse_grid_size = 32 32 -# Boundary condition for electric potential: -field_bc_type = 'homogeneous' + # Electrode relative start position (for standard rod electrode): + field_rod_r0 = 0.0 0.90 -# Whether the electrode is grounded or at the applied voltage: -field_electrode_grounded = F + # Electrode relative end position (for standard rod electrode): + field_rod_r1 = 0.0 1.0 -# Type of electrode (sphere, rod, rod_cone_top): -field_electrode_type = 'rod' -# First electrode relative position: -field_rod_r0 = 0.0000E+00 9.4000E-01 + # Electrode radius (in m, for standard rod electrode): + field_rod_radius = 1.0000E-04 -# Second electrode relative position: -field_rod_r1 = 0.0000E+00 1.0000E+00 + cylindrical = T -# Third electrode relative position: -field_rod_r2 = 0.0000E+00 1.0000E+00 + # The desired endtime in seconds of the simulation: + end_time = 100e-6 -# Electrode radius (in m, for standard rod electrode): -field_rod_radius = 1.5000E-04 + # The length of the (square) domain: + domain_len = 10e-3 10e-3 -# Electrode tip radius (for conical electrode): -field_tip_radius = 6.6500E-06 -# The background ion and electron density (1/m3): -background_density = 1.7700E+09 + # Whether the domain is periodic (per dimension): + periodic = F F -# The number of grid cells per coordinate in a box: -box_size = 8 + # How the electric field or voltage is specified: + field_given_by = "voltage 16e3" + + # Specifying the pulse parameters + field_rise_time = 1.0e-9 + field_fall_time = 1.0e-9 -# Whether cylindrical coordinates are used (only in 2D): -cylindrical = T + field_pulse_width = 13.0e-9 -[datfile] - # Write binary output files every N outputs: - per_outputs = 10 - - # Write binary output files (to resume later): - write = T - -# Only derefine if grid spacing if smaller than this value: -derefine_dx = 5.0000E-05 - -# The length of the domain (m): -domain_len = 1.3300E-02 1.3300E-02 - -# Small density for the chemistry time step: -dt_chemistry_nmin = 1.0000E+15 + field_num_pulses = 10 -# The maximum timestep (s): -dt_max = 1.0000E+00 - -# The minimum timestep (s): -dt_min = 1.0000E-15 - -# Safety factor for the time step: -dt_safety_factor = 9.0000E-01 - -# Multiplication factor to derefine electrode during interpulse: -electrode_derefine_factor = 8.0000E+00 + field_pulse_period = 1000e-9 + # The background ion and electron density in 1/m^3: + background_density = 0.1000E+15 -# Streamer length at which the simulation will end.: -end_streamer_length = 1.5000E-02 - - -[fixes] - # Use source factor to prevent unphysical effects due to diffusion: - source_factor = 'none' - - # Whether to write the source factor to the output: - write_source_factor = F + # Memory limit (GB): + memory_limit_GB = 32 [gas] # Gas component names: @@ -94,157 +58,56 @@ end_streamer_length = 1.5000E-02 # Whether the gas dynamics are simulated: dynamics = T + # Fast Joule heating efficiency (between 0.0 and 1.0): + fast_heating_efficiency = 3.0000E-01 + # Gas component fractions: fractions = 8.0000E-01 2.0000E-01 - # Joule heating efficiency (between 0.0 and 1.0): - fast_heating_efficiency = 1.0000E+01 - # Gas mean molecular weight (kg), for gas dynamics: molecular_weight = 4.7824E-26 # The gas pressure (bar): pressure = 1.0000E+00 -# Number of simulation steps to wait before initializing "the starting position of the streamer: -initial_streamer_pos_steps_wait = 5 - -[input_data] - # Input file with transport (and reaction) data: - file = '../../transport_data/air_chemistry_v3.txt' - - # List of ion mobilities (m^2/Vs) at 1 bar, 300 K: - ion_mobilities = 2.2000E-04 2.2000E-04 2.2000E-04 2.2000E-04 2.2000E-04 2.2000E-04 2.2000E-04 - - # List of ions that are considered mobile: - mobile_ions = 'N2_plus' 'O2_plus' 'N4_plus' 'O4_plus' 'O2_min' 'O_min' 'O3_min' - - # Use old style transport data (alpha, eta, mu, D vs V/m): - old_style = F - -# Memory limit (GB): -memory_limit_GB = 8.0000E+00 - -[output] - # Output the conductivity of the plasma: - conductivity = T - - # The timestep for writing output (s): - dt = 5.0000E-10 + # Slow Joule heating efficiency (between 0.0 and 1.0 with 1-fast_heating_efficency): + slow_heating_efficiency = 3.0000E-01 - # To reduce output when the voltage is off: - dt_factor_pulse_off = 100 - - # Show the electron energy in eV from the local field approximation: - electron_energy = F - - # Name for the output files (e.g. output/my_sim): - name = './multiPulse/bench_27kV_eta10' + # Vibration-Translation relaxation time (default=20e-6 sec): + tau_vt = 2.0000E-05 - # Print status every this many seconds: - status_delay = 1.0000E+01 - -# Whether the domain is periodic (per dimension): -periodic = F F +# Number of simulation steps to wait before initializing "the starting position of the streamer: +initial_streamer_pos_steps_wait = 5 -[photoi] + [photoi] # Whether photoionization is enabled: enabled = T - # Whether photoionization is enabled in gas: - enabled_ingas = T - - # Photoionization efficiency factor, typically around 0.05-0.1: - eta = 5.0000E-02 - # Which photoionization method to use (helmholtz, montecarlo): method = 'helmholtz' # Update photoionization every N time step: per_steps = 4 - # How to compute the photoi. source (Zheleznyak, from_species): - source_type = 'Zheleznyak' - -[photoi_helmh] - # Can be Luque (default), Bourdon-2, Bourdon-3 or custom: - author = 'Bourdon-3' - - # Maximum residual relative to max(|rhs|): - max_rel_residual = 1.0000E-02 - -# Density prolongation method (limit, linear, linear_cons, sparse): -prolong_density = 'limit' + # Input file with transport data: + input_data%file = ../../transport_data/air_chemistry_v3.txt -# Refine if alpha*dx is larger than this value: -refine_adx = 1.0000E+00 - -# For refinement, use alpha(f * E)/f, where f is this factor: -refine_adx_fac = 1.0000E+00 - -# The refinement buffer width in cells (around flagged cells): -refine_buffer_width = 4 - -# Refine if the curvature in phi is larger than this value: -refine_cphi = 1.0000E+99 - -# Ensure grid spacing around electrode is less than this value: -refine_electrode_dx = 5.0000E-06 - -# Refine until dx is smaller than this factor times the seed width: -refine_init_fac = 2.5000E-01 - -# Refine around initial conditions up to this time: -refine_init_time = 1.0000E-08 - -# Refine regions at most up to this grid spacing: -refine_limits_dr = 1.0000E+99 - -# Maximum coordinate of the refinement limits: -refine_limits_rmax = 0.0000E+00 0.0000E+00 - -# Minimum coordinate of the refinement limits: -refine_limits_rmin = 0.0000E+00 0.0000E+00 - -# The grid spacing will always be smaller than this value: -refine_max_dx = 4.0000E-03 - -# Minimum electron density for adding grid refinement: -refine_min_dens = -1.0000E+99 - -# The grid spacing will always be larger than this value: -refine_min_dx = 1.0000E-07 - -# The number of steps after which the mesh is updated: -refine_per_steps = 2 - -# Refine regions up to this grid spacing: -refine_regions_dr = 1.0000E+99 - -# Maximum coordinate of the refinement regions: -refine_regions_rmax = 0.0000E+00 0.0000E+00 - -# Minimum coordinate of the refinement regions: -refine_regions_rmin = 0.0000E+00 0.0000E+00 - -# Refine regions up to this simulation time: -refine_regions_tstop = 1.0000E+99 - -# Seed for random numbers; if all zero, generate randomly: -rng_seed = 8123 91234 12399 293434 - -[silo] - # Write silo output files every N outputs: - per_outputs = 1 + [input_data] + # List of ion mobilities (m^2/Vs) at 1 bar, 300 K: + ion_mobilities = 2.2000E-04 2.2000E-04 2.2000E-04 2.2000E-04 2.2000E-04 2.2000E-04 2.2000E-04 -# Write silo output: -silo_write = T + # List of ions that are considered mobile: + mobile_ions = 'N2_plus' 'O2_plus' 'N4_plus' 'O4_plus' 'O2_min' 'O_min' 'O3_min' -# Boundary condition for the plasma species: -species_boundary_condition = 'neumann_zero' + # Input file with transport data: + file = ../../transport_data/air_chemistry_v3.txt + # Use old style transport data (alpha, eta, mu, D vs V/m): + old_style = F + [table_data] # Input interpolation method (linear, cubic_spline): + #input_interpolation = 'linear' input_interpolation = 'linear' # Maximal field (in Td) for the rate coeff. lookup table: @@ -257,206 +120,49 @@ species_boundary_condition = 'neumann_zero' size = 1000 # x-spacing for lookup table (linear, quadratic): + #xspacing = 'linear' xspacing = 'quadratic' - -# Time integrator (use arbitrary value to see options): -time_integrator = 'heuns_method' - -# Whether to include an electrode: -use_electrode = T - -# Variables below have default values - -# Names of custom species for the background density: -background_species = - -# The size of the coarse grid: -coarse_grid_size = -1 -1 - -# Whether to compute the deposited power density: -compute_power_density = F - -[cross] - # Use this many points for cross-section data: - npoints = 500 - - # Integrate up to this r value: - rmax = 2.0000E-03 - - # Write integral over cross-section data output: - write = F - -# Allow derefinement if the curvature in phi is smaller than this value: -derefine_cphi = 1.0000E+99 - -[dielectric] - # Secondary electron emission coefficient for positive ion impact: - gamma_se_ion = 1.0000E-01 - - # Secondary electron emission coefficient for high energy photons: - gamma_se_ph_highenergy = 1.0000E-01 - - # Secondary electron emission coefficient for low energy photons: - gamma_se_ph_lowenergy = 1.0000E-01 - - # Maximum travel distance for testing boundary intersection: - photon_step_length = 1.0000E-03 - - # Assume photons are not absorbed for photoemission computation: - photons_no_absorption = F - - # preset nonuniform surface charge: - preset_charge = 0.0000E+00 - - # The distribution of nonuniform surface charge: - preset_charge_distribution = 0.0000E+00 - - # Output surface related information: - write = F - -# The origin of the domain (m): -domain_origin = 0.0000E+00 0.0000E+00 - -# CFL number to use: -dt_cfl_number = -1.0000+100 - -# The (initial) vertical applied electric field (V/m): -field_amplitude = -1.0000+100 - -[field_maxima] - # Minimal distance (m) between electric field maxima: - distance = 0.0000E+00 - - # Threshold value (V/m) for electric field maxima: - threshold = 0.0000E+00 - - # Output electric field maxima and their locations: - write = F - -[fixes] - # Enable flux limiting, but prevent field from exceeding this value: - drt_max_field = 1.0000+100 - - -[gas] - # The gas temperature (Kelvin): - temperature = 3.0000E+02 - -[lineout] - # Write output along a line: - write = F - -# Stop multigrid when residual is smaller than this factor times max(|rhs|): -multigrid_max_rel_residual = 1.0000E-04 - -# Number of V-cycles to perform per time step: -multigrid_num_vcycles = 2 - + [output] - # Electron density threshold (1/m3, will be scaled by N): - density_threshold = 1.0000E+18 - - # If defined, only output these variables: - only = - - # Write to a log file for regression testing: - regression_test = F - -[photoe] - # Whether photoemission is enabled: - enabled = F - - # Update photoemission every N time step: - per_steps = 10 - -[photoi] - # Which excited species to use when photoi%source_type = from_species: - excited_species = 'UNDEFINED' - - # Photoemission time delay in case photoi_source_type is 'from_species': - photoemission_time = 0.0000E+00 - - # Photoionization quenching pressure (bar): - quenching_pressure = 4.0000E-02 - - # Which species is ionized by photoionization: - species = 'O2_plus' - -[photoi_helmh] - # Weights corresponding to the lambdas; unit 1/(m bar)^2: - coeffs = - - # Lambdas to use in Helmholtz eq; unit 1/(m bar): - lambdas = - -[photoi_mc] - # At which grid spacing photons are absorbed compared to their mean distance: - absorp_fac = 2.5000E-01 - - # Whether a constant grid spacing is used for photoionization: - const_dx = T - - # Minimum grid spacing for photoionization: - min_dx = 1.0000E-09 - - # Maximum number of discrete photons to use: - num_photons = 100000 - - # Whether physical photons are used: - physical_photons = T - -[plane] - # Write uniform output in a plane: - write = F - -# Whether to limit plasma reactions to a certain region: -plasma_region_enabled = F - -# Limit plasma reactions to coordinates between rmin and rmax: -plasma_region_rmax = 1.0000+100 1.0000+100 - -# Limit plasma reactions to coordinates between rmin and rmax: -plasma_region_rmin = -1.0000+100 -1.0000+100 - -# Start refining electrode some time before the start of a new pulse: -refine_prepulse_time = 1.0000E-09 - -# Use effective alpha (minus attachment) for refinement: -refine_use_alpha_effective = F + # Output the conductivity of the plasma: + conductivity = T -# If set, restart simulation from a previous .dat file: -restart_from_file = 'UNDEFINED' + # The timestep for writing output (s): + dt = 5.0000E-10 -# Names of custom species for the first seed: -seed1_species = + # To reduce output when the voltage is off: + dt_factor_pulse_off = 50 -# Type of seed: neutral (0), ions (1) or electrons (-1): -seed_charge_type = + # Show the electron energy in eV from the local field approximation: + electron_energy = F -# Initial density of the seed (1/m3): -seed_density = + # Name for the output files (e.g. output/my_sim): + name = './output/multipulse_cyl' -# Initial density of the seed at other endpoint (1/m3): -seed_density2 = + # Print status every this many seconds: + status_delay = 1.0000E+01 -# Fall-off type for seed (sigmoid, gaussian, smoothstep, step, laser): -seed_falloff = +[datfile] + # Write binary output files every N outputs: + per_outputs = 500 -# The relative start position of the initial seed: -seed_rel_r0 = + # Write binary output files (to resume later): + write = T -# The relative end position of the initial seed: -seed_rel_r1 = +# Only derefine if grid spacing if smaller than this value: +derefine_dx = 5.0000E-05 -# Seed width (m): -seed_width = +# Small density for the chemistry time step: +# dt_chemistry_nmin = 1.0000E+15 -# Stochastic background density (1/m3): -stochastic_density = 0.0000E+00 +# The maximum timestep (s): +dt_max = 1.0000E+00 -# Whether a dielectric is used (experimental): -use_dielectric = F +# The minimum timestep (s): +dt_min = 1.0000E-15 -# Whether the length of the streamer is used to end the simulation: -use_end_streamer_length = F +# Safety factor for the time step: +dt_safety_factor = 9.0000E-01 +# Multiplication factor to derefine electrode during interpulse: +electrode_derefine_factor = 2.0000E+00 diff --git a/programs/multipulse_2d/plot_log_xy.py b/programs/multipulse_2d/plot_log_xy.py new file mode 100755 index 00000000..3302d4b2 --- /dev/null +++ b/programs/multipulse_2d/plot_log_xy.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 + +import numpy as np +import pandas as pd +import argparse +import matplotlib.pyplot as plt + +p = argparse.ArgumentParser( + formatter_class=argparse.ArgumentDefaultsHelpFormatter) + +p.add_argument("log_files", type=str, nargs='+', help="Input log file(s)") +p.add_argument("-x", type=str, default='time', help="Name of x variable") +p.add_argument("-y", type=str, nargs='+', default='[max(E)]', + help="Name of y variables") +args = p.parse_args() + +logs = [pd.read_csv(f, delim_whitespace=True) for f in args.log_files] +numbered_files = [f'{i}: {f}' for i, f in enumerate(args.log_files)] +print(logs[0].columns) + +fig, axes = plt.subplots(1, 1, constrained_layout=True) +fig.suptitle('\n'.join(numbered_files)) + +for i, log in enumerate(logs): + for y in args.y: + log.plot(args.x, y, ax=axes, label=f'{y}-{i}') + +plt.xlabel(args.x) +plt.legend() +plt.show() diff --git a/programs/multipulse_2d/streamer_cyl_2pulses.cfg b/programs/multipulse_2d/streamer_cyl_2pulses.cfg new file mode 100644 index 00000000..bd68d24d --- /dev/null +++ b/programs/multipulse_2d/streamer_cyl_2pulses.cfg @@ -0,0 +1,136 @@ + ############################################## + ### Configuration file ### + ############################################## + + # Add electrode with the following settings + use_electrode = T + + # Ensure grid spacing around electrode is less than this value: + refine_electrode_dx = 5.0000E-05 + + # Whether the electrode is grounded or at the applied voltage: + field_electrode_grounded = F + + # The size of the coarse grid: + coarse_grid_size = 32 32 + + # Electrode relative start position (for standard rod electrode): + field_rod_r0 = 0.0 0.90 + + # Electrode relative end position (for standard rod electrode): + field_rod_r1 = 0.0 1.0 + + # Electrode radius (in m, for standard rod electrode): + field_rod_radius = 1.0000E-04 + + cylindrical = T + + # The desired endtime in seconds of the simulation: + end_time = 120e-9 + + # The name of the simulation: + output%name = output/streamer_cyl_2pulses + + # The length of the (square) domain: + domain_len = 10e-3 10e-3 + + # Whether the domain is periodic (per dimension): + periodic = F F + + # The gas pressure in bar (used for photoionization): + gas%pressure = 0.1000E+01 + + # How the electric field or voltage is specified: + field_given_by = "voltage 16e3" + + # Specifying the pulse parameters + field_rise_time = 1.0e-9 + + field_pulse_width = 13.0e-9 + + field_num_pulses = 2 + + field_pulse_period = 40e-9 + # The background ion and electron density in 1/m^3: + background_density = 0.1000E+15 + + # Memory limit (GB): + memory_limit_GB = 32 + # The timestep for writing output: + output%dt = 0.200E-09 + + # The maximum timestep: + dt_max = 0.1000E-09 + +[gas] + # Gas component names: + components = 'N2' 'O2' + + # Whether the gas dynamics are simulated: + dynamics = T + + # Fast Joule heating efficiency (between 0.0 and 1.0): + fast_heating_efficiency = 3.0000E-01 + + # Gas component fractions: + fractions = 8.0000E-01 2.0000E-01 + + # Gas mean molecular weight (kg), for gas dynamics: + molecular_weight = 4.7824E-26 + + # The gas pressure (bar): + pressure = 1.0000E+00 + + # Slow Joule heating efficiency (between 0.0 and 1.0 with 1-fast_heating_efficency): + slow_heating_efficiency = 3.0000E-01 + + # Vibration-Translation relaxation time (default=20e-6 sec): + tau_vt = 2.0000E-05 + + [photoi] + # Whether photoionization is enabled: + enabled = T + + # Update photoionization every N time step: + per_steps = 4 + + + [input_data] + # List of ion mobilities (m^2/Vs) at 1 bar, 300 K: + ion_mobilities = 2.2000E-04 2.2000E-04 2.2000E-04 2.2000E-04 2.2000E-04 2.2000E-04 2.2000E-04 + + # List of ions that are considered mobile: + mobile_ions = 'N2_plus' 'O2_plus' 'N4_plus' 'O4_plus' 'O2_min' 'O_min' 'O3_min' + + # Use old style transport data (alpha, eta, mu, D vs V/m): + old_style = F + + file = ../../transport_data/air_chemistry_v3.txt + +[table_data] + # Input interpolation method (linear, cubic_spline): + #input_interpolation = 'linear' + input_interpolation = 'linear' + + # Maximal field (in Td) for the rate coeff. lookup table: + max_townsend = 1.0000E+03 + + # Minimal field (in Td) for the rate coeff. lookup table: + min_townsend = 1.0000E+00 + + # Size of the lookup table for reaction rates: + size = 1000 + + # x-spacing for lookup table (linear, quadratic): + #xspacing = 'linear' + xspacing = 'quadratic' + +[datfile] + # Write binary output files every N outputs: + per_outputs = 50 + + # Write binary output files (to resume later): + write = T + +# Small density for the chemistry time step: +# dt_chemistry_nmin = 1.0000E+15 diff --git a/programs/multipulse_2d/test1_out.cfg b/programs/multipulse_2d/test1_out.cfg new file mode 100644 index 00000000..4d4f109a --- /dev/null +++ b/programs/multipulse_2d/test1_out.cfg @@ -0,0 +1,477 @@ +# The background ion and electron density (1/m3): +background_density = 1.7700E+09 + +# The number of grid cells per coordinate in a box: +box_size = 8 + +# Whether to compute the deposited power density: +compute_power_density = T + +# Whether cylindrical coordinates are used (only in 2D): +cylindrical = T + +[datfile] + # Write binary output files every N outputs: + per_outputs = 50 + + # Write binary output files (to resume later): + write = T + +# Only derefine if grid spacing if smaller than this value: +derefine_dx = 5.0000E-05 + +# The length of the domain (m): +domain_len = 1.3300E-02 1.3300E-02 + +# Small density for the chemistry time step: +dt_chemistry_nmin = 1.0000E+15 + +# The maximum timestep (s): +dt_max = 1.0000E+00 + +# The minimum timestep (s): +dt_min = 1.0000E-15 + +# Safety factor for the time step: +dt_safety_factor = 9.0000E-01 + +# Multiplication factor to derefine electrode during interpulse: +electrode_derefine_factor = 4.0000E+00 + +# Streamer length at which the simulation will end.: +end_streamer_length = 1.5000E-02 + +# The desired endtime (s) of the simulation: +end_time = 2.0000E-06 + +# Boundary condition for electric potential: +field_bc_type = 'homogeneous' + +# Whether the electrode is grounded or at the applied voltage: +field_electrode_grounded = F + +# Type of electrode (sphere, rod, rod_cone_top): +field_electrode_type = 'rod' + +# Linear rise time of field (s): +field_fall_time = 1.0000E-09 + +# How the electric field or voltage is specified: +field_given_by = 'voltage 2.7e4' + +# Number of voltage pulses (default: 1): +field_num_pulses = 20 + +# Time of one complete voltage pulse (s): +field_pulse_period = 1.0000E-07 + +# Pulse width excluding rise and fall time (s): +field_pulse_width = 1.0000E-08 + +# Linear rise time of field (s): +field_rise_time = 1.0000E-09 + +# First electrode relative position: +field_rod_r0 = 0.0000E+00 9.4000E-01 + +# Second electrode relative position: +field_rod_r1 = 0.0000E+00 1.0000E+00 + +# Third electrode relative position: +field_rod_r2 = 0.0000E+00 1.0000E+00 + +# Electrode radius (in m, for standard rod electrode): +field_rod_radius = 1.5000E-04 + +# Electrode tip radius (for conical electrode): +field_tip_radius = 6.6500E-06 + +[fixes] + # Use source factor to prevent unphysical effects due to diffusion: + source_factor = 'none' + + # Whether to write the source factor to the output: + write_source_factor = F + +[gas] + # Gas component names: + components = 'N2' 'O2' + + # Whether the gas dynamics are simulated: + dynamics = T + + # Fast Joule heating efficiency (between 0.0 and 1.0): + fast_heating_efficiency = 1.0000E+00 + + # Gas component fractions: + fractions = 8.0000E-01 2.0000E-01 + + # Gas mean molecular weight (kg), for gas dynamics: + molecular_weight = 4.7824E-26 + + # The gas pressure (bar): + pressure = 1.0000E+00 + + # Slow Joule heating efficiency (between 0.0 and 1.0 with 1-fast_heating_efficency): + slow_heating_efficiency = 0.0000E+00 + + # Vibration-Translation relaxation time (default=20e-6 sec): + tau_vt = 2.0000E-05 + +# Number of simulation steps to wait before initializing "the starting position of the streamer: +initial_streamer_pos_steps_wait = 5 + +[input_data] + # Input file with transport (and reaction) data: + file = '../../transport_data/air_chemistry_v3.txt' + + # List of ion mobilities (m^2/Vs) at 1 bar, 300 K: + ion_mobilities = 2.2000E-04 2.2000E-04 2.2000E-04 2.2000E-04 2.2000E-04 2.2000E-04 2.2000E-04 + + # List of ions that are considered mobile: + mobile_ions = 'N2_plus' 'O2_plus' 'N4_plus' 'O4_plus' 'O2_min' 'O_min' 'O3_min' + + # Use old style transport data (alpha, eta, mu, D vs V/m): + old_style = F + +# Memory limit (GB): +memory_limit_GB = 1.6000E+01 + +[output] + # Output the conductivity of the plasma: + conductivity = T + + # The timestep for writing output (s): + dt = 5.0000E-10 + + # To reduce output when the voltage is off: + dt_factor_pulse_off = 100 + + # Show the electron energy in eV from the local field approximation: + electron_energy = F + + # Name for the output files (e.g. output/my_sim): + name = './output/test1' + + # Print status every this many seconds: + status_delay = 1.0000E+01 + +# Whether the domain is periodic (per dimension): +periodic = F F + +[photoi] + # Whether photoionization is enabled: + enabled = T + + # Whether photoionization is enabled in gas: + enabled_ingas = T + + # Photoionization efficiency factor, typically around 0.05-0.1: + eta = 5.0000E-02 + + # Which photoionization method to use (helmholtz, montecarlo): + method = 'helmholtz' + + # Update photoionization every N time step: + per_steps = 4 + + # How to compute the photoi. source (Zheleznyak, from_species): + source_type = 'Zheleznyak' + +[photoi_helmh] + # Can be Luque (default), Bourdon-2, Bourdon-3 or custom: + author = 'Bourdon-3' + + # Maximum residual relative to max(|rhs|): + max_rel_residual = 1.0000E-02 + +# Density prolongation method (limit, linear, linear_cons, sparse): +prolong_density = 'limit' + +# Refine if alpha*dx is larger than this value: +refine_adx = 1.0000E+00 + +# For refinement, use alpha(f * E)/f, where f is this factor: +refine_adx_fac = 1.0000E+00 + +# The refinement buffer width in cells (around flagged cells): +refine_buffer_width = 4 + +# Refine if the curvature in phi is larger than this value: +refine_cphi = 1.0000E+99 + +# Ensure grid spacing around electrode is less than this value: +refine_electrode_dx = 5.0000E-06 + +# Refine until dx is smaller than this factor times the seed width: +refine_init_fac = 2.5000E-01 + +# Refine around initial conditions up to this time: +refine_init_time = 1.0000E-08 + +# Refine regions at most up to this grid spacing: +refine_limits_dr = 1.0000E+99 + +# Maximum coordinate of the refinement limits: +refine_limits_rmax = 0.0000E+00 0.0000E+00 + +# Minimum coordinate of the refinement limits: +refine_limits_rmin = 0.0000E+00 0.0000E+00 + +# The grid spacing will always be smaller than this value: +refine_max_dx = 4.0000E-03 + +# Minimum electron density for adding grid refinement: +refine_min_dens = -1.0000E+99 + +# The grid spacing will always be larger than this value: +refine_min_dx = 1.0000E-07 + +# The number of steps after which the mesh is updated: +refine_per_steps = 2 + +# Refine regions up to this grid spacing: +refine_regions_dr = 1.0000E+99 + +# Maximum coordinate of the refinement regions: +refine_regions_rmax = 0.0000E+00 0.0000E+00 + +# Minimum coordinate of the refinement regions: +refine_regions_rmin = 0.0000E+00 0.0000E+00 + +# Refine regions up to this simulation time: +refine_regions_tstop = 1.0000E+99 + +# Seed for random numbers; if all zero, generate randomly: +rng_seed = 8123 91234 12399 293434 + +# Type of seed: neutral (0), ions (1) or electrons (-1): +seed_charge_type = 0 + +# Initial density of the seed (1/m3): +seed_density = 1.0000E+14 + +# Fall-off type for seed (sigmoid, gaussian, smoothstep, step, laser): +seed_falloff = 'gaussian' + +# The relative start position of the initial seed: +seed_rel_r0 = 0.0000E+00 6.0000E-01 + +# The relative end position of the initial seed: +seed_rel_r1 = 0.0000E+00 6.5000E-01 + +# Seed width (m): +seed_width = 1.0000E-04 + +[silo] + # Write silo output files every N outputs: + per_outputs = 1 + +# Write silo output: +silo_write = T + +# Boundary condition for the plasma species: +species_boundary_condition = 'neumann_zero' + +[table_data] + # Input interpolation method (linear, cubic_spline): + input_interpolation = 'linear' + + # Maximal field (in Td) for the rate coeff. lookup table: + max_townsend = 1.0000E+03 + + # Minimal field (in Td) for the rate coeff. lookup table: + min_townsend = 1.0000E+00 + + # Size of the lookup table for reaction rates: + size = 1000 + + # x-spacing for lookup table (linear, quadratic): + xspacing = 'quadratic' + +# Time integrator (use arbitrary value to see options): +time_integrator = 'heuns_method' + +# Whether to include an electrode: +use_electrode = T + +# Whether to use a gas density gradient: +use_gradient = F + +# Variables below have default values + +# Names of custom species for the background density: +background_species = + +# The size of the coarse grid: +coarse_grid_size = -1 -1 + +[cross] + # Use this many points for cross-section data: + npoints = 500 + + # Integrate up to this r value: + rmax = 2.0000E-03 + + # Write integral over cross-section data output: + write = F + +# Allow derefinement if the curvature in phi is smaller than this value: +derefine_cphi = 1.0000E+99 + +[dielectric] + # Secondary electron emission coefficient for positive ion impact: + gamma_se_ion = 1.0000E-01 + + # Secondary electron emission coefficient for high energy photons: + gamma_se_ph_highenergy = 1.0000E-01 + + # Secondary electron emission coefficient for low energy photons: + gamma_se_ph_lowenergy = 1.0000E-01 + + # Maximum travel distance for testing boundary intersection: + photon_step_length = 1.0000E-03 + + # Assume photons are not absorbed for photoemission computation: + photons_no_absorption = F + + # preset nonuniform surface charge: + preset_charge = 0.0000E+00 + + # The distribution of nonuniform surface charge: + preset_charge_distribution = 0.0000E+00 + + # Output surface related information: + write = F + +# The origin of the domain (m): +domain_origin = 0.0000E+00 0.0000E+00 + +# CFL number to use: +dt_cfl_number = -1.0000+100 + +# The (initial) vertical applied electric field (V/m): +field_amplitude = -1.0000+100 + +[field_maxima] + # Minimal distance (m) between electric field maxima: + distance = 0.0000E+00 + + # Threshold value (V/m) for electric field maxima: + threshold = 0.0000E+00 + + # Output electric field maxima and their locations: + write = F + +[fixes] + # Enable flux limiting, but prevent field from exceeding this value: + drt_max_field = 1.0000+100 + +[gas] + # The gas temperature (Kelvin): + temperature = 3.0000E+02 + + +[lineout] + # Write output along a line: + write = F + +# Stop multigrid when residual is smaller than this factor times max(|rhs|): +multigrid_max_rel_residual = 1.0000E-04 + +# Number of V-cycles to perform per time step: +multigrid_num_vcycles = 2 + +[output] + # Electron density threshold (1/m3, will be scaled by N): + density_threshold = 1.0000E+18 + + # Output the electron conduction current (can also be computed in Visit as -gradient(phi) * sigma): + electron_current = T + + # Maximum refinement level for output: + max_lvl = 100 + +[photoe] + # Whether photoemission is enabled: + enabled = F + + # Update photoemission every N time step: + per_steps = 10 + +[photoi] + # Which excited species to use when photoi%source_type = from_species: + excited_species = 'UNDEFINED' + + # Photoemission time delay in case photoi_source_type is 'from_species': + photoemission_time = 0.0000E+00 + + # Photoionization quenching pressure (bar): + quenching_pressure = 4.0000E-02 + + # Which species is ionized by photoionization: + species = 'O2_plus' + +[photoi_helmh] + # Weights corresponding to the lambdas; unit 1/(m bar)^2: + coeffs = + + # Lambdas to use in Helmholtz eq; unit 1/(m bar): + lambdas = + +[photoi_mc] + # At which grid spacing photons are absorbed compared to their mean distance: + absorp_fac = 2.5000E-01 + + # Whether a constant grid spacing is used for photoionization: + const_dx = T + + # Minimum grid spacing for photoionization: + min_dx = 1.0000E-09 + + # Minimal photon weight (default: 1.0): + min_weight = 1.0000E+00 + + # Maximum number of discrete photons to use: + num_photons = 100000 + + # Whether physical photons are used: + physical_photons = T + +[plane] + # Write uniform output in a plane: + write = F + +# Whether to limit plasma reactions to a certain region: +plasma_region_enabled = F + +# Limit plasma reactions to coordinates between rmin and rmax: +plasma_region_rmax = 1.0000+100 1.0000+100 + +# Limit plasma reactions to coordinates between rmin and rmax: +plasma_region_rmin = -1.0000+100 -1.0000+100 + +# Start refining electrode some time before the start of a new pulse: +refine_prepulse_time = 1.0000E-09 + +# Use effective alpha (minus attachment) for refinement: +refine_use_alpha_effective = F + +# If set, restart simulation from a previous .dat file: +restart_from_file = 'UNDEFINED' + +# Names of custom species for the first seed: +seed1_species = + +# Initial density of the seed at other endpoint (1/m3): +seed_density2 = 1.0000E+14 + +# Stochastic background density (1/m3): +stochastic_density = 0.0000E+00 + +# Whether a dielectric is used (experimental): +use_dielectric = F + +# Whether the length of the streamer is used to end the simulation: +use_end_streamer_length = F +