bc_set_SetBC Subroutine

private impure subroutine bc_set_SetBC(this, region, type, var)

Sets boundary condition of a given type, for a given variable on a given region.

Type Bound

bc_set

Arguments

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

Boundary conditions utility

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

Region name

integer, intent(in) :: type

BC type

character(len=*), intent(in), optional :: var

Variable name


Calls

proc~~bc_set_setbc~~CallsGraph proc~bc_set_setbc bc_set%bc_set_SetBC proc~bc_set_getextents bc_set%bc_set_GetExtents proc~bc_set_setbc->proc~bc_set_getextents proc~bc_set_getregionindex bc_set%bc_set_GetRegionIndex proc~bc_set_setbc->proc~bc_set_getregionindex proc~region_obj_add region_obj%region_obj_Add proc~bc_set_setbc->proc~region_obj_add proc~bc_set_getextents->proc~bc_set_getregionindex none~get~3 hashtbl_obj%Get proc~bc_set_getregionindex->none~get~3 proc~hashtbl_obj_hashstring hashtbl_obj%hashtbl_obj_HashString proc~bc_set_getregionindex->proc~hashtbl_obj_hashstring proc~region_obj_add->proc~hashtbl_obj_hashstring proc~hashtbl_obj_put hashtbl_obj%hashtbl_obj_Put proc~region_obj_add->proc~hashtbl_obj_put proc~region_obj_expand region_obj%region_obj_Expand proc~region_obj_add->proc~region_obj_expand 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~sllist_obj_put sllist_obj%sllist_obj_Put proc~hashtbl_obj_put->proc~sllist_obj_put 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_put->proc~sllist_obj_put 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_setbc~~CalledByGraph proc~bc_set_setbc bc_set%bc_set_SetBC proc~cdifs_obj_preparesolverbcs cdifs_obj_PrepareSolverBCS proc~cdifs_obj_preparesolverbcs->proc~bc_set_setbc proc~grans_obj_preparesolverbcs grans_obj_PrepareSolverBCS proc~grans_obj_preparesolverbcs->proc~bc_set_setbc proc~cdifs_obj_preparesolver cdifs_obj_PrepareSolver proc~cdifs_obj_preparesolver->proc~cdifs_obj_preparesolverbcs proc~grans_obj_preparesolver grans_obj_PrepareSolver proc~grans_obj_preparesolver->proc~grans_obj_preparesolverbcs interface~cdifs_obj_preparesolver cdifs_obj%cdifs_obj_PrepareSolver interface~cdifs_obj_preparesolver->proc~cdifs_obj_preparesolver interface~grans_obj_preparesolver grans_obj%grans_obj_PrepareSolver interface~grans_obj_preparesolver->proc~grans_obj_preparesolver

Source Code

    impure subroutine bc_set_SetBC(this,region,type,var)
      !> Sets boundary condition of a given type, for a given
      ! variable on a given region.
      class(bc_set),    intent(inout) :: this                                  !! Boundary conditions utility
      character(len=*), intent(in)    :: region                                !! Region name
      integer,          intent(in)    :: type                                  !! BC type
      character(len=*), intent(in),    &
                             optional :: var                                   !! Variable name
      ! Work variable
      type(extent_obj) :: extents
      integer          :: ind_reg

      ! Get index of region and its extents
      ind_reg = this%GetRegionIndex(region)
      extents = this%GetExtents(region)

      select case (type)
        case (BC_WALL     )
          call this%region(ind_reg)%Add('V1', BC_DIRICHLET,extents)
          call this%region(ind_reg)%Add('V2', BC_DIRICHLET,extents)
          call this%region(ind_reg)%Add('V3', BC_DIRICHLET,extents)
          call this%region(ind_reg)%Add('P',  BC_NEUMANN,  extents)
          call this%region(ind_reg)%Add('dP', BC_NEUMANN,  extents)
        case (BC_INFLOW   )
          call this%region(ind_reg)%Add('V1', BC_DIRICHLET,extents)
          call this%region(ind_reg)%Add('V2', BC_DIRICHLET,extents)
          call this%region(ind_reg)%Add('V3', BC_DIRICHLET,extents)
          call this%region(ind_reg)%Add('P',  BC_NEUMANN,  extents)
          call this%region(ind_reg)%Add('dP', BC_NEUMANN,  extents)
        case (BC_OUTFLOW  )
          call this%region(ind_reg)%Add('V1', BC_NEUMANN,  extents)
          call this%region(ind_reg)%Add('V2', BC_NEUMANN,  extents)
          call this%region(ind_reg)%Add('V3', BC_NEUMANN,  extents)
          call this%region(ind_reg)%Add('P',  BC_NEUMANN,  extents)
          call this%region(ind_reg)%Add('dP', BC_NEUMANN,  extents)
        case (BC_DIRICHLET)
          if (.not.present(var)) &
            call this%parallel%Stop("Unable to apply Dirichlet BC without providing the variable name")
            call this%region(ind_reg)%Add(var,BC_DIRICHLET,extents)
        case (BC_NEUMANN  )
          if (.not.present(var)) &
            call this%parallel%Stop("Unable to apply Neumann BC without providing the variable name")
            call this%region(ind_reg)%Add(var,BC_NEUMANN,extents)
        case (BC_SYMMETRY )
          if (.not.present(var)) &
            call this%parallel%Stop("Unable to apply Symmetry BC without providing the variable name")
          call this%region(ind_reg)%Add(var,BC_SYMMETRY,extents)
          ! TO-DO
      case default
        call this%parallel%Stop("Uknown BC type on region:"//region)
      end select

      return
    end subroutine bc_set_SetBC