FE-Project
Loading...
Searching...
No Matches
scale_meshutil_cubedsphere3d Module Reference

module FElib / Mesh / utility for 3D cubed-sphere mesh More...

Functions/Subroutines

subroutine, public meshutilcubedsphere3d_buildglobalmap (panelid_table, pi_table, pj_table, pk_table, tileid_map, tilefaceid_map, tilepanelid_map, ntile, nez)

Detailed Description

module FElib / Mesh / utility for 3D cubed-sphere mesh

Description
A module useful for generating 3D cubed-sphere mesh
Author
Yuta Kawai, Team SCALE

Function/Subroutine Documentation

◆ meshutilcubedsphere3d_buildglobalmap()

subroutine, public scale_meshutil_cubedsphere3d::meshutilcubedsphere3d_buildglobalmap ( integer, dimension(ntile), intent(out) panelid_table,
integer, dimension(ntile), intent(out) pi_table,
integer, dimension(ntile), intent(out) pj_table,
integer, dimension(ntile), intent(out) pk_table,
integer, dimension(6,ntile), intent(out) tileid_map,
integer, dimension(6,ntile), intent(out) tilefaceid_map,
integer, dimension(6,ntile), intent(out) tilepanelid_map,
integer, intent(in) ntile,
integer, intent(in) nez )

Definition at line 46 of file scale_meshutil_cubedsphere3d.F90.

51
52 ! use scale_prc, only: PRC_isMaster
53 use scale_meshutil_3d, only: &
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
123 call meshutil3d_genconnectivity( etoe, etof, &
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, & ! (inout)
137 panelid_table, pi_table, pj_table, nex, ney, ntile, 6 ) ! (in)
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.

References scale_meshutil_3d::meshutil3d_genconnectivity(), and scale_meshutil_cubedsphere2d::meshutilcubedsphere2d_modifyconnectivity().

Referenced by scale_mesh_cubedspheredom3d::meshcubedspheredom3d_init().