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~4 hashtbl_obj%Get proc~bc_set_getregionindex->none~get~4 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~4->proc~hashtbl_obj_get_int4 proc~hashtbl_obj_get_int8 hashtbl_obj%hashtbl_obj_Get_int8 none~get~4->proc~hashtbl_obj_get_int8 proc~hashtbl_obj_get_real_dp hashtbl_obj%hashtbl_obj_Get_real_dp none~get~4->proc~hashtbl_obj_get_real_dp proc~hashtbl_obj_get_real_sp hashtbl_obj%hashtbl_obj_Get_real_sp none~get~4->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~3 sllist_obj%Get proc~hashtbl_obj_get_int4->none~get~3 proc~hashtbl_obj_get_int8->none~get~3 proc~hashtbl_obj_get_real_dp->none~get~3 proc~hashtbl_obj_get_real_sp->none~get~3 proc~sllist_obj_put->proc~sllist_obj_put proc~sllist_obj_get_int4 sllist_obj%sllist_obj_Get_int4 none~get~3->proc~sllist_obj_get_int4 proc~sllist_obj_get_int8 sllist_obj%sllist_obj_Get_int8 none~get~3->proc~sllist_obj_get_int8 proc~sllist_obj_get_real_dp sllist_obj%sllist_obj_Get_real_dp none~get~3->proc~sllist_obj_get_real_dp proc~sllist_obj_get_real_sp sllist_obj%sllist_obj_Get_real_sp none~get~3->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~setupcasebcs SetUpCaseBCS proc~setupcasebcs->proc~bc_set_setbc proc~setupcasebcs~11 SetUpCaseBCS proc~setupcasebcs~11->proc~bc_set_setbc proc~setupcasebcs~13 SetUpCaseBCS proc~setupcasebcs~13->proc~bc_set_setbc proc~setupcasebcs~14 SetUpCaseBCS proc~setupcasebcs~14->proc~bc_set_setbc proc~setupcasebcs~2 SetUpCaseBCS proc~setupcasebcs~2->proc~bc_set_setbc proc~setupcasebcs~3 SetUpCaseBCS proc~setupcasebcs~3->proc~bc_set_setbc proc~setupcasebcs~4 SetUpCaseBCS proc~setupcasebcs~4->proc~bc_set_setbc proc~setupcasebcs~5 SetUpCaseBCS proc~setupcasebcs~5->proc~bc_set_setbc proc~setupcasebcs~9 SetUpCaseBCS proc~setupcasebcs~9->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 program~main main program~main->proc~setupcasebcs program~main~11 main program~main~11->proc~setupcasebcs~11 program~main~13 main program~main~13->proc~setupcasebcs~13 program~main~14 main program~main~14->proc~setupcasebcs~14 program~main~2 main program~main~2->proc~setupcasebcs~2 program~main~3 main program~main~3->proc~setupcasebcs~3 program~main~4 main program~main~4->proc~setupcasebcs~4 program~main~5 main program~main~5->proc~setupcasebcs~5 program~main~9 main program~main~9->proc~setupcasebcs~9 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