Different species for secondary electrons
The option to have a different species than the impacting electron for secondary electrons from ionization is introduced.
This commit is contained in:
parent
4585390b50
commit
e41b448ef8
4 changed files with 45 additions and 7 deletions
|
|
@ -43,7 +43,8 @@ MODULE moduleCollisions
|
|||
TYPE, EXTENDS(collisionBinary):: collisionBinaryIonization
|
||||
REAL(8):: eThreshold !Minimum energy (non-dimensional units) required for ionization
|
||||
REAL(8):: deltaV !Change in velocity due to exchange of eThreshold
|
||||
CLASS(speciesCharged), POINTER:: electron !Pointer to species considerer as electrons
|
||||
CLASS(speciesCharged), POINTER:: electron !Pointer to species considerer as electrons
|
||||
CLASS(speciesCharged), POINTER:: electronSecondary !Pointer to species considerer as secondary electron
|
||||
CONTAINS
|
||||
PROCEDURE, PASS:: collide => collideBinaryIonization
|
||||
|
||||
|
|
@ -241,7 +242,7 @@ MODULE moduleCollisions
|
|||
|
||||
!ELECTRON IMPACT IONIZATION
|
||||
!Inits electron impact ionization
|
||||
SUBROUTINE initBinaryIonization(collision, crossSectionFilename, energyThreshold, electron)
|
||||
SUBROUTINE initBinaryIonization(collision, crossSectionFilename, energyThreshold, electron, electronSecondary)
|
||||
USE moduleTable
|
||||
USE moduleRefParam
|
||||
USE moduleConstParam
|
||||
|
|
@ -253,7 +254,8 @@ MODULE moduleCollisions
|
|||
CHARACTER(:), ALLOCATABLE, INTENT(in):: crossSectionFilename
|
||||
REAL(8), INTENT(in):: energyThreshold
|
||||
CHARACTER(:), ALLOCATABLE, INTENT(in):: electron
|
||||
INTEGER:: electronIndex
|
||||
CHARACTER(:), ALLOCATABLE, OPTIONAL, INTENT(in):: electronSecondary
|
||||
INTEGER:: electronIndex, electronSecondaryIndex
|
||||
|
||||
ALLOCATE(collisionBinaryIonization:: collision)
|
||||
|
||||
|
|
@ -278,10 +280,27 @@ MODULE moduleCollisions
|
|||
|
||||
CLASS DEFAULT
|
||||
CALL criticalError("Species " // sp%name // " chosen for " // &
|
||||
"secondary electron is not a charged species", 'initBinaryIonization')
|
||||
"impacting electron is not a charged species", 'initBinaryIonization')
|
||||
|
||||
END SELECT
|
||||
|
||||
IF (PRESENT(electronSecondary)) THEN
|
||||
electronSecondaryIndex = speciesName2Index(electronSecondary)
|
||||
SELECT TYPE(sp => species(electronSecondaryIndex)%obj)
|
||||
TYPE IS(speciesCharged)
|
||||
collision%electronSecondary => sp
|
||||
|
||||
CLASS DEFAULT
|
||||
CALL criticalError("Species " // sp%name // " chosen for " // &
|
||||
"secondary electron is not a charged species", 'initBinaryIonization')
|
||||
|
||||
END SELECT
|
||||
|
||||
ELSE
|
||||
collision%electronSecondary => NULL()
|
||||
|
||||
END IF
|
||||
|
||||
!momentum change per ionization process
|
||||
collision%deltaV = sqrt(collision%eThreshold / collision%electron%m)
|
||||
|
||||
|
|
@ -336,6 +355,12 @@ MODULE moduleCollisions
|
|||
!Copy basic information from primary electron
|
||||
newElectron = electron
|
||||
|
||||
!If secondary electron species indicates, convert
|
||||
IF (ASSOCIATED(self%electronSecondary)) THEN
|
||||
newElectron%species => self%electronSecondary
|
||||
|
||||
END IF
|
||||
|
||||
!Secondary electorn gains energy from ionization
|
||||
newElectron%v = vChange
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue