Implementation of the 0D grid to test collisional processes. An OMP_LOCK was added to the nodes to properly write perform the scattering (it is weird that multiple threads work in the same node at the same time, but in 0D happens everytime). Added a new case to test the 0D geometry. User Manual updated with the new options.
76 lines
2.3 KiB
Fortran
76 lines
2.3 KiB
Fortran
MODULE moduleMeshOutput0D
|
|
|
|
CONTAINS
|
|
SUBROUTINE printOutput0D(self, t)
|
|
USE moduleMesh
|
|
USE moduleRefParam
|
|
USE moduleSpecies
|
|
USE moduleOutput
|
|
IMPLICIT NONE
|
|
|
|
CLASS(meshParticles), INTENT(in):: self
|
|
INTEGER, INTENT(in):: t
|
|
INTEGER:: i
|
|
TYPE(outputFormat):: output
|
|
CHARACTER(:), ALLOCATABLE:: fileName
|
|
|
|
DO i = 1, nSpecies
|
|
fileName='OUTPUT_' // species(i)%obj%name // '.dat'
|
|
IF (t == 0) THEN
|
|
OPEN(20, file = path // folder // '/' // fileName, action = 'write')
|
|
WRITE(20, "(A1, 14X, A5, A20, 40X, A20, 2(A20))") "#","t (s)","density (m^-3)", "velocity (m/s)", &
|
|
"pressure (Pa)", "temperature (K)"
|
|
WRITE(*, "(6X,A15,A)") "Creating file: ", fileName
|
|
CLOSE(20)
|
|
|
|
END IF
|
|
|
|
OPEN(20, file = path // folder // '/' // fileName, position = 'append', action = 'write')
|
|
CALL calculateOutput(self%nodes(1)%obj%output(i), output, self%nodes(1)%obj%v, species(i)%obj)
|
|
WRITE(20, "(7(ES20.6E3))") REAL(t)*tauMin*ti_ref, output%density, output%velocity, output%pressure, output%temperature
|
|
CLOSE(20)
|
|
|
|
END DO
|
|
|
|
END SUBROUTINE printOutput0D
|
|
|
|
SUBROUTINE printColl0D(self, t)
|
|
USE moduleMesh
|
|
USE moduleRefParam
|
|
USE moduleCaseParam
|
|
USE moduleCollisions
|
|
USE moduleOutput
|
|
IMPLICIT NONE
|
|
|
|
CLASS(meshGeneric), INTENT(in):: self
|
|
INTEGER, INTENT(in):: t
|
|
CHARACTER(:), ALLOCATABLE:: fileName
|
|
|
|
fileName='OUTPUT_Collisions.dat'
|
|
IF (t == 0) THEN
|
|
OPEN(20, file = path // folder // '/' // fileName, action = 'write')
|
|
WRITE(20, "(A1, 14X, A5, A20)") "#","t (s)","collisions"
|
|
WRITE(*, "(6X,A15,A)") "Creating file: ", fileName
|
|
CLOSE(20)
|
|
|
|
END IF
|
|
|
|
OPEN(20, file = path // folder // '/' // fileName, position = 'append', action = 'write')
|
|
WRITE(20, "(ES20.6E3, I20)") REAL(t)*tauMin*ti_ref, mesh%vols(1)%obj%nColl
|
|
CLOSE(20)
|
|
|
|
END SUBROUTINE printColl0D
|
|
|
|
SUBROUTINE printEM0D(self, t)
|
|
USE moduleMesh
|
|
USE moduleRefParam
|
|
USE moduleCaseParam
|
|
USE moduleOutput
|
|
IMPLICIT NONE
|
|
|
|
CLASS(meshParticles), INTENT(in):: self
|
|
INTEGER, INTENT(in):: t
|
|
|
|
END SUBROUTINE printEM0D
|
|
|
|
END MODULE moduleMeshOutput0D
|