!---------------------------------------------------------------------
!     Copyright (C) GFD Dennou Club, 2004. All rights reserved.
!---------------------------------------------------------------------
                                                                 !=begin
!= Subroutine DensityCloud
!
!   * Developer: Kitamori Taichi
!   * Version: $Id: densitycloud.f90,v 1.5 2011-10-25 08:24:02 yamasita Exp $ 
!   * Tag Name: $Name: arare4-20111215 $
!   * Change History: 
!
!== Overview 
!
! 雲密度の時間発展を解く
!
!== Error Handling
!
!== Known Bugs
!
!== Note
!
!   * フラックス形式の方程式を解いている
!   * 乱流拡散項を考慮する
!   * 北守修論によると, 雲粒落下の速さは十分小さいので, 
!     雲粒の落下の効果は無視(山下, 080411)
!   * 雲密度の移流, 拡散を計算.
!     長い時間ステップに対するループで別途計算した移流, 拡散を使って
!     雲密度の仮値を計算. .
!     凝結部分は移流拡散による負の雲密度の穴埋めを行なった後で計算.
!  
!== Future Plans
!
                                                                 !=end
subroutine DensityCloud(      & 
  & xz_DensCloudNs,                 & !(in) 雲の密度
  & DelTimeShort,                   & !(in) leapfrog スキームの時間間隔
  & xz_TendDensCloudNl,             & !(in) 長い時間ステップで評価する項
  & xz_DensCloudWorkAs)               !(out) 雲の密度(負の密度の調整前の値)

                                                                 !=begin  
  !== Dependancy
  use dc_trace, only: BeginSub, EndSub, DbgMessage
  use gridset,  only: DimXMin, DimXMax, DimZMin, DimZMax
!  use bcset,    only: xz_BC

                                                                 !=end
  !== 暗黙の型宣言禁止
  implicit none
                                                                 !=begin
  !== Input
  real(8), intent(in)  :: DelTimeShort  ! leapfrog スキームの時間間隔 [s]
  real(8), intent(in)  :: xz_DensCloudNs(DimXMin:DimXMax, DimZMin:DimZMax)
                                        ! 雲の密度 [kg/m^3]
  real(8)  :: xz_TendDensCloudNl(DimXMin:DimXMax, DimZMin:DimZMax)
                                        ! 長い時間ステップで評価する項 [kg/m^3 \s]

  !== Output
  real(8), intent(out)  :: xz_DensCloudWorkAs(DimXMin:DimXMax, DimZMin:DimZMax)
                                        ! 雲の密度(負の密度調整前) [kg/m^3]

                                                                 !=end  

  call BeginSub("DensityCloud", &
       &        fmt="%c",              &
       &        c1="Time integration of density of cloud.")
  
  xz_DensCloudWorkAs = xz_DensCloudNs  & 
    &  + DelTimeShort * xz_TendDensCloudNl

  call EndSub("DensityCloud")
  
end subroutine DensityCloud
