Implementation of ionization process.

Now collisions can have a different time step.

Added species name to output names as it was starting to get confusing
in Gmsh for multiple species.

Output filenames adapted to match any number of iterations.
This commit is contained in:
Jorge Gonzalez 2020-12-25 23:08:59 +01:00
commit e50cc3325b
13 changed files with 569 additions and 375 deletions

View file

@ -125,7 +125,7 @@ MODULE moduleMesh
!Volume index
INTEGER:: n = 0
!Maximum collision rate
REAL(8):: sigmaVrelMax = 1.D-17
REAL(8):: sigmaVrelMax = 0.D0
!Volume
REAL(8):: volume = 0.D0
!List of particles inside the volume
@ -392,7 +392,7 @@ MODULE moduleMesh
self%nColl = 0
nPart = self%listPart_in%amount
IF (nPart > 1) THEN
pMax = self%totalWeight*self%sigmaVrelMax*tauMin/self%volume
pMax = self%totalWeight*self%sigmaVrelMax*tauCollisions/self%volume
self%nColl = INT(REAL(nPart)*pMax*0.5D0)
!Converts the list of particles to an array for easy access
@ -428,9 +428,6 @@ MODULE moduleMesh
self%totalWeight = 0.D0
!Erase the list of particles inside the cell
CALL self%listPart_in%erase()
END SUBROUTINE collision
SUBROUTINE printOutputGmsh(self, t)
@ -445,12 +442,12 @@ MODULE moduleMesh
TYPE(outputFormat):: output(1:self%numNodes)
REAL(8):: time
CHARACTER(:), ALLOCATABLE:: fileName
CHARACTER (LEN=6):: tstring !TODO: Review to allow any number of iterations
CHARACTER (LEN=iterationDigits):: tstring
time = DBLE(t)*tauMin*ti_ref
DO i = 1, nSpecies
WRITE(tstring, '(I6.6)') t
WRITE(tstring, iterationFormat) t
fileName='OUTPUT_' // tstring// '_' // species(i)%obj%name // '.msh'
WRITE(*, "(6X,A15,A)") "Creating file: ", fileName
OPEN (60, file = path // folder // '/' // fileName)
@ -459,7 +456,7 @@ MODULE moduleMesh
WRITE(60, "(A)") '$EndMeshFormat'
WRITE(60, "(A)") '$NodeData'
WRITE(60, "(A)") '1'
WRITE(60, "(A)") '"Density (m^-3)"'
WRITE(60, "(A)") '"Density' // species(i)%obj%name // ' (m^-3)"'
WRITE(60, *) 1
WRITE(60, *) time
WRITE(60, *) 3
@ -473,7 +470,7 @@ MODULE moduleMesh
WRITE(60, "(A)") '$EndNodeData'
WRITE(60, "(A)") '$NodeData'
WRITE(60, "(A)") '1'
WRITE(60, "(A)") '"Velocity (m/s)"'
WRITE(60, "(A)") '"Velocity ' // species(i)%obj%name // ' (m/s)"'
WRITE(60, *) 1
WRITE(60, *) time
WRITE(60, *) 3
@ -486,7 +483,7 @@ MODULE moduleMesh
WRITE(60, "(A)") '$EndNodeData'
WRITE(60, "(A)") '$NodeData'
WRITE(60, "(A)") '1'
WRITE(60, "(A)") '"Pressure (Pa)"'
WRITE(60, "(A)") '"Pressure ' // species(i)%obj%name // ' (Pa)"'
WRITE(60, *) 1
WRITE(60, *) time
WRITE(60, *) 3
@ -499,7 +496,7 @@ MODULE moduleMesh
WRITE(60, "(A)") '$EndNodeData'
WRITE(60, "(A)") '$NodeData'
WRITE(60, "(A)") '1'
WRITE(60, "(A)") '"Temperature (K)"'
WRITE(60, "(A)") '"Temperature ' // species(i)%obj%name // ' (K)"'
WRITE(60, *) 1
WRITE(60, *) time
WRITE(60, *) 3
@ -519,6 +516,7 @@ MODULE moduleMesh
SUBROUTINE printCollGmsh(self, t)
USE moduleRefParam
USE moduleCaseParam
USE moduleCollisions
USE moduleOutput
IMPLICIT NONE
@ -527,12 +525,12 @@ MODULE moduleMesh
INTEGER:: n
REAL(8):: time
CHARACTER(:), ALLOCATABLE:: fileName
CHARACTER (LEN=6):: tstring !TODO: Review to allow any number of iterations
CHARACTER (LEN=iterationDigits):: tstring
IF (collOutput) THEN
IF (collOutput .AND. MOD(t, everyCollisions) == 0) THEN
time = DBLE(t)*tauMin*ti_ref
WRITE(tstring, '(I6.6)') t
WRITE(tstring, iterationFormat) t
fileName='OUTPUT_' // tstring// '_Collisions.msh'
WRITE(*, "(6X,A15,A)") "Creating file: ", fileName
@ -571,14 +569,14 @@ MODULE moduleMesh
INTEGER:: n, e
REAL(8):: time
CHARACTER(:), ALLOCATABLE:: fileName
CHARACTER (LEN=6):: tstring !TODO: Review to allow any number of iterations
CHARACTER (LEN=iterationDigits):: tstring
REAL(8):: xi(1:3)
xi = (/ 0.D0, 0.D0, 0.D0 /)
IF (emOutput) THEN
time = DBLE(t)*tauMin*ti_ref
WRITE(tstring, '(I6.6)') t
WRITE(tstring, iterationFormat) t
fileName='OUTPUT_' // tstring// '_EMField.msh'
WRITE(*, "(6X,A15,A)") "Creating file: ", fileName