Subroutine : |
|
xz_Masscond(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8)
|
xz_LatHeatPerMass(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8)
|
xz_Exner(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8)
|
xz_PotTemp(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8)
|
xz_Qcond(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(out)
|
subroutine LatentHeat(xz_Masscond, xz_LatHeatPerMass, xz_Exner, xz_PotTemp, xz_Qcond) !(out) 凝結熱による温度変化率
!=begin
!==Dependency
use dc_trace, only: BeginSub, EndSub
use gridset, only: DimXMin, DimXMax, DimZMin, DimZMax
! use physset, only: GasR ! 気体定数
! use cloudset, only: SatPressB ! Antoine の式の係数 B
use ChemData, only: ChemData_SVapPress_AntoineB, ChemData_Cp ! 湿潤成分の定圧比熱
use basicset, only: xz_DensBasicZ, xz_ExnerBasicZ, xz_PotTempBasicZ, GasRDry, CpDry, CvDry, PressSfc ! 地表面圧力
use StorePotTemp, only: StorePotTempCond
!=end
!==暗黙の型宣言を禁止
implicit none
!==Input
real(8) :: xz_LatHeatPerMass(DimXMin:DimXMax, DimZMin:DimZMax)
! 単位質量あたりの潜熱 [J/kg]
real(8) :: xz_Masscond(DimXMin:DimXMax, DimZMin:DimZMax)
! 凝結量 [kg/m^3 s]
real(8) :: xz_DensAll(DimXMin:DimXMax, DimZMin:DimZMax)
! 気相密度の全量 [kg/m^3]
real(8) :: xz_Exner(DimXMin:DimXMax, DimZMin:DimZMax)
! エクスナー関数擾乱成分
real(8) :: xz_PotTemp(DimXMin:DimXMax, DimZMin:DimZMax)
! 温位擾乱成分 [K]
!==Output
real(8), intent(out) :: xz_Qcond(DimXMin:DimXMax, DimZMin:DimZMax)
! 凝結熱による温度変化率 [K/s]
!==Work
call BeginSub("LatentHeat", fmt="%c", c1="Calculate potential temperature tendency bylatent heating.")
xz_DensAll = ( PressSfc / GasRDry ) * (xz_Exner + xz_ExnerBasicZ) ** (CvDry / GasRDry) / (xz_PotTemp + xz_PotTempBasicZ)
xz_Qcond = xz_LatHeatPerMass * xz_Masscond / (CpDry * xz_DensAll * xz_ExnerBasicZ)
call StorePotTempCond( xz_QCond )
call EndSub("LatentHeat")
end subroutine LatentHeat