diff --git a/src/modules/mesh/inout/vtk/moduleMeshOutputVTK.f90 b/src/modules/mesh/inout/vtk/moduleMeshOutputVTK.f90 index 203de0c..d962ae9 100644 --- a/src/modules/mesh/inout/vtk/moduleMeshOutputVTK.f90 +++ b/src/modules/mesh/inout/vtk/moduleMeshOutputVTK.f90 @@ -164,23 +164,29 @@ MODULE moduleMeshOutputVTK END DO + !Write node data WRITE(fileID,"(8X,A)") '' + !Write density WRITE(fileID,"(10X,A)") '' WRITE(nodeFormat, "(A,I10, A)") "(", self%numNodes, "(1(ES20.6E3)))" WRITE(fileID,nodeFormat) (output(n)%density, n = 1, self%numNodes) WRITE(fileID,"(10X,A)") '' + !Write velocity WRITE(fileID,"(10X,A)") '' WRITE(nodeFormat, "(A,I10, A)") "(", self%numNodes, "(3(ES20.6E3)))" - WRITE(fileID,nodeFormat) (output(n)%velocity(1:3), n = 1, self%numNodes) + WRITE(fileID,nodeFormat) (output(n)%velocity, n = 1, self%numNodes) WRITE(fileID,"(10X,A)") '' + !Write pressure WRITE(fileID,"(10X,A)") '' WRITE(nodeFormat, "(A,I10, A)") "(", self%numNodes, "(1(ES20.6E3)))" WRITE(fileID,nodeFormat) (output(n)%pressure, n = 1, self%numNodes) WRITE(fileID,"(10X,A)") '' + !Write temperature WRITE(fileID,"(10X,A)") '' WRITE(nodeFormat, "(A,I10, A)") "(", self%numNodes, "(1(ES20.6E3)))" WRITE(fileID,nodeFormat) (output(n)%temperature, n = 1, self%numNodes) WRITE(fileID,"(10X,A)") '' + !End node data WRITE(fileID,"(8X,A)") '' END SUBROUTINE writeSpeciesOutput @@ -286,6 +292,69 @@ MODULE moduleMeshOutputVTK END SUBROUTINE writeCollection + SUBROUTINE writeAverage(self, fileIDMean, fileIDDeviation, speciesIndex) + USE moduleMesh + USE moduleOutput + USE moduleAverage + IMPLICIT NONE + + CLASS(meshParticles), INTENT(in):: self + INTEGER, INTENT(in):: fileIDMean, fileIDDeviation + INTEGER, INTENT(in):: speciesIndex + TYPE(outputFormat):: outputMean(1:self%numNodes) + TYPE(outputFormat):: outputDeviation(1:self%numNodes) + CHARACTER(LEN=25):: nodeFormat + INTEGER:: n + + DO n = 1, self%numNodes + CALL calculateOutput(averageScheme(n)%mean%output(speciesIndex), outputMean(n), & + self%nodes(n)%obj%v, species(speciesIndex)%obj) + CALL calculateOutput(averageScheme(n)%deviation%output(speciesIndex), outputDeviation(n), & + self%nodes(n)%obj%v, species(speciesIndex)%obj) + + END DO + + !Write node data + WRITE(fileIDMean, "(8X,A)") '' + WRITE(fileIDDeviation,"(8X,A)") '' + !Write density + WRITE(fileIDMean, "(10X,A)") '' + WRITE(fileIDDeviation,"(10X,A)") '' + WRITE(nodeFormat,"(A,I10, A)") "(", self%numNodes, "(1(ES20.6E3)))" + WRITE(fileIDMean, nodeFormat) (outputMean(n)%density, n = 1, self%numNodes) + WRITE(fileIDDeviation,nodeFormat) (outputDeviation(n)%density, n = 1, self%numNodes) + WRITE(fileIDMean,"(10X,A)") '' + WRITE(fileIDDeviation,"(10X,A)") '' + !Write velocity + WRITE(fileIDMean, "(10X,A)") '' + WRITE(fileIDDeviation,"(10X,A)") '' + WRITE(nodeFormat,"(A,I10, A)") "(", self%numNodes, "(3(ES20.6E3)))" + WRITE(fileIDMean, nodeFormat) (outputMean(n)%velocity, n = 1, self%numNodes) + WRITE(fileIDDeviation,nodeFormat) (outputDeviation(n)%velocity, n = 1, self%numNodes) + WRITE(fileIDMean, "(10X,A)") '' + WRITE(fileIDDeviation,"(10X,A)") '' + !Write pressure + WRITE(fileIDMean, "(10X,A)") '' + WRITE(fileIDDeviation,"(10X,A)") '' + WRITE(nodeFormat,"(A,I10, A)") "(", self%numNodes, "(1(ES20.6E3)))" + WRITE(fileIDMean, nodeFormat) (outputMean(n)%pressure, n = 1, self%numNodes) + WRITE(fileIDDeviation,nodeFormat) (outputDeviation(n)%pressure, n = 1, self%numNodes) + WRITE(fileIDMean, "(10X,A)") '' + WRITE(fileIDDeviation,"(10X,A)") '' + !Write temperature + WRITE(fileIDMean, "(10X,A)") '' + WRITE(fileIDDeviation,"(10X,A)") '' + WRITE(nodeFormat,"(A,I10, A)") "(", self%numNodes, "(1(ES20.6E3)))" + WRITE(fileIDMean, nodeFormat) (outputMean(n)%temperature, n = 1, self%numNodes) + WRITE(fileIDDeviation,nodeFormat) (outputDeviation(n)%temperature, n = 1, self%numNodes) + WRITE(fileIDMean, "(10X,A)") '' + WRITE(fileIDDeviation,"(10X,A)") '' + !End node data + WRITE(fileIDMean, "(8X,A)") '' + WRITE(fileIDDeviation,"(8X,A)") '' + + END SUBROUTINE writeAverage + SUBROUTINE printOutputVTK(self,t) USE moduleMesh USE moduleSpecies @@ -393,4 +462,44 @@ MODULE moduleMeshOutputVTK END SUBROUTINE printEMVTK + SUBROUTINE printAverageVTK(self) + USE moduleMesh + USE moduleSpecies + IMPLICIT NONE + + CLASS(meshParticles), INTENT(in):: self + INTEGER:: n, i, fileIDMean, fileIDDeviation + CHARACTER(:), ALLOCATABLE:: fileNameMean, fileNameDeviation + TYPE(outputFormat):: output(1:self%numNodes) + + fileIDMean = 66 + fileIDDeviation = 67 + + DO i = 1, nSpecies + fileNameMean = formatFileName('Average_mean', species(i)%obj%name, 'vtu') + WRITE(*, "(6X,A15,A)") "Creating file: ", fileNameMean + OPEN (fileIDMean, file = path // folder // '/' // fileNameMean) + + fileNameDeviation = formatFileName('Average_deviation', species(i)%obj%name, 'vtu') + WRITE(*, "(6X,A15,A)") "Creating file: ", fileNameDeviation + OPEN (fileIDDeviation, file = path // folder // '/' // fileNameDeviation) + + CALL writeHeader(self%numNodes, self%numCells, fileIDMean) + CALL writeHeader(self%numNodes, self%numCells, fileIDDeviation) + + CALL writeMesh(self, fileIDMean) + CALL writeMesh(self, fileIDDeviation) + + CALL writeAverage(self, fileIDMean, fileIDDeviation, i) + + CALL writeFooter(fileIDMean) + CALL writeFooter(fileIDDeviation) + + CLOSE(fileIDMean) + CLOSE(fileIDDeviation) + + END DO + + END SUBROUTINE printAverageVTK + END MODULE moduleMeshOutputVTK diff --git a/src/modules/solver/moduleSolver.f90 b/src/modules/solver/moduleSolver.f90 index def5ca4..68c1270 100644 --- a/src/modules/solver/moduleSolver.f90 +++ b/src/modules/solver/moduleSolver.f90 @@ -565,6 +565,7 @@ MODULE moduleSolver !Output average values IF (useAverage .AND. t == tFinal) THEN CALL mesh%printAverage() + CALL printAverageVTK(mesh) !TEMPORARY TO TEST VTK OUTPUT END IF