subroutine load_params_ms(params)
TYPE(KORC_PARAMS), INTENT(IN) :: params
REAL(rp) :: Te
! Background electron temperature in eV
REAL(rp) :: ne
! Background electron density in 1/m^3
INTEGER :: num_impurity_species
REAL(rp), DIMENSION(10) :: Zo
! Full nuclear charge of each impurity: Z=1 for D, Z=10 for Ne
REAL(rp), DIMENSION(10) :: Zj
! Atomic number of each impurity: Z=1 for D, Z=10 for Ne
REAL(rp), DIMENSION(10) :: nz
! Impurity densities
REAL(rp), DIMENSION(10) :: IZj
! Ionization energy of impurity in eV
REAL(rp), DIMENSION(10) :: aZj
INTEGER :: i
NAMELIST /CollisionParamsMultipleSpecies/ num_impurity_species,Te,ne, &
Zo,Zj,nz,IZj
open(unit=default_unit_open,file=TRIM(params%path_to_inputs), &
status='OLD',form='formatted')
read(default_unit_open,nml=CollisionParamsMultipleSpecies)
close(default_unit_open)
cparams_ms%num_impurity_species = num_impurity_species
ALLOCATE(cparams_ms%Zj(cparams_ms%num_impurity_species))
ALLOCATE(cparams_ms%Zo(cparams_ms%num_impurity_species))
ALLOCATE(cparams_ms%nz(cparams_ms%num_impurity_species))
ALLOCATE(cparams_ms%neb(cparams_ms%num_impurity_species))
ALLOCATE(cparams_ms%IZj(cparams_ms%num_impurity_species))
ALLOCATE(cparams_ms%aZj(cparams_ms%num_impurity_species))
ALLOCATE(cparams_ms%Ee_IZj(cparams_ms%num_impurity_species))
cparams_ms%Te = Te*C_E
cparams_ms%ne = ne
cparams_ms%nH = ne
cparams_ms%Zj = Zj(1:cparams_ms%num_impurity_species)
cparams_ms%Zo = Zo(1:cparams_ms%num_impurity_species)
cparams_ms%nz = nz(1:cparams_ms%num_impurity_species)
do i=1,cparams_ms%num_impurity_species
if (int(cparams_ms%Zo(i)).eq.10) then
cparams_ms%IZj(i) = C_E*cparams_ms%INe(int(cparams_ms%Zj(i)+1))
cparams_ms%aZj(i) = cparams_ms%aNe(int(cparams_ms%Zj(i)+1))
else if (int(cparams_ms%Zo(i)).eq.18) then
cparams_ms%IZj(i) = C_E*cparams_ms%IAr(int(cparams_ms%Zj(i)+1))
cparams_ms%aZj(i) = cparams_ms%aAr(int(cparams_ms%Zj(i)+1))
else
if (params%mpi_params%rank .EQ. 0) then
write(6,'("Atomic number not defined!")')
end if
exit
end if
end do
cparams_ms%nef = ne + sum(cparams_ms%Zj*cparams_ms%nz)
cparams_ms%neb = (cparams_ms%Zo-cparams_ms%Zj)*cparams_ms%nz
cparams_ms%rD = SQRT( C_E0*cparams_ms%Te/(cparams_ms%ne*C_E**2) )
cparams_ms%re = C_RE
cparams_ms%Ee_IZj = C_ME*C_C**2/cparams_ms%IZj
if (params%mpi_params%rank .EQ. 0) then
write(6,'("Number of impurity species: ",I16)')&
cparams_ms%num_impurity_species
do i=1,cparams_ms%num_impurity_species
if (cparams_ms%Zo(i).eq.10) then
write(6,'("Ne with charge state: ",I16)') int(cparams_ms%Zj(i))
write(6,'("Mean excitation energy I (eV)",E17.10)') &
cparams_ms%IZj(i)/C_E
write(6,'("Effective ion length scale a (a_0)",E17.10)') &
cparams_ms%aZj(i)
else if (cparams_ms%Zo(i).eq.18) then
write(6,'("Ar with charge state: ",I16)') int(cparams_ms%Zj(i))
write(6,'("Mean excitation energy I (eV)",E17.10)') &
cparams_ms%IZj(i)/C_E
write(6,'("Effective ion length scale a (a_0)",E17.10)') &
cparams_ms%aZj(i)
end if
end do
end if
end subroutine load_params_ms