| Class | planck_func | 
| In: | radiation/planck_func.f90 | 
Note that Japanese and English are described in parallel.
| !$ ! RadiationFluxDennouAGCM : | 放射フラックスの計算 | 
| !$ ! RadiationDTempDt : | 放射フラックスによる温度変化の計算 | 
| !$ ! RadiationFluxOutput : | 放射フラックスの出力 | 
| !$ ! RadiationFinalize : | 終了処理 (モジュール内部の変数の割り付け解除) | 
| !$ ! ———— : | ———— | 
| !$ ! RadiationFluxDennouAGCM : | Calculate radiation flux | 
| !$ ! RadiationDTempDt : | Calculate temperature tendency with radiation flux | 
| !$ ! RadiationFluxOutput : | Output radiation fluxes | 
| !$ ! RadiationFinalize : | Termination (deallocate variables in this module) | 
| Function : | |
| Res : | real(DP) | 
| WN : | real(DP), intent(in ) | 
| Temp : | real(DP), intent(in ) | 
  function DPFDT( WN, Temp ) result( Res )
    ! USE statements
    !
    ! 宣言文 ; Declaration statements
    !
    real(DP), intent(in ) :: WN
    real(DP), intent(in ) :: Temp
    real(DP)              :: Res
    ! 作業変数
    ! Work variables
    !
    real(DP) :: aaa_Temp(1,1,1)
    real(DP) :: aaa_Res (1,1,1)
    aaa_Temp(1,1,1) = Temp
    aaa_Res = aaa_DPFDT( 1, 1, 1, 1, 1, 1, WN, aaa_Temp )
    Res = aaa_Res(1,1,1)
  end function DPFDT
          | Subroutine : | |
| is : | integer , intent(in ) | 
| ie : | integer , intent(in ) | 
| js : | integer , intent(in ) | 
| je : | integer , intent(in ) | 
| WN1 : | real(DP), intent(in ) | 
| WN2 : | real(DP), intent(in ) | 
| Num : | integer , intent(in ) | 
| aa_Temp(is:ie, js:je) : | real(DP), intent(in ) | 
| aa_DPFDTInted(is:ie, js:je) : | real(DP), intent(out) | 
  subroutine Integ_DPFDT_GQ_Array2D( is, ie, js, je, WN1, WN2, Num, aa_Temp, aa_DPFDTInted )
    ! USE statements
    !
    integer , intent(in ) :: is
    integer , intent(in ) :: ie
    integer , intent(in ) :: js
    integer , intent(in ) :: je
    real(DP), intent(in ) :: WN1
    real(DP), intent(in ) :: WN2
    integer , intent(in ) :: Num
    real(DP), intent(in ) :: aa_Temp      (is:ie, js:je)
    real(DP), intent(out) :: aa_DPFDTInted(is:ie, js:je)
    !
    ! local variables
    !
    real(DP) :: aaa_Temp      (is:ie, js:je, 1:1)
    real(DP) :: aaa_DPFDTInted(is:ie, js:je, 1:1)
    aaa_Temp(:,:,1) = aa_Temp
    call Integ_DPFDT_GQ_Array3D( is, ie, js, je, 1, 1, WN1, WN2, Num, aaa_Temp, aaa_DPFDTInted )
    aa_DPFDTInted = aaa_DPFDTInted(:,:,1)
  end subroutine Integ_DPFDT_GQ_Array2D
          | Subroutine : | |
| is : | integer , intent(in ) | 
| ie : | integer , intent(in ) | 
| js : | integer , intent(in ) | 
| je : | integer , intent(in ) | 
| ks : | integer , intent(in ) | 
| ke : | integer , intent(in ) | 
| WN1 : | real(DP), intent(in ) | 
| WN2 : | real(DP), intent(in ) | 
| Num : | integer , intent(in ) | 
| aaa_Temp(is:ie, js:je, ks:ke) : | real(DP), intent(in ) | 
| aaa_DPFDTInted(is:ie, js:je, ks:ke) : | real(DP), intent(out) | 
  subroutine Integ_DPFDT_GQ_Array3D( is, ie, js, je, ks, ke, WN1, WN2, Num, aaa_Temp, aaa_DPFDTInted )
    ! USE statements
    !
    ! ガウス重み, 分点の計算
    ! Calculate Gauss node and Gaussian weight
    !
    use gauss_quad, only : GauLeg
    integer , intent(in ) :: is
    integer , intent(in ) :: ie
    integer , intent(in ) :: js
    integer , intent(in ) :: je
    integer , intent(in ) :: ks
    integer , intent(in ) :: ke
    real(DP), intent(in ) :: WN1
    real(DP), intent(in ) :: WN2
    integer , intent(in ) :: Num
    real(DP), intent(in ) :: aaa_Temp      (is:ie, js:je, ks:ke)
    real(DP), intent(out) :: aaa_DPFDTInted(is:ie, js:je, ks:ke)
    !
    ! local variables
    !
    real(DP):: GP( Num )
    real(DP):: GW( Num )
    integer :: l
    call GauLeg( WN1, WN2, Num, GP, GW )
    aaa_DPFDTInted = 0.0_DP
    do l = 1, num
      aaa_DPFDTInted = aaa_DPFDTInted + aaa_DPFDT( is, ie, js, je, ks, ke, GP(l), aaa_Temp ) * GW(l)
    end do
  end subroutine Integ_DPFDT_GQ_Array3D
          | Subroutine : | |
| wn1 : | real(DP), intent(in ) | 
| wn2 : | real(DP), intent(in ) | 
| num : | integer , intent(in ) | 
| is : | integer , intent(in ) | 
| ie : | integer , intent(in ) | 
| js : | integer , intent(in ) | 
| je : | integer , intent(in ) | 
| temp(is:ie, js:je) : | real(DP), intent(in ) | 
| pfinted(is:ie, js:je) : | real(DP), intent(out) | 
  subroutine Integ_PF_GQ_Array2D( wn1, wn2, num, is, ie, js, je, temp, pfinted )
    real(DP), intent(in ) :: wn1,wn2
    integer , intent(in ) :: num
    integer , intent(in ) :: is
    integer , intent(in ) :: ie
    integer , intent(in ) :: js
    integer , intent(in ) :: je
    real(DP), intent(in ) :: temp   (is:ie, js:je)
    real(DP), intent(out) :: pfinted(is:ie, js:je)
    !
    ! local variables
    !
    real(DP) :: temp3d   (is:ie, js:je, 1:1)
    real(DP) :: pfinted3d(is:ie, js:je, 1:1)
    temp3d(:,:,1) = temp(:,:)
    call Integ_PF_GQ_Array3D( wn1, wn2, num, is, ie, js, je, 1, 1, temp3d, pfinted3d )
    pfinted(:,:) = pfinted3d(:,:,1)
  end subroutine Integ_PF_GQ_Array2D
          | Subroutine : | |
| wn1 : | real(DP), intent(in ) | 
| wn2 : | real(DP), intent(in ) | 
| num : | integer , intent(in ) | 
| is : | integer , intent(in ) | 
| ie : | integer , intent(in ) | 
| js : | integer , intent(in ) | 
| je : | integer , intent(in ) | 
| ks : | integer , intent(in ) | 
| ke : | integer , intent(in ) | 
| aaa_temp(is:ie, js:je, ks:ke) : | real(DP), intent(in ) | 
| aaa_pfinted(is:ie, js:je, ks:ke) : | real(DP), intent(out) | 
  subroutine Integ_PF_GQ_Array3D( wn1, wn2, num, is, ie, js, je, ks, ke, aaa_temp, aaa_pfinted )
    ! ガウス重み, 分点の計算
    ! Calculate Gauss node and Gaussian weight
    !
    use gauss_quad, only : GauLeg
    real(DP), intent(in ) :: wn1,wn2
    integer , intent(in ) :: num
    integer , intent(in ) :: is, ie
    integer , intent(in ) :: js, je
    integer , intent(in ) :: ks, ke
    real(DP), intent(in ) :: aaa_temp   (is:ie, js:je, ks:ke)
    real(DP), intent(out) :: aaa_pfinted(is:ie, js:je, ks:ke)
    !
    ! local variables
    !
    real(DP):: x( num ), w( num )
    integer :: l
    call GauLeg( wn1, wn2, num, x, w )
    aaa_pfinted(:,:,:) = 0.0d0
    do l = 1, num
      aaa_pfinted(:,:,:) = aaa_pfinted(:,:,:) + aaa_PF( is, ie, js, je, ks, ke, x(l), aaa_Temp ) * w( l )
    end do
  end subroutine Integ_PF_GQ_Array3D
          | Function : | |
| Res : | real(DP) | 
| WN : | real(DP), intent(in) | 
| Temp : | real(DP), intent(in) | 
温度, 比湿, 気圧から, 放射フラックスを計算します.
Calculate radiation flux from temperature, specific humidity, and air pressure.
  function PF( WN, Temp ) result( Res )
    !
    ! 温度, 比湿, 気圧から, 放射フラックスを計算します. 
    !
    ! Calculate radiation flux from temperature, specific humidity, and 
    ! air pressure. 
    !
    ! モジュール引用 ; USE statements
    !
    ! 宣言文 ; Declaration statements
    !
    real(DP), intent(in) :: WN
    real(DP), intent(in) :: Temp
    real(DP)             :: Res
    ! 作業変数
    ! Work variables
    !
    real(DP) :: aaa_Temp(1,1,1)
    real(DP) :: aaa_Res (1,1,1)
    ! 実行文 ; Executable statement
    !
    aaa_Temp(1,1,1) = Temp
    aaa_Res = aaa_PF( 1, 1, 1, 1, 1, 1, WN, aaa_Temp )
    Res = aaa_Res(1,1,1)
  end function PF
          | Function : | |
| aaa_Res(is:ie, js:je, ks:ke) : | real(DP) | 
| is : | integer , intent(in) | 
| ie : | integer , intent(in) | 
| js : | integer , intent(in) | 
| je : | integer , intent(in) | 
| ks : | integer , intent(in) | 
| ke : | integer , intent(in) | 
| WN : | real(DP), intent(in) | 
| aaa_Temp(is:ie, js:je, ks:ke) : | real(DP), intent(in) | 
温度, 比湿, 気圧から, 放射フラックスを計算します.
Calculate radiation flux from temperature, specific humidity, and air pressure.
  function aaa_PF( is, ie, js, je, ks, ke, WN, aaa_Temp ) result( aaa_Res )
    !
    ! 温度, 比湿, 気圧から, 放射フラックスを計算します. 
    !
    ! Calculate radiation flux from temperature, specific humidity, and 
    ! air pressure. 
    !
    ! モジュール引用 ; USE statements
    !
    ! 宣言文 ; Declaration statements
    !
    integer , intent(in) :: is
    integer , intent(in) :: ie
    integer , intent(in) :: js
    integer , intent(in) :: je
    integer , intent(in) :: ks
    integer , intent(in) :: ke
    real(DP), intent(in) :: WN
    real(DP), intent(in) :: aaa_Temp(is:ie, js:je, ks:ke)
    real(DP)             :: aaa_Res (is:ie, js:je, ks:ke)
    ! 作業変数
    ! Work variables
    !
    ! 実行文 ; Executable statement
    !
    aaa_Res = 2.0d0 * Planc * SOL * SOL * WN * WN * WN / ( exp( Planc * SOL * ( WN+1.0d-10 ) / ( Boltz * aaa_Temp ) ) - 1.0d0 )
  end function aaa_PF
          | Variable : | |||
| planck_func_inited = .false. : | logical, save, public 
 | 
| Function : | |
| aaa_Res(is:ie, js:je, ks:ke) : | real(DP) | 
| is : | integer , intent(in ) | 
| ie : | integer , intent(in ) | 
| js : | integer , intent(in ) | 
| je : | integer , intent(in ) | 
| ks : | integer , intent(in ) | 
| ke : | integer , intent(in ) | 
| WN : | real(DP), intent(in ) | 
| aaa_Temp(is:ie, js:je, ks:ke) : | real(DP), intent(in ) | 
  function aaa_DPFDT( is, ie, js, je, ks, ke, WN, aaa_Temp ) result( aaa_Res )
    ! USE statements
    !
    integer , intent(in ) :: is
    integer , intent(in ) :: ie
    integer , intent(in ) :: js
    integer , intent(in ) :: je
    integer , intent(in ) :: ks
    integer , intent(in ) :: ke
    real(DP), intent(in ) :: WN
    real(DP), intent(in ) :: aaa_Temp(is:ie, js:je, ks:ke)
    real(DP)              :: aaa_Res (is:ie, js:je, ks:ke)
    real(DP) :: aaa_ExpTerm(is:ie, js:je, ks:ke)
    real(DP) :: aaa_PF     (is:ie, js:je, ks:ke)
    aaa_ExpTerm = exp( Planc * SOL * ( WN + 1.0d-10 ) / ( Boltz * aaa_Temp ) )
    aaa_PF = 2.0d0 * Planc * SOL * SOL * WN * WN * WN / ( aaa_ExpTerm - 1.0d0 )
    aaa_Res = 1.0d0 / ( 2.0d0 * SOL * WN * WN * Boltz ) * ( aaa_PF / aaa_Temp )**2 * aaa_ExpTerm
  end function aaa_DPFDT
          | Constant : | |||
| version = ’$Name: dcpam5-20110221-2 $’ // ’$Id: planck_func.f90,v 1.2 2010-09-18 01:38:22 yot Exp $’ : | character(*), parameter 
 |