subroutine RadDcpamEV2Flux( xy_SurfAlbedo, xyz_Press, xyr_Press, xyz_Temp, xyz_QH2OVap, xyz_QH2OLiq, xy_SurfTemp, xyr_RadSFlux, xyr_RadLFlux, xyra_DelRadLFlux )
! USE statements
!
! メッセージ出力
! Message output
!
use dc_message, only: MessageNotify
! O3 分布の設定
! Set O3 distribution
!
use set_o3, only: SetO3
!!$ ! dcpam 地球大気向け短波放射モデル Ver. 2
!!$ ! dcpam short wave radiation model for the Earth's atmosphere Ver. 2
!!$ !
!!$ use radiation_dcpam_E_SW_V2, only: RadiationDcpamESWV2Flux
! dcpam 地球大気向け短波放射モデル Ver. 2.1
! dcpam short wave radiation model for the Earth's atmosphere Ver. 2.1
!
use rad_dcpam_E_SW_V2_1, only: RadDcpamESWV21Flux
!!$ ! dcpam 地球大気向け長波放射モデル Ver. 2
!!$ ! dcpam long wave radiation model for the Earth's atmosphere Ver. 2
!!$ !
!!$ use radiation_dcpam_E_LW_V2, only : RadiationDcpamELWV2Flux
!!$
!!$ ! dcpam 地球大気向け長波放射モデル Ver. 2.1
!!$ ! dcpam long wave radiation model for the Earth's atmosphere Ver. 2.1
!!$ !
!!$ use radiation_dcpam_E_LW_V2_1, only : RadiationDcpamELWV21Flux
!!$
!!$ ! dcpam 地球大気向け長波放射モデル Ver. 2.2
!!$ ! dcpam long wave radiation model for the Earth's atmosphere Ver. 2.2
!!$ !
!!$ use radiation_dcpam_E_LW_V2_2, only : RadiationDcpamELWV22Flux
! dcpam 地球大気向け長波放射モデル Ver. 2.3
! dcpam long wave radiation model for the Earth's atmosphere Ver. 2.3
!
use rad_dcpam_E_LW_V2_3, only : RadDcpamELWV23Flux
real(DP), intent(in ) :: xy_SurfAlbedo (0:imax-1, 1:jmax)
real(DP), intent(in ) :: xyz_Press (0:imax-1, 1:jmax, 1:kmax)
real(DP), intent(in ) :: xyr_Press (0:imax-1, 1:jmax, 0:kmax)
real(DP), intent(in ) :: xyz_Temp (0:imax-1, 1:jmax, 1:kmax)
real(DP), intent(in ) :: xyz_QH2OVap (0:imax-1, 1:jmax, 1:kmax)
! $ q $ . 混合比. Mass mixing ratio of constituents (1)
real(DP), intent(in ) :: xyz_QH2OLiq (0:imax-1, 1:jmax, 1:kmax)
real(DP), intent(in ) :: xy_SurfTemp (0:imax-1, 1:jmax)
real(DP), intent(out) :: xyr_RadSFlux (0:imax-1, 1:jmax, 0:kmax)
real(DP), intent(out) :: xyr_RadLFlux (0:imax-1, 1:jmax, 0:kmax)
real(DP), intent(out) :: xyra_DelRadLFlux(0:imax-1, 1:jmax, 0:kmax, 0:1)
! Work variables
!
real(DP) :: xyz_QCO2 (0:imax-1, 1:jmax, 1:kmax)
real(DP) :: xyz_QH2OSol (0:imax-1, 1:jmax, 1:kmax)
real(DP) :: xyz_DelAtmMass (0:imax-1, 1:jmax, 1:kmax)
real(DP) :: xyz_DelCO2Mass (0:imax-1, 1:jmax, 1:kmax)
real(DP) :: xyz_DelH2OVapMass(0:imax-1, 1:jmax, 1:kmax)
real(DP) :: xyz_DelH2OLiqMass(0:imax-1, 1:jmax, 1:kmax)
real(DP) :: xyz_DelH2OSolMass(0:imax-1, 1:jmax, 1:kmax)
real(DP) :: xyz_DelO3Mass (0:imax-1, 1:jmax, 1:kmax)
integer :: k
! 初期化
! Initialization
!
if ( .not. rad_dcpam_E_V2_inited ) call RadDcpamEV2Init
xyz_QCO2 = VMRCO2 * CO2MolWeight / MeanMolWeight
! Amount of water ice is assumed to be zero, for the moment.
! In future, this value will be an argument of this subroutine.
!
xyz_QH2OSol = 0.0_DP
! O3 分布の設定
! Setting of O3 distribution
!
call SetO3( xyz_Press, xyz_QO3 )
do k = 1, kmax
xyz_DelAtmMass(:,:,k) = ( xyr_Press(:,:,k-1) - xyr_Press(:,:,k ) ) / Grav
end do
xyz_DelCO2Mass = xyz_DelAtmMass * xyz_QCO2
xyz_DelH2OVapMass = xyz_DelAtmMass * xyz_QH2OVap
xyz_DelH2OLiqMass = xyz_DelAtmMass * xyz_QH2OLiq
xyz_DelH2OSolMass = xyz_DelAtmMass * xyz_QH2OSol
xyz_DelO3Mass = xyz_DelAtmMass * xyz_QO3
!!$ select case ( SWVer )
!!$ case ( 0 )
!!$ ! dcpam 地球大気向け短波放射モデル Ver. 2
!!$ ! dcpam short wave radiation model for the Earth's atmosphere Ver. 2
!!$ !
!!$ call RadiationDcpamESWV2Flux( &
!!$ & xy_SurfAlbedo, &
!!$ & xyz_Press, xyr_Press, xyz_Temp, xyz_QH2OVap, xyz_QO3, xyz_Height, &
!!$ & xyr_RadSFlux &
!!$ & )
!!$ case ( 1 )
! dcpam 地球大気向け短波放射モデル Ver. 2.1
! dcpam short wave radiation model for the Earth's atmosphere Ver. 2.1
!
call RadDcpamESWV21Flux( xy_SurfAlbedo, xyz_DelAtmMass, xyz_DelH2OVapMass, xyz_DelH2OLiqMass, xyz_DelH2OSolMass, xyz_DelO3Mass, xyz_Press, xyz_Temp, xyr_RadSFlux )
!!$ case default
!!$ call MessageNotify( 'E', module_name, 'SW model version %d is not supported.', i = (/ LWVer /) )
!!$ end select
!!$ select case ( LWVer )
!!$ case ( 0 )
!!$ call RadiationDcpamELWV2Flux( &
!!$ & xyz_Press, xyr_Press, xyz_Temp, xy_SurfTemp, & ! (in )
!!$ & xyz_QH2OVap, xyz_QO3, & ! (in )
!!$ & xyr_RadLFlux, xyra_DelRadLFlux & ! (out)
!!$ & )
!!$ case ( 1 )
!!$ call RadiationDcpamELWV21Flux( &
!!$ & xyz_Press, xyr_Press, xyz_Temp, xy_SurfTemp, & ! (in )
!!$ & xyz_QH2OVap, xyz_QO3, & ! (in )
!!$ & xyr_RadLFlux, xyra_DelRadLFlux & ! (out)
!!$ & )
!!$ case ( 2 )
!!$ call RadiationDcpamELWV22Flux( &
!!$ & xyz_Press, xyr_Press, xyz_Temp, xy_SurfTemp, & ! (in )
!!$ & xyz_QH2OVap, xyz_QO3, & ! (in )
!!$ & xyr_RadLFlux, xyra_DelRadLFlux & ! (out)
!!$ & )
!!$ case ( 3 )
call RadDcpamELWV23Flux( xyz_DelCO2Mass, xyz_DelH2OVapMass, xyz_DelH2OLiqMass, xyz_DelH2OSolMass, xyz_DelO3Mass, xyz_Press, xyz_Temp, xy_SurfTemp, xyz_QCO2, xyz_QH2OVap, xyr_RadLFlux, xyra_DelRadLFlux )
!!$ case default
!!$ call MessageNotify( 'E', module_name, 'LW model version %d is not supported.', i = (/ LWVer /) )
!!$ end select
end subroutine RadDcpamEV2Flux