10#include "scaleFElib.h"
16 use scale_const,
only: &
37 public :: meshutilcubedsphere3d_gencubedomain
38 public :: meshutilcubedsphere3d_genconnectivity
39 public :: meshutilcubedsphere3d_buildinteriormap
41 public :: meshutilcubedsphere3d_genpatchboundarymap
42 public :: meshutilcubedsphere3d_genpatchboundarymap_wide
47 panelID_table, pi_table, pj_table, pk_table, &
48 tileID_map, tileFaceID_map, tilePanelID_map, &
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
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(:,:)
77 integer :: tileid, tileid_r
83 ntileperpanel = ntile / 6
84 ney = int( sqrt(dble(ntileperpanel)) )
85 nex = ntileperpanel/ney
89 allocate( nodesid_3d(nvx,nvy,nvz,6) )
90 allocate( etov(ntile,8), etoe(ntile,6), etof(ntile,6) )
98 nodesid_3d(i,j,k,panelid) = counter
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) /)
125 tileid_map(:,:) = transpose(etoe)
126 tilefaceid_map(:,:) = transpose(etof)
130 tileid_r = tileid_map(f,tileid)
131 tilepanelid_map(f,tileid) = panelid_table(tileid_r)
136 tilepanelid_map, tileid_map, tilefaceid_map, &
137 panelid_table, pi_table, pj_table, nex, ney, ntile, 6 )
module FElib / Mesh / utility for 3D mesh
subroutine, public meshutil3d_buildinteriormap(vmapm, vmapp, mapm, mapp, pos_en, pos_ev, etoe, etof, etov, fmask_h, fmask_v, ne, nv, np, nfp_h, nfp_v, nfptot, nfaces_h, nfaces_v, nfaces)
subroutine, public meshutil3d_genpatchboundarymap_wide(vmapb2, vmapb, halosize_h, halosize_v, nex, ney, nez, nfp_h, nfp_v, nnode_h1d, nnode_v)
subroutine, public meshutil3d_genconnectivity(etoe, etof, etov, ne, nfaces)
subroutine, public meshutil3d_gencubedomain(pos_v, etov, ke_x, xmin, xmax, ke_y, ymin, ymax, ke_z, zmin, zmax, fz)
Calculate position of vertices and generate array to map element to vertices for 3D cubic mesh.
subroutine, public meshutil3d_genpatchboundarymap(vmapb, mapb, vmapp, pos_en, xmin, xmax, ymin, ymax, zmin, zmax, fmask_h, fmask_v, ne, nv, np, nfp_h, nfp_v, nfptot, nfaces_h, nfaces_v, 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.
module FElib / Mesh / utility for 3D cubed-sphere mesh
subroutine, public meshutilcubedsphere3d_buildglobalmap(panelid_table, pi_table, pj_table, pk_table, tileid_map, tilefaceid_map, tilepanelid_map, ntile, nez)