bc_set_BuildMask Subroutine

private impure subroutine bc_set_BuildMask(this, name, mask)

Uses

  • proc~~bc_set_buildmask~~UsesGraph proc~bc_set_buildmask bc_set%bc_set_BuildMask module~leapeulerian leapEulerian proc~bc_set_buildmask->module~leapeulerian iso_fortran_env iso_fortran_env module~leapeulerian->iso_fortran_env module~leapblock leapBlock module~leapeulerian->module~leapblock module~leapio leapIO module~leapeulerian->module~leapio module~leapkinds leapKinds module~leapeulerian->module~leapkinds module~leapparallel leapParallel module~leapeulerian->module~leapparallel module~leaputils leapUtils module~leapeulerian->module~leaputils mpi_f08 mpi_f08 module~leapeulerian->mpi_f08 module~leapblock->iso_fortran_env module~leapblock->module~leapkinds module~leapblock->module~leapparallel module~leapblock->mpi_f08 module~leapio_hdf5 leapIO_hdf5 module~leapblock->module~leapio_hdf5 module~leapio_h5hut leapIO_h5hut module~leapio->module~leapio_h5hut module~leapio->module~leapio_hdf5 module~leapio_silo leapIO_silo module~leapio->module~leapio_silo module~leapio_xdmf leapIO_xdmf module~leapio->module~leapio_xdmf module~leapkinds->iso_fortran_env module~leapparallel->iso_fortran_env module~leapparallel->module~leapkinds module~leapparallel->mpi_f08 module~leaputils->module~leapkinds module~leapio_h5hut->module~leapkinds module~leapio_h5hut->module~leapparallel module~leapio_h5hut->module~leapio_hdf5 module~leapio_hdf5->module~leapkinds module~leapio_hdf5->module~leapparallel module~leapio_hdf5->module~leaputils hdf5 hdf5 module~leapio_hdf5->hdf5 module~leapio_silo->module~leapkinds module~leapio_silo->module~leapparallel module~leapio_silo->module~leaputils module~leapio_silo->mpi_f08 module~leapio_xdmf->module~leapkinds module~leapio_xdmf->module~leaputils

Builds an integer field, where cells=0 denotes interior cells, and cells=1 denotes boundary cells for input variable.

Type Bound

bc_set

Arguments

Type IntentOptional Attributes Name
class(bc_set), intent(in) :: this

Boundary conditions utility

character(len=*), intent(in) :: name

Name of the variable

type(eulerian_obj_i), intent(inout) :: mask

Mask for this variable


Calls

proc~~bc_set_buildmask~~CallsGraph proc~bc_set_buildmask bc_set%bc_set_BuildMask proc~bc_set_checkbcexists bc_set%bc_set_CheckBCExists proc~bc_set_buildmask->proc~bc_set_checkbcexists proc~bc_set_getextents bc_set%bc_set_GetExtents proc~bc_set_buildmask->proc~bc_set_getextents proc~eulerian_obj_updateghostcells eulerian_obj_base%eulerian_obj_UpdateGhostCells proc~bc_set_buildmask->proc~eulerian_obj_updateghostcells proc~region_obj_getbcindex region_obj%region_obj_GetBCIndex proc~bc_set_buildmask->proc~region_obj_getbcindex proc~bc_set_checkbcexists->proc~region_obj_getbcindex proc~bc_set_getregionindex bc_set%bc_set_GetRegionIndex proc~bc_set_checkbcexists->proc~bc_set_getregionindex proc~bc_set_getextents->proc~bc_set_getregionindex proc~eulerian_obj_updateghostcells_x eulerian_obj_base%eulerian_obj_UpdateGhostCells_x proc~eulerian_obj_updateghostcells->proc~eulerian_obj_updateghostcells_x proc~eulerian_obj_updateghostcells_y eulerian_obj_base%eulerian_obj_UpdateGhostCells_y proc~eulerian_obj_updateghostcells->proc~eulerian_obj_updateghostcells_y proc~eulerian_obj_updateghostcells_z eulerian_obj_base%eulerian_obj_UpdateGhostCells_z proc~eulerian_obj_updateghostcells->proc~eulerian_obj_updateghostcells_z none~get~3 hashtbl_obj%Get proc~region_obj_getbcindex->none~get~3 proc~hashtbl_obj_hashstring hashtbl_obj%hashtbl_obj_HashString proc~region_obj_getbcindex->proc~hashtbl_obj_hashstring proc~hashtbl_obj_get_int4 hashtbl_obj%hashtbl_obj_Get_int4 none~get~3->proc~hashtbl_obj_get_int4 proc~hashtbl_obj_get_int8 hashtbl_obj%hashtbl_obj_Get_int8 none~get~3->proc~hashtbl_obj_get_int8 proc~hashtbl_obj_get_real_dp hashtbl_obj%hashtbl_obj_Get_real_dp none~get~3->proc~hashtbl_obj_get_real_dp proc~hashtbl_obj_get_real_sp hashtbl_obj%hashtbl_obj_Get_real_sp none~get~3->proc~hashtbl_obj_get_real_sp proc~bc_set_getregionindex->none~get~3 proc~bc_set_getregionindex->proc~hashtbl_obj_hashstring cell cell proc~eulerian_obj_updateghostcells_x->cell mpi_irecv mpi_irecv proc~eulerian_obj_updateghostcells_x->mpi_irecv mpi_isend mpi_isend proc~eulerian_obj_updateghostcells_x->mpi_isend mpi_waitall mpi_waitall proc~eulerian_obj_updateghostcells_x->mpi_waitall proc~eulerian_obj_updateghostcells_y->cell proc~eulerian_obj_updateghostcells_y->mpi_irecv proc~eulerian_obj_updateghostcells_y->mpi_isend proc~eulerian_obj_updateghostcells_y->mpi_waitall proc~eulerian_obj_updateghostcells_z->cell proc~eulerian_obj_updateghostcells_z->mpi_irecv proc~eulerian_obj_updateghostcells_z->mpi_isend proc~eulerian_obj_updateghostcells_z->mpi_waitall none~get~2 sllist_obj%Get proc~hashtbl_obj_get_int4->none~get~2 proc~hashtbl_obj_get_int8->none~get~2 proc~hashtbl_obj_get_real_dp->none~get~2 proc~hashtbl_obj_get_real_sp->none~get~2 proc~sllist_obj_get_int4 sllist_obj%sllist_obj_Get_int4 none~get~2->proc~sllist_obj_get_int4 proc~sllist_obj_get_int8 sllist_obj%sllist_obj_Get_int8 none~get~2->proc~sllist_obj_get_int8 proc~sllist_obj_get_real_dp sllist_obj%sllist_obj_Get_real_dp none~get~2->proc~sllist_obj_get_real_dp proc~sllist_obj_get_real_sp sllist_obj%sllist_obj_Get_real_sp none~get~2->proc~sllist_obj_get_real_sp proc~sllist_obj_get_int4->proc~sllist_obj_get_int4 proc~sllist_obj_get_int8->proc~sllist_obj_get_int8 proc~sllist_obj_get_real_dp->proc~sllist_obj_get_real_dp proc~sllist_obj_get_real_sp->proc~sllist_obj_get_real_sp

Called by

proc~~bc_set_buildmask~~CalledByGraph proc~bc_set_buildmask bc_set%bc_set_BuildMask proc~cdifs_obj_preparesolverbcs cdifs_obj_PrepareSolverBCS proc~cdifs_obj_preparesolverbcs->proc~bc_set_buildmask proc~cdifs_obj_preparesolver cdifs_obj_PrepareSolver proc~cdifs_obj_preparesolver->proc~cdifs_obj_preparesolverbcs interface~cdifs_obj_preparesolver cdifs_obj%cdifs_obj_PrepareSolver interface~cdifs_obj_preparesolver->proc~cdifs_obj_preparesolver

Source Code

    impure subroutine bc_set_BuildMask(this,name,mask)
      !> Builds an integer field, where cells=0 denotes interior
      ! cells, and cells=1 denotes boundary cells for input variable.
      use leapeulerian
      class(bc_set),        intent(in)    :: this                              !! Boundary conditions utility
      character(len=*),     intent(in)    :: name                              !! Name of the variable
      type(eulerian_obj_i), intent(inout) :: mask                              !! Mask for this variable
      ! Work variables
      type(extent_obj) :: extents
      integer          :: i,j,k
      integer          :: n,ind
      logical          :: found

      ! Initialize all cell to be interior cells
      mask%cell = 1

      ! Leave, if not regions found
      if (.not.allocated(this%region)) return

      ! Loop over regions
      do n=1,this%count

        ! Get index of variable within this region
        ! Check Whether we have a BC for this variable on this region
        found = this%CheckBCExists(this%region(n)%name,name)
        if (.not.found) cycle

        ! If variable found, get its index
        ind = this%region(n)%GetBCIndex(name)

        ! Get extents of this region
        extents = this%GetExtents(this%region(n)%name)

        ! Mark cells as boundary cells
        if (this%region(n)%dir.eq.mask%staggering.and.this%region(n)%side.eq.BC_LEFT) then
          do k=extents%lo(3),extents%hi(3)
            do j=extents%lo(2),extents%hi(2)
              do i=extents%lo(1),extents%hi(1)
                mask%cell(i,j,k) = 0
                end do
             end do
          end do
        end if
      end do

      call mask%UpdateGhostCells()

      return
    end subroutine bc_set_BuildMask