Subroutines to read .vtu information
All subroutines to read .vtu information is ready. Now it is time to create the input and generate a mesh for fpakc.
This commit is contained in:
parent
63fd8fdb91
commit
7b470b7f58
1 changed files with 29 additions and 4 deletions
|
|
@ -6,6 +6,11 @@ MODULE moduleMeshInputVTU
|
||||||
|
|
||||||
END INTERFACE
|
END INTERFACE
|
||||||
|
|
||||||
|
INTERFACE readDataBlock
|
||||||
|
MODULE PROCEDURE readIntegerBlock, readRealBlock
|
||||||
|
|
||||||
|
END INTERFACE
|
||||||
|
|
||||||
CONTAINS
|
CONTAINS
|
||||||
FUNCTION findLine(fileID, text) RESULT(line)
|
FUNCTION findLine(fileID, text) RESULT(line)
|
||||||
USE moduleErrors
|
USE moduleErrors
|
||||||
|
|
@ -93,7 +98,6 @@ MODULE moduleMeshInputVTU
|
||||||
DO WHILE (iStart < nData)
|
DO WHILE (iStart < nData)
|
||||||
iStart = iStart + 1
|
iStart = iStart + 1
|
||||||
iEnd = iStart - 1 + block
|
iEnd = iStart - 1 + block
|
||||||
PRINT *, iStart, iEnd
|
|
||||||
IF (iEnd > nData) THEN
|
IF (iEnd > nData) THEN
|
||||||
iEnd = nData
|
iEnd = nData
|
||||||
|
|
||||||
|
|
@ -167,7 +171,8 @@ MODULE moduleMeshInputVTU
|
||||||
INTEGER:: fileID, error, found
|
INTEGER:: fileID, error, found
|
||||||
CHARACTER(LEN=256):: line
|
CHARACTER(LEN=256):: line
|
||||||
INTEGER:: numNodes, numElements
|
INTEGER:: numNodes, numElements
|
||||||
INTEGER, ALLOCATABLE, DIMENSION(:):: entitiesID, offsets
|
INTEGER, ALLOCATABLE, DIMENSION(:):: entitiesID, offsets, connectivity, types
|
||||||
|
REAL(8), ALLOCATABLE, DIMENSION(:):: coordinates
|
||||||
|
|
||||||
fileID = 10
|
fileID = 10
|
||||||
|
|
||||||
|
|
@ -182,17 +187,37 @@ MODULE moduleMeshInputVTU
|
||||||
!Get the IDs of the cells to identify physical surfaces
|
!Get the IDs of the cells to identify physical surfaces
|
||||||
line = findLine(fileID, 'Name="CellEntityIds"')
|
line = findLine(fileID, 'Name="CellEntityIds"')
|
||||||
ALLOCATE(entitiesID(1:numElements))
|
ALLOCATE(entitiesID(1:numElements))
|
||||||
CALL readIntegerBlock(fileID, numElements, entitiesID)
|
CALL readDataBlock(fileID, numElements, entitiesID)
|
||||||
REWIND(fileID)
|
REWIND(fileID)
|
||||||
|
|
||||||
!Get the offsets to read connectivity
|
!Get the offsets to read connectivity
|
||||||
line = findLine(fileID, 'Name="offsets"')
|
line = findLine(fileID, 'Name="offsets"')
|
||||||
ALLOCATE(offsets(1:numElements))
|
ALLOCATE(offsets(1:numElements))
|
||||||
CALL readIntegerBlock(fileID, numElements, offsets)
|
CALL readDataBlock(fileID, numElements, offsets)
|
||||||
|
REWIND(fileID)
|
||||||
|
|
||||||
|
!Get the connectivity of elements to nodes
|
||||||
|
line = findline(fileID, 'Name="connectivity"')
|
||||||
|
ALLOCATE(connectivity(1:MAXVAL(offsets)))
|
||||||
|
CALL readDataBlock(fileID, MAXVAL(offsets), connectivity)
|
||||||
|
REWIND(fileID)
|
||||||
|
|
||||||
|
!Get the type of elements
|
||||||
|
line = findline(fileID, 'Name="types"')
|
||||||
|
ALLOCATE(types(1:numElements))
|
||||||
|
CALL readDataBlock(fileID, numElements, types)
|
||||||
|
REWIND(fileID)
|
||||||
|
|
||||||
|
!Get nodes coordinates
|
||||||
|
line = findline(fileID, 'Name="Points"')
|
||||||
|
ALLOCATE(coordinates(1:3*numNodes))
|
||||||
|
CALL readDataBlock(fileID, 3*numNodes, coordinates)
|
||||||
REWIND(fileID)
|
REWIND(fileID)
|
||||||
|
|
||||||
CLOSE(fileID)
|
CLOSE(fileID)
|
||||||
|
|
||||||
|
!All relevant information from the .vtu file has been read. Time to build the mesh.
|
||||||
|
|
||||||
END SUBROUTINE readVTU
|
END SUBROUTINE readVTU
|
||||||
|
|
||||||
SUBROUTINE readInitialVTU(filename, density, velocity, temperature)
|
SUBROUTINE readInitialVTU(filename, density, velocity, temperature)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue