Class modify_albedo_snowseaice
In: surface_properties/modify_albedo_snowseaice.f90

Methods

Included Modules

dc_types gridset constants_snowseaice

Public Instance methods

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)

[Source]

  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
modify_albedo_snowseaice_inited
Variable :
modify_albedo_snowseaice_inited = .false. :logical, save, public
: 初期設定フラグ. Initialization flag

Private Instance methods

Subroutine :

[Source]

  subroutine ModAlbedoSnowSeaIceInit

    ! 作業変数
    ! Work variables
    !


    modify_albedo_snowseaice_inited = .true.

  end subroutine ModAlbedoSnowSeaIceInit
module_name
Constant :
module_name = ‘modify_albedo_snowseaice :character(*), parameter
: モジュールの名称. Module name
version
Constant :
version = ’$Name: dcpam5-20100224 $’ // ’$Id: modify_albedo_snowseaice.f90,v 1.1 2009-08-09 12:36:24 yot Exp $’ :character(*), parameter
: モジュールのバージョン Module version

[Validate]