Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better handling of wall boundary conditions in implicit electron timesteps #302

Merged
merged 11 commits into from
Jan 12, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
[r]
ngrid = 1
nelement = 1

[evolve_moments]
parallel_pressure = true
density = true
moments_conservation = true
parallel_flow = true

[reactions]
electron_ionization_frequency = 0.0
ionization_frequency = 0.5
charge_exchange_frequency = 0.75

[vz]
ngrid = 6
discretization = "gausslegendre_pseudospectral"
nelement = 31
L = 36.0
element_spacing_option = "coarse_tails"
bc = "zero"

[ion_species_1]
initial_temperature = 0.1
initial_density = 1.0

[krook_collisions]
use_krook = true

[vpa]
ngrid = 6
discretization = "gausslegendre_pseudospectral"
nelement = 31
L = 30.0
element_spacing_option = "coarse_tails"
bc = "zero"

[z]
ngrid = 5
discretization = "gausslegendre_pseudospectral"
nelement = 32
nelement_local = 4
bc = "wall"
element_spacing_option = "sqrt"

[vpa_IC_ion_species_1]
initialization_option = "gaussian"
density_amplitude = 1.0
temperature_amplitude = 0.0
density_phase = 0.0
upar_amplitude = 0.0
temperature_phase = 0.0
upar_phase = 0.0

[z_IC_neutral_species_1]
initialization_option = "gaussian"
temperature_amplitude = 0.0
density_amplitude = 0.001
density_phase = 0.0
upar_amplitude = -1.0
temperature_phase = 0.0
upar_phase = 0.0

[composition]
T_wall = 0.1
T_e = 0.2
electron_physics = "kinetic_electrons"
recycling_fraction = 0.5
n_ion_species = 1
n_neutral_species = 1

[vz_IC_neutral_species_1]
initialization_option = "gaussian"
density_amplitude = 1.0
temperature_amplitude = 0.0
density_phase = 0.0
upar_amplitude = 0.0
temperature_phase = 0.0
upar_phase = 0.0

[z_IC_ion_species_1]
initialization_option = "gaussian"
density_amplitude = 0.001
temperature_amplitude = 0.0
density_phase = 0.0
upar_amplitude = 1.0
temperature_phase = 0.0
upar_phase = 0.0

[neutral_species_1]
initial_temperature = 1.0
initial_density = 1.0

[timestepping]
type = "KennedyCarpenterARK324"
implicit_electron_advance = false
implicit_electron_ppar = true
implicit_ion_advance = false
implicit_vpa_advection = false
nstep = 1000000
dt = 1.0e-5
nwrite = 1000
nwrite_dfns = 1000
steady_state_residual = true
converged_residual_value = 1.0e-3

#write_after_fixed_step_count = true
#nstep = 1
#nwrite = 1
#nwrite_dfns = 1

[electron_timestepping]
nstep = 5000000
#nstep = 1
dt = 1.0e-5
#maximum_dt = 1.0e-8
nwrite = 10000
nwrite_dfns = 100000
#type = "SSPRK4"
type = "Fekete4(3)"
rtol = 1.0e-3
atol = 1.0e-14
minimum_dt = 1.0e-9
decrease_dt_iteration_threshold = 100
increase_dt_iteration_threshold = 20
cap_factor_ion_dt = 10.0
initialization_residual_value = 2.5
converged_residual_value = 1.0e-2
include_wall_bc_in_preconditioner = true

#debug_io = 1

[nonlinear_solver]
nonlinear_max_iterations = 100
rtol = 1.0e-6 #1.0e-8
atol = 1.0e-14 #1.0e-16
linear_restart = 5
preconditioner_update_interval = 100

[ion_source_1]
active = true
z_profile = "gaussian"
z_width = 0.125
source_strength = 2.0
source_T = 2.0

[ion_numerical_dissipation]
#vpa_dissipation_coefficient = 1.0e-1
#vpa_dissipation_coefficient = 1.0e-2
#vpa_dissipation_coefficient = 1.0e-3
force_minimum_pdf_value = 0.0

[electron_numerical_dissipation]
vpa_dissipation_coefficient = 2.0
force_minimum_pdf_value = 0.0

[neutral_numerical_dissipation]
#vz_dissipation_coefficient = 1.0e-1
#vz_dissipation_coefficient = 1.0e-2
#vz_dissipation_coefficient = 1.0e-3
force_minimum_pdf_value = 0.0
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
[r]
ngrid = 1
nelement = 1

[evolve_moments]
parallel_pressure = true
density = true
moments_conservation = true
parallel_flow = true

[reactions]
electron_ionization_frequency = 0.0
ionization_frequency = 0.5
charge_exchange_frequency = 0.75

[vz]
ngrid = 6
discretization = "gausslegendre_pseudospectral"
nelement = 31
L = 36.0
element_spacing_option = "coarse_tails"
bc = "zero"

[ion_species_1]
initial_temperature = 0.1
initial_density = 1.0

[krook_collisions]
use_krook = true

[vpa]
ngrid = 6
discretization = "gausslegendre_pseudospectral"
nelement = 31
L = 30.0
element_spacing_option = "coarse_tails"
bc = "zero"

[z]
ngrid = 5
discretization = "gausslegendre_pseudospectral"
nelement = 32
nelement_local = 4
bc = "wall"
element_spacing_option = "sqrt"

[vpa_IC_ion_species_1]
initialization_option = "gaussian"
density_amplitude = 1.0
temperature_amplitude = 0.0
density_phase = 0.0
upar_amplitude = 0.0
temperature_phase = 0.0
upar_phase = 0.0

[z_IC_neutral_species_1]
initialization_option = "gaussian"
temperature_amplitude = 0.0
density_amplitude = 0.001
density_phase = 0.0
upar_amplitude = -1.0
temperature_phase = 0.0
upar_phase = 0.0

[composition]
T_wall = 0.1
T_e = 0.2
electron_physics = "kinetic_electrons"
recycling_fraction = 0.5
n_ion_species = 1
n_neutral_species = 1

[vz_IC_neutral_species_1]
initialization_option = "gaussian"
density_amplitude = 1.0
temperature_amplitude = 0.0
density_phase = 0.0
upar_amplitude = 0.0
temperature_phase = 0.0
upar_phase = 0.0

[z_IC_ion_species_1]
initialization_option = "gaussian"
density_amplitude = 0.001
temperature_amplitude = 0.0
density_phase = 0.0
upar_amplitude = 1.0
temperature_phase = 0.0
upar_phase = 0.0

[neutral_species_1]
initial_temperature = 1.0
initial_density = 1.0

[timestepping]
type = "KennedyCarpenterARK324"
implicit_electron_advance = false
implicit_electron_ppar = true
implicit_ion_advance = false
implicit_vpa_advection = false
nstep = 1000000
dt = 1.0e-5
nwrite = 1000
nwrite_dfns = 1000
steady_state_residual = true
converged_residual_value = 1.0e-3

#write_after_fixed_step_count = true
#nstep = 1
#nwrite = 1
#nwrite_dfns = 1

[electron_timestepping]
nstep = 5000000
#nstep = 1
dt = 1.0e-5
#maximum_dt = 1.0e-8
nwrite = 10000
nwrite_dfns = 100000
#type = "SSPRK4"
type = "Fekete4(3)"
rtol = 1.0e-3
atol = 1.0e-14
minimum_dt = 1.0e-9
decrease_dt_iteration_threshold = 100
increase_dt_iteration_threshold = 20
cap_factor_ion_dt = 10.0
initialization_residual_value = 2.5
converged_residual_value = 1.0e-2

#debug_io = 1

[nonlinear_solver]
nonlinear_max_iterations = 100
rtol = 1.0e-6 #1.0e-8
atol = 1.0e-14 #1.0e-16
linear_restart = 5
preconditioner_update_interval = 100

[ion_source_1]
active = true
z_profile = "gaussian"
z_width = 0.125
source_strength = 2.0
source_T = 2.0

[ion_numerical_dissipation]
#vpa_dissipation_coefficient = 1.0e-1
#vpa_dissipation_coefficient = 1.0e-2
#vpa_dissipation_coefficient = 1.0e-3
force_minimum_pdf_value = 0.0

[electron_numerical_dissipation]
vpa_dissipation_coefficient = 2.0
force_minimum_pdf_value = 0.0

[neutral_numerical_dissipation]
#vz_dissipation_coefficient = 1.0e-1
#vz_dissipation_coefficient = 1.0e-2
#vz_dissipation_coefficient = 1.0e-3
force_minimum_pdf_value = 0.0
Loading
Loading