XGC1
|
Module containing the global data and variables for the neutral particle recycling model. More...
Public Member Functions | |
subroutine | set_neutral_pointers (nnode, nwall, neu_weight_wall_lost_in, neu_weight_sum_lost_in, neu_node_dens_in, neu_node_temp_in) |
Public Attributes | |
integer | neu_num =10000 |
Number of neutral particles per thread. More... | |
integer | neu_istep_max =20000 |
Maximum number of neutral push time steps. More... | |
logical | neu_enforce_no_neutral =.false. |
Forced off-switch for the neutral recycling routine (needed for radiation cooling!) More... | |
logical | neu_adjust_n0 =.true. |
whether to update the base neutral density. If true, a provisional ionization rate (everywhere proportional to the local neutral density) is rescaled to match the global particle sink from the sheath module times neu_recycle_rate. .false. fixed n0, .true. varying n0 - neu_recycle_rate should be specified. More... | |
real(kind=8) | neu_n0 =5.0D17 |
m^-3 -> nomalized unit, Realistic initial value for neu_base_den (=base neutral density). For cases where neu_adjust_n0=false, this provides a baseline density to use. When neu_adjust_n0=true, neu_base_den is still calculated and reported in the stdout log, but has no effect on the physics. More... | |
real(kind=8) | neu_temp0 =3D0 |
Neutral temperature boundary condition. More... | |
real(kind=8) | neu_dt |
Timestep size for the neutral Monte Carlo steps. If not provided, a default value of 2e-3*sml_dt/sqrt(neu_temp0*1e-3) is used. More... | |
real(kind=8) | neu_base_den |
Base multiplier for the neutral density. Uses neu_n0. More... | |
real(kind=8), dimension(:), pointer | neu_weight_sum_lost |
Global number of ions lost to the wall. More... | |
real(kind=8) | neu_weight_lost_max = 5D23 |
upper cutoff on the number of lost particles More... | |
real(kind=8) | neu_lost_rate_max =5D23 |
upper cutoff on the particle loss rate (particles/sec) More... | |
real(kind=8) | neu_recycle_rate =0.9D0 |
Fraction of lost ions that are recycled as neutrals. The ions lost to the wall as calculated in the sheath module are used to determine the global particle sink. Neutrals are produced at a rate of neu_recycle_rate*neu_sum_weight_lost (in particles per second). Has no effect if neu_adjust_n0=false. More... | |
real(kind=8) | neu_theta_x = -99D0 |
real(kind=8) | neu_peak_theta =-99D0 |
Poloidal angle at which the neutral source is peak for neu_source_match_flux=.false. More... | |
real(kind=8) | neu_delta_n =10D0 |
Multiple of base neutral density at the peak position. When neu_source_match_flux=.false., determines the shape of the poloidal neutral source distribution. At large neu_delta_n, it approaches a Gaussian. neu_delta_n=1.0 corresponds to a uniform neutral source. More... | |
real(kind=8) | neu_delta_theta =0.5235987756 |
Width of the peak of the neutral source for neu_source_match_flux=.false. - 30/180 * pi. More... | |
real(kind=8) | neu_inpsi =0.7D0 |
Inner boundary for neutral fueling calculation (normalized pol. flux) More... | |
integer | neu_background_period =500 |
Period between subsequent updates of the background neutral distribution function in ion time steps. In any case, the density renormalization and source rates are recalculated every timestep for a fixed normalized neutral profile. More... | |
logical | neu_exclude_private =.false. |
Exclude the privat region from neutral recycling. More... | |
real(kind=8), dimension(:), pointer | neu_weight_wall_lost |
Local number of ions lost to the wall. More... | |
real(kind=8), dimension(:), allocatable | neu_norm_baseden |
Holds normalized neutral density from ion flux to wall. More... | |
integer | neu_nnode |
Number of nodes in neutral solution volume. Currently gridnnode. More... | |
integer | neu_nbirth |
Number of birth locations. Currently gridnwall. More... | |
logical | neu_source_match_flux =.true. |
If true, the neutral source around the limiter is determined from the local ion sink. If false, the neutral source is given an analytic poloidal dependence. More... | |
real(kind=8), dimension(:), allocatable | neu_rbirth |
real(kind=8), dimension(:), allocatable | neu_zbirth |
(R,Z) coordinates of the neutral birth surface More... | |
real(kind=8), dimension(:), pointer | neu_node_dens |
Normalized neutral density. More... | |
real(kind=8), dimension(:), pointer | neu_node_temp |
Neutral temperature. More... | |
real(kind=8), dimension(:), allocatable | neu_node_wsum |
Weight sum for neutral density calculation. More... | |
real(kind=8), dimension(:), allocatable | neu_node_esum |
Weight sum for avg. neutral energy calculation. More... | |
real(kind=8), dimension(:), allocatable | neu_node_varsum |
Weight sum for weight variance calculation. More... | |
real(kind=8), dimension(:), allocatable | neu_node_numsum |
Weight sum for neutral number calculation. More... | |
real(kind=8), dimension(:), allocatable | neu_node_vol |
Neutral cell volume. More... | |
real(kind=8), dimension(:), allocatable | neu_node_flow |
Neutral bulk flow. More... | |
real(kind=8), dimension(:), allocatable | neu_node_vsum |
Weight sum for neutral bulk flow calculation. More... | |
real(kind=8), dimension(:), allocatable | neu_node_relstd |
Neutral weight standard deviation. More... | |
Module containing the global data and variables for the neutral particle recycling model.
subroutine neu_module::set_neutral_pointers | ( | integer, intent(in) | nnode, |
integer, intent(in) | nwall, | ||
real (8), dimension(nwall), target | neu_weight_wall_lost_in, | ||
real (8), dimension(1), target | neu_weight_sum_lost_in, | ||
real (8), dimension(nnode), target | neu_node_dens_in, | ||
real (8), dimension(nnode), target | neu_node_temp_in | ||
) |
logical neu_module::neu_adjust_n0 =.true. |
whether to update the base neutral density. If true, a provisional ionization rate (everywhere proportional to the local neutral density) is rescaled to match the global particle sink from the sheath module times neu_recycle_rate. .false. fixed n0, .true. varying n0 - neu_recycle_rate should be specified.
integer neu_module::neu_background_period =500 |
Period between subsequent updates of the background neutral distribution function in ion time steps. In any case, the density renormalization and source rates are recalculated every timestep for a fixed normalized neutral profile.
real (kind=8) neu_module::neu_base_den |
Base multiplier for the neutral density. Uses neu_n0.
real (kind=8) neu_module::neu_delta_n =10D0 |
Multiple of base neutral density at the peak position. When neu_source_match_flux=.false., determines the shape of the poloidal neutral source distribution. At large neu_delta_n, it approaches a Gaussian. neu_delta_n=1.0 corresponds to a uniform neutral source.
real (kind=8) neu_module::neu_delta_theta =0.5235987756 |
Width of the peak of the neutral source for neu_source_match_flux=.false. - 30/180 * pi.
real (kind=8) neu_module::neu_dt |
Timestep size for the neutral Monte Carlo steps. If not provided, a default value of 2e-3*sml_dt/sqrt(neu_temp0*1e-3) is used.
logical neu_module::neu_enforce_no_neutral =.false. |
Forced off-switch for the neutral recycling routine (needed for radiation cooling!)
logical neu_module::neu_exclude_private =.false. |
Exclude the privat region from neutral recycling.
real (kind=8) neu_module::neu_inpsi =0.7D0 |
Inner boundary for neutral fueling calculation (normalized pol. flux)
integer neu_module::neu_istep_max =20000 |
Maximum number of neutral push time steps.
real (kind=8) neu_module::neu_lost_rate_max =5D23 |
upper cutoff on the particle loss rate (particles/sec)
real (kind=8) neu_module::neu_n0 =5.0D17 |
m^-3 -> nomalized unit, Realistic initial value for neu_base_den (=base neutral density). For cases where neu_adjust_n0=false, this provides a baseline density to use. When neu_adjust_n0=true, neu_base_den is still calculated and reported in the stdout log, but has no effect on the physics.
integer neu_module::neu_nbirth |
Number of birth locations. Currently gridnwall.
integer neu_module::neu_nnode |
Number of nodes in neutral solution volume. Currently gridnnode.
real (kind=8), dimension(:), pointer neu_module::neu_node_dens |
Normalized neutral density.
real (kind=8), dimension(:), allocatable neu_module::neu_node_esum |
Weight sum for avg. neutral energy calculation.
real (kind=8), dimension(:), allocatable neu_module::neu_node_flow |
Neutral bulk flow.
real (kind=8), dimension(:), allocatable neu_module::neu_node_numsum |
Weight sum for neutral number calculation.
real (kind=8), dimension(:), allocatable neu_module::neu_node_relstd |
Neutral weight standard deviation.
real (kind=8), dimension(:), pointer neu_module::neu_node_temp |
Neutral temperature.
real (kind=8), dimension(:), allocatable neu_module::neu_node_varsum |
Weight sum for weight variance calculation.
real (kind=8), dimension(:), allocatable neu_module::neu_node_vol |
Neutral cell volume.
real (kind=8), dimension(:), allocatable neu_module::neu_node_vsum |
Weight sum for neutral bulk flow calculation.
real (kind=8), dimension(:), allocatable neu_module::neu_node_wsum |
Weight sum for neutral density calculation.
real (kind=8), dimension(:), allocatable neu_module::neu_norm_baseden |
Holds normalized neutral density from ion flux to wall.
integer neu_module::neu_num =10000 |
Number of neutral particles per thread.
real (kind=8) neu_module::neu_peak_theta =-99D0 |
Poloidal angle at which the neutral source is peak for neu_source_match_flux=.false.
real (kind=8), dimension(:), allocatable neu_module::neu_rbirth |
real (kind=8) neu_module::neu_recycle_rate =0.9D0 |
Fraction of lost ions that are recycled as neutrals. The ions lost to the wall as calculated in the sheath module are used to determine the global particle sink. Neutrals are produced at a rate of neu_recycle_rate*neu_sum_weight_lost (in particles per second). Has no effect if neu_adjust_n0=false.
logical neu_module::neu_source_match_flux =.true. |
If true, the neutral source around the limiter is determined from the local ion sink. If false, the neutral source is given an analytic poloidal dependence.
real (kind=8) neu_module::neu_temp0 =3D0 |
Neutral temperature boundary condition.
real (kind=8) neu_module::neu_theta_x = -99D0 |
real (kind=8) neu_module::neu_weight_lost_max = 5D23 |
upper cutoff on the number of lost particles
real (kind=8), dimension(:), pointer neu_module::neu_weight_sum_lost |
Global number of ions lost to the wall.
real (kind=8), dimension(:), pointer neu_module::neu_weight_wall_lost |
Local number of ions lost to the wall.
real (kind=8), dimension(:), allocatable neu_module::neu_zbirth |
(R,Z) coordinates of the neutral birth surface