Maps the global position (gx,gy) of an element in a tiled structured mesh, with gx in [1,nX] and gy in [1,nY], to the tile-ordered element id that UniformStructuredMesh assigns to it,
eid = i + nxPerTile(j-1 + nyPerTile(ti-1 + nTileX*(tj-1)))
where gx = i + nxPerTile(ti-1) and gy = j + nyPerTile(tj-1).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | gx | |||
| integer, | intent(in) | :: | gy | |||
| integer, | intent(in) | :: | nxPerTile | |||
| integer, | intent(in) | :: | nyPerTile | |||
| integer, | intent(in) | :: | nTileX |
pure function StructuredElementId2D(gx,gy,nxPerTile,nyPerTile,nTileX) result(eid)
!! Maps the global position (gx,gy) of an element in a tiled structured mesh, with
!! gx in [1,nX] and gy in [1,nY], to the tile-ordered element id that
!! UniformStructuredMesh assigns to it,
!!
!! eid = i + nxPerTile*(j-1 + nyPerTile*(ti-1 + nTileX*(tj-1)))
!!
!! where gx = i + nxPerTile*(ti-1) and gy = j + nyPerTile*(tj-1).
implicit none
integer,intent(in) :: gx,gy
integer,intent(in) :: nxPerTile,nyPerTile,nTileX
integer :: eid
! Local
integer :: i,j,ti,tj
ti = (gx-1)/nxPerTile+1
i = gx-(ti-1)*nxPerTile
tj = (gy-1)/nyPerTile+1
j = gy-(tj-1)*nyPerTile
eid = i+nxPerTile*(j-1+nyPerTile*(ti-1+nTileX*(tj-1)))
endfunction StructuredElementId2D