From f5be04587a82a49b5a5705f8deacf7f53d6fe9d9 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Sat, 4 Feb 2023 15:41:13 +0100 Subject: [PATCH] First step towards reading .vtu mesh Just setting up the required functions. --- src/makefile | 2 +- .../mesh/inout/0D/moduleMeshOutput0D.f90 | 4 +- .../mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 | 4 +- .../inout/gmsh2/moduleMeshOutputGmsh2.f90 | 2 +- src/modules/mesh/inout/makefile | 6 +-- .../mesh/inout/vtk/moduleMeshInputVTK.f90 | 3 -- src/modules/mesh/inout/{vtk => vtu}/makefile | 4 +- .../mesh/inout/vtu/moduleMeshInputVTU.f90 | 50 +++++++++++++++++++ .../moduleMeshOutputVTU.f90} | 22 ++++---- src/modules/mesh/moduleMesh.f90 | 2 +- src/modules/solver/moduleSolver.f90 | 10 ++-- 11 files changed, 78 insertions(+), 31 deletions(-) delete mode 100644 src/modules/mesh/inout/vtk/moduleMeshInputVTK.f90 rename src/modules/mesh/inout/{vtk => vtu}/makefile (50%) create mode 100644 src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 rename src/modules/mesh/inout/{vtk/moduleMeshOutputVTK.f90 => vtu/moduleMeshOutputVTU.f90} (97%) diff --git a/src/makefile b/src/makefile index 32c6569..3223e41 100644 --- a/src/makefile +++ b/src/makefile @@ -5,7 +5,7 @@ OBJECTS = $(OBJDIR)/moduleMesh.o $(OBJDIR)/moduleMeshBoundary.o $(OBJDIR)/module $(OBJDIR)/moduleCollisions.o $(OBJDIR)/moduleTable.o $(OBJDIR)/moduleParallel.o \ $(OBJDIR)/moduleEM.o $(OBJDIR)/moduleRandom.o $(OBJDIR)/moduleMath.o \ $(OBJDIR)/moduleProbe.o $(OBJDIR)/moduleAverage.o \ - $(OBJDIR)/moduleMeshInputVTK.o $(OBJDIR)/moduleMeshOutputVTK.o \ + $(OBJDIR)/moduleMeshInputVTU.o $(OBJDIR)/moduleMeshOutputVTU.o \ $(OBJDIR)/moduleMeshInputGmsh2.o $(OBJDIR)/moduleMeshOutputGmsh2.o \ $(OBJDIR)/moduleMeshInput0D.o $(OBJDIR)/moduleMeshOutput0D.o \ $(OBJDIR)/moduleMesh3DCart.o \ diff --git a/src/modules/mesh/inout/0D/moduleMeshOutput0D.f90 b/src/modules/mesh/inout/0D/moduleMeshOutput0D.f90 index dfe9605..97ec729 100644 --- a/src/modules/mesh/inout/0D/moduleMeshOutput0D.f90 +++ b/src/modules/mesh/inout/0D/moduleMeshOutput0D.f90 @@ -42,13 +42,13 @@ MODULE moduleMeshOutput0D USE moduleOutput IMPLICIT NONE - CLASS(meshGeneric), INTENT(inout):: self + CLASS(meshGeneric), INTENT(in):: self INTEGER, INTENT(in):: t CHARACTER(:), ALLOCATABLE:: fileName INTEGER:: k fileName='OUTPUT_Collisions.dat' - IF (t == 0) THEN + IF (t == tInitial) 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 diff --git a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 index ae1fe05..6766c49 100644 --- a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 +++ b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 @@ -2,7 +2,7 @@ MODULE moduleMeshInputGmsh2 !Reads a mesh in the Gmsh v2.0 format CONTAINS - !Inits a mesh to use Gmsh2 format + !Init a mesh to use Gmsh2 format SUBROUTINE initGmsh2(self) USE moduleMesh USE moduleMeshOutputGmsh2 @@ -23,7 +23,7 @@ MODULE moduleMeshInputGmsh2 END SUBROUTINE initGmsh2 - !Reads a Gmsh 2 format + !Read a Gmsh 2 format SUBROUTINE readGmsh2(self, filename) USE moduleMesh3DCart USE moduleMesh2DCyl diff --git a/src/modules/mesh/inout/gmsh2/moduleMeshOutputGmsh2.f90 b/src/modules/mesh/inout/gmsh2/moduleMeshOutputGmsh2.f90 index 53485f4..52e3922 100644 --- a/src/modules/mesh/inout/gmsh2/moduleMeshOutputGmsh2.f90 +++ b/src/modules/mesh/inout/gmsh2/moduleMeshOutputGmsh2.f90 @@ -144,7 +144,7 @@ MODULE moduleMeshOutputGmsh2 USE moduleOutput IMPLICIT NONE - CLASS(meshGeneric), INTENT(inout):: self + CLASS(meshGeneric), INTENT(in):: self INTEGER, INTENT(in):: t INTEGER:: numEdges INTEGER:: k, c diff --git a/src/modules/mesh/inout/makefile b/src/modules/mesh/inout/makefile index 81e15bc..e686b87 100644 --- a/src/modules/mesh/inout/makefile +++ b/src/modules/mesh/inout/makefile @@ -1,7 +1,7 @@ -all: vtk.o gmsh2.o 0D.o +all: vtu.o gmsh2.o 0D.o -vtk.o: - $(MAKE) -C vtk all +vtu.o: + $(MAKE) -C vtu all gmsh2.o: $(MAKE) -C gmsh2 all diff --git a/src/modules/mesh/inout/vtk/moduleMeshInputVTK.f90 b/src/modules/mesh/inout/vtk/moduleMeshInputVTK.f90 deleted file mode 100644 index a044b4f..0000000 --- a/src/modules/mesh/inout/vtk/moduleMeshInputVTK.f90 +++ /dev/null @@ -1,3 +0,0 @@ -MODULE moduleMeshInputVTK - -END MODULE moduleMeshInputVTK diff --git a/src/modules/mesh/inout/vtk/makefile b/src/modules/mesh/inout/vtu/makefile similarity index 50% rename from src/modules/mesh/inout/vtk/makefile rename to src/modules/mesh/inout/vtu/makefile index 18a13a0..07b471d 100644 --- a/src/modules/mesh/inout/vtk/makefile +++ b/src/modules/mesh/inout/vtu/makefile @@ -1,6 +1,6 @@ -all: moduleMeshInputVTK.o moduleMeshOutputVTK.o +all: moduleMeshInputVTU.o moduleMeshOutputVTU.o -moduleMeshInputVTK.o: moduleMeshOutputVTK.o moduleMeshInputVTK.f90 +moduleMeshInputVTU.o: moduleMeshOutputVTU.o moduleMeshInputVTU.f90 $(FC) $(FCFLAGS) -c $(subst .o,.f90,$@) -o $(OBJDIR)/$@ %.o: %.f90 diff --git a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 new file mode 100644 index 0000000..da6c792 --- /dev/null +++ b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 @@ -0,0 +1,50 @@ +MODULE moduleMeshInputVTK + !Reads mesh in the VTU format + + CONTAINS + SUBROUTINE initVTK(self) + USE moduleMesh + USE moduleMeshOutputVTU + IMPLICIT NONE + + CLASS(meshGeneric), INTENT(inout), TARGET:: self + + IF (ASSOCIATED(meshForMCC, self)) self%printColl => printCollVTU + SELECT TYPE(self) + TYPE IS(meshParticles) + self%printOutput => printOutputVTU + self%printEM => printEMVTU + self%readInitial => readInitialVTU + self%printAverage => printAverageVTU + + END SELECT + self%readMesh => readVTU + + END SUBROUTINE initVTK + + SUBROUTINE readVTU(self, filename) + USE moduleMesh3DCart + USE moduleMesh2DCyl + USE moduleMesh2DCart + USE moduleMesh1DRad + USE moduleMesh1DCart + USE moduleBoundary + IMPLICIT NONE + + CLASS(meshGeneric), INTENT(inout):: self + CHARACTER(:), ALLOCATABLE, INTENT(in):: filename + REAL(8):: r(1:3) !3 generic coordinates + + END SUBROUTINE readVTU + + SUBROUTINE readInitialVTU(filename, density, velocity, temperature) + IMPLICIT NONE + + CHARACTER(:), ALLOCATABLE, INTENT(in):: filename + REAL(8), ALLOCATABLE, INTENT(out), DIMENSION(:):: density + REAL(8), ALLOCATABLE, INTENT(out), DIMENSION(:,:):: velocity + REAL(8), ALLOCATABLE, INTENT(out), DIMENSION(:):: temperature + + END SUBROUTINE readInitialVTU + +END MODULE moduleMeshInputVTK diff --git a/src/modules/mesh/inout/vtk/moduleMeshOutputVTK.f90 b/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 similarity index 97% rename from src/modules/mesh/inout/vtk/moduleMeshOutputVTK.f90 rename to src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 index d962ae9..bf4b1b4 100644 --- a/src/modules/mesh/inout/vtk/moduleMeshOutputVTK.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 @@ -1,4 +1,4 @@ -MODULE moduleMeshOutputVTK +MODULE moduleMeshOutputVTU CHARACTER(LEN=6):: prefix = 'OUTPUT' @@ -90,7 +90,7 @@ MODULE moduleMeshOutputVTK indexType = 1 CLASS DEFAULT - CALL criticalError('Cell not valid for VTK output', 'getCellType') + CALL criticalError('Cell not valid for VTU output', 'getCellType') END SELECT @@ -355,7 +355,7 @@ MODULE moduleMeshOutputVTK END SUBROUTINE writeAverage - SUBROUTINE printOutputVTK(self,t) + SUBROUTINE printOutputVTU(self,t) USE moduleMesh USE moduleSpecies IMPLICIT NONE @@ -389,9 +389,9 @@ MODULE moduleMeshOutputVTK END DO - END SUBROUTINE printOutputVTK + END SUBROUTINE printOutputVTU - SUBROUTINE printCollVTK(self,t) + SUBROUTINE printCollVTU(self,t) USE moduleMesh USE moduleOutput IMPLICIT NONE @@ -426,9 +426,9 @@ MODULE moduleMeshOutputVTK END IF - END SUBROUTINE printCollVTK + END SUBROUTINE printCollVTU - SUBROUTINE printEMVTK(self, t) + SUBROUTINE printEMVTU(self, t) USE moduleMesh IMPLICIT NONE @@ -460,9 +460,9 @@ MODULE moduleMeshOutputVTK END IF - END SUBROUTINE printEMVTK + END SUBROUTINE printEMVTU - SUBROUTINE printAverageVTK(self) + SUBROUTINE printAverageVTU(self) USE moduleMesh USE moduleSpecies IMPLICIT NONE @@ -500,6 +500,6 @@ MODULE moduleMeshOutputVTK END DO - END SUBROUTINE printAverageVTK + END SUBROUTINE printAverageVTU -END MODULE moduleMeshOutputVTK +END MODULE moduleMeshOutputVTU diff --git a/src/modules/mesh/moduleMesh.f90 b/src/modules/mesh/moduleMesh.f90 index 7482842..cb252e8 100644 --- a/src/modules/mesh/moduleMesh.f90 +++ b/src/modules/mesh/moduleMesh.f90 @@ -374,7 +374,7 @@ MODULE moduleMesh !Prints number of collisions in each cell SUBROUTINE printColl_interface(self, t) IMPORT meshGeneric - CLASS(meshGeneric), INTENT(inout):: self + CLASS(meshGeneric), INTENT(in):: self INTEGER, INTENT(in):: t END SUBROUTINE printColl_interface diff --git a/src/modules/solver/moduleSolver.f90 b/src/modules/solver/moduleSolver.f90 index 68c1270..b1a91fd 100644 --- a/src/modules/solver/moduleSolver.f90 +++ b/src/modules/solver/moduleSolver.f90 @@ -514,7 +514,7 @@ MODULE moduleSolver USE moduleSpecies USE moduleCompTime USE moduleProbe - USE moduleMeshOutputVTK !TEMPORARY TO TEST VTK OUTPUT + USE moduleMeshOutputVTU !TEMPORARY TO TEST VTU OUTPUT IMPLICIT NONE INTEGER, INTENT(in):: t @@ -528,11 +528,11 @@ MODULE moduleSolver CALL outputProbes(t) CALL mesh%printOutput(t) - CALL printOutputVTK(mesh, t) !TEMPORARY TO TEST VTK OUTPUT + CALL printOutputVTU(mesh, t) !TEMPORARY TO TEST VTU OUTPUT IF (ASSOCIATED(meshForMCC)) CALL meshForMCC%printColl(t) - IF (ASSOCIATED(meshForMCC)) CALL printCollVTK(meshForMCC,t) !TEMPORARY TO TEST VTK OUTPUT + IF (ASSOCIATED(meshForMCC)) CALL printCollVTU(meshForMCC,t) !TEMPORARY TO TEST VTU OUTPUT CALL mesh%printEM(t) - CALL printEMVTK(mesh, t) !TEMPORARY TO TEST VTK OUTPUT + CALL printEMVTU(mesh, t) !TEMPORARY TO TEST VTU OUTPUT WRITE(*, "(5X,A21,I10,A1,I10)") "t/tFinal: ", t, "/", tFinal WRITE(*, "(5X,A21,I10)") "Particles: ", nPartOld IF (t == 0) THEN @@ -565,7 +565,7 @@ MODULE moduleSolver !Output average values IF (useAverage .AND. t == tFinal) THEN CALL mesh%printAverage() - CALL printAverageVTK(mesh) !TEMPORARY TO TEST VTK OUTPUT + CALL printAverageVTU(mesh) !TEMPORARY TO TEST VTU OUTPUT END IF