I'm feeling awful but I have work in my desktop that I need to commit so I can work with my laptop while I'm at the IEPC 2022 in Boston.
229 lines
6.8 KiB
Fortran
229 lines
6.8 KiB
Fortran
MODULE moduleMeshOutputGmsh2
|
|
|
|
CONTAINS
|
|
!Prints the scattered properties of particles into the nodes
|
|
SUBROUTINE printOutputGmsh2(self, t)
|
|
USE moduleMesh
|
|
USE moduleRefParam
|
|
USE moduleSpecies
|
|
USE moduleOutput
|
|
IMPLICIT NONE
|
|
|
|
CLASS(meshParticles), INTENT(in):: self
|
|
INTEGER, INTENT(in):: t
|
|
INTEGER:: n, i
|
|
TYPE(outputFormat):: output(1:self%numNodes)
|
|
REAL(8):: time
|
|
CHARACTER(:), ALLOCATABLE:: fileName
|
|
CHARACTER (LEN=iterationDigits):: tstring
|
|
|
|
time = DBLE(t)*tauMin*ti_ref
|
|
|
|
DO i = 1, nSpecies
|
|
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)
|
|
WRITE(60, "(A)") '$MeshFormat'
|
|
WRITE(60, "(A)") '2.2 0 8'
|
|
WRITE(60, "(A)") '$EndMeshFormat'
|
|
WRITE(60, "(A)") '$NodeData'
|
|
WRITE(60, "(A)") '1'
|
|
WRITE(60, "(A)") '"' // species(i)%obj%name // ' density (m^-3)"'
|
|
WRITE(60, *) 1
|
|
WRITE(60, *) time
|
|
WRITE(60, *) 3
|
|
WRITE(60, *) t
|
|
WRITE(60, *) 1
|
|
WRITE(60, *) self%numNodes
|
|
DO n=1, self%numNodes
|
|
CALL calculateOutput(self%nodes(n)%obj%output(i), output(n), self%nodes(n)%obj%v, species(i)%obj)
|
|
WRITE(60, "(I6,ES20.6E3)") n, output(n)%density
|
|
END DO
|
|
WRITE(60, "(A)") '$EndNodeData'
|
|
WRITE(60, "(A)") '$NodeData'
|
|
WRITE(60, "(A)") '1'
|
|
WRITE(60, "(A)") '"' // species(i)%obj%name // ' velocity (m s^-1)"'
|
|
WRITE(60, *) 1
|
|
WRITE(60, *) time
|
|
WRITE(60, *) 3
|
|
WRITE(60, *) t
|
|
WRITE(60, *) 3
|
|
WRITE(60, *) self%numNodes
|
|
DO n=1, self%numNodes
|
|
WRITE(60, "(I6,3(ES20.6E3))") n, output(n)%velocity
|
|
END DO
|
|
WRITE(60, "(A)") '$EndNodeData'
|
|
WRITE(60, "(A)") '$NodeData'
|
|
WRITE(60, "(A)") '1'
|
|
WRITE(60, "(A)") '"' // species(i)%obj%name // ' pressure (Pa)"'
|
|
WRITE(60, *) 1
|
|
WRITE(60, *) time
|
|
WRITE(60, *) 3
|
|
WRITE(60, *) t
|
|
WRITE(60, *) 1
|
|
WRITE(60, *) self%numNodes
|
|
DO n=1, self%numNodes
|
|
WRITE(60, "(I6,3(ES20.6E3))") n, output(n)%pressure
|
|
END DO
|
|
WRITE(60, "(A)") '$EndNodeData'
|
|
WRITE(60, "(A)") '$NodeData'
|
|
WRITE(60, "(A)") '1'
|
|
WRITE(60, "(A)") '"' // species(i)%obj%name // ' temperature (K)"'
|
|
WRITE(60, *) 1
|
|
WRITE(60, *) time
|
|
WRITE(60, *) 3
|
|
WRITE(60, *) t
|
|
WRITE(60, *) 1
|
|
WRITE(60, *) self%numNodes
|
|
DO n=1, self%numNodes
|
|
WRITE(60, "(I6,3(ES20.6E3))") n, output(n)%temperature
|
|
END DO
|
|
WRITE(60, "(A)") '$EndNodeData'
|
|
CLOSE (60)
|
|
|
|
END DO
|
|
|
|
END SUBROUTINE printOutputGmsh2
|
|
|
|
!Prints the number of collisions into the volumes
|
|
SUBROUTINE printCollGmsh2(self, t)
|
|
USE moduleMesh
|
|
USE moduleRefParam
|
|
USE moduleCaseParam
|
|
USE moduleCollisions
|
|
USE moduleOutput
|
|
IMPLICIT NONE
|
|
|
|
CLASS(meshGeneric), INTENT(inout):: self
|
|
INTEGER, INTENT(in):: t
|
|
INTEGER:: numEdges
|
|
INTEGER:: k, c
|
|
INTEGER:: n
|
|
REAL(8):: time
|
|
CHARACTER(:), ALLOCATABLE:: fileName
|
|
CHARACTER (LEN=iterationDigits):: tstring
|
|
|
|
SELECT TYPE(self)
|
|
TYPE IS(meshParticles)
|
|
numEdges = self%numEdges
|
|
|
|
TYPE IS(meshCollisions)
|
|
numEdges = 0
|
|
|
|
CLASS DEFAULT
|
|
numEdges = 0
|
|
|
|
END SELECT
|
|
|
|
IF (collOutput) THEN
|
|
time = DBLE(t)*tauMin*ti_ref
|
|
WRITE(tstring, iterationFormat) t
|
|
|
|
fileName='OUTPUT_' // tstring// '_Collisions.msh'
|
|
WRITE(*, "(6X,A15,A)") "Creating file: ", fileName
|
|
OPEN (60, file = path // folder // '/' // fileName)
|
|
WRITE(60, "(A)") '$MeshFormat'
|
|
WRITE(60, "(A)") '2.2 0 8'
|
|
WRITE(60, "(A)") '$EndMeshFormat'
|
|
DO k = 1, nCollPairs
|
|
DO c = 1, interactionMatrix(k)%amount
|
|
WRITE(60, "(A)") '$ElementData'
|
|
WRITE(60, "(A)") '1'
|
|
WRITE(60, "(5A,I2)") '"Pair ', interactionMatrix(k)%sp_i%name, '-', interactionMatrix(k)%sp_j%name, ' collision ', c
|
|
WRITE(60, *) 1
|
|
WRITE(60, *) time
|
|
WRITE(60, *) 3
|
|
WRITE(60, *) t
|
|
WRITE(60, *) 1
|
|
WRITE(60, *) self%numVols
|
|
DO n=1, self%numVols
|
|
WRITE(60, "(I6,I10)") n + numEdges, self%vols(n)%obj%tallyColl(k)%tally(c)
|
|
END DO
|
|
WRITE(60, "(A)") '$EndElementData'
|
|
END DO
|
|
END DO
|
|
|
|
CLOSE(60)
|
|
|
|
END IF
|
|
|
|
END SUBROUTINE printCollGmsh2
|
|
|
|
!Prints the electrostatic EM properties into the nodes and volumes
|
|
SUBROUTINE printEMGmsh2(self, t)
|
|
USE moduleMesh
|
|
USE moduleRefParam
|
|
USE moduleCaseParam
|
|
USE moduleOutput
|
|
IMPLICIT NONE
|
|
|
|
CLASS(meshParticles), INTENT(in):: self
|
|
INTEGER, INTENT(in):: t
|
|
INTEGER:: n, e
|
|
REAL(8):: time
|
|
CHARACTER(:), ALLOCATABLE:: fileName
|
|
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, iterationFormat) t
|
|
|
|
fileName='OUTPUT_' // tstring// '_EMField.msh'
|
|
WRITE(*, "(6X,A15,A)") "Creating file: ", fileName
|
|
OPEN (20, file = path // folder // '/' // fileName)
|
|
WRITE(20, "(A)") '$MeshFormat'
|
|
WRITE(20, "(A)") '2.2 0 8'
|
|
WRITE(20, "(A)") '$EndMeshFormat'
|
|
WRITE(20, "(A)") '$NodeData'
|
|
WRITE(20, "(A)") '1'
|
|
WRITE(20, "(A)") '"Potential (V)"'
|
|
WRITE(20, *) 1
|
|
WRITE(20, *) time
|
|
WRITE(20, *) 3
|
|
WRITE(20, *) t
|
|
WRITE(20, *) 1
|
|
WRITE(20, *) self%numNodes
|
|
DO n=1, self%numNodes
|
|
WRITE(20, *) n, self%nodes(n)%obj%emData%phi*Volt_ref
|
|
END DO
|
|
WRITE(20, "(A)") '$EndNodeData'
|
|
|
|
WRITE(20, "(A)") '$ElementData'
|
|
WRITE(20, "(A)") '1'
|
|
WRITE(20, "(A)") '"Electric Field (V m^-1)"'
|
|
WRITE(20, *) 1
|
|
WRITE(20, *) time
|
|
WRITE(20, *) 3
|
|
WRITE(20, *) t
|
|
WRITE(20, *) 3
|
|
WRITE(20, *) self%numVols
|
|
DO e=1, self%numVols
|
|
WRITE(20, *) e+self%numEdges, self%vols(e)%obj%gatherEF(xi)*EF_ref
|
|
END DO
|
|
WRITE(20, "(A)") '$EndElementData'
|
|
|
|
WRITE(20, "(A)") '$NodeData'
|
|
WRITE(20, "(A)") '1'
|
|
WRITE(20, "(A)") '"Magnetic Field (T)"'
|
|
WRITE(20, *) 1
|
|
WRITE(20, *) time
|
|
WRITE(20, *) 3
|
|
WRITE(20, *) t
|
|
WRITE(20, *) 3
|
|
WRITE(20, *) self%numNodes
|
|
DO n=1, self%numNodes
|
|
WRITE(20, *) n, self%nodes(n)%obj%emData%B * B_ref
|
|
END DO
|
|
WRITE(20, "(A)") '$EndNodeData'
|
|
|
|
CLOSE(20)
|
|
|
|
END IF
|
|
|
|
END SUBROUTINE printEMGmsh2
|
|
|
|
END MODULE moduleMeshOutputGmsh2
|