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)/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 \

View file

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

View file

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

View file

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

View file

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

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)/$@
%.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'
@ -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

View file

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

View file

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