impurity_radiation_module Module

Module for new impurity radiation calculations author: H Lux, CCFE, Culham Science Centre author: R Kemp, CCFE, Culham Science Centre author: P J Knight, CCFE, Culham Science Centre N/A This module contains routines for calculating the bremsstrahlung and line radiation of impurities including H and He, assuming a coronal equilibrium.

The model is only valid for T > 30 eV. For some impurity species there is also an upper temperature limit of T < 40 keV. Johner, Fusion Science and Technology 59 (2011), pp 308-349 Sertoli, private communication Kallenbach et al., Plasma Phys. Control. Fus. 55(2013) 124041 (It is recommended to turn on constraint eqn.17 with iteration variable 28: fradpwr.)



Contents


Variables

TypeVisibility AttributesNameInitial
integer, public, parameter:: nimp =14

nimp /14/ FIX : number of ion species in impurity radiation model

real(kind=dp), public :: coreradius

coreradius /0.6/ : normalised radius defining the 'core' region

real(kind=dp), public :: coreradiationfraction

coreradiationfraction /1.0/ : fraction of radiation from 'core' region that is subtracted from the loss power

fimp(nimp) /1.0,0.1,0.02,0.0,0.0,0.0,0.0,0.0,0.0016,0.0,0.0,0.0,0.0,0.0/ : impurity number density fractions relative to electron density

real(kind=dp), public, dimension(nimp):: fimp
character(len=2), public, dimension(nimp):: imp_label

imp_label(nimp) : impurity ion species names:

  • ( 1) Hydrogen (fraction calculated by code)
  • ( 2) Helium
  • ( 3) Beryllium
  • ( 4) Carbon
  • ( 5) Nitrogen
  • ( 6) Oxygen
  • ( 7) Neon
  • ( 8) Silicon
  • ( 9) Argon
  • (10) Iron
  • (11) Nickel
  • (12) Krypton
  • (13) Xenon
  • (14) Tungsten

integer, private, parameter:: all_array_hotfix_len =200
character(len=2), public, dimension(nimp):: impurity_arr_Label
integer, public, dimension(nimp):: impurity_arr_Z
real(kind=dp), public, dimension(nimp):: impurity_arr_amass
real(kind=dp), public, dimension(nimp):: impurity_arr_frac
integer, public, dimension(nimp):: impurity_arr_len_tab
real(kind=dp), public, dimension(nimp, all_array_hotfix_len):: impurity_arr_Temp_keV
real(kind=dp), public, dimension(nimp, all_array_hotfix_len):: impurity_arr_Lz_Wm3
real(kind=dp), public, dimension(nimp, all_array_hotfix_len):: impurity_arr_Zav
logical, public :: toolow

Used for reporting error in function pimpden


Functions

public function element2index(element_label)

Returns the index of the element in the impurity array with a given name author: P J Knight, CCFE, Culham Science Centre element_label : input string : impurity name This function returns the index of the element in the impurity array with the corresponding name. None

Arguments

Type IntentOptional AttributesName
character(len=*), intent(in) :: element_label

Return Value integer

public function Zav_of_te(imp_element_index, te)

Electron temperature dependent average atomic number author: H Lux, CCFE, Culham Science Centre imp_element : input imp_dat : impurity element te : input real : electron temperature (keV) This routine returns the interpolated average atomic charge for a given electron temperature.

The Zav versus temperature data is interpolated from lookup tables from the ADAS data base provided by Martin O'Mullane. None

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: imp_element_index
real(kind=dp), intent(in) :: te

Return Value real(kind=dp)


Subroutines

public subroutine init_impurity_radiation_module()

Initialise module variables

Arguments

None