Restructuring the geometry and pushers
The geometry and push structure has been reworked to allow eassy adding new pushers. Documentation not updated yet. Baseline for merging Cartesian pushers into one.
This commit is contained in:
parent
562dba1694
commit
5b5dadce39
18 changed files with 429 additions and 1052 deletions
|
|
@ -67,24 +67,35 @@ MODULE moduleMeshInputGmsh2
|
|||
!Read the nodes information
|
||||
DO e = 1, self%numNodes
|
||||
READ(10, *) n, r(1), r(2), r(3)
|
||||
SELECT CASE(self%geometry)
|
||||
CASE("3DCart")
|
||||
SELECT CASE(self%dimen)
|
||||
CASE(3)
|
||||
ALLOCATE(meshNode3Dcart::self%nodes(n)%obj)
|
||||
self%connectMesh => connectMesh3DCart
|
||||
|
||||
CASE("2DCyl")
|
||||
ALLOCATE(meshNode2DCyl:: self%nodes(n)%obj)
|
||||
CASE(2)
|
||||
SELECT CASE(self%geometry)
|
||||
CASE("Cyl")
|
||||
ALLOCATE(meshNode2DCyl:: self%nodes(n)%obj)
|
||||
self%connectMesh => connectMesh2DCyl
|
||||
|
||||
CASE("Cart")
|
||||
ALLOCATE(meshNode2DCart:: self%nodes(n)%obj)
|
||||
self%connectMesh => connectMesh2DCart
|
||||
|
||||
END SELECT
|
||||
r(3) = 0.D0
|
||||
|
||||
CASE("2DCart")
|
||||
ALLOCATE(meshNode2DCart:: self%nodes(n)%obj)
|
||||
r(3) = 0.D0
|
||||
CASE(1)
|
||||
SELECT CASE(self%geometry)
|
||||
CASE("Rad")
|
||||
ALLOCATE(meshNode1DRad:: self%nodes(n)%obj)
|
||||
self%connectMesh => connectMesh1DRad
|
||||
|
||||
CASE("1DRad")
|
||||
ALLOCATE(meshNode1DRad:: self%nodes(n)%obj)
|
||||
r(2:3) = 0.D0
|
||||
CASE("Cart")
|
||||
ALLOCATE(meshNode1DCart:: self%nodes(n)%obj)
|
||||
self%connectMesh => connectMesh1DCart
|
||||
|
||||
CASE("1DCart")
|
||||
ALLOCATE(meshNode1DCart:: self%nodes(n)%obj)
|
||||
END SELECT
|
||||
r(2:3) = 0.D0
|
||||
|
||||
END SELECT
|
||||
|
|
@ -92,7 +103,6 @@ MODULE moduleMeshInputGmsh2
|
|||
|
||||
END DO
|
||||
|
||||
|
||||
!Skip comments
|
||||
READ(10, *)
|
||||
READ(10, *)
|
||||
|
|
@ -106,16 +116,16 @@ MODULE moduleMeshInputGmsh2
|
|||
self%numEdges = 0
|
||||
DO e = 1, totalNumElem
|
||||
READ(10, *) eTemp, elemType
|
||||
SELECT CASE(self%geometry)
|
||||
CASE("3DCart")
|
||||
SELECT CASE(self%dimen)
|
||||
CASE(3)
|
||||
!Element type 2 is triangle in gmsh
|
||||
IF (elemType == 2) self%numEdges = e
|
||||
|
||||
CASE("2DCyl","2DCart")
|
||||
CASE(2)
|
||||
!Element type 1 is segment in Gmsh
|
||||
IF (elemType == 1) self%numEdges = e
|
||||
|
||||
CASE("1DRad","1DCart")
|
||||
CASE(1)
|
||||
!Element type 15 is physical point in Gmsh
|
||||
IF (elemType == 15) self%numEdges = e
|
||||
|
||||
|
|
@ -148,8 +158,8 @@ MODULE moduleMeshInputGmsh2
|
|||
!Reads edges
|
||||
DO e=1, self%numEdges
|
||||
!Reads the edge according to the geometry
|
||||
SELECT CASE(self%geometry)
|
||||
CASE("3DCart")
|
||||
SELECT CASE(self%dimen)
|
||||
CASE(3)
|
||||
READ(10, *) n, elemType, eTemp, boundaryType
|
||||
BACKSPACE(10)
|
||||
|
||||
|
|
@ -167,41 +177,49 @@ MODULE moduleMeshInputGmsh2
|
|||
|
||||
END SELECT
|
||||
|
||||
CASE("2DCyl")
|
||||
ALLOCATE(p(1:2))
|
||||
CASE (2)
|
||||
SELECT CASE(self%geometry)
|
||||
CASE("Cyl")
|
||||
ALLOCATE(p(1:2))
|
||||
|
||||
READ(10,*) n, elemType, eTemp, boundaryType, eTemp, p(1:2)
|
||||
!Associate boundary condition procedure.
|
||||
bt = getBoundaryId(boundaryType)
|
||||
READ(10,*) n, elemType, eTemp, boundaryType, eTemp, p(1:2)
|
||||
!Associate boundary condition procedure.
|
||||
bt = getBoundaryId(boundaryType)
|
||||
|
||||
ALLOCATE(meshEdge2DCyl:: self%edges(e)%obj)
|
||||
ALLOCATE(meshEdge2DCyl:: self%edges(e)%obj)
|
||||
|
||||
CASE("2DCart")
|
||||
ALLOCATE(p(1:2))
|
||||
CASE("Cart")
|
||||
ALLOCATE(p(1:2))
|
||||
|
||||
READ(10,*) n, elemType, eTemp, boundaryType, eTemp, p(1:2)
|
||||
!Associate boundary condition procedure.
|
||||
bt = getBoundaryId(boundaryType)
|
||||
READ(10,*) n, elemType, eTemp, boundaryType, eTemp, p(1:2)
|
||||
!Associate boundary condition procedure.
|
||||
bt = getBoundaryId(boundaryType)
|
||||
|
||||
ALLOCATE(meshEdge2DCart:: self%edges(e)%obj)
|
||||
ALLOCATE(meshEdge2DCart:: self%edges(e)%obj)
|
||||
|
||||
CASE("1DRad")
|
||||
ALLOCATE(p(1:1))
|
||||
END SELECT
|
||||
|
||||
READ(10, *) n, elemType, eTemp, boundaryType, eTemp, p(1)
|
||||
!Associate boundary condition
|
||||
bt = getBoundaryId(boundaryType)
|
||||
CASE(1)
|
||||
SELECT CASE(self%geometry)
|
||||
CASE("Rad")
|
||||
ALLOCATE(p(1:1))
|
||||
|
||||
ALLOCATE(meshEdge1DRad:: self%edges(e)%obj)
|
||||
READ(10, *) n, elemType, eTemp, boundaryType, eTemp, p(1)
|
||||
!Associate boundary condition
|
||||
bt = getBoundaryId(boundaryType)
|
||||
|
||||
CASE("1DCart")
|
||||
ALLOCATE(p(1:1))
|
||||
ALLOCATE(meshEdge1DRad:: self%edges(e)%obj)
|
||||
|
||||
READ(10, *) n, elemType, eTemp, boundaryType, eTemp, p(1)
|
||||
!Associate boundary condition
|
||||
bt = getBoundaryId(boundaryType)
|
||||
CASE("Cart")
|
||||
ALLOCATE(p(1:1))
|
||||
|
||||
ALLOCATE(meshEdge1DCart:: self%edges(e)%obj)
|
||||
READ(10, *) n, elemType, eTemp, boundaryType, eTemp, p(1)
|
||||
!Associate boundary condition
|
||||
bt = getBoundaryId(boundaryType)
|
||||
|
||||
ALLOCATE(meshEdge1DCart:: self%edges(e)%obj)
|
||||
|
||||
END SELECT
|
||||
|
||||
END SELECT
|
||||
|
||||
|
|
@ -215,8 +233,8 @@ MODULE moduleMeshInputGmsh2
|
|||
!Read and initialize volumes
|
||||
DO e = 1, self%numVols
|
||||
!Reads the volume according to the geometry
|
||||
SELECT CASE(self%geometry)
|
||||
CASE("3DCart")
|
||||
SELECT CASE(self%dimen)
|
||||
CASE(3)
|
||||
READ(10, *) n, elemType
|
||||
BACKSPACE(10)
|
||||
|
||||
|
|
@ -229,56 +247,64 @@ MODULE moduleMeshInputGmsh2
|
|||
|
||||
END SELECT
|
||||
|
||||
CASE("2DCyl")
|
||||
READ(10,*) n, elemType
|
||||
BACKSPACE(10)
|
||||
CASE(2)
|
||||
SELECT CASE(self%geometry)
|
||||
CASE("Cyl")
|
||||
READ(10,*) n, elemType
|
||||
BACKSPACE(10)
|
||||
|
||||
SELECT CASE(elemType)
|
||||
CASE (2)
|
||||
!Triangular element
|
||||
ALLOCATE(p(1:3))
|
||||
READ(10,*) n, elemType, eTemp, eTemp, eTemp, p(1:3)
|
||||
ALLOCATE(meshVol2DCylTria:: self%vols(e)%obj)
|
||||
SELECT CASE(elemType)
|
||||
CASE (2)
|
||||
!Triangular element
|
||||
ALLOCATE(p(1:3))
|
||||
READ(10,*) n, elemType, eTemp, eTemp, eTemp, p(1:3)
|
||||
ALLOCATE(meshVol2DCylTria:: self%vols(e)%obj)
|
||||
|
||||
CASE (3)
|
||||
!Quadrilateral element
|
||||
ALLOCATE(p(1:4))
|
||||
READ(10,*) n, elemType, eTemp, eTemp, eTemp, p(1:4)
|
||||
ALLOCATE(meshVol2DCylQuad:: self%vols(e)%obj)
|
||||
CASE (3)
|
||||
!Quadrilateral element
|
||||
ALLOCATE(p(1:4))
|
||||
READ(10,*) n, elemType, eTemp, eTemp, eTemp, p(1:4)
|
||||
ALLOCATE(meshVol2DCylQuad:: self%vols(e)%obj)
|
||||
|
||||
END SELECT
|
||||
|
||||
CASE("Cart")
|
||||
READ(10,*) n, elemType
|
||||
BACKSPACE(10)
|
||||
|
||||
SELECT CASE(elemType)
|
||||
CASE (2)
|
||||
!Triangular element
|
||||
ALLOCATE(p(1:3))
|
||||
READ(10,*) n, elemType, eTemp, eTemp, eTemp, p(1:3)
|
||||
ALLOCATE(meshVol2DCartTria:: self%vols(e)%obj)
|
||||
|
||||
CASE (3)
|
||||
!Quadrilateral element
|
||||
ALLOCATE(p(1:4))
|
||||
READ(10,*) n, elemType, eTemp, eTemp, eTemp, p(1:4)
|
||||
ALLOCATE(meshVol2DCartQuad:: self%vols(e)%obj)
|
||||
|
||||
END SELECT
|
||||
|
||||
END SELECT
|
||||
|
||||
CASE("2DCart")
|
||||
READ(10,*) n, elemType
|
||||
BACKSPACE(10)
|
||||
CASE(1)
|
||||
SELECT CASE(self%geometry)
|
||||
CASE("Rad")
|
||||
ALLOCATE(p(1:2))
|
||||
|
||||
SELECT CASE(elemType)
|
||||
CASE (2)
|
||||
!Triangular element
|
||||
ALLOCATE(p(1:3))
|
||||
READ(10,*) n, elemType, eTemp, eTemp, eTemp, p(1:3)
|
||||
ALLOCATE(meshVol2DCartTria:: self%vols(e)%obj)
|
||||
READ(10, *) n, elemType, eTemp, eTemp, eTemp, p(1:2)
|
||||
ALLOCATE(meshVol1DRadSegm:: self%vols(e)%obj)
|
||||
|
||||
CASE (3)
|
||||
!Quadrilateral element
|
||||
ALLOCATE(p(1:4))
|
||||
READ(10,*) n, elemType, eTemp, eTemp, eTemp, p(1:4)
|
||||
ALLOCATE(meshVol2DCartQuad:: self%vols(e)%obj)
|
||||
CASE("Cart")
|
||||
ALLOCATE(p(1:2))
|
||||
|
||||
READ(10, *) n, elemType, eTemp, eTemp, eTemp, p(1:2)
|
||||
ALLOCATE(meshVol1DCartSegm:: self%vols(e)%obj)
|
||||
|
||||
END SELECT
|
||||
|
||||
CASE("1DRad")
|
||||
ALLOCATE(p(1:2))
|
||||
|
||||
READ(10, *) n, elemType, eTemp, eTemp, eTemp, p(1:2)
|
||||
ALLOCATE(meshVol1DRadSegm:: self%vols(e)%obj)
|
||||
|
||||
CASE("1DCart")
|
||||
ALLOCATE(p(1:2))
|
||||
|
||||
READ(10, *) n, elemType, eTemp, eTemp, eTemp, p(1:2)
|
||||
ALLOCATE(meshVol1DCartSegm:: self%vols(e)%obj)
|
||||
|
||||
END SELECT
|
||||
|
||||
CALL self%vols(e)%obj%init(n - numEdges, p, self%nodes)
|
||||
|
|
@ -288,6 +314,9 @@ MODULE moduleMeshInputGmsh2
|
|||
|
||||
CLOSE(10)
|
||||
|
||||
!Call mesh connectivity
|
||||
CALL self%connectMesh
|
||||
|
||||
END SUBROUTINE readGmsh2
|
||||
|
||||
!Reads the initial information from an output file for an species
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue