XGC1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Public Attributes | List of all members
neu_module Module Reference

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...
 

Detailed Description

Module containing the global data and variables for the neutral particle recycling model.

Member Function/Subroutine Documentation

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 
)

Member Data Documentation

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


The documentation for this module was generated from the following file: