Output ready
Output for Gmsh2 ready. Unfortunatly, code repetition was required.
This commit is contained in:
parent
b2eb7c5622
commit
c5c4cbefbf
5 changed files with 106 additions and 10 deletions
|
|
@ -16,6 +16,7 @@ MODULE moduleMeshInputGmsh2
|
|||
self%printOutput => printOutputGmsh2
|
||||
self%printEM => printEMGmsh2
|
||||
self%readInitial => readInitialGmsh2
|
||||
self%printAverage => printAverageGmsh2
|
||||
|
||||
END SELECT
|
||||
self%readMesh => readGmsh2
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ MODULE moduleMeshOutputGmsh2
|
|||
|
||||
DO i = 1, nSpecies
|
||||
WRITE(tstring, iterationFormat) t
|
||||
fileName='OUTPUT_' // tstring// '_' // species(i)%obj%name // '.msh'
|
||||
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'
|
||||
|
|
@ -226,4 +226,84 @@ MODULE moduleMeshOutputGmsh2
|
|||
|
||||
END SUBROUTINE printEMGmsh2
|
||||
|
||||
!Prints the average properties of particles into the nodes
|
||||
SUBROUTINE printAverageGmsh2(self)
|
||||
USE moduleMesh
|
||||
USE moduleRefParam
|
||||
USE moduleSpecies
|
||||
USE moduleOutput
|
||||
USE moduleAverage
|
||||
IMPLICIT NONE
|
||||
|
||||
CLASS(meshParticles), INTENT(in):: self
|
||||
INTEGER:: n, i
|
||||
TYPE(outputFormat):: output(1:self%numNodes)
|
||||
CHARACTER(:), ALLOCATABLE:: fileName
|
||||
|
||||
DO i = 1, nSpecies
|
||||
fileName= 'Average_mean_OUTPUT_' // 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, *) 0.D0
|
||||
WRITE(60, *) 3
|
||||
WRITE(60, *) 0
|
||||
WRITE(60, *) 1
|
||||
WRITE(60, *) self%numNodes
|
||||
DO n=1, self%numNodes
|
||||
CALL calculateOutput(averageScheme%mean(n)%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, *) 0.D0
|
||||
WRITE(60, *) 3
|
||||
WRITE(60, *) 0
|
||||
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, *) 0.D0
|
||||
WRITE(60, *) 3
|
||||
WRITE(60, *) 0
|
||||
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, *) 0.D0
|
||||
WRITE(60, *) 3
|
||||
WRITE(60, *) 0
|
||||
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 printAverageGmsh2
|
||||
|
||||
END MODULE moduleMeshOutputGmsh2
|
||||
|
|
|
|||
|
|
@ -289,7 +289,7 @@ MODULE moduleMesh
|
|||
CONTAINS
|
||||
PROCEDURE, PASS:: doCollisions
|
||||
|
||||
END TYPE
|
||||
END TYPE meshGeneric
|
||||
|
||||
ABSTRACT INTERFACE
|
||||
!Reads the mesh from a file
|
||||
|
|
@ -341,6 +341,7 @@ MODULE moduleMesh
|
|||
PROCEDURE(printOutput_interface), POINTER, PASS:: printOutput => NULL()
|
||||
PROCEDURE(printEM_interface), POINTER, PASS:: printEM => NULL()
|
||||
PROCEDURE(doCoulomb_interface), POINTER, PASS:: doCoulomb => NULL()
|
||||
PROCEDURE(printAverage_interface), POINTER, PASS:: printAverage => NULL()
|
||||
CONTAINS
|
||||
PROCEDURE, PASS:: constructGlobalK
|
||||
|
||||
|
|
@ -373,6 +374,14 @@ MODULE moduleMesh
|
|||
|
||||
END SUBROUTINE printEM_interface
|
||||
|
||||
!Prints average values
|
||||
SUBROUTINE printAverage_interface(self)
|
||||
IMPORT meshParticles
|
||||
|
||||
CLASS(meshParticles), INTENT(in):: self
|
||||
|
||||
END SUBROUTINE printAverage_interface
|
||||
|
||||
|
||||
END INTERFACE
|
||||
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ MODULE moduleAverage
|
|||
|
||||
!Generic type for average scheme
|
||||
TYPE, PUBLIC:: averageGeneric
|
||||
INTEGER:: tStart !Starting iteartion for average scheme
|
||||
INTEGER:: tStart = 0 !Starting iteartion for average scheme
|
||||
TYPE(averageData), ALLOCATABLE:: mean(:)
|
||||
TYPE(averageData), ALLOCATABLE:: deviation(:)
|
||||
CONTAINS
|
||||
|
|
@ -20,7 +20,7 @@ MODULE moduleAverage
|
|||
TYPE(averageGeneric):: averageScheme
|
||||
|
||||
!Logical to determine if average scheme must be used
|
||||
LOGICAL:: useAverage
|
||||
LOGICAL:: useAverage = .FALSE.
|
||||
|
||||
CONTAINS
|
||||
!Based on Welford's online algorithm
|
||||
|
|
|
|||
|
|
@ -818,6 +818,12 @@ MODULE moduleSolver
|
|||
|
||||
END IF
|
||||
|
||||
!Output average values
|
||||
IF (useAverage .AND. t == tFinal) THEN
|
||||
CALL mesh%printAverage()
|
||||
|
||||
END IF
|
||||
|
||||
END SUBROUTINE doOutput
|
||||
|
||||
SUBROUTINE doAverage(t)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue