51
52
57 implicit none
58
59 integer, intent(in) :: Ntile
60 integer, intent(out) :: panelID_table(Ntile)
61 integer, intent(out) :: pi_table(Ntile)
62 integer, intent(out) :: pj_table(Ntile)
63 integer, intent(out) :: pk_table(Ntile)
64 integer, intent(out) :: tileID_map(6,Ntile)
65 integer, intent(out) :: tileFaceID_map(6,Ntile)
66 integer, intent(out) :: tilePanelID_map(6,Ntile)
67 integer, intent(in) :: NeZ
68
69 integer :: NtilePerPanel
70 integer :: NeX, NeY, NvX, NvY, NvZ
71 integer, allocatable :: nodesID_3d(:,:,:,:)
72 integer, allocatable :: EToV(:,:)
73 integer, allocatable :: EToE(:,:)
74 integer, allocatable :: EToF(:,:)
75 integer :: i, j, k, f
76 integer :: panelID
77 integer :: tileID, tileID_R
78 integer :: counter
79
80 integer :: pi_, pj_
81
82
83 ntileperpanel = ntile / 6
84 ney = int( sqrt(dble(ntileperpanel)) )
85 nex = ntileperpanel/ney
86 nvx = nex + 1
87 nvy = ney + 1
88 nvz = nez + 1
89 allocate( nodesid_3d(nvx,nvy,nvz,6) )
90 allocate( etov(ntile,8), etoe(ntile,6), etof(ntile,6) )
91
92 counter = 0
93 do panelid = 1, 6
94 do k = 1, nvz
95 do j = 1, nvy
96 do i = 1, nvx
97 counter = counter + 1
98 nodesid_3d(i,j,k,panelid) = counter
99 end do
100 end do
101 end do
102 end do
103
104
105
106 tileid = 0
107 do panelid = 1, 6
108 do k = 1, nez
109 do j = 1, ney
110 do i = 1, nex
111 tileid = tileid + 1
112 panelid_table(tileid) = panelid
113 pi_table(tileid) = i; pj_table(tileid) = j; pk_table(tileid) = k
114 etov(tileid,:) = (/ nodesid_3d(i,j ,k ,panelid), nodesid_3d(i+1,j ,k ,panelid), &
115 nodesid_3d(i,j+1,k ,panelid), nodesid_3d(i+1,j+1,k ,panelid), &
116 nodesid_3d(i,j ,k+1,panelid), nodesid_3d(i+1,j ,k+1,panelid), &
117 nodesid_3d(i,j+1,k+1,panelid), nodesid_3d(i+1,j+1,k+1,panelid) /)
118 end do
119 end do
120 end do
121 end do
122
124 etov, ntile, 6 )
125 tileid_map(:,:) = transpose(etoe)
126 tilefaceid_map(:,:) = transpose(etof)
127
128 do tileid=1, ntile
129 do f=1, 6
130 tileid_r = tileid_map(f,tileid)
131 tilepanelid_map(f,tileid) = panelid_table(tileid_r)
132 end do
133 end do
134
136 tilepanelid_map, tileid_map, tilefaceid_map, &
137 panelid_table, pi_table, pj_table, nex, ney, ntile, 6 )
138
139 return
module FElib / Mesh / utility for 3D mesh
subroutine, public meshutil3d_genconnectivity(etoe, etof, etov, ne, nfaces)
module FElib / Mesh / utility for 2D cubed-sphere mesh
subroutine, public meshutilcubedsphere2d_modifyconnectivity(tilepanelid_map, tileid_map, tilefaceid_map, panelid_table, pi_table, pj_table, nex, ney, ntile, nface)
Modify the mesh connectivity with a cubic domain decomposition to support the cubed sphere mesh.