| Subroutine  : |  | 
| xy_SurfCond( 0:imax-1, 1:jmax )      : | integer , intent(in ) | 
| xy_SurfSnow( 0:imax-1, 1:jmax )      : | real(DP), intent(in ), optional | 
| xy_SeaIceConc( 0:imax-1, 1:jmax )      : | real(DP), intent(in ), optional | 
| xy_SurfAlbedo( 0:imax-1, 1:jmax )      : | real(DP), intent(inout) | 
          
  subroutine ModAlbedoDueToSnowSeaIce( xy_SurfCond, xy_SurfSnow, xy_SeaIceConc, xy_SurfAlbedo )
    ! 格子点設定
    ! Grid points settings
    !
    use gridset, only: imax, jmax, kmax    ! 鉛直層数.
                               ! Number of vertical level
    ! 雪と海氷の定数の設定
    ! Setting constants of snow and sea ice
    !
    use constants_snowseaice, only: SnowThreshold => ThresholdSurfSnow, SnowAlbedo, SeaIceThreshold, SeaIceAlbedo
    integer , intent(in   )           :: xy_SurfCond  ( 0:imax-1, 1:jmax )
    real(DP), intent(in   ), optional :: xy_SurfSnow  ( 0:imax-1, 1:jmax )
    real(DP), intent(in   ), optional :: xy_SeaIceConc( 0:imax-1, 1:jmax )
    real(DP), intent(inout)           :: xy_SurfAlbedo( 0:imax-1, 1:jmax )
    ! 作業変数
    ! Work variables
    !
    integer:: i               ! 経度方向に回る DO ループ用作業変数
                              ! Work variables for DO loop in longitude
    integer:: j               ! 緯度方向に回る DO ループ用作業変数
                              ! Work variables for DO loop in latitude
    ! 初期化
    ! Initialization
    !
    if ( .not. modify_albedo_snowseaice_inited ) call ModAlbedoSnowSeaIceInit
    if ( present( xy_SurfSnow ) ) then
      ! modify surface albedo on the snow covered ground
      !
      do j = 1, jmax
        do i = 0, imax-1
          if ( xy_SurfCond(i,j) > 0 .and. xy_SurfSnow(i,j) > SnowThreshold ) then
            xy_SurfAlbedo(i,j) = SnowAlbedo
          end if
        end do
      end do
    end if
    if ( present( xy_SeaIceConc ) ) then
      ! modify surface albedo on the sea ice
      !
      do j = 1, jmax
        do i = 0, imax-1
          if ( xy_SurfCond(i,j) == 0 .and. xy_SeaIceConc(i,j) > SeaIceThreshold ) then
            xy_SurfAlbedo(i,j) = SeaIceAlbedo
          end if
        end do
      end do
    end if
  end subroutine ModAlbedoDueToSnowSeaIce