First step towards reading .vtu mesh

Just setting up the required functions.
This commit is contained in:
Jorge Gonzalez 2023-02-04 15:41:13 +01:00
commit f5be04587a
11 changed files with 78 additions and 31 deletions

View file

@ -5,7 +5,7 @@ OBJECTS = $(OBJDIR)/moduleMesh.o $(OBJDIR)/moduleMeshBoundary.o $(OBJDIR)/module
$(OBJDIR)/moduleCollisions.o $(OBJDIR)/moduleTable.o $(OBJDIR)/moduleParallel.o \ $(OBJDIR)/moduleCollisions.o $(OBJDIR)/moduleTable.o $(OBJDIR)/moduleParallel.o \
$(OBJDIR)/moduleEM.o $(OBJDIR)/moduleRandom.o $(OBJDIR)/moduleMath.o \ $(OBJDIR)/moduleEM.o $(OBJDIR)/moduleRandom.o $(OBJDIR)/moduleMath.o \
$(OBJDIR)/moduleProbe.o $(OBJDIR)/moduleAverage.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)/moduleMeshInputGmsh2.o $(OBJDIR)/moduleMeshOutputGmsh2.o \
$(OBJDIR)/moduleMeshInput0D.o $(OBJDIR)/moduleMeshOutput0D.o \ $(OBJDIR)/moduleMeshInput0D.o $(OBJDIR)/moduleMeshOutput0D.o \
$(OBJDIR)/moduleMesh3DCart.o \ $(OBJDIR)/moduleMesh3DCart.o \

View file

@ -42,13 +42,13 @@ MODULE moduleMeshOutput0D
USE moduleOutput USE moduleOutput
IMPLICIT NONE IMPLICIT NONE
CLASS(meshGeneric), INTENT(inout):: self CLASS(meshGeneric), INTENT(in):: self
INTEGER, INTENT(in):: t INTEGER, INTENT(in):: t
CHARACTER(:), ALLOCATABLE:: fileName CHARACTER(:), ALLOCATABLE:: fileName
INTEGER:: k INTEGER:: k
fileName='OUTPUT_Collisions.dat' fileName='OUTPUT_Collisions.dat'
IF (t == 0) THEN IF (t == tInitial) THEN
OPEN(20, file = path // folder // '/' // fileName, action = 'write') OPEN(20, file = path // folder // '/' // fileName, action = 'write')
WRITE(20, "(A1, 14X, A5, A20)") "#","t (s)","collisions" WRITE(20, "(A1, 14X, A5, A20)") "#","t (s)","collisions"
WRITE(*, "(6X,A15,A)") "Creating file: ", fileName WRITE(*, "(6X,A15,A)") "Creating file: ", fileName

View file

@ -2,7 +2,7 @@ MODULE moduleMeshInputGmsh2
!Reads a mesh in the Gmsh v2.0 format !Reads a mesh in the Gmsh v2.0 format
CONTAINS CONTAINS
!Inits a mesh to use Gmsh2 format !Init a mesh to use Gmsh2 format
SUBROUTINE initGmsh2(self) SUBROUTINE initGmsh2(self)
USE moduleMesh USE moduleMesh
USE moduleMeshOutputGmsh2 USE moduleMeshOutputGmsh2
@ -23,7 +23,7 @@ MODULE moduleMeshInputGmsh2
END SUBROUTINE initGmsh2 END SUBROUTINE initGmsh2
!Reads a Gmsh 2 format !Read a Gmsh 2 format
SUBROUTINE readGmsh2(self, filename) SUBROUTINE readGmsh2(self, filename)
USE moduleMesh3DCart USE moduleMesh3DCart
USE moduleMesh2DCyl USE moduleMesh2DCyl

View file

@ -144,7 +144,7 @@ MODULE moduleMeshOutputGmsh2
USE moduleOutput USE moduleOutput
IMPLICIT NONE IMPLICIT NONE
CLASS(meshGeneric), INTENT(inout):: self CLASS(meshGeneric), INTENT(in):: self
INTEGER, INTENT(in):: t INTEGER, INTENT(in):: t
INTEGER:: numEdges INTEGER:: numEdges
INTEGER:: k, c INTEGER:: k, c

View file

@ -1,7 +1,7 @@
all: vtk.o gmsh2.o 0D.o all: vtu.o gmsh2.o 0D.o
vtk.o: vtu.o:
$(MAKE) -C vtk all $(MAKE) -C vtu all
gmsh2.o: gmsh2.o:
$(MAKE) -C gmsh2 all $(MAKE) -C gmsh2 all

View file

@ -1,3 +0,0 @@
MODULE moduleMeshInputVTK
END MODULE moduleMeshInputVTK

View file

@ -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)/$@ $(FC) $(FCFLAGS) -c $(subst .o,.f90,$@) -o $(OBJDIR)/$@
%.o: %.f90 %.o: %.f90

View file

@ -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

View file

@ -1,4 +1,4 @@
MODULE moduleMeshOutputVTK MODULE moduleMeshOutputVTU
CHARACTER(LEN=6):: prefix = 'OUTPUT' CHARACTER(LEN=6):: prefix = 'OUTPUT'
@ -90,7 +90,7 @@ MODULE moduleMeshOutputVTK
indexType = 1 indexType = 1
CLASS DEFAULT CLASS DEFAULT
CALL criticalError('Cell not valid for VTK output', 'getCellType') CALL criticalError('Cell not valid for VTU output', 'getCellType')
END SELECT END SELECT
@ -355,7 +355,7 @@ MODULE moduleMeshOutputVTK
END SUBROUTINE writeAverage END SUBROUTINE writeAverage
SUBROUTINE printOutputVTK(self,t) SUBROUTINE printOutputVTU(self,t)
USE moduleMesh USE moduleMesh
USE moduleSpecies USE moduleSpecies
IMPLICIT NONE IMPLICIT NONE
@ -389,9 +389,9 @@ MODULE moduleMeshOutputVTK
END DO END DO
END SUBROUTINE printOutputVTK END SUBROUTINE printOutputVTU
SUBROUTINE printCollVTK(self,t) SUBROUTINE printCollVTU(self,t)
USE moduleMesh USE moduleMesh
USE moduleOutput USE moduleOutput
IMPLICIT NONE IMPLICIT NONE
@ -426,9 +426,9 @@ MODULE moduleMeshOutputVTK
END IF END IF
END SUBROUTINE printCollVTK END SUBROUTINE printCollVTU
SUBROUTINE printEMVTK(self, t) SUBROUTINE printEMVTU(self, t)
USE moduleMesh USE moduleMesh
IMPLICIT NONE IMPLICIT NONE
@ -460,9 +460,9 @@ MODULE moduleMeshOutputVTK
END IF END IF
END SUBROUTINE printEMVTK END SUBROUTINE printEMVTU
SUBROUTINE printAverageVTK(self) SUBROUTINE printAverageVTU(self)
USE moduleMesh USE moduleMesh
USE moduleSpecies USE moduleSpecies
IMPLICIT NONE IMPLICIT NONE
@ -500,6 +500,6 @@ MODULE moduleMeshOutputVTK
END DO END DO
END SUBROUTINE printAverageVTK END SUBROUTINE printAverageVTU
END MODULE moduleMeshOutputVTK END MODULE moduleMeshOutputVTU

View file

@ -374,7 +374,7 @@ MODULE moduleMesh
!Prints number of collisions in each cell !Prints number of collisions in each cell
SUBROUTINE printColl_interface(self, t) SUBROUTINE printColl_interface(self, t)
IMPORT meshGeneric IMPORT meshGeneric
CLASS(meshGeneric), INTENT(inout):: self CLASS(meshGeneric), INTENT(in):: self
INTEGER, INTENT(in):: t INTEGER, INTENT(in):: t
END SUBROUTINE printColl_interface END SUBROUTINE printColl_interface

View file

@ -514,7 +514,7 @@ MODULE moduleSolver
USE moduleSpecies USE moduleSpecies
USE moduleCompTime USE moduleCompTime
USE moduleProbe USE moduleProbe
USE moduleMeshOutputVTK !TEMPORARY TO TEST VTK OUTPUT USE moduleMeshOutputVTU !TEMPORARY TO TEST VTU OUTPUT
IMPLICIT NONE IMPLICIT NONE
INTEGER, INTENT(in):: t INTEGER, INTENT(in):: t
@ -528,11 +528,11 @@ MODULE moduleSolver
CALL outputProbes(t) CALL outputProbes(t)
CALL mesh%printOutput(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 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 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,A1,I10)") "t/tFinal: ", t, "/", tFinal
WRITE(*, "(5X,A21,I10)") "Particles: ", nPartOld WRITE(*, "(5X,A21,I10)") "Particles: ", nPartOld
IF (t == 0) THEN IF (t == 0) THEN
@ -565,7 +565,7 @@ MODULE moduleSolver
!Output average values !Output average values
IF (useAverage .AND. t == tFinal) THEN IF (useAverage .AND. t == tFinal) THEN
CALL mesh%printAverage() CALL mesh%printAverage()
CALL printAverageVTK(mesh) !TEMPORARY TO TEST VTK OUTPUT CALL printAverageVTU(mesh) !TEMPORARY TO TEST VTU OUTPUT
END IF END IF