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