tem_faceDep_vertical Subroutine

private subroutine tem_faceDep_vertical(minLevel, maxLevel, faces, nEligibleChildren)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: minLevel

Minimum level of your mesh.

integer, intent(in) :: maxLevel

Maximum level of your mesh.

type(tem_face_type), intent(inout) :: faces(minLevel:maxLevel)

Face descriptor where the faces will be appended to.

integer, intent(in) :: nEligibleChildren

The number of eligible children for the vertical face dependency


Source Code

  subroutine tem_faceDep_vertical(minLevel, maxLevel, faces, nEligibleChildren )
    ! --------------------------------------------------------------------------
    !> Minimum level of your mesh.
    integer, intent(in) :: minLevel
    !> Maximum level of your mesh.
    integer, intent(in) :: maxLevel
    !> Face descriptor where the faces will be appended to.
    type(tem_face_type),intent(inout)  :: faces(minLevel:maxLevel)
    !> The number of eligible children for the vertical face dependency
    integer, intent(in) :: nEligibleChildren
    ! --------------------------------------------------------------------------
    integer :: iLevel, iDir
    ! --------------------------------------------------------------------------

    ! Initialize the container for the vertical face dependencies.
    levelLoop: do iLevel = minLevel, maxLevel
      do iDir = 1, 3
        call tem_init_faceDep( faces(iLevel)%faces(iDir), nEligibleChildren )
      end do
    end do levelLoop

    ! build the dependencies downward (coarse face -> finer faces)
    levelLoopDown: do iLevel = minLevel, maxLevel-1
      do iDir = 1, 3
        call tem_faceDep_verticalDown( faces(iLevel)%faces(iDir),         &
          &                            faces(iLevel+1)%faces(iDir), iDir, &
          &                            nEligibleChildren )
      end do
    end do levelLoopDown

    ! build the dependencies upward (fine face -> coarse face)
    levelLoopUp: do iLevel = maxLevel, minLevel+1, -1
      do iDir = 1, 3
        call tem_faceDep_verticalUp( faces(iLevel)%faces(iDir),                &
          &                          faces(iLevel-1)%faces(iDir) )
      end do
    end do levelLoopUp

  end subroutine tem_faceDep_vertical