diff --git a/examples/wall-bc/wall-bc_no-neutrals.toml b/examples/wall-bc/wall-bc_no-neutrals.toml new file mode 100644 index 000000000..43af50cc9 --- /dev/null +++ b/examples/wall-bc/wall-bc_no-neutrals.toml @@ -0,0 +1,85 @@ +steady_state_residual = true +converged_residual_value = 1.0e-3 +runtime_plots = true +n_ion_species = 1 +n_neutral_species = 0 +boltzmann_electron_response = true +evolve_moments_density = false +evolve_moments_parallel_flow = false +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +recycling_fraction = 0.5 +krook_collisions_option = "reference_parameters" +T_e = 0.2 # 1.0 +T_wall = 0.1 +initial_density1 = 1.0 +initial_temperature1 = 1.0 +z_IC_option1 = "gaussian" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 1.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +vpa_IC_option1 = "gaussian" +vpa_IC_density_amplitude1 = 1.0 +vpa_IC_density_phase1 = 0.0 +vpa_IC_upar_amplitude1 = 0.0 +vpa_IC_upar_phase1 = 0.0 +vpa_IC_temperature_amplitude1 = 0.0 +vpa_IC_temperature_phase1 = 0.0 +initial_density2 = 1.0 +initial_temperature2 = 1.0 +z_IC_option2 = "gaussian" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = -1.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +vpa_IC_option2 = "gaussian" +vpa_IC_density_amplitude2 = 1.0 +vpa_IC_density_phase2 = 0.0 +vpa_IC_upar_amplitude2 = 0.0 +vpa_IC_upar_phase2 = 0.0 +vpa_IC_temperature_amplitude2 = 0.0 +vpa_IC_temperature_phase2 = 0.0 +#charge_exchange_frequency = 0.75 +#ionization_frequency = 0.5 +nstep = 100000 +dt = 5.0e-4 +nwrite = 5000 +nwrite_dfns = 5000 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 9 +z_nelement = 32 +#z_nelement_local = 4 +z_bc = "wall" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 10 +vpa_nelement = 63 +vpa_L = 18.0 +vpa_bc = "zero" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 10 +vz_nelement = 63 +vz_L = 18.0 +vz_bc = "zero" +vz_discretization = "chebyshev_pseudospectral" + +[ion_source] +active = true +z_profile = "gaussian" +z_width = 0.125 +source_strength = 8.0 +source_T = 1.0 + +[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 diff --git a/examples/wall-bc/wall-bc_no-neutrals_split1.toml b/examples/wall-bc/wall-bc_no-neutrals_split1.toml new file mode 100644 index 000000000..ab5c4c1d5 --- /dev/null +++ b/examples/wall-bc/wall-bc_no-neutrals_split1.toml @@ -0,0 +1,85 @@ +steady_state_residual = true +converged_residual_value = 1.0e-3 +runtime_plots = true +n_ion_species = 1 +n_neutral_species = 0 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = false +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +recycling_fraction = 0.5 +krook_collisions_option = "reference_parameters" +T_e = 0.2 # 1.0 +T_wall = 0.1 +initial_density1 = 1.0 +initial_temperature1 = 1.0 +z_IC_option1 = "gaussian" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 1.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +vpa_IC_option1 = "gaussian" +vpa_IC_density_amplitude1 = 1.0 +vpa_IC_density_phase1 = 0.0 +vpa_IC_upar_amplitude1 = 0.0 +vpa_IC_upar_phase1 = 0.0 +vpa_IC_temperature_amplitude1 = 0.0 +vpa_IC_temperature_phase1 = 0.0 +initial_density2 = 1.0 +initial_temperature2 = 1.0 +z_IC_option2 = "gaussian" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = -1.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +vpa_IC_option2 = "gaussian" +vpa_IC_density_amplitude2 = 1.0 +vpa_IC_density_phase2 = 0.0 +vpa_IC_upar_amplitude2 = 0.0 +vpa_IC_upar_phase2 = 0.0 +vpa_IC_temperature_amplitude2 = 0.0 +vpa_IC_temperature_phase2 = 0.0 +#charge_exchange_frequency = 0.75 +#ionization_frequency = 0.5 +nstep = 100000 +dt = 1.0e-4 +nwrite = 5000 +nwrite_dfns = 5000 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 9 +z_nelement = 32 +#z_nelement_local = 4 +z_bc = "wall" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 10 +vpa_nelement = 63 +vpa_L = 18.0 +vpa_bc = "zero" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 10 +vz_nelement = 63 +vz_L = 18.0 +vz_bc = "zero" +vz_discretization = "chebyshev_pseudospectral" + +[ion_source] +active = true +z_profile = "gaussian" +z_width = 0.125 +source_strength = 8.0 +source_T = 1.0 + +[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 diff --git a/examples/wall-bc/wall-bc_no-neutrals_split2.toml b/examples/wall-bc/wall-bc_no-neutrals_split2.toml new file mode 100644 index 000000000..12732f289 --- /dev/null +++ b/examples/wall-bc/wall-bc_no-neutrals_split2.toml @@ -0,0 +1,85 @@ +steady_state_residual = true +converged_residual_value = 1.0e-3 +runtime_plots = true +n_ion_species = 1 +n_neutral_species = 0 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = true +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +recycling_fraction = 0.5 +krook_collisions_option = "reference_parameters" +T_e = 0.2 # 1.0 +T_wall = 0.1 +initial_density1 = 1.0 +initial_temperature1 = 1.0 +z_IC_option1 = "gaussian" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 1.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +vpa_IC_option1 = "gaussian" +vpa_IC_density_amplitude1 = 1.0 +vpa_IC_density_phase1 = 0.0 +vpa_IC_upar_amplitude1 = 0.0 +vpa_IC_upar_phase1 = 0.0 +vpa_IC_temperature_amplitude1 = 0.0 +vpa_IC_temperature_phase1 = 0.0 +initial_density2 = 1.0 +initial_temperature2 = 1.0 +z_IC_option2 = "gaussian" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = -1.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +vpa_IC_option2 = "gaussian" +vpa_IC_density_amplitude2 = 1.0 +vpa_IC_density_phase2 = 0.0 +vpa_IC_upar_amplitude2 = 0.0 +vpa_IC_upar_phase2 = 0.0 +vpa_IC_temperature_amplitude2 = 0.0 +vpa_IC_temperature_phase2 = 0.0 +#charge_exchange_frequency = 0.75 +#ionization_frequency = 0.5 +nstep = 100000 +dt = 1.0e-4 +nwrite = 5000 +nwrite_dfns = 5000 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 9 +z_nelement = 32 +#z_nelement_local = 4 +z_bc = "wall" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 10 +vpa_nelement = 63 +vpa_L = 18.0 +vpa_bc = "zero" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 10 +vz_nelement = 63 +vz_L = 18.0 +vz_bc = "zero" +vz_discretization = "chebyshev_pseudospectral" + +[ion_source] +active = true +z_profile = "gaussian" +z_width = 0.125 +source_strength = 8.0 +source_T = 1.0 + +[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 diff --git a/examples/wall-bc/wall-bc_no-neutrals_split3.toml b/examples/wall-bc/wall-bc_no-neutrals_split3.toml new file mode 100644 index 000000000..c966d47b2 --- /dev/null +++ b/examples/wall-bc/wall-bc_no-neutrals_split3.toml @@ -0,0 +1,85 @@ +steady_state_residual = true +converged_residual_value = 1.0e-3 +runtime_plots = true +n_ion_species = 1 +n_neutral_species = 0 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = true +evolve_moments_parallel_pressure = true +evolve_moments_conservation = true +recycling_fraction = 0.5 +krook_collisions_option = "reference_parameters" +T_e = 0.2 # 1.0 +T_wall = 0.1 +initial_density1 = 1.0 +initial_temperature1 = 1.0 +z_IC_option1 = "gaussian" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 1.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +vpa_IC_option1 = "gaussian" +vpa_IC_density_amplitude1 = 1.0 +vpa_IC_density_phase1 = 0.0 +vpa_IC_upar_amplitude1 = 0.0 +vpa_IC_upar_phase1 = 0.0 +vpa_IC_temperature_amplitude1 = 0.0 +vpa_IC_temperature_phase1 = 0.0 +initial_density2 = 1.0 +initial_temperature2 = 1.0 +z_IC_option2 = "gaussian" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = -1.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +vpa_IC_option2 = "gaussian" +vpa_IC_density_amplitude2 = 1.0 +vpa_IC_density_phase2 = 0.0 +vpa_IC_upar_amplitude2 = 0.0 +vpa_IC_upar_phase2 = 0.0 +vpa_IC_temperature_amplitude2 = 0.0 +vpa_IC_temperature_phase2 = 0.0 +#charge_exchange_frequency = 0.75 +#ionization_frequency = 0.5 +nstep = 100000 +dt = 1.0e-4 +nwrite = 5000 +nwrite_dfns = 5000 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 9 +z_nelement = 32 +#z_nelement_local = 4 +z_bc = "wall" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 10 +vpa_nelement = 63 +vpa_L = 18.0 +vpa_bc = "zero" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 10 +vz_nelement = 63 +vz_L = 18.0 +vz_bc = "zero" +vz_discretization = "chebyshev_pseudospectral" + +[ion_source] +active = true +z_profile = "gaussian" +z_width = 0.125 +source_strength = 8.0 +source_T = 1.0 + +[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 diff --git a/examples/wall-bc/wall-bc_volumerecycle.toml b/examples/wall-bc/wall-bc_volumerecycle.toml new file mode 100644 index 000000000..843f62ccb --- /dev/null +++ b/examples/wall-bc/wall-bc_volumerecycle.toml @@ -0,0 +1,92 @@ +steady_state_residual = true +converged_residual_value = 1.0e-3 +#runtime_plots = true +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = false +evolve_moments_parallel_flow = false +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +recycling_fraction = 0.25 +krook_collisions_option = "reference_parameters" +T_e = 0.2 # 1.0 +T_wall = 0.1 +initial_density1 = 1.0 +initial_temperature1 = 1.0 +z_IC_option1 = "gaussian" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 1.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +vpa_IC_option1 = "gaussian" +vpa_IC_density_amplitude1 = 1.0 +vpa_IC_density_phase1 = 0.0 +vpa_IC_upar_amplitude1 = 0.0 +vpa_IC_upar_phase1 = 0.0 +vpa_IC_temperature_amplitude1 = 0.0 +vpa_IC_temperature_phase1 = 0.0 +initial_density2 = 1.0 +initial_temperature2 = 1.0 +z_IC_option2 = "gaussian" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = -1.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +vpa_IC_option2 = "gaussian" +vpa_IC_density_amplitude2 = 1.0 +vpa_IC_density_phase2 = 0.0 +vpa_IC_upar_amplitude2 = 0.0 +vpa_IC_upar_phase2 = 0.0 +vpa_IC_temperature_amplitude2 = 0.0 +vpa_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = 0.75 +ionization_frequency = 0.5 +constant_ionization_rate = false +nstep = 1000000 +dt = 3.0e-5 +nwrite = 10000 +nwrite_dfns = 10000 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 9 +z_nelement = 32 +#z_nelement_local = 4 +z_bc = "wall" +z_discretization = "chebyshev_pseudospectral" +z_element_spacing_option = "sqrt" +vpa_ngrid = 10 +vpa_nelement = 63 +vpa_L = 18.0 +vpa_bc = "zero" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 10 +vz_nelement = 63 +vz_L = 18.0 +vz_bc = "zero" +vz_discretization = "chebyshev_pseudospectral" + +[ion_source] +active = true +z_profile = "gaussian" +z_width = 0.125 +source_strength = 2.0 +source_T = 2.0 + +[neutral_source] +active = true +controller_type = "recycling" +recycling_controller_fraction = 0.25 + +[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 diff --git a/examples/wall-bc/wall-bc_volumerecycle_split1.toml b/examples/wall-bc/wall-bc_volumerecycle_split1.toml new file mode 100644 index 000000000..d698c53fd --- /dev/null +++ b/examples/wall-bc/wall-bc_volumerecycle_split1.toml @@ -0,0 +1,92 @@ +steady_state_residual = true +converged_residual_value = 1.0e-3 +#runtime_plots = true +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = false +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +recycling_fraction = 0.25 +krook_collisions_option = "reference_parameters" +T_e = 0.2 # 1.0 +T_wall = 0.1 +initial_density1 = 1.0 +initial_temperature1 = 1.0 +z_IC_option1 = "gaussian" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 1.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +vpa_IC_option1 = "gaussian" +vpa_IC_density_amplitude1 = 1.0 +vpa_IC_density_phase1 = 0.0 +vpa_IC_upar_amplitude1 = 0.0 +vpa_IC_upar_phase1 = 0.0 +vpa_IC_temperature_amplitude1 = 0.0 +vpa_IC_temperature_phase1 = 0.0 +initial_density2 = 1.0 +initial_temperature2 = 1.0 +z_IC_option2 = "gaussian" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = -1.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +vpa_IC_option2 = "gaussian" +vpa_IC_density_amplitude2 = 1.0 +vpa_IC_density_phase2 = 0.0 +vpa_IC_upar_amplitude2 = 0.0 +vpa_IC_upar_phase2 = 0.0 +vpa_IC_temperature_amplitude2 = 0.0 +vpa_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = 0.75 +ionization_frequency = 0.5 +constant_ionization_rate = false +nstep = 1000000 +dt = 3.0e-5 +nwrite = 10000 +nwrite_dfns = 10000 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 9 +z_nelement = 32 +#z_nelement_local = 4 +z_bc = "wall" +z_discretization = "chebyshev_pseudospectral" +z_element_spacing_option = "sqrt" +vpa_ngrid = 10 +vpa_nelement = 63 +vpa_L = 18.0 +vpa_bc = "zero" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 10 +vz_nelement = 63 +vz_L = 18.0 +vz_bc = "zero" +vz_discretization = "chebyshev_pseudospectral" + +[ion_source] +active = true +z_profile = "gaussian" +z_width = 0.125 +source_strength = 2.0 +source_T = 2.0 + +[neutral_source] +active = true +controller_type = "recycling" +recycling_controller_fraction = 0.25 + +[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 diff --git a/examples/wall-bc/wall-bc_volumerecycle_split2.toml b/examples/wall-bc/wall-bc_volumerecycle_split2.toml new file mode 100644 index 000000000..aad238c3f --- /dev/null +++ b/examples/wall-bc/wall-bc_volumerecycle_split2.toml @@ -0,0 +1,92 @@ +steady_state_residual = true +converged_residual_value = 1.0e-3 +#runtime_plots = true +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = true +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +recycling_fraction = 0.25 +krook_collisions_option = "reference_parameters" +T_e = 0.2 # 1.0 +T_wall = 0.1 +initial_density1 = 1.0 +initial_temperature1 = 1.0 +z_IC_option1 = "gaussian" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 1.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +vpa_IC_option1 = "gaussian" +vpa_IC_density_amplitude1 = 1.0 +vpa_IC_density_phase1 = 0.0 +vpa_IC_upar_amplitude1 = 0.0 +vpa_IC_upar_phase1 = 0.0 +vpa_IC_temperature_amplitude1 = 0.0 +vpa_IC_temperature_phase1 = 0.0 +initial_density2 = 1.0 +initial_temperature2 = 1.0 +z_IC_option2 = "gaussian" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = -1.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +vpa_IC_option2 = "gaussian" +vpa_IC_density_amplitude2 = 1.0 +vpa_IC_density_phase2 = 0.0 +vpa_IC_upar_amplitude2 = 0.0 +vpa_IC_upar_phase2 = 0.0 +vpa_IC_temperature_amplitude2 = 0.0 +vpa_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = 0.75 +ionization_frequency = 0.5 +constant_ionization_rate = false +nstep = 1000000 +dt = 3.0e-5 +nwrite = 10000 +nwrite_dfns = 10000 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 9 +z_nelement = 32 +#z_nelement_local = 4 +z_bc = "wall" +z_discretization = "chebyshev_pseudospectral" +z_element_spacing_option = "sqrt" +vpa_ngrid = 10 +vpa_nelement = 63 +vpa_L = 18.0 +vpa_bc = "zero" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 10 +vz_nelement = 63 +vz_L = 18.0 +vz_bc = "zero" +vz_discretization = "chebyshev_pseudospectral" + +[ion_source] +active = true +z_profile = "gaussian" +z_width = 0.125 +source_strength = 2.0 +source_T = 2.0 + +[neutral_source] +active = true +controller_type = "recycling" +recycling_controller_fraction = 0.25 + +[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 diff --git a/examples/wall-bc/wall-bc_volumerecycle_split3.toml b/examples/wall-bc/wall-bc_volumerecycle_split3.toml new file mode 100644 index 000000000..864822dd1 --- /dev/null +++ b/examples/wall-bc/wall-bc_volumerecycle_split3.toml @@ -0,0 +1,92 @@ +steady_state_residual = true +converged_residual_value = 1.0e-3 +#runtime_plots = true +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = true +evolve_moments_parallel_pressure = true +evolve_moments_conservation = true +recycling_fraction = 0.25 +krook_collisions_option = "reference_parameters" +T_e = 0.2 # 1.0 +T_wall = 0.1 +initial_density1 = 1.0 +initial_temperature1 = 1.0 +z_IC_option1 = "gaussian" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 1.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +vpa_IC_option1 = "gaussian" +vpa_IC_density_amplitude1 = 1.0 +vpa_IC_density_phase1 = 0.0 +vpa_IC_upar_amplitude1 = 0.0 +vpa_IC_upar_phase1 = 0.0 +vpa_IC_temperature_amplitude1 = 0.0 +vpa_IC_temperature_phase1 = 0.0 +initial_density2 = 1.0 +initial_temperature2 = 1.0 +z_IC_option2 = "gaussian" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = -1.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +vpa_IC_option2 = "gaussian" +vpa_IC_density_amplitude2 = 1.0 +vpa_IC_density_phase2 = 0.0 +vpa_IC_upar_amplitude2 = 0.0 +vpa_IC_upar_phase2 = 0.0 +vpa_IC_temperature_amplitude2 = 0.0 +vpa_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = 0.75 +ionization_frequency = 0.5 +constant_ionization_rate = false +nstep = 1000000 +dt = 1.0e-5 +nwrite = 10000 +nwrite_dfns = 10000 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 9 +z_nelement = 32 +#z_nelement_local = 4 +z_bc = "wall" +z_discretization = "chebyshev_pseudospectral" +z_element_spacing_option = "sqrt" +vpa_ngrid = 10 +vpa_nelement = 63 +vpa_L = 30.0 +vpa_bc = "zero" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 10 +vz_nelement = 63 +vz_L = 30.0 +vz_bc = "zero" +vz_discretization = "chebyshev_pseudospectral" + +[ion_source] +active = true +z_profile = "gaussian" +z_width = 0.125 +source_strength = 2.0 +source_T = 2.0 + +[neutral_source] +active = true +controller_type = "recycling" +recycling_controller_fraction = 0.25 + +[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 diff --git a/publication_inputs/2023_EFTC_jto-poster/Project.toml b/publication_inputs/2023_EFTC_jto-poster/Project.toml new file mode 100644 index 000000000..d812df24c --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/Project.toml @@ -0,0 +1,4 @@ +[deps] +LaTeXStrings = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" +MathTeXEngine = "0a4f8689-d25c-4efe-a92b-7142dfc1aa53" +Optim = "429524aa-4258-5aef-a3af-852621145aeb" diff --git a/publication_inputs/2023_EFTC_jto-poster/README.md b/publication_inputs/2023_EFTC_jto-poster/README.md new file mode 100644 index 000000000..b31eb28ae --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/README.md @@ -0,0 +1,113 @@ +Introduction +============ + +The inputs and scripts in this directory were used to produce the figures for +John Omotani's poster at EFTC 2023. This README explains how to reproduce the +runs and plots. Note that the inputs in this directory are not tested +automatically, so they may be broken by future updates to `moment_kinetics`. +They were tested using the branch at +[PR #147](https://github.com/mabarnes/moment_kinetics/pull/147), using +julia-1.9.3 and the Manifest.toml file that was temporarily committed in +344b559c2e79b6586e6fdb8016ee4863c672a3f4. + +Sound wave +========== + +Runs +---- + +All the runs for the sound-wave plots can be done quickly in serial. The +parameter scan functionality allows multiple processes to be used to launch +several runs simultaneously (using Distributed.jl rather than MPI). Here we use +8 processes as an example. + +In the top-level `moment_kinetics` directory, run +```julia +$ julia --project -p 8 +julia> include("publication_inputs/2023_EFTC_jto-poster/sound-wave/run-all-scans.jl") +``` + +Plots +----- + +Note the steps here should be run after launching `julia` in the directory +containing this README.md, not in the top level `moment_kinetics` directory. + +### Setup + +The analysis script in this directory uses James Cook's +PlasmaDispersionFunctions.jl package, as this is more accurate than a naive +implementation of the plasma dispersion function using SpecialFuncions.jl. + +We also have to add the `moment_kinetics` package from the top level, which is +`../..` relative to this directory. + +To set everything up, do +```julia +$ julia --project +julia>] +(2023_EFTC_jto-poster) pkg> add https://github.com/jwscook/PlasmaDispersionFunctions.jl +(2023_EFTC_jto-poster) pkg> dev ../.. +(2023_EFTC_jto-poster) pkg>^D +$ +``` + +You might also need to repeat any setup steps for MPI and HDF5 (or just copy +the `LocalPreferences.toml` file from the top-level `moment_kinetics` +directory). + +### Usage + +Import the script, do some post-processing, and run `make_plots()` (we again +use `-p 8` as the `post_process_all_scans()` step can run post processing for +several directories simultaneously, although `make_plots()` is serial) +``` +$ julia --project -p 8 +julia> include("sound-wave/post_process_scans.jl") +julia> post_process_all_scans() +julia> include("sound-wave/plot_dispersion_relation.jl") +julia> make_plots() +``` + +Wall BC +======= + +Runs +---- + +[You might want to use MPI to speed up the runs, see the main `moment_kinetics` +documentation.] + +We run the 'full-f' version from scratch, then restart the moment-kinetic +version from that to save time. + +Note that the plots shown on the poster used a uniform element spacing, but the +'split3' run does not quite converge to residuals less than 1e-3 with a uniform +grid for the resolutions used here, due to some numerical noise in the elements +next to the sheath edge boundaries (i.e. the first and last element in z). +Using sqrt-scaled element sizes (`z_element_spacing_option = "sqrt"`) resolves +the solution near the sheath entrances better, and in that case the 'split3' +simulation does converge to residuals less than 1e-3, so this option is the one +set now in all the `wall-bc/wall-bc_recyclefraction0.5*.toml` input files (as +the 'split3' simulation needs to be restarted from a simulation that used the +sqrt-spaced grid to avoid numerical instability). + +In the top-level `moment_kinetics` directory, run +```julia +$ julia --project +julia> using moment_kinetics +julia> run_moment_kinetics("publication_inputs/2023_EFTC_jto-poster/wall-bc/wall-bc_recyclefraction0.5.toml") +julia> run_moment_kinetics("publication_inputs/2023_EFTC_jto-poster/wall-bc/wall-bc_recyclefraction0.5_split1.toml"; restart="runs/wall-bc_recyclefraction0.5/wall-bc_recyclefraction0.5.dfns.h5") +julia> run_moment_kinetics("publication_inputs/2023_EFTC_jto-poster/wall-bc/wall-bc_recyclefraction0.5_split2.toml"; restart="runs/wall-bc_recyclefraction0.5/wall-bc_recyclefraction0.5.dfns.h5") +julia> run_moment_kinetics("publication_inputs/2023_EFTC_jto-poster/wall-bc/wall-bc_recyclefraction0.5_split3.toml"; restart="runs/wall-bc_recyclefraction0.5/wall-bc_recyclefraction0.5.dfns.h5") +``` + +Plots +----- + +In the directory containing this README.md (after already doing the setup from +the 'Sound wave' section) run +```julia +$ julia --project +julia> include("wall-bc/wall-bc-plots.jl") +``` diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/plot_dispersion_relation.jl b/publication_inputs/2023_EFTC_jto-poster/sound-wave/plot_dispersion_relation.jl new file mode 100644 index 000000000..81b4e7fc9 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/plot_dispersion_relation.jl @@ -0,0 +1,527 @@ +#using moment_kinetics.makie_post_processing + +using CairoMakie +using DelimitedFiles +using LaTeXStrings +using MathTeXEngine +using Optim +using SpecialFunctions + +using PlasmaDispersionFunctions + +using moment_kinetics.parameter_scans + +const ext = ".png" +const plot_dir = "sound-wave" + +CairoMakie.activate!(; px_per_unit=4) +update_theme!(fontsize=24, fonts=(; regular=texfont(:text), bold=texfont(:bold), + italic=texfont(:italic), + bold_italic=texfont(:bolditalic))) + +""" +Equation (4.13) from Parra et al. "1D drift kinetic models with periodic +boundary conditions" (TN-01) +""" +function plasmaZ(zeta) + #return exp(-zeta^2)*sqrt(π)*(im - erfi(zeta)) + #return (sqrt(π)*exp(-zeta^2)*im - 2*dawson(zeta)) + return plasma_dispersion_function(zeta) +end + +# Only use one Lpar +const Lpar = 1.0 +const kpar = 2*π/Lpar + +""" +The solution of (4.7) for a complex frequency + +Extra `kwargs...` are passed to `optimize()`. +""" +function solve_dispersion_relation(ni, nn, Th, Te, Rin; initial_guesses=nothing, + n_solutions=1, kwargs...) + vth = sqrt(Th) # in moment_kinetics normalised units + + function zeta(omega) + return omega / (kpar * vth) + end + function zetain(omega) + return (omega + im*(ni+nn)*Rin) / (kpar * vth) + end + function Aii(omega) + return ( + 1 + Te/Th + ni/(ni+nn) * Te/Th * zeta(omega) * plasmaZ(zeta(omega)) + + nn/(ni+nn) * ((1 + Te/Th)*zetain(omega) - zeta(omega))*plasmaZ(zetain(omega)) + ) + end + function Ain(omega) + return -ni/(ni+nn) * (zetain(omega) - zeta(omega)) * plasmaZ(zetain(omega)) + end + function Ani(omega) + return - nn/(ni+nn) * (((1 + Te/Th)*zetain(omega) - zeta(omega)) * plasmaZ(zetain(omega)) + - Te/Th * zeta(omega) * plasmaZ(zeta(omega))) + end + function Ann(omega) + return 1 + ni/(ni+nn)*(zetain(omega) - zeta(omega)) * plasmaZ(zetain(omega)) + end + + function detA(omega) + return Aii(omega)*Ann(omega) - Ain(omega)*Ani(omega) + end + + omega_list = ComplexF64[] + omega = 0.0 + 0.0im + for i ∈ 1:n_solutions # find at most n_solutions solutions + if initial_guesses !== nothing && i <= length(initial_guesses) + initial_guess = [real(initial_guesses[i]), imag(initial_guesses[i])] + else + initial_guess = [0.0, 0.0] + end + function target(x) + omega = x[1] + im*x[2] + d = detA(omega) + # Push away from positive gamma (where there are no solutions) + d *= exp(0.1*imag(omega)) + for omega_solution ∈ omega_list + # Use (1 + 1/abs(omega - omega_solution))^2 because the zero-frequency + # solution gets picked up twice with 1/abs(omega - omega_solution)^1. + # Maybe that one is a double pole?? + d *= (1.0 + 1.0/abs(omega - omega_solution))^2 + end + return real(d * conj(d)) + end + result = optimize(target, initial_guess; g_tol=1.0e-40, kwargs...) + minimizer = result.minimizer + omega = minimizer[1] + im*minimizer[2] + if abs(detA(omega)) < 1.e-10 + push!(omega_list, omega) + end + if abs(detA(omega)) > 1.0e-1 + break + end + end + + #return detA, omega_list + return omega_list +end + +# For these parameters, solve_dispersion_relation() finds 3 solutions - a pair with the +# same decay rate and positive/negative frequency, and a zero-frequency mode (also +# decaying) +const default_parameters = (ni=1.0, nn=1.0, Th=1.0, Te=1.0, Ri=1.0) +const default_solution = solve_dispersion_relation(values(default_parameters)...; n_solutions=3) +const default_zero_frequency = first(omega for omega ∈ default_solution if abs(real(omega)) < 1e-5) +const default_positive_frequency = first(omega for omega ∈ default_solution if real(omega) > 1e-5) + +""" + get_sequence_vs_Ri(ni, nn, Th, Te; starting_omega) + +Get growth rate for the zero frequency mode for a range of Ri from 0 to 2 for the +parameters `ni`, `nn`, `Th`, `Te`. + +`starting_omega` gives the solution to start from (e.g. zero-frequency or +positive-frequency). + +Extra `kwargs...` are passed to `solve_dispersion_relation` +""" +function get_sequence_vs_Ri(ni, nn, Th, Te; starting_omega, kwargs...) + # Get cached results if they exist + cachedir = "omega_caches" + mkpath(cachedir) + is_zero = (abs(real(starting_omega)) < 1.e-10) + if is_zero + cachefile = joinpath(cachedir, "omega_zero_ni$(ni)_nn$(nn)_Th$(Th)_Te$(Te).cache") + else + cachefile = joinpath(cachedir, "omega_positive_ni$(ni)_nn$(nn)_Th$(Th)_Te$(Te).cache") + end + if isfile(cachefile) + results = readdlm(cachefile) + Ri_result = results[:,1] + omega_real = results[:,2] + gamma = results[:,3] + return Ri_result, omega_real, gamma + end + + # Get a starting point with Ri=1 + function get_param_sequence(value, default) + return collect(range(default, stop=value, length=100)) + end + + if abs(real(starting_omega)) < 1.0e-10 && ni == 0.0 + # The ni=0 case has funny behaviour with a transition at about Rin=4. + # Want to start following the solution from R>4. + Ri = 5.0 + else + Ri = 1.0 + end + + omega_initial = starting_omega + for (this_ni, this_nn, this_Th, this_Te, this_Ri) ∈ + zip(get_param_sequence(ni, default_parameters.ni), + get_param_sequence(nn, default_parameters.nn), + get_param_sequence(Th, default_parameters.Th), + get_param_sequence(Te, default_parameters.Te), + get_param_sequence(Ri, default_parameters.Ri)) + omega_initial = solve_dispersion_relation(this_ni, this_nn, this_Th, this_Te, + this_Ri; + initial_guesses=[omega_initial], + kwargs...)[1] + end + vth = sqrt(Th) + Ri_result = collect(0.0:0.001:2.0*π*vth) + omega_result = similar(Ri_result, ComplexF64) + omega_result .= NaN + startind = findfirst(x->abs(x-Ri)<1.e-8, Ri_result) + + # Go down from omega_initial + omega = omega_initial + for i ∈ startind:-1:1 + omega = solve_dispersion_relation(ni, nn, Th, Te, Ri_result[i]; initial_guesses=[omega], + kwargs...) + if length(omega) == 0 + # Failed to find solution + break + elseif (i < startind - 1 && abs(real(starting_omega)) < 1.e-10 && (imag(omega[1])-imag(omega_result[i+1])) * (imag(omega_result[startind-1])-imag(omega_result[startind])) < 0.0) + # Expect growth rate to be monotonic for zero frequency mode. Stop if it is not + break + end + omega = omega[1] + omega_result[i] = omega + end + + # Go up from omega_initial + omega = omega_initial + for i ∈ startind+1:length(Ri_result) + omega = solve_dispersion_relation(ni, nn, Th, Te, Ri_result[i]; initial_guesses=[omega], + kwargs...) + if length(omega) == 0 + # Failed to find solution + break + else + omega = omega[1] + end + #println("continuing omega up ", i, " ", omega) + omega_result[i] = omega + end + + # Cache the results + omega_real = real.(omega_result) + gamma = imag.(omega_result) + open(cachefile, "w") do io + writedlm(io, [Ri_result omega_real gamma]) + end + return Ri_result, omega_real, gamma +end + +function plot_zero_frequency!(ax, ni, nn, Th, Te; kwargs...) + println("plotting zero frequency for ni=$ni, nn=$nn, Th=$Th, Te=$Te") + Ri, omega, gamma = get_sequence_vs_Ri(ni, nn, Th, Te; + starting_omega=default_zero_frequency) + # Hopefully there were only a few entries that jumped to the wrong root. Delete them. + wrong_root_indices = findall(x->abs(x)>1.0e-10, omega) + deleteat!(Ri, wrong_root_indices) + deleteat!(omega, wrong_root_indices) + deleteat!(gamma, wrong_root_indices) + #if any(@. abs(omega) > 1.e-10) + # error("expected zero-frequency mode, got $omega") + #end + + # There is the odd point with gamma=0 that doesn't look right, so skip those too + wrong_root_indices = findall(x->abs(x)<1.0e-10, gamma) + deleteat!(Ri, wrong_root_indices) + deleteat!(omega, wrong_root_indices) + deleteat!(gamma, wrong_root_indices) + + vth = sqrt(Th) + return lines!(ax, (ni+nn).*Ri./(kpar*vth), gamma./(kpar*vth), linestyle=:dash; kwargs...), + Ri, gamma +end + +function plot_positive_frequency!(ax_omega, ax_gamma, ni, nn, Th, Te; kwargs...) + println("plotting positive frequency for ni=$ni, nn=$nn, Th=$Th, Te=$Te") + Ri, omega, gamma = get_sequence_vs_Ri(ni, nn, Th, Te; starting_omega=default_positive_frequency) + #if any(@. omega < 1.e-5) + # error("expected positive-frequency mode, got $omega") + #end + + Ri_gamma = copy(Ri) + # Points with omega=0 overlap with zero-frequency mode on gamma-plot and look weird, + # so chop them out here + wrong_root_indices = findall(x->abs(x)<1.0e-10, omega) + deleteat!(Ri_gamma, wrong_root_indices) + deleteat!(gamma, wrong_root_indices) + + vth = sqrt(Th) + return lines!(ax_omega, (ni+nn).*Ri./(kpar*vth), omega./(kpar*vth); kwargs...), + lines!(ax_gamma, (ni+nn).*Ri_gamma./(kpar*vth), gamma./(kpar*vth); kwargs...), + Ri_gamma, gamma +end + +function find_crossing_xvalue(x1, y1, x2, y2) + @boundscheck length(x1) == length(y1) || throw(DimensionMismatch("x1 and y1 have different lengths")) + @boundscheck length(x2) == length(y2) || throw(DimensionMismatch("x2 and y2 have different lengths")) + for i1 ∈ 1:length(x1)-1 + i2 = findfirst(x->(x >= x1[i1]), x2) + if i2 === nothing || i2 == length(x2) + # No entries left in x2/y2 + break + end + if (y2[i2] - y1[i1]) * (y2[i2+1] - y1[i1+1]) <= 0.0 + # Found a crossing. Return its x-value + xl1 = x1[i1] + yl1 = y1[i1] + xu1 = x1[i1+1] + yu1 = y1[i1+1] + xl2 = x2[i2] + yl2 = y2[i2] + xu2 = x2[i2+1] + yu2 = y2[i2+1] + # Line 1 goes between (xl1,yl1) and (xu1, yu1) => y = yl1 + (yu1-yl1)*(x-xl1)/(xu1-xl1) + # Line 2 goes between (xl2,yl2) and (xu2, yu2) => y = yl2 + (yu2-yl2)*(x-xl2)/(xu2-xl2) + # Intersection when: + # yl1 + (yu1-yl1)*(x-xl1)/(xu1-xl1) = yl2 + (yu2-yl2)*(x-xl2)/(xu2-xl2) + # (yl1-yl2)*(xu1-xl1)*(xu2-xl2) + (yu1-yl1)*(x-xl1)*(xu2-xl2) = (yu2-yl2)*(x-xl2)*(xu1-xl1) + # (yl1-yl2)*(xu1-xl1)*(xu2-xl2) + (yu2-yl2)*xl2*(xu1-xl1) - (yu1-yl1)*xl1*(xu2-xl2) = (yu2-yl2)*x*(xu1-xl1) - (yu1-yl1)*x*(xu2-xl2) + # (yl1-yl2)*(xu1-xl1)*(xu2-xl2) + (yu2-yl2)*xl2*(xu1-xl1) - (yu1-yl1)*xl1*(xu2-xl2) = (yu2-yl2)*x*(xu1-xl1) - (yu1-yl1)*x*(xu2-xl2) + # x = [(yl1-yl2)*(xu1-xl1)*(xu2-xl2) + (yu2-yl2)*xl2*(xu1-xl1) - (yu1-yl1)*xl1*(xu2-xl2)] / [(yu2-yl2)*(xu1-xl1) - (yu1-yl1)*(xu2-xl2)] + return ((yl1-yl2)*(xu1-xl1)*(xu2-xl2) + (yu2-yl2)*xl2*(xu1-xl1) - (yu1-yl1)*xl1*(xu2-xl2)) / ((yu2-yl2)*(xu1-xl1) - (yu1-yl1)*(xu2-xl2)) + end + end + return nothing +end + +function get_sim_omega_gamma(sim) + try + s = nothing + open(joinpath("..", "..", sim["base_directory"], sim["run_name"], basename(sim["run_name"]) * ".frequency_fit.txt"), + "r") do io + s = split(readline(io)) + end + gamma = parse(Float64, s[2]) + # No real difference between positive and negative omega, so take abs() in case + # simulation fit picked up negative value + omega = abs(parse(Float64, s[4])) + fit_errors = parse.(Float64, s[6:8]) + + if fit_errors[1] > 0.1 + # Fit was bad, so don't plot + return NaN, NaN + end + + return omega, gamma + catch e + println("Error for ", sim["run_name"], " ", e) + return NaN, NaN + end +end + +function plot_sim_output!(ax_omega, ax_gamma, sims, ni, nn, Th, Te; kwargs...) + vth = sqrt(Th) + + Ri = zeros(length(sims)) + omega = zeros(length(sims)) + gamma = zeros(length(sims)) + for (i, s) ∈ enumerate(sims) + Ri[i] = s["charge_exchange_frequency"] + omega[i], gamma[i] = get_sim_omega_gamma(s) + end + + #println("for sims ") + #println(Ri) + #println(omega) + #println(gamma) + + return scatter!(ax_omega, (ni+nn).*Ri./(kpar*vth), omega./(kpar*vth); kwargs...), + scatter!(ax_gamma, (ni+nn).*Ri./(kpar*vth), gamma./(kpar*vth); kwargs...) + # *2 is a fudge! + #return scatter!(ax_omega, (ni+nn).*Ri./(kpar*vth*2), omega./(kpar*vth); kwargs...), + # scatter!(ax_gamma, (ni+nn).*Ri./(kpar*vth*2), gamma./(kpar*vth); kwargs...) +end + +const marker1 = BezierPath([MoveTo(-0.5, 0.05), LineTo(0.5, 0.05), LineTo(0.5, -0.05), + LineTo(-0.5, -0.05), ClosePath()]) +const marker2 = BezierPath([MoveTo((-0.5+0.05)/sqrt(2), (-0.5-0.05)/sqrt(2)), + LineTo((0.5+0.05)/sqrt(2), (0.5-0.05)/sqrt(2)), + LineTo((0.5-0.05)/sqrt(2), (0.5+0.05)/sqrt(2)), + LineTo((-0.5-0.05)/sqrt(2), (-0.5+0.05)/sqrt(2)), ClosePath()]) +const marker3 = BezierPath([MoveTo(0.05, -0.5), LineTo(0.05, 0.5), LineTo(-0.05, 0.5), + LineTo(-0.05, -0.5), ClosePath()]) +const marker4 = BezierPath([MoveTo((0.5+0.05)/sqrt(2), (-0.5+0.05)/sqrt(2)), + LineTo((-0.5+0.05)/sqrt(2), (0.5+0.05)/sqrt(2)), + LineTo((-0.5-0.05)/sqrt(2), (0.5-0.05)/sqrt(2)), + LineTo((0.5-0.05)/sqrt(2), (-0.5-0.05)/sqrt(2)), ClosePath()]) + +function plot_n_scan() + + Th = 1.0 + Te = 1.0 + + fig = Figure(; resolution=(1200, 600)) + + ax_gamma = Axis(fig[1,1], + xlabel=L"(n_i + n_n)R_{in}/|k_\parallel|v_\mathrm{th}", + ylabel=L"\gamma/|k_\parallel|v_\mathrm{th}") + + ax_omega = Axis(fig[1,2], + xlabel=L"(n_i + n_n)R_{in}/|k_\parallel|v_\mathrm{th}", + ylabel=L"\omega/|k_\parallel|v_\mathrm{th}") + + orig_stdout = stdout + redirect_stdout(open("/dev/null", "w")) + sim_inputs = get_scan_inputs(joinpath(plot_dir, "scan_sound-wave_nratio.toml")) + sim_inputs_split1 = get_scan_inputs(joinpath(plot_dir, + "scan_sound-wave_nratio_split1.toml")) + sim_inputs_split2 = get_scan_inputs(joinpath(plot_dir, + "scan_sound-wave_nratio_split2.toml")) + sim_inputs_split3 = get_scan_inputs(joinpath(plot_dir, + "scan_sound-wave_nratio_split3.toml")) + redirect_stdout(orig_stdout) + + legend_data_list1 = [] + legend_label_list1 = [] + legend_data_list2 = [] + legend_label_list2 = [] + for (ni, nn, label) ∈ ((2.0, 0.0, L"n_i / n_\mathrm{tot} = 1"), + (1.5, 0.5, L"n_i / n_\mathrm{tot} = 3/4"), + (1.0, 1.0, L"n_i / n_\mathrm{tot} = 1/2"), + (0.5, 1.5, L"n_i / n_\mathrm{tot} = 1/4"), + (0.0, 2.0, L"n_i / n_\mathrm{tot} = 0"), + ) + sims = Tuple(i for i ∈ sim_inputs if isapprox(i["initial_density1"], ni, atol=2.0e-5)) + sims_split1 = Tuple(i for i ∈ sim_inputs_split1 if isapprox(i["initial_density1"], ni, atol=2.0e-5)) + sims_split2 = Tuple(i for i ∈ sim_inputs_split2 if isapprox(i["initial_density1"], ni, atol=2.0e-5)) + sims_split3 = Tuple(i for i ∈ sim_inputs_split3 if isapprox(i["initial_density1"], ni, atol=2.0e-5)) + + p_omega, p_gamma, Ri_positive, gamma_positive = + plot_positive_frequency!(ax_omega, ax_gamma, ni, nn, Th, Te; label=label) + p_gamma_z, Ri_zero, gamma_zero = plot_zero_frequency!(ax_gamma, ni, nn, Th, Te; color=p_gamma.color) + s_omega, s_gamma = plot_sim_output!(ax_omega, ax_gamma, sims, ni, nn, Th, Te; color=p_gamma.color, marker=marker1) + s_omega1, s_gamma1 = plot_sim_output!(ax_omega, ax_gamma, sims_split1, ni, nn, Th, Te; color=p_gamma.color, marker=marker2) + s_omega2, s_gamma2 = plot_sim_output!(ax_omega, ax_gamma, sims_split2, ni, nn, Th, Te; color=p_gamma.color, marker=marker3) + s_omega3, s_gamma3 = plot_sim_output!(ax_omega, ax_gamma, sims_split3, ni, nn, Th, Te; color=p_gamma.color, marker=marker4) + + vth = sqrt(Th) + crossing_x = find_crossing_xvalue(Ri_positive, gamma_positive, Ri_zero, gamma_zero) + if crossing_x !== nothing + vlines!(ax_omega, (ni + nn) * crossing_x / (kpar*vth), linestyle=:dot, color=p_gamma.color) + #vlines!(ax_gamma, (ni + nn) * crossing_x / (kpar*vth), linestyle=:dot, color=p_gamma.color) + end + + push!(legend_data_list1, [p_omega, s_omega, s_omega1, s_omega2, s_omega3]) + push!(legend_label_list1, label) + end + + # Add marker types to the legend + push!(legend_data_list2, MarkerElement(marker=marker1, color=:black)) + push!(legend_label_list2, L"$$full-f") + push!(legend_data_list2, MarkerElement(marker=marker2, color=:black)) + push!(legend_label_list2, L"evolving $n$") + push!(legend_data_list2, MarkerElement(marker=marker3, color=:black)) + push!(legend_label_list2, L"evolving $n,\,u_\parallel$") + push!(legend_data_list2, MarkerElement(marker=marker4, color=:black)) + push!(legend_label_list2, L"evolving $n,\,u_\parallel,\,p_\parallel$") + + Legend(fig[2,1:2], [legend_data_list1, legend_data_list2], [legend_label_list1, legend_label_list2], ["", ""]; tellheight=true, tellwidth=false, nbanks=5) + + save(joinpath(plot_dir, "n_scan$ext"), fig) + + return nothing +end + +function plot_T_scan() + + ni = 1.0 + nn = 1.0 + Te = 1.0 + + fig = Figure(; resolution=(900, 450)) + + ax_gamma = Axis(fig[1,1], + xlabel=L"(n_i + n_n)R_{in}/|k_\parallel|v_\mathrm{th}", + ylabel=L"\gamma/|k_\parallel|v_\mathrm{th}", + limits=(-.1, 2.1, -2.5, 0.0)) + + ax_omega = Axis(fig[1,2], + xlabel=L"(n_i + n_n)R_{in}/|k_\parallel|v_\mathrm{th}", + ylabel=L"\omega/|k_\parallel|v_\mathrm{th}", + limits=(-.1, 2.1, -0.1, 2.1)) + + orig_stdout = stdout + redirect_stdout(open("/dev/null", "w")) + sim_inputs025 = (get_scan_inputs(joinpath(plot_dir, "scan_sound-wave_T0.25.toml")), + get_scan_inputs(joinpath(plot_dir, "scan_sound-wave_T0.25_split1.toml")), + get_scan_inputs(joinpath(plot_dir, "scan_sound-wave_T0.25_split2.toml")), + get_scan_inputs(joinpath(plot_dir, "scan_sound-wave_T0.25_split3.toml"))) + sim_inputs05 = (get_scan_inputs(joinpath(plot_dir, "scan_sound-wave_T0.5.toml")), + get_scan_inputs(joinpath(plot_dir, "scan_sound-wave_T0.5_split1.toml")), + get_scan_inputs(joinpath(plot_dir, "scan_sound-wave_T0.5_split2.toml")), + get_scan_inputs(joinpath(plot_dir, "scan_sound-wave_T0.5_split3.toml"))) + sim_inputs1 = (get_scan_inputs(joinpath(plot_dir, "scan_sound-wave_T1.toml")), + get_scan_inputs(joinpath(plot_dir, "scan_sound-wave_T1_split1.toml")), + get_scan_inputs(joinpath(plot_dir, "scan_sound-wave_T1_split2.toml")), + get_scan_inputs(joinpath(plot_dir, "scan_sound-wave_T1_split3.toml"))) + sim_inputs2 = (get_scan_inputs(joinpath(plot_dir, "scan_sound-wave_T2.toml")), + get_scan_inputs(joinpath(plot_dir, "scan_sound-wave_T2_split1.toml")), + get_scan_inputs(joinpath(plot_dir, "scan_sound-wave_T2_split2.toml")), + get_scan_inputs(joinpath(plot_dir, "scan_sound-wave_T2_split3.toml"))) + sim_inputs4 = (get_scan_inputs(joinpath(plot_dir, "scan_sound-wave_T4.toml")), + get_scan_inputs(joinpath(plot_dir, "scan_sound-wave_T4_split1.toml")), + get_scan_inputs(joinpath(plot_dir, "scan_sound-wave_T4_split2.toml")), + get_scan_inputs(joinpath(plot_dir, "scan_sound-wave_T4_split3.toml"))) + redirect_stdout(orig_stdout) + + legend_data_list1 = [] + legend_label_list1 = [] + legend_data_list2 = [] + legend_label_list2 = [] + for (Th, label, sims) ∈ ((0.25, L"T/T_e = 1/4", sim_inputs025), + (0.5, L"T/T_e = 1/2", sim_inputs05), + (1.0, L"T/T_e = 1", sim_inputs1), + (2.0, L"T/T_e = 2", sim_inputs2), + (4.0, L"T/T_e = 4", sim_inputs4), + ) + + p_omega, p_gamma, Ri_positive, gamma_positive = + plot_positive_frequency!(ax_omega, ax_gamma, ni, nn, Th, Te; label=label) + p_gamma_z, Ri_zero, gamma_zero = plot_zero_frequency!(ax_gamma, ni, nn, Th, Te; color=p_gamma.color) + s_omega, s_gamma = plot_sim_output!(ax_omega, ax_gamma, sims[1], ni, nn, Th, Te; color=p_gamma.color, marker=marker1) + s_omega1, s_gamma1 = plot_sim_output!(ax_omega, ax_gamma, sims[2], ni, nn, Th, Te; color=p_gamma.color, marker=marker2) + s_omega2, s_gamma2 = plot_sim_output!(ax_omega, ax_gamma, sims[3], ni, nn, Th, Te; color=p_gamma.color, marker=marker3) + s_omega3, s_gamma3 = plot_sim_output!(ax_omega, ax_gamma, sims[4], ni, nn, Th, Te; color=p_gamma.color, marker=marker4) + + vth = sqrt(Th) + crossing_x = find_crossing_xvalue(Ri_positive, gamma_positive, Ri_zero, gamma_zero) + if crossing_x !== nothing + vlines!(ax_omega, (ni + nn) * crossing_x / (kpar * vth), linestyle=:dot, color=p_gamma.color) + #vlines!(ax_gamma, (ni + nn) * crossing_x / (kpar * vth), linestyle=:dot, color=p_gamma.color) + end + + push!(legend_data_list1, [p_omega, s_omega, s_omega1, s_omega2, s_omega3]) + push!(legend_label_list1, label) + end + + # Add marker types to the legend + push!(legend_data_list2, MarkerElement(marker=marker1, color=:black)) + push!(legend_label_list2, L"$$full-f") + push!(legend_data_list2, MarkerElement(marker=marker2, color=:black)) + push!(legend_label_list2, L"evolving $n$") + push!(legend_data_list2, MarkerElement(marker=marker3, color=:black)) + push!(legend_label_list2, L"evolving $n,\,u_\parallel$") + push!(legend_data_list2, MarkerElement(marker=marker4, color=:black)) + push!(legend_label_list2, L"evolving $n,\,u_\parallel,\,p_\parallel$") + + Legend(fig[2,1:2], [legend_data_list1, legend_data_list2], [legend_label_list1, legend_label_list2], ["", ""]; tellheight=true, tellwidth=false, nbanks=5) + + save(joinpath(plot_dir, "T_scan$ext"), fig) + + return nothing +end + +function make_plots() + plot_n_scan() + plot_T_scan() +end + +if abspath(PROGRAM_FILE) == @__FILE__ + make_plots() +end diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/post_process_scans.jl b/publication_inputs/2023_EFTC_jto-poster/sound-wave/post_process_scans.jl new file mode 100644 index 000000000..655ead42c --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/post_process_scans.jl @@ -0,0 +1,560 @@ +using Distributed + +@everywhere using moment_kinetics.makie_post_processing + +@everywhere const soundwave_postproc_input = Dict{String,Any}( + "plot_vs_r" => false, + "plot_vs_z" => false, + "plot_vs_r_t" => false, + "plot_vs_z_t" => false, + "plot_vs_z_r" => false, + "sound_wave_fit" => Dict{String,Any}("calculate_frequency"=>true, "plot"=>true), + "itime_min" => 50, + ) + +# get the run_names from the command-line +function post_process_parameter_scan(scan_dir) + run_directories = Tuple(d for d ∈ readdir(scan_dir, join=true) if isdir(d)) + @sync @distributed for d ∈ run_directories + println("post-processing ", d) + try + this_input = copy(soundwave_postproc_input) + if (occursin("nratio", d) && occursin("ini_1.0_ini_1.0", d)) || occursin("T1", d) + this_input["itime_min"] = 20 + this_input["itime_max"] = 85 + if occursin("cha_1.0", d) + this_input["itime_min"] = 30 + this_input["itime_max"] = 80 + elseif occursin("cha_1.2", d) + this_input["itime_min"] = 30 + this_input["itime_max"] = 80 + elseif occursin("cha_1.4", d) + this_input["itime_min"] = 50 + this_input["itime_max"] = 80 + elseif occursin("cha_1.6", d) + continue + elseif occursin("cha_1.8", d) + continue + elseif occursin("cha_2.0", d) + continue + elseif occursin("cha_2.2", d) + continue + elseif occursin("cha_2.4", d) + continue + elseif occursin("cha_2.6", d) + continue + elseif occursin("cha_2.8", d) + this_input["itime_min"] = 70 + this_input["itime_max"] = 85 + elseif occursin("cha_3.0", d) + this_input["itime_min"] = 70 + this_input["itime_max"] = 85 + elseif occursin("cha_3.2", d) + this_input["itime_min"] = 70 + this_input["itime_max"] = 85 + elseif occursin("cha_3.4", d) + this_input["itime_min"] = 70 + this_input["itime_max"] = 85 + elseif occursin("cha_3.6", d) + this_input["itime_min"] = 70 + this_input["itime_max"] = 85 + elseif occursin("cha_3.8", d) + this_input["itime_min"] = 70 + this_input["itime_max"] = 85 + elseif occursin("cha_4.0", d) + this_input["itime_min"] = 70 + this_input["itime_max"] = 85 + elseif occursin("cha_4.2", d) + this_input["itime_min"] = 70 + this_input["itime_max"] = 85 + elseif occursin("cha_4.4", d) + this_input["itime_min"] = 50 + this_input["itime_max"] = 85 + elseif occursin("cha_4.6", d) + this_input["itime_min"] = 50 + this_input["itime_max"] = 90 + elseif occursin("cha_4.8", d) + this_input["itime_min"] = 50 + this_input["itime_max"] = 90 + elseif occursin("cha_5.0", d) + this_input["itime_min"] = 50 + this_input["itime_max"] = 90 + elseif occursin("cha_5.2", d) + this_input["itime_min"] = 60 + this_input["itime_max"] = 90 + elseif occursin("cha_5.4", d) + this_input["itime_min"] = 50 + this_input["itime_max"] = 90 + elseif occursin("cha_5.6", d) + this_input["itime_min"] = 50 + this_input["itime_max"] = 90 + elseif occursin("cha_5.8", d) + this_input["itime_min"] = 50 + this_input["itime_max"] = 90 + elseif occursin("cha_6.0", d) + this_input["itime_min"] = 50 + this_input["itime_max"] = 90 + elseif occursin("cha_6.2", d) + this_input["itime_min"] = 50 + this_input["itime_max"] = 90 + end + elseif occursin("nratio", d) + this_input["itime_min"] = 20 + this_input["itime_max"] = 85 + if occursin("ini_1.5_ini_0.5", d) + if occursin("cha_2.2", d) + continue + elseif occursin("cha_2.4", d) + continue + elseif occursin("cha_2.6", d) + continue + elseif occursin("cha_2.8", d) + continue + elseif occursin("cha_3.0", d) + continue + elseif occursin("cha_3.2", d) + continue + elseif occursin("cha_3.4", d) + continue + elseif occursin("cha_3.6", d) + continue + elseif occursin("cha_3.8", d) + this_input["itime_min"] = 65 + this_input["itime_max"] = 85 + elseif occursin("cha_4.0", d) + this_input["itime_min"] = 65 + this_input["itime_max"] = 85 + elseif occursin("cha_4.2", d) + this_input["itime_min"] = 65 + this_input["itime_max"] = 85 + elseif occursin("cha_4.4", d) + this_input["itime_min"] = 65 + this_input["itime_max"] = 85 + elseif occursin("cha_4.6", d) + this_input["itime_min"] = 65 + this_input["itime_max"] = 85 + elseif occursin("cha_4.8", d) + this_input["itime_min"] = 65 + this_input["itime_max"] = 85 + elseif occursin("cha_5.0", d) + this_input["itime_min"] = 65 + this_input["itime_max"] = 85 + elseif occursin("cha_5.2", d) + this_input["itime_min"] = 65 + this_input["itime_max"] = 90 + elseif occursin("cha_5.4", d) + this_input["itime_min"] = 65 + this_input["itime_max"] = 90 + elseif occursin("cha_5.6", d) + this_input["itime_min"] = 65 + this_input["itime_max"] = 90 + elseif occursin("cha_5.8", d) + this_input["itime_min"] = 65 + this_input["itime_max"] = 90 + elseif occursin("cha_6.0", d) + this_input["itime_min"] = 65 + this_input["itime_max"] = 90 + elseif occursin("cha_6.2", d) + this_input["itime_min"] = 65 + this_input["itime_max"] = 90 + end + elseif occursin("ini_0.5_ini_1.5", d) + this_input["itime_min"] = 35 + this_input["itime_max"] = 90 + if occursin("cha_0.0", d) + this_input["itime_min"] = 20 + this_input["itime_max"] = 85 + elseif occursin("cha_0.2", d) + this_input["itime_min"] = 20 + this_input["itime_max"] = 85 + elseif occursin("cha_0.4", d) + this_input["itime_min"] = 20 + this_input["itime_max"] = 85 + elseif occursin("cha_0.6", d) + this_input["itime_min"] = 20 + this_input["itime_max"] = 80 + elseif occursin("cha_0.8", d) + this_input["itime_min"] = 20 + this_input["itime_max"] = 80 + elseif occursin("cha_1.0", d) + this_input["itime_min"] = 20 + this_input["itime_max"] = 75 + elseif occursin("cha_1.2", d) + this_input["itime_min"] = 25 + this_input["itime_max"] = 70 + elseif occursin("cha_1.4", d) + this_input["itime_min"] = 35 + this_input["itime_max"] = 65 + elseif occursin("cha_1.6", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 55 + elseif occursin("cha_1.8", d) + continue + elseif occursin("cha_2.0", d) + continue + elseif occursin("cha_2.2", d) + continue + elseif occursin("cha_2.4", d) + continue + elseif occursin("cha_2.6", d) + continue + #this_input["itime_min"] = 1 + #this_input["itime_max"] = 120 + elseif occursin("cha_2.8", d) + this_input["itime_min"] = 55 + this_input["itime_max"] = 65 + elseif occursin("cha_3.0", d) + this_input["itime_min"] = 55 + this_input["itime_max"] = 65 + elseif occursin("cha_3.2", d) + this_input["itime_min"] = 55 + this_input["itime_max"] = 70 + elseif occursin("cha_3.4", d) + this_input["itime_min"] = 55 + this_input["itime_max"] = 70 + elseif occursin("cha_3.6", d) + this_input["itime_min"] = 50 + this_input["itime_max"] = 75 + elseif occursin("cha_3.8", d) + this_input["itime_min"] = 50 + this_input["itime_max"] = 80 + elseif occursin("cha_4.0", d) + this_input["itime_min"] = 35 + this_input["itime_max"] = 85 + elseif occursin("cha_4.2", d) + this_input["itime_min"] = 35 + this_input["itime_max"] = 85 + elseif occursin("cha_4.4", d) + this_input["itime_min"] = 35 + this_input["itime_max"] = 85 + end + elseif occursin("ini_1.0e-5_ini_1.99999", d) + this_input["itime_min"] = 25 + this_input["itime_max"] = 85 + if occursin("cha_0.0", d) + this_input["itime_min"] = 5 + this_input["itime_max"] = 85 + elseif occursin("cha_0.2", d) + this_input["itime_min"] = 5 + this_input["itime_max"] = 80 + elseif occursin("cha_0.4", d) + this_input["itime_min"] = 10 + this_input["itime_max"] = 80 + elseif occursin("cha_0.6", d) + this_input["itime_min"] = 15 + this_input["itime_max"] = 80 + elseif occursin("cha_0.8", d) + this_input["itime_min"] = 15 + this_input["itime_max"] = 70 + elseif occursin("cha_1.0", d) + this_input["itime_min"] = 15 + this_input["itime_max"] = 70 + elseif occursin("cha_1.2", d) + this_input["itime_min"] = 15 + this_input["itime_max"] = 70 + elseif occursin("cha_1.4", d) + this_input["itime_min"] = 15 + this_input["itime_max"] = 65 + elseif occursin("cha_1.6", d) + this_input["itime_min"] = 20 + this_input["itime_max"] = 65 + elseif occursin("cha_1.8", d) + this_input["itime_min"] = 20 + this_input["itime_max"] = 65 + elseif occursin("cha_2.0", d) + this_input["itime_min"] = 20 + this_input["itime_max"] = 65 + elseif occursin("cha_2.2", d) + this_input["itime_min"] = 20 + this_input["itime_max"] = 65 + elseif occursin("cha_2.4", d) + this_input["itime_min"] = 20 + this_input["itime_max"] = 60 + elseif occursin("cha_2.6", d) + this_input["itime_min"] = 20 + this_input["itime_max"] = 60 + elseif occursin("cha_2.8", d) + this_input["itime_min"] = 20 + this_input["itime_max"] = 60 + elseif occursin("cha_3.0", d) + this_input["itime_min"] = 20 + this_input["itime_max"] = 60 + elseif occursin("cha_3.2", d) + this_input["itime_min"] = 20 + this_input["itime_max"] = 60 + elseif occursin("cha_3.4", d) + this_input["itime_min"] = 35 + this_input["itime_max"] = 60 + elseif occursin("cha_3.6", d) + this_input["itime_min"] = 25 + this_input["itime_max"] = 65 + elseif occursin("cha_3.8", d) + this_input["itime_min"] = 25 + this_input["itime_max"] = 65 + elseif occursin("cha_4.0", d) + this_input["itime_min"] = 25 + this_input["itime_max"] = 70 + elseif occursin("cha_4.2", d) + this_input["itime_min"] = 25 + this_input["itime_max"] = 70 + elseif occursin("cha_4.4", d) + this_input["itime_min"] = 25 + this_input["itime_max"] = 80 + elseif occursin("cha_4.6", d) + this_input["itime_min"] = 25 + this_input["itime_max"] = 80 + elseif occursin("cha_4.8", d) + this_input["itime_min"] = 25 + this_input["itime_max"] = 80 + elseif occursin("cha_5.0", d) + this_input["itime_min"] = 25 + this_input["itime_max"] = 80 + end + end + elseif occursin("T0.25", d) || occursin("ini_0.25", d) + this_input["itime_min"] = 20 + if occursin("cha_2.8", d) + continue + elseif occursin("cha_3.0", d) + continue + end + elseif occursin("T0.5", d) || occursin("ini_0.5", d) + this_input["itime_min"] = 20 + this_input["itime_max"] = 76 + if occursin("cha_2.2", d) + this_input["itime_min"] = 30 + this_input["itime_max"] = 70 + elseif occursin("cha_2.4", d) + continue + elseif occursin("cha_2.6", d) + continue + elseif occursin("cha_2.8", d) + continue + elseif occursin("cha_3.0", d) + continue + elseif occursin("cha_3.2", d) + continue + elseif occursin("cha_3.4", d) + continue + elseif occursin("cha_3.6", d) + continue + elseif occursin("cha_3.8", d) + continue + elseif occursin("cha_4.0", d) + continue + elseif occursin("cha_4.2", d) + continue + elseif occursin("cha_4.4", d) + continue + end + elseif occursin("T2", d) || occursin("ini_2.0", d) + this_input["itime_min"] = 5 + this_input["itime_max"] = 81 + if occursin("cha_0.0", d) + this_input["itime_min"] = 30 + this_input["itime_max"] = 70 + elseif occursin("cha_0.3", d) + this_input["itime_min"] = 30 + this_input["itime_max"] = 70 + elseif occursin("cha_0.6", d) + this_input["itime_min"] = 30 + this_input["itime_max"] = 70 + elseif occursin("cha_0.9", d) + this_input["itime_min"] = 30 + this_input["itime_max"] = 70 + elseif occursin("cha_1.2", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 70 + elseif occursin("cha_1.5", d) + # Can't really get a good fit here. The decay rates of the two modes + # are too close, so just get beating for the whole length of the + # simulation. + continue + elseif occursin("cha_1.8", d) + # Can't really get a good fit here. The decay rates of the two modes + # are too close, so just get beating for the whole length of the + # simulation. + continue + elseif occursin("cha_2.1", d) + # Can't really get a good fit here. The decay rates of the two modes + # are too close, so just get beating for the whole length of the + # simulation. + continue + elseif occursin("cha_2.4", d) + # Can't really get a good fit here. The decay rates of the two modes + # are too close, so just get beating for the whole length of the + # simulation. + continue + elseif occursin("cha_2.7", d) + # Can't really get a good fit here. The decay rates of the two modes + # are too close, so just get beating for the whole length of the + # simulation. + continue + elseif occursin("cha_3.0", d) + this_input["itime_min"] = 60 + elseif occursin("cha_3.3", d) + this_input["itime_min"] = 40 + elseif occursin("cha_3.6", d) + this_input["itime_min"] = 40 + elseif occursin("cha_3.9", d) + this_input["itime_min"] = 40 + elseif occursin("cha_4.2", d) + this_input["itime_min"] = 40 + elseif occursin("cha_4.5", d) + this_input["itime_min"] = 40 + elseif occursin("cha_4.5", d) + this_input["itime_min"] = 40 + elseif occursin("cha_4.5", d) + this_input["itime_min"] = 40 + elseif occursin("cha_4.8", d) + this_input["itime_min"] = 40 + elseif occursin("cha_5.1", d) + this_input["itime_min"] = 40 + elseif occursin("cha_5.4", d) + this_input["itime_min"] = 40 + elseif occursin("cha_5.7", d) + this_input["itime_min"] = 40 + elseif occursin("cha_5.7", d) + this_input["itime_min"] = 40 + elseif occursin("cha_5.7", d) + this_input["itime_min"] = 40 + elseif occursin("cha_6.0", d) + this_input["itime_min"] = 40 + elseif occursin("cha_6.3", d) + this_input["itime_min"] = 40 + elseif occursin("cha_6.6", d) + this_input["itime_min"] = 40 + elseif occursin("cha_6.9", d) + this_input["itime_min"] = 40 + elseif occursin("cha_7.2", d) + this_input["itime_min"] = 40 + elseif occursin("cha_7.5", d) + this_input["itime_min"] = 40 + elseif occursin("cha_7.8", d) + this_input["itime_min"] = 40 + elseif occursin("cha_8.1", d) + this_input["itime_min"] = 40 + elseif occursin("cha_8.4", d) + this_input["itime_min"] = 40 + elseif occursin("cha_8.7", d) + this_input["itime_min"] = 40 + end + elseif occursin("T4", d) || occursin("ini_4.0", d) + this_input["itime_min"] = 10 + this_input["itime_max"] = 65 + if occursin("cha_1.6", d) + continue + elseif occursin("cha_1.8", d) + continue + elseif occursin("cha_2.0", d) + continue + elseif occursin("cha_2.4", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 65 + elseif occursin("cha_2.8", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 65 + elseif occursin("cha_3.2", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 65 + elseif occursin("cha_3.6", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 70 + elseif occursin("cha_4.0", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 70 + elseif occursin("cha_4.4", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 80 + elseif occursin("cha_4.8", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 80 + elseif occursin("cha_5.2", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 80 + elseif occursin("cha_5.6", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 85 + elseif occursin("cha_6.0", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 85 + elseif occursin("cha_6.4", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 90 + elseif occursin("cha_6.8", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 90 + elseif occursin("cha_7.2", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 90 + elseif occursin("cha_7.6", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 90 + elseif occursin("cha_8.0", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 90 + elseif occursin("cha_8.4", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 90 + elseif occursin("cha_8.8", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 90 + elseif occursin("cha_9.2", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 90 + elseif occursin("cha_9.6", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 90 + elseif occursin("cha_10.0", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 90 + elseif occursin("cha_10.4", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 90 + elseif occursin("cha_10.8", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 90 + elseif occursin("cha_11.2", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 90 + elseif occursin("cha_11.6", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 90 + elseif occursin("cha_12.0", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 90 + elseif occursin("cha_12.4", d) + this_input["itime_min"] = 40 + this_input["itime_max"] = 90 + end + end + makie_post_process(d, this_input) + catch e + println(d, " failed with ", e) + end + end +end + +function post_process_all_scans() + post_process_parameter_scan("../../runs/scan_sound-wave_nratio/") + post_process_parameter_scan("../../runs/scan_sound-wave_T0.25/") + post_process_parameter_scan("../../runs/scan_sound-wave_T0.5/") + post_process_parameter_scan("../../runs/scan_sound-wave_T1/") + post_process_parameter_scan("../../runs/scan_sound-wave_T2/") + post_process_parameter_scan("../../runs/scan_sound-wave_T4/") + for i ∈ 1:3 + post_process_parameter_scan("../../runs/scan_sound-wave_nratio_split$i/") + post_process_parameter_scan("../../runs/scan_sound-wave_T0.25_split$i/") + post_process_parameter_scan("../../runs/scan_sound-wave_T0.5_split$i/") + post_process_parameter_scan("../../runs/scan_sound-wave_T1_split$i/") + post_process_parameter_scan("../../runs/scan_sound-wave_T2_split$i/") + post_process_parameter_scan("../../runs/scan_sound-wave_T4_split$i/") + end + + #post_process_parameter_scan("../../runs/scan_sound-wave_lowres/") + #post_process_parameter_scan("../../runs/scan_sound-wave_T/") +end + +if abspath(PROGRAM_FILE) == @__FILE__ + post_process_all_scans() +end diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/run-all-scans.jl b/publication_inputs/2023_EFTC_jto-poster/sound-wave/run-all-scans.jl new file mode 100644 index 000000000..d2cfd3075 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/run-all-scans.jl @@ -0,0 +1,36 @@ +# Note, run this from top-level moment-kinetics directory + +include(joinpath("..", "..", "..", "run_parameter_scan.jl")) + +sound_wave_dir = joinpath("publication_inputs", "2023_EFTC_jto-poster", "sound-wave") +input_files = ( + "scan_sound-wave_T0.25.toml", + "scan_sound-wave_T0.25_split1.toml", + "scan_sound-wave_T0.25_split2.toml", + "scan_sound-wave_T0.25_split3.toml", + "scan_sound-wave_T0.5.toml", + "scan_sound-wave_T0.5_split1.toml", + "scan_sound-wave_T0.5_split2.toml", + "scan_sound-wave_T0.5_split3.toml", + "scan_sound-wave_T1.toml", + "scan_sound-wave_T1_split1.toml", + "scan_sound-wave_T1_split2.toml", + "scan_sound-wave_T1_split3.toml", + "scan_sound-wave_T2.toml", + "scan_sound-wave_T2_split1.toml", + "scan_sound-wave_T2_split2.toml", + "scan_sound-wave_T2_split3.toml", + "scan_sound-wave_T4.toml", + "scan_sound-wave_T4_split1.toml", + "scan_sound-wave_T4_split2.toml", + "scan_sound-wave_T4_split3.toml", + "scan_sound-wave_nratio.toml", + "scan_sound-wave_nratio_split1.toml", + "scan_sound-wave_nratio_split2.toml", + "scan_sound-wave_nratio_split3.toml", +) + +for f ∈ input_files + println("running scan from $f") + run_parameter_scan(joinpath(sound_wave_dir, f)) +end diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.25.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.25.toml new file mode 100644 index 000000000..7d9a098f1 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.25.toml @@ -0,0 +1,51 @@ +#combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = false +evolve_moments_parallel_flow = false +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = 1.0 +initial_temperature1 = 0.25 +initial_density2 = 1.0 +initial_temperature2 = 0.25 +z_IC_option1 = "sinusoid" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0] +ionization_frequency = 0.0 +nstep = 1500 +dt = 0.004 +nwrite = 20 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 4.0 +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 4.0 +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.25_split1.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.25_split1.toml new file mode 100644 index 000000000..ada88e7a3 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.25_split1.toml @@ -0,0 +1,51 @@ +#combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = false +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = 1.0 +initial_temperature1 = 0.25 +initial_density2 = 1.0 +initial_temperature2 = 0.25 +z_IC_option1 = "sinusoid" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0] +ionization_frequency = 0.0 +nstep = 1500 +dt = 0.004 +nwrite = 20 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 4.0 +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 4.0 +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.25_split2.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.25_split2.toml new file mode 100644 index 000000000..cc710e4a9 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.25_split2.toml @@ -0,0 +1,51 @@ +#combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = true +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = 1.0 +initial_temperature1 = 0.25 +initial_density2 = 1.0 +initial_temperature2 = 0.25 +z_IC_option1 = "sinusoid" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0] +ionization_frequency = 0.0 +nstep = 1500 +dt = 0.004 +nwrite = 20 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 4.0 +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 4.0 +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.25_split3.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.25_split3.toml new file mode 100644 index 000000000..b77f3fbf9 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.25_split3.toml @@ -0,0 +1,51 @@ +#combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = true +evolve_moments_parallel_pressure = true +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = 1.0 +initial_temperature1 = 0.25 +initial_density2 = 1.0 +initial_temperature2 = 0.25 +z_IC_option1 = "sinusoid" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0] +ionization_frequency = 0.0 +nstep = 1500 +dt = 0.004 +nwrite = 20 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 8.0 +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 8.0 +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.5.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.5.toml new file mode 100644 index 000000000..c7eb9b6aa --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.5.toml @@ -0,0 +1,51 @@ +#combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = false +evolve_moments_parallel_flow = false +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = 1.0 +initial_temperature1 = 0.5 +initial_density2 = 1.0 +initial_temperature2 = 0.5 +z_IC_option1 = "sinusoid" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4] +ionization_frequency = 0.0 +nstep = 1500 +dt = 0.00282842712474619 +nwrite = 20 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 5.65685424949238 # 8/sqrt(2) +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 5.65685424949238 # 8/sqrt(2) +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.5_split1.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.5_split1.toml new file mode 100644 index 000000000..e2e707a64 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.5_split1.toml @@ -0,0 +1,51 @@ +#combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = false +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = 1.0 +initial_temperature1 = 0.5 +initial_density2 = 1.0 +initial_temperature2 = 0.5 +z_IC_option1 = "sinusoid" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4] +ionization_frequency = 0.0 +nstep = 1500 +dt = 0.00282842712474619 +nwrite = 20 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 5.65685424949238 # 8/sqrt(2) +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 5.65685424949238 # 8/sqrt(2) +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.5_split2.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.5_split2.toml new file mode 100644 index 000000000..1196d8cea --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.5_split2.toml @@ -0,0 +1,51 @@ +#combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = true +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = 1.0 +initial_temperature1 = 0.5 +initial_density2 = 1.0 +initial_temperature2 = 0.5 +z_IC_option1 = "sinusoid" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4] +ionization_frequency = 0.0 +nstep = 1500 +dt = 0.00282842712474619 +nwrite = 20 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 5.65685424949238 # 8/sqrt(2) +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 5.65685424949238 # 8/sqrt(2) +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.5_split3.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.5_split3.toml new file mode 100644 index 000000000..616a2b842 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T0.5_split3.toml @@ -0,0 +1,51 @@ +#combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = true +evolve_moments_parallel_pressure = true +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = 1.0 +initial_temperature1 = 0.5 +initial_density2 = 1.0 +initial_temperature2 = 0.5 +z_IC_option1 = "sinusoid" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4] +ionization_frequency = 0.0 +nstep = 1500 +dt = 0.00282842712474619 +nwrite = 20 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 8.0 +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 8.0 +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T1.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T1.toml new file mode 100644 index 000000000..33ab106b7 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T1.toml @@ -0,0 +1,51 @@ +#combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = false +evolve_moments_parallel_flow = false +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = 1.0 +initial_temperature1 = 1.0 +initial_density2 = 1.0 +initial_temperature2 = 1.0 +z_IC_option1 = "sinusoid" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8, 5.0, 5.2, 5.4, 5.6, 5.8, 6.0, 6.2] +ionization_frequency = 0.0 +nstep = 2500 +dt = 0.002 +nwrite = 20 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 8.0 +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 8.0 +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T1_split1.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T1_split1.toml new file mode 100644 index 000000000..4d16439b4 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T1_split1.toml @@ -0,0 +1,51 @@ +#combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = false +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = 1.0 +initial_temperature1 = 1.0 +initial_density2 = 1.0 +initial_temperature2 = 1.0 +z_IC_option1 = "sinusoid" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8, 5.0, 5.2, 5.4, 5.6, 5.8, 6.0, 6.2] +ionization_frequency = 0.0 +nstep = 2500 +dt = 0.002 +nwrite = 20 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 8.0 +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 8.0 +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T1_split2.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T1_split2.toml new file mode 100644 index 000000000..fd208cb14 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T1_split2.toml @@ -0,0 +1,51 @@ +#combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = true +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = 1.0 +initial_temperature1 = 1.0 +initial_density2 = 1.0 +initial_temperature2 = 1.0 +z_IC_option1 = "sinusoid" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8, 5.0, 5.2, 5.4, 5.6, 5.8, 6.0, 6.2] +ionization_frequency = 0.0 +nstep = 2500 +dt = 0.002 +nwrite = 20 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 8.0 +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 8.0 +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T1_split3.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T1_split3.toml new file mode 100644 index 000000000..34e6712fc --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T1_split3.toml @@ -0,0 +1,51 @@ +#combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = true +evolve_moments_parallel_pressure = true +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = 1.0 +initial_temperature1 = 1.0 +initial_density2 = 1.0 +initial_temperature2 = 1.0 +z_IC_option1 = "sinusoid" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8, 5.0, 5.2, 5.4, 5.6, 5.8, 6.0, 6.2] +ionization_frequency = 0.0 +nstep = 2500 +dt = 0.002 +nwrite = 20 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 8.0 +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 8.0 +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T2.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T2.toml new file mode 100644 index 000000000..5438398db --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T2.toml @@ -0,0 +1,53 @@ +#combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = false +evolve_moments_parallel_flow = false +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = 1.0 +initial_temperature1 = 2.0 +initial_density2 = 1.0 +initial_temperature2 = 2.0 +z_IC_option1 = "sinusoid" +#z_IC_density_amplitude1 = 0.001 +z_IC_density_amplitude1 = 0.01 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +#z_IC_density_amplitude2 = 0.001 +z_IC_density_amplitude2 = 0.01 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4, 2.7, 3.0, 3.3, 3.6, 3.9, 4.2, 4.5, 4.8, 5.1, 5.4, 5.7, 6.0, 6.3, 6.6, 6.9, 7.2, 7.5, 7.8, 8.1, 8.4, 8.7] +ionization_frequency = 0.0 +nstep = 1800 +dt = 0.001414213562373095 +nwrite = 20 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 11.313708498984761 # = 8*sqrt(2) +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 11.313708498984761 # = 8*sqrt(2) +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T2_split1.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T2_split1.toml new file mode 100644 index 000000000..4270c512b --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T2_split1.toml @@ -0,0 +1,53 @@ +#combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = false +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = 1.0 +initial_temperature1 = 2.0 +initial_density2 = 1.0 +initial_temperature2 = 2.0 +z_IC_option1 = "sinusoid" +#z_IC_density_amplitude1 = 0.001 +z_IC_density_amplitude1 = 0.01 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +#z_IC_density_amplitude2 = 0.001 +z_IC_density_amplitude2 = 0.01 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4, 2.7, 3.0, 3.3, 3.6, 3.9, 4.2, 4.5, 4.8, 5.1, 5.4, 5.7, 6.0, 6.3, 6.6, 6.9, 7.2, 7.5, 7.8, 8.1, 8.4, 8.7] +ionization_frequency = 0.0 +nstep = 1800 +dt = 0.001414213562373095 +nwrite = 20 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 11.313708498984761 # = 8*sqrt(2) +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 11.313708498984761 # = 8*sqrt(2) +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T2_split2.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T2_split2.toml new file mode 100644 index 000000000..1ad976017 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T2_split2.toml @@ -0,0 +1,53 @@ +#combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = true +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = 1.0 +initial_temperature1 = 2.0 +initial_density2 = 1.0 +initial_temperature2 = 2.0 +z_IC_option1 = "sinusoid" +#z_IC_density_amplitude1 = 0.001 +z_IC_density_amplitude1 = 0.01 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +#z_IC_density_amplitude2 = 0.001 +z_IC_density_amplitude2 = 0.01 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4, 2.7, 3.0, 3.3, 3.6, 3.9, 4.2, 4.5, 4.8, 5.1, 5.4, 5.7, 6.0, 6.3, 6.6, 6.9, 7.2, 7.5, 7.8, 8.1, 8.4, 8.7] +ionization_frequency = 0.0 +nstep = 1800 +dt = 0.001414213562373095 +nwrite = 20 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 11.313708498984761 # = 8*sqrt(2) +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 11.313708498984761 # = 8*sqrt(2) +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T2_split3.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T2_split3.toml new file mode 100644 index 000000000..3c56a2504 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T2_split3.toml @@ -0,0 +1,53 @@ +#combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = true +evolve_moments_parallel_pressure = true +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = 1.0 +initial_temperature1 = 2.0 +initial_density2 = 1.0 +initial_temperature2 = 2.0 +z_IC_option1 = "sinusoid" +#z_IC_density_amplitude1 = 0.001 +z_IC_density_amplitude1 = 0.01 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +#z_IC_density_amplitude2 = 0.001 +z_IC_density_amplitude2 = 0.01 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4, 2.7, 3.0, 3.3, 3.6, 3.9, 4.2, 4.5, 4.8, 5.1, 5.4, 5.7, 6.0, 6.3, 6.6, 6.9, 7.2, 7.5, 7.8, 8.1, 8.4, 8.7] +ionization_frequency = 0.0 +nstep = 1800 +dt = 0.001414213562373095 +nwrite = 20 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 8.0 +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 8.0 +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T4.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T4.toml new file mode 100644 index 000000000..172a63109 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T4.toml @@ -0,0 +1,54 @@ +#combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = false +evolve_moments_parallel_flow = false +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = 1.0 +initial_temperature1 = 4.0 +initial_density2 = 1.0 +initial_temperature2 = 4.0 +z_IC_option1 = "sinusoid" +#z_IC_density_amplitude1 = 0.001 +z_IC_density_amplitude1 = 0.01 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +#z_IC_density_amplitude2 = 0.001 +z_IC_density_amplitude2 = 0.01 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.4, 0.8, 1.2, 1.6, 2.0, 2.4, 2.8, 3.2, 3.6, 4.0, 4.4, 4.8, 5.2, 5.6, 6.0, 6.4, 6.8, 7.2, 7.6, 8.0, 8.4, 8.8, 9.2, 9.6, 10.0, 10.4, 10.8, 11.2, 11.6, 12.0, 12.4] +ionization_frequency = 0.0 +nstep = 3000 +dt = 1.0e-3 +nwrite = 20 +#nwrite_dfns = 20 #80 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 16.0 +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 16.0 +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T4_split1.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T4_split1.toml new file mode 100644 index 000000000..832175e8a --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T4_split1.toml @@ -0,0 +1,54 @@ +#combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = false +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = 1.0 +initial_temperature1 = 4.0 +initial_density2 = 1.0 +initial_temperature2 = 4.0 +z_IC_option1 = "sinusoid" +#z_IC_density_amplitude1 = 0.001 +z_IC_density_amplitude1 = 0.01 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +#z_IC_density_amplitude2 = 0.001 +z_IC_density_amplitude2 = 0.01 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.4, 0.8, 1.2, 1.6, 2.0, 2.4, 2.8, 3.2, 3.6, 4.0, 4.4, 4.8, 5.2, 5.6, 6.0, 6.4, 6.8, 7.2, 7.6, 8.0, 8.4, 8.8, 9.2, 9.6, 10.0, 10.4, 10.8, 11.2, 11.6, 12.0, 12.4] +ionization_frequency = 0.0 +nstep = 3000 +dt = 1.0e-3 +nwrite = 20 +#nwrite_dfns = 20 #80 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 16.0 +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 16.0 +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T4_split2.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T4_split2.toml new file mode 100644 index 000000000..51a469653 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T4_split2.toml @@ -0,0 +1,54 @@ +#combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = true +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = 1.0 +initial_temperature1 = 4.0 +initial_density2 = 1.0 +initial_temperature2 = 4.0 +z_IC_option1 = "sinusoid" +#z_IC_density_amplitude1 = 0.001 +z_IC_density_amplitude1 = 0.01 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +#z_IC_density_amplitude2 = 0.001 +z_IC_density_amplitude2 = 0.01 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.4, 0.8, 1.2, 1.6, 2.0, 2.4, 2.8, 3.2, 3.6, 4.0, 4.4, 4.8, 5.2, 5.6, 6.0, 6.4, 6.8, 7.2, 7.6, 8.0, 8.4, 8.8, 9.2, 9.6, 10.0, 10.4, 10.8, 11.2, 11.6, 12.0, 12.4] +ionization_frequency = 0.0 +nstep = 3000 +dt = 1.0e-3 +nwrite = 20 +#nwrite_dfns = 20 #80 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 16.0 +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 16.0 +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T4_split3.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T4_split3.toml new file mode 100644 index 000000000..e809bd269 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_T4_split3.toml @@ -0,0 +1,54 @@ +#combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = true +evolve_moments_parallel_pressure = true +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = 1.0 +initial_temperature1 = 4.0 +initial_density2 = 1.0 +initial_temperature2 = 4.0 +z_IC_option1 = "sinusoid" +#z_IC_density_amplitude1 = 0.001 +z_IC_density_amplitude1 = 0.01 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +#z_IC_density_amplitude2 = 0.001 +z_IC_density_amplitude2 = 0.01 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.4, 0.8, 1.2, 1.6, 2.0, 2.4, 2.8, 3.2, 3.6, 4.0, 4.4, 4.8, 5.2, 5.6, 6.0, 6.4, 6.8, 7.2, 7.6, 8.0, 8.4, 8.8, 9.2, 9.6, 10.0, 10.4, 10.8, 11.2, 11.6, 12.0, 12.4] +ionization_frequency = 0.0 +nstep = 3000 +dt = 1.0e-3 +nwrite = 20 +#nwrite_dfns = 20 #80 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 8.0 +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 8.0 +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_nratio.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_nratio.toml new file mode 100644 index 000000000..187153bc1 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_nratio.toml @@ -0,0 +1,51 @@ +combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = false +evolve_moments_parallel_flow = false +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = [1.0e-5, 0.5, 1.0, 1.5, 1.99999] +initial_temperature1 = 1.0 +initial_density2 = [1.99999, 1.5, 1.0, 0.5, 1.0e-5] +initial_temperature2 = 1.0 +z_IC_option1 = "sinusoid" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8, 5.0, 5.2, 5.4, 5.6, 5.8, 6.0, 6.2] +ionization_frequency = 0.0 +nstep = 2500 +dt = 2.0e-3 +nwrite = 20 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 8.0 +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 8.0 +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_nratio_split1.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_nratio_split1.toml new file mode 100644 index 000000000..f3d05b019 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_nratio_split1.toml @@ -0,0 +1,51 @@ +combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = false +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = [1.0e-5, 0.5, 1.0, 1.5, 1.99999] +initial_temperature1 = 1.0 +initial_density2 = [1.99999, 1.5, 1.0, 0.5, 1.0e-5] +initial_temperature2 = 1.0 +z_IC_option1 = "sinusoid" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8, 5.0, 5.2, 5.4, 5.6, 5.8, 6.0, 6.2] +ionization_frequency = 0.0 +nstep = 2500 +dt = 2.0e-3 +nwrite = 20 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 8.0 +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 8.0 +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_nratio_split2.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_nratio_split2.toml new file mode 100644 index 000000000..ce1da435b --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_nratio_split2.toml @@ -0,0 +1,51 @@ +combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = true +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = [1.0e-5, 0.5, 1.0, 1.5, 1.99999] +initial_temperature1 = 1.0 +initial_density2 = [1.99999, 1.5, 1.0, 0.5, 1.0e-5] +initial_temperature2 = 1.0 +z_IC_option1 = "sinusoid" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8, 5.0, 5.2, 5.4, 5.6, 5.8, 6.0, 6.2] +ionization_frequency = 0.0 +nstep = 2500 +dt = 2.0e-3 +nwrite = 20 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 8.0 +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 8.0 +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_nratio_split3.toml b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_nratio_split3.toml new file mode 100644 index 000000000..2c576c88d --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/sound-wave/scan_sound-wave_nratio_split3.toml @@ -0,0 +1,51 @@ +combine_outer = ["charge_exchange_frequency"] +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = true +evolve_moments_parallel_pressure = true +evolve_moments_conservation = true +T_e = 1.0 +initial_density1 = [1.0e-5, 0.5, 1.0, 1.5, 1.99999] +initial_temperature1 = 1.0 +initial_density2 = [1.99999, 1.5, 1.0, 0.5, 1.0e-5] +initial_temperature2 = 1.0 +z_IC_option1 = "sinusoid" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 0.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +z_IC_option2 = "sinusoid" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = 0.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = [0.0, 0.2, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2, 2.4, 2.6, 2.8, 3.0, 3.2, 3.4, 3.6, 3.8, 4.0, 4.2, 4.4, 4.6, 4.8, 5.0, 5.2, 5.4, 5.6, 5.8, 6.0, 6.2] +ionization_frequency = 0.0 +nstep = 2500 +dt = 2.0e-3 +nwrite = 20 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 17 +z_nelement = 2 +z_bc = "periodic" +z_discretization = "chebyshev_pseudospectral" +vpa_ngrid = 17 +vpa_nelement = 8 +vpa_L = 8.0 +vpa_bc = "periodic" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 17 +vz_nelement = 8 +vz_L = 8.0 +vz_bc = "periodic" +vz_discretization = "chebyshev_pseudospectral" diff --git a/publication_inputs/2023_EFTC_jto-poster/wall-bc/post_processing_input_eftc2023.toml b/publication_inputs/2023_EFTC_jto-poster/wall-bc/post_processing_input_eftc2023.toml new file mode 100644 index 000000000..79853d7a4 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/wall-bc/post_processing_input_eftc2023.toml @@ -0,0 +1,2 @@ +itime_min = -1 +itime_min_dfns = -1 diff --git a/publication_inputs/2023_EFTC_jto-poster/wall-bc/wall-bc-plots.jl b/publication_inputs/2023_EFTC_jto-poster/wall-bc/wall-bc-plots.jl new file mode 100644 index 000000000..49ed63f63 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/wall-bc/wall-bc-plots.jl @@ -0,0 +1,130 @@ +using CairoMakie +using LaTeXStrings +using MathTeXEngine + +using moment_kinetics.makie_post_processing + +function main() + output_dir = "wall-bc" + ext = ".png" + + CairoMakie.activate!(; px_per_unit=4) + update_theme!(fontsize=24, fonts=(; regular=texfont(:text), bold=texfont(:bold), + italic=texfont(:italic), + bold_italic=texfont(:bolditalic))) + + #run_dir = "runs/wall-bc_recyclefraction0.5" + #run_dir = "runs/wall-bc_recyclefraction0.5_split3" + + #run_dirs = ("runs/wall-bc_volumerecycle", "runs/wall-bc_volumerecycle_split1", + # "runs/wall-bc_volumerecycle_split2", "runs/wall-bc_volumerecycle_split3") + run_dirs = ("../../runs/wall-bc_recyclefraction0.5", + "../../runs/wall-bc_recyclefraction0.5_split1", + "../../runs/wall-bc_recyclefraction0.5_split2", + "../../runs/wall-bc_recyclefraction0.5_split3", + ) + + prefixes = ("full-f", "split1", "split2", "split3") + short_labels = (L"full-f$$", L"evolving-$n$", L"evolving-$n,u_\parallel$", + L"evolving-$n,u_\parallel,p_\parallel$") + #subtitles = (L"full-f$$", L"evolving-$n$", L"evolving-$n,u_\parallel$", + # L"evolving-$n,u_\parallel,p_\parallel$") + + run_info = Tuple(get_run_info(d; itime_min=-1, do_setup=false) for d ∈ run_dirs) + run_info_dfns = Tuple(get_run_info(d; itime_min=-1, dfns=true, do_setup=false) for d ∈ run_dirs) + setup_makie_post_processing_input!( + joinpath(output_dir, "post_processing_input_eftc2023.toml"), + run_info_moments=run_info, run_info_dfns=run_info_dfns) + + fig, axes = get_1d_ax(3; xlabel=L"z/L", + subtitles=(L"density$$", L"parallel flow$$", L"temperature$$"), + resolution=(1200, 400)) + for ((var_names, ylabel), ax) ∈ zip(((("density", "density_neutral"), L"n/n_\mathrm{ref}"), + (("parallel_flow", "uz_neutral"), L"u_\parallel/v_\mathrm{ref}"), + (("temperature", "temperature_neutral"), L"T/T_\mathrm{ref}")), + axes) + for (ri, label1, linestyle) ∈ zip(run_info, short_labels, + (nothing, :dash, :dashdot, :dot)) + for (var_name, label2) ∈ zip(var_names, ("ion", "neutral")) + if var_name == "temperature" + data = postproc_load_variable(ri, "thermal_speed", it=ri.nt, is=1, ir=1).^2 + elseif var_name == "temperature_neutral" + data = postproc_load_variable(ri, "thermal_speed_neutral", it=ri.nt, is=1, ir=1).^2 + else + data = nothing + end + plot_vs_z(ri, var_name; ax=ax, data=data, ylabel=ylabel, + label=LaTeXString(label1*" "*label2), linestyle=linestyle) + end + end + end + Legend(fig[2, 1], axes[1]; tellheight=true, tellwidth=false, orientation=:horizontal, nbanks=2) + save(joinpath(output_dir, "moments" * ext), fig) + + #plot_vs_vpa_z(run_info_dfns, "f"; title=L"f_i", outfile=joinpath(output_dir, "f_ion$ext"), xlabel=L"v_\parallel", ylabel=L"z") + #plot_vs_vz_z(run_info_dfns, "f_neutral"; title=L"f_n", outfile=joinpath(output_dir, "f_neutral$ext"), xlabel=L"v_\parallel", ylabel=L"z") + + ion_cbar_max = 3 + neutral_cbar_max = 8 + lims = (-12.0, 12.0, -0.5, 0.5) + axis_args = Dict(:limits=>lims, :xgridvisible=>false, :ygridvisible=>false, :xticks=>-10:5:10) + #plot_f_unnorm_vs_vpa_z(run_info_dfns; title=L"f_i", outfile=joinpath(output_dir, "f_ion$ext"), xlabel=L"v_\parallel", ylabel=L"z", rasterize=4.0, colorrange=(0, ion_cbar_max), subtitles=subtitles, axis_args=axis_args) + #plot_f_unnorm_vs_vpa_z(run_info_dfns; neutral=true, title=L"f_n", outfile=joinpath(output_dir, "f_neutral$ext"), xlabel=L"v_\parallel", ylabel=L"z", rasterize=4.0, colorrange=(0, neutral_cbar_max), subtitles=subtitles, axis_args=axis_args) + + #plot_f_unnorm_vs_vpa_z(run_info_dfns; title=L"f_i", outfile=joinpath(output_dir, "logf_ion$ext"), transform=positive_or_nan, colorscale=log10, xlabel=L"v_\parallel", ylabel=L"z", rasterize=4.0, colorrange=(1e-16, ion_cbar_max), subtitles=subtitles, axis_args=axis_args) + #plot_f_unnorm_vs_vpa_z(run_info_dfns; neutral=true, title=L"f_n", outfile=joinpath(output_dir, "logf_neutral$ext"), transform=positive_or_nan, colorscale=log10, xlabel=L"v_\parallel", ylabel=L"z", rasterize=4.0, colorrange=(1e-16, neutral_cbar_max), subtitles=subtitles, axis_args=axis_args) + + fig = Figure(resolution=(1200, 500)) + + # Make column headings + for (i, st) ∈ enumerate(short_labels) + Label(fig[1, i], st, tellwidth=false) + end + + axes_ion = [Axis(fig[2,i]; axis_args...) for i ∈ 1:4] + axes_neutral = [Axis(fig[3,i]; axis_args...) for i ∈ 1:4] + hm_ion = nothing + hm_neutral = nothing + for (ri, p, ax_ion, ax_neutral) ∈ zip(run_info_dfns, prefixes, axes_ion, axes_neutral) + hm_ion = plot_f_unnorm_vs_vpa_z(ri; xlabel=L"v_\parallel/v_\mathrm{ref}", ylabel=L"z/L", + rasterize=8.0, colorrange=(0, ion_cbar_max), + ax=ax_ion, title="") + hm_neutral = plot_f_unnorm_vs_vpa_z(ri; neutral=true, xlabel=L"v_\parallel/v_\mathrm{ref}", + ylabel=L"z/L", rasterize=8.0, + colorrange=(0, neutral_cbar_max), + ax=ax_neutral, title="") + + #plot_f_unnorm_vs_vpa_z(ri; + # outfile=joinpath(output_dir, "$(p)_logf_ion$ext"), + # transform=positive_or_nan, colorscale=log10, + # xlabel=L"v_\parallel", ylabel=L"z", rasterize=4.0, + # colorrange=(1e-16, ion_cbar_max), title=st, + # axis_args=axis_args) + #plot_f_unnorm_vs_vpa_z(ri; neutral=true, + # outfile=joinpath(output_dir, "$(p)_logf_neutral$ext"), + # transform=positive_or_nan, colorscale=log10, + # xlabel=L"v_\parallel", ylabel=L"z", rasterize=4.0, + # colorrange=(1e-16, neutral_cbar_max), title=st, + # axis_args=axis_args) + end + + for ax ∈ axes_ion + hidexdecorations!(ax) + end + for ax ∈ axes_ion[2:end] + hideydecorations!(ax) + end + for ax ∈ axes_neutral[2:end] + hideydecorations!(ax) + end + + Label(fig[2,0], L"ion$$", rotation=π/2, tellheight=false) + Label(fig[3,0], L"neutral$$", rotation=π/2, tellheight=false) + + Colorbar(fig[2, end+1], hm_ion) + Colorbar(fig[3, end], hm_neutral) + + save(joinpath(output_dir, "pdfs$ext"), fig) +end + +main() diff --git a/publication_inputs/2023_EFTC_jto-poster/wall-bc/wall-bc_recyclefraction0.5.toml b/publication_inputs/2023_EFTC_jto-poster/wall-bc/wall-bc_recyclefraction0.5.toml new file mode 100644 index 000000000..0a363e4a9 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/wall-bc/wall-bc_recyclefraction0.5.toml @@ -0,0 +1,88 @@ +steady_state_residual = true +converged_residual_value = 1.0e-3 +#runtime_plots = true +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = false +evolve_moments_parallel_flow = false +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +recycling_fraction = 0.5 +krook_collisions_option = "reference_parameters" +T_e = 0.2 # 1.0 +T_wall = 0.1 +initial_density1 = 1.0 +initial_temperature1 = 1.0 +z_IC_option1 = "gaussian" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 1.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +vpa_IC_option1 = "gaussian" +vpa_IC_density_amplitude1 = 1.0 +vpa_IC_density_phase1 = 0.0 +vpa_IC_upar_amplitude1 = 0.0 +vpa_IC_upar_phase1 = 0.0 +vpa_IC_temperature_amplitude1 = 0.0 +vpa_IC_temperature_phase1 = 0.0 +initial_density2 = 1.0 +initial_temperature2 = 1.0 +z_IC_option2 = "gaussian" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = -1.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +vpa_IC_option2 = "gaussian" +vpa_IC_density_amplitude2 = 1.0 +vpa_IC_density_phase2 = 0.0 +vpa_IC_upar_amplitude2 = 0.0 +vpa_IC_upar_phase2 = 0.0 +vpa_IC_temperature_amplitude2 = 0.0 +vpa_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = 0.75 +ionization_frequency = 0.5 +constant_ionization_rate = false +#nstep = 50000 +nstep = 1000000 +dt = 3.0e-5 +nwrite = 10000 +nwrite_dfns = 10000 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 9 +z_nelement = 32 +z_nelement_local = 4 +z_bc = "wall" +z_discretization = "chebyshev_pseudospectral" +z_element_spacing_option = "sqrt" +vpa_ngrid = 10 +vpa_nelement = 63 +vpa_L = 18.0 +vpa_bc = "zero" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 10 +vz_nelement = 63 +vz_L = 18.0 +vz_bc = "zero" +vz_discretization = "chebyshev_pseudospectral" + +[ion_source] +active = true +z_profile = "gaussian" +z_width = 0.125 +source_strength = 2.0 +source_T = 2.0 + +[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 diff --git a/publication_inputs/2023_EFTC_jto-poster/wall-bc/wall-bc_recyclefraction0.5_split1.toml b/publication_inputs/2023_EFTC_jto-poster/wall-bc/wall-bc_recyclefraction0.5_split1.toml new file mode 100644 index 000000000..8cae6950d --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/wall-bc/wall-bc_recyclefraction0.5_split1.toml @@ -0,0 +1,88 @@ +steady_state_residual = true +converged_residual_value = 1.0e-3 +#runtime_plots = true +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = false +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +recycling_fraction = 0.5 +krook_collisions_option = "reference_parameters" +T_e = 0.2 # 1.0 +T_wall = 0.1 +initial_density1 = 1.0 +initial_temperature1 = 1.0 +z_IC_option1 = "gaussian" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 1.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +vpa_IC_option1 = "gaussian" +vpa_IC_density_amplitude1 = 1.0 +vpa_IC_density_phase1 = 0.0 +vpa_IC_upar_amplitude1 = 0.0 +vpa_IC_upar_phase1 = 0.0 +vpa_IC_temperature_amplitude1 = 0.0 +vpa_IC_temperature_phase1 = 0.0 +initial_density2 = 1.0 +initial_temperature2 = 1.0 +z_IC_option2 = "gaussian" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = -1.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +vpa_IC_option2 = "gaussian" +vpa_IC_density_amplitude2 = 1.0 +vpa_IC_density_phase2 = 0.0 +vpa_IC_upar_amplitude2 = 0.0 +vpa_IC_upar_phase2 = 0.0 +vpa_IC_temperature_amplitude2 = 0.0 +vpa_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = 0.75 +ionization_frequency = 0.5 +constant_ionization_rate = false +#nstep = 50000 +nstep = 1000000 +dt = 3.0e-5 +nwrite = 10000 +nwrite_dfns = 10000 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 9 +z_nelement = 32 +z_nelement_local = 4 +z_bc = "wall" +z_discretization = "chebyshev_pseudospectral" +z_element_spacing_option = "sqrt" +vpa_ngrid = 10 +vpa_nelement = 63 +vpa_L = 18.0 +vpa_bc = "zero" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 10 +vz_nelement = 63 +vz_L = 18.0 +vz_bc = "zero" +vz_discretization = "chebyshev_pseudospectral" + +[ion_source] +active = true +z_profile = "gaussian" +z_width = 0.125 +source_strength = 2.0 +source_T = 2.0 + +[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 diff --git a/publication_inputs/2023_EFTC_jto-poster/wall-bc/wall-bc_recyclefraction0.5_split2.toml b/publication_inputs/2023_EFTC_jto-poster/wall-bc/wall-bc_recyclefraction0.5_split2.toml new file mode 100644 index 000000000..986e8a616 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/wall-bc/wall-bc_recyclefraction0.5_split2.toml @@ -0,0 +1,88 @@ +steady_state_residual = true +converged_residual_value = 1.0e-3 +#runtime_plots = true +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = true +evolve_moments_parallel_pressure = false +evolve_moments_conservation = true +recycling_fraction = 0.5 +krook_collisions_option = "reference_parameters" +T_e = 0.2 # 1.0 +T_wall = 0.1 +initial_density1 = 1.0 +initial_temperature1 = 1.0 +z_IC_option1 = "gaussian" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 1.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +vpa_IC_option1 = "gaussian" +vpa_IC_density_amplitude1 = 1.0 +vpa_IC_density_phase1 = 0.0 +vpa_IC_upar_amplitude1 = 0.0 +vpa_IC_upar_phase1 = 0.0 +vpa_IC_temperature_amplitude1 = 0.0 +vpa_IC_temperature_phase1 = 0.0 +initial_density2 = 1.0 +initial_temperature2 = 1.0 +z_IC_option2 = "gaussian" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = -1.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +vpa_IC_option2 = "gaussian" +vpa_IC_density_amplitude2 = 1.0 +vpa_IC_density_phase2 = 0.0 +vpa_IC_upar_amplitude2 = 0.0 +vpa_IC_upar_phase2 = 0.0 +vpa_IC_temperature_amplitude2 = 0.0 +vpa_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = 0.75 +ionization_frequency = 0.5 +constant_ionization_rate = false +#nstep = 50000 +nstep = 1000000 +dt = 3.0e-5 +nwrite = 10000 +nwrite_dfns = 10000 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 9 +z_nelement = 32 +z_nelement_local = 4 +z_bc = "wall" +z_discretization = "chebyshev_pseudospectral" +z_element_spacing_option = "sqrt" +vpa_ngrid = 10 +vpa_nelement = 63 +vpa_L = 18.0 +vpa_bc = "zero" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 10 +vz_nelement = 63 +vz_L = 18.0 +vz_bc = "zero" +vz_discretization = "chebyshev_pseudospectral" + +[ion_source] +active = true +z_profile = "gaussian" +z_width = 0.125 +source_strength = 2.0 +source_T = 2.0 + +[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 diff --git a/publication_inputs/2023_EFTC_jto-poster/wall-bc/wall-bc_recyclefraction0.5_split3.toml b/publication_inputs/2023_EFTC_jto-poster/wall-bc/wall-bc_recyclefraction0.5_split3.toml new file mode 100644 index 000000000..28bcc6831 --- /dev/null +++ b/publication_inputs/2023_EFTC_jto-poster/wall-bc/wall-bc_recyclefraction0.5_split3.toml @@ -0,0 +1,88 @@ +steady_state_residual = true +converged_residual_value = 1.0e-3 +#runtime_plots = true +n_ion_species = 1 +n_neutral_species = 1 +boltzmann_electron_response = true +evolve_moments_density = true +evolve_moments_parallel_flow = true +evolve_moments_parallel_pressure = true +evolve_moments_conservation = true +recycling_fraction = 0.5 +krook_collisions_option = "reference_parameters" +T_e = 0.2 # 1.0 +T_wall = 0.1 +initial_density1 = 1.0 +initial_temperature1 = 1.0 +z_IC_option1 = "gaussian" +z_IC_density_amplitude1 = 0.001 +z_IC_density_phase1 = 0.0 +z_IC_upar_amplitude1 = 1.0 +z_IC_upar_phase1 = 0.0 +z_IC_temperature_amplitude1 = 0.0 +z_IC_temperature_phase1 = 0.0 +vpa_IC_option1 = "gaussian" +vpa_IC_density_amplitude1 = 1.0 +vpa_IC_density_phase1 = 0.0 +vpa_IC_upar_amplitude1 = 0.0 +vpa_IC_upar_phase1 = 0.0 +vpa_IC_temperature_amplitude1 = 0.0 +vpa_IC_temperature_phase1 = 0.0 +initial_density2 = 1.0 +initial_temperature2 = 1.0 +z_IC_option2 = "gaussian" +z_IC_density_amplitude2 = 0.001 +z_IC_density_phase2 = 0.0 +z_IC_upar_amplitude2 = -1.0 +z_IC_upar_phase2 = 0.0 +z_IC_temperature_amplitude2 = 0.0 +z_IC_temperature_phase2 = 0.0 +vpa_IC_option2 = "gaussian" +vpa_IC_density_amplitude2 = 1.0 +vpa_IC_density_phase2 = 0.0 +vpa_IC_upar_amplitude2 = 0.0 +vpa_IC_upar_phase2 = 0.0 +vpa_IC_temperature_amplitude2 = 0.0 +vpa_IC_temperature_phase2 = 0.0 +charge_exchange_frequency = 0.75 +ionization_frequency = 0.5 +constant_ionization_rate = false +#nstep = 50000 +nstep = 1000000 +dt = 1.0e-5 +nwrite = 10000 +nwrite_dfns = 10000 +use_semi_lagrange = false +n_rk_stages = 4 +split_operators = false +r_ngrid = 1 +r_nelement = 1 +z_ngrid = 9 +z_nelement = 32 +z_nelement_local = 4 +z_bc = "wall" +z_discretization = "chebyshev_pseudospectral" +z_element_spacing_option = "sqrt" +vpa_ngrid = 10 +vpa_nelement = 63 +vpa_L = 36.0 +vpa_bc = "zero" +vpa_discretization = "chebyshev_pseudospectral" +vz_ngrid = 10 +vz_nelement = 63 +vz_L = 36.0 +vz_bc = "zero" +vz_discretization = "chebyshev_pseudospectral" + +[ion_source] +active = true +z_profile = "gaussian" +z_width = 0.125 +source_strength = 2.0 +source_T = 2.0 + +[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