First working version!
First complete implementation of .vtu format. Still a lot of things to improve but right now fpakc can read a vtu mesh and write the output in vtu. Still to test: Multiple geometries. Double mesh.
This commit is contained in:
parent
43a7421795
commit
e3eeb97f48
1 changed files with 124 additions and 1 deletions
|
|
@ -302,7 +302,6 @@ MODULE moduleMeshInputVTU
|
||||||
|
|
||||||
!Read edges
|
!Read edges
|
||||||
e = 0
|
e = 0
|
||||||
c = 0
|
|
||||||
SELECT TYPE(self)
|
SELECT TYPE(self)
|
||||||
TYPE IS(meshParticles)
|
TYPE IS(meshParticles)
|
||||||
DO n = 1, numElements
|
DO n = 1, numElements
|
||||||
|
|
@ -379,6 +378,130 @@ MODULE moduleMeshInputVTU
|
||||||
|
|
||||||
END SELECT
|
END SELECT
|
||||||
|
|
||||||
|
!Read cells
|
||||||
|
c = 0
|
||||||
|
DO n = 1, numElements
|
||||||
|
SELECT CASE(self%dimen)
|
||||||
|
CASE(3)
|
||||||
|
SELECT CASE(types(n))
|
||||||
|
CASE(10)
|
||||||
|
!Thetraedron
|
||||||
|
c = c + 1
|
||||||
|
ALLOCATE(p(1:4))
|
||||||
|
p(1) = connectivity(offsets(n) - 3)
|
||||||
|
p(2) = connectivity(offsets(n) - 2)
|
||||||
|
p(3) = connectivity(offsets(n) - 1)
|
||||||
|
p(4) = connectivity(offsets(n))
|
||||||
|
ALLOCATE(meshCell3DCartTetra:: self%cells(c)%obj)
|
||||||
|
|
||||||
|
CALL self%cells(c)%obj%init(c, p, self%nodes)
|
||||||
|
DEALLOCATE(p)
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
|
||||||
|
CASE(2)
|
||||||
|
SELECT CASE(self%geometry)
|
||||||
|
CASE("Cyl")
|
||||||
|
SELECT CASE(types(n))
|
||||||
|
CASE(5)
|
||||||
|
!Triangular element
|
||||||
|
c = c + 1
|
||||||
|
ALLOCATE(p(1:3))
|
||||||
|
p(1) = connectivity(offsets(n) - 2)
|
||||||
|
p(2) = connectivity(offsets(n) - 1)
|
||||||
|
p(3) = connectivity(offsets(n))
|
||||||
|
ALLOCATE(meshCell2DCylTria:: self%cells(c)%obj)
|
||||||
|
|
||||||
|
CALL self%cells(c)%obj%init(c, p, self%nodes)
|
||||||
|
DEALLOCATE(p)
|
||||||
|
|
||||||
|
CASE(9)
|
||||||
|
!Quadrilateral element
|
||||||
|
c = c + 1
|
||||||
|
ALLOCATE(p(1:4))
|
||||||
|
p(1) = connectivity(offsets(n) - 3)
|
||||||
|
p(2) = connectivity(offsets(n) - 2)
|
||||||
|
p(3) = connectivity(offsets(n) - 1)
|
||||||
|
p(4) = connectivity(offsets(n))
|
||||||
|
ALLOCATE(meshCell2DCylQuad:: self%cells(c)%obj)
|
||||||
|
|
||||||
|
CALL self%cells(c)%obj%init(c, p, self%nodes)
|
||||||
|
DEALLOCATE(p)
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
|
||||||
|
CASE("Cart")
|
||||||
|
SELECT CASE(types(n))
|
||||||
|
CASE(5)
|
||||||
|
!Triangular element
|
||||||
|
c = c + 1
|
||||||
|
ALLOCATE(p(1:3))
|
||||||
|
p(1) = connectivity(offsets(n) - 2)
|
||||||
|
p(2) = connectivity(offsets(n) - 1)
|
||||||
|
p(3) = connectivity(offsets(n))
|
||||||
|
ALLOCATE(meshCell2DCartTria:: self%cells(c)%obj)
|
||||||
|
|
||||||
|
CALL self%cells(c)%obj%init(c, p, self%nodes)
|
||||||
|
DEALLOCATE(p)
|
||||||
|
|
||||||
|
CASE(9)
|
||||||
|
!Quadrilateral element
|
||||||
|
c = c + 1
|
||||||
|
ALLOCATE(p(1:4))
|
||||||
|
p(1) = connectivity(offsets(n) - 3)
|
||||||
|
p(2) = connectivity(offsets(n) - 2)
|
||||||
|
p(3) = connectivity(offsets(n) - 1)
|
||||||
|
p(4) = connectivity(offsets(n))
|
||||||
|
ALLOCATE(meshCell2DCartQuad:: self%cells(c)%obj)
|
||||||
|
|
||||||
|
CALL self%cells(c)%obj%init(c, p, self%nodes)
|
||||||
|
DEALLOCATE(p)
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
|
||||||
|
CASE(1)
|
||||||
|
SELECT CASE(self%geometry)
|
||||||
|
CASE("Rad")
|
||||||
|
SELECT CASE(types(n))
|
||||||
|
CASE(3)
|
||||||
|
!Segment element
|
||||||
|
c = c + 1
|
||||||
|
ALLOCATE(p(1:2))
|
||||||
|
p(1) = connectivity(offsets(n) - 1)
|
||||||
|
p(2) = connectivity(offsets(n))
|
||||||
|
ALLOCATE(meshCell1DRadSegm:: self%cells(c)%obj)
|
||||||
|
|
||||||
|
CALL self%cells(c)%obj%init(c, p, self%nodes)
|
||||||
|
DEALLOCATE(p)
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
|
||||||
|
CASE("Cart")
|
||||||
|
SELECT CASE(types(n))
|
||||||
|
CASE(3)
|
||||||
|
!Segment element
|
||||||
|
c = c + 1
|
||||||
|
ALLOCATE(p(1:2))
|
||||||
|
p(1) = connectivity(offsets(n) - 1)
|
||||||
|
p(2) = connectivity(offsets(n))
|
||||||
|
ALLOCATE(meshCell1DCartSegm:: self%cells(c)%obj)
|
||||||
|
|
||||||
|
CALL self%cells(c)%obj%init(c, p, self%nodes)
|
||||||
|
DEALLOCATE(p)
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
|
||||||
|
END SELECT
|
||||||
|
|
||||||
|
END DO
|
||||||
|
|
||||||
|
!Call mesh connectivity
|
||||||
|
CALL self%connectMesh
|
||||||
|
|
||||||
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