StructuredElementId2D Function

private 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).

Arguments

TypeIntentOptionalAttributesName
integer, intent(in) :: gx
integer, intent(in) :: gy
integer, intent(in) :: nxPerTile
integer, intent(in) :: nyPerTile
integer, intent(in) :: nTileX

Return Value integer


Called by

proc~~structuredelementid2d~~CalledByGraph proc~structuredelementid2d StructuredElementId2D proc~uniformperiodicmesh_mesh2d_t UniformPeriodicMesh_Mesh2D_t proc~uniformperiodicmesh_mesh2d_t->proc~structuredelementid2d

Contents

Source Code


Source Code

  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