| Class | DynFunc | 
| In: | dynamic/dynfunc.f90 | 
陽開放を用いた力学過程の各項の計算モジュール. 具体的には以下の項を計算するための関数を格納する.
* 移流項 * 浮力項 * 気圧傾度力項
| Function : | |||
| pz_AdvVelX(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8) 
 | ||
| pz_VelX(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | ||
| xr_VelZ(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | 
z 方向に半格子ずれた点における移流を計算
  function pz_AdvVelX(pz_VelX, xr_VelZ)
    !
    ! z 方向に半格子ずれた点における移流を計算
    !
    
    !モジュール読み込み
    use differentiate_center4, only: xz_dx_pz, pr_dz_pz
!    use differentiate_center2, only: xz_dx_pz, pr_dz_pz
    !暗黙の型宣言禁止
    implicit none
    
    !変数定義
    real(8), intent(in) :: pz_VelX(DimXMin:DimXMax, DimZMin:DimZMax)
                                                        !水平風速
    real(8), intent(in) :: xr_VelZ(DimXMin:DimXMax, DimZMin:DimZMax)
                                                        !鉛直風速
    real(8)             :: pz_AdvVelX(DimXMin:DimXMax, DimZMin:DimZMax)
                                                        !スカラー量の水平移流
    
!    pz_AdvVelX = 0.0d0  !初期化
    pz_AdvVelX = - pz_VelX * pz_avr_xz( xz_dx_pz( pz_VelX ) ) - pz_avr_pr( pr_avr_xr( xr_VelZ ) * pr_dz_pz( pz_VelX ) )
    
    call StoreMomAdv( pz_AdvVelX )   
  end function pz_AdvVelX
          | Function : | |||
| pz_GradPi(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8) 
 | ||
| xz_Exner(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | ||
| pz_VelX(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | ||
| xr_VelZ(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | 
z 方向に半格子ずれた点での圧力傾度力項の計算. 音波減衰項を含めた形式で定式化してあることに注意.
  function pz_GradPi(xz_Exner, pz_VelX, xr_VelZ)
    !
    ! z 方向に半格子ずれた点での圧力傾度力項の計算. 
    ! 音波減衰項を含めた形式で定式化してあることに注意.
    !
    
    !モジュール読み込み
    use differentiate_center2,  only: pz_dx_xz, xz_dx_pz, xz_dz_xr
        
    !暗黙の型宣言禁止
    implicit none
    
    !変数定義
    real(8), intent(in)  :: xz_Exner(DimXMin:DimXMax, DimZMin:DimZMax)
                                               !エクスナー関数の擾乱
    real(8), intent(in)  :: pz_VelX(DimXMin:DimXMax, DimZMin:DimZMax)
                                               !水平速度
    real(8), intent(in)  :: xr_VelZ(DimXMin:DimXMax, DimZMin:DimZMax)
                                               !鉛直速度
    real(8)              :: pz_GradPi(DimXMin:DimXMax, DimZMin:DimZMax)
                                               !圧力傾度力
    real(8)              :: xz_DivVel(DimXMin:DimXMax, DimZMin:DimZMax)
                                               !速度の収束
    !速度の収束
    xz_DivVel =  xz_dx_pz( pz_VelX ) + xz_dz_xr( xr_VelZ )
    
    !圧力傾度
!    pz_GradPi = 0.0d0
    pz_GradPi = pz_avr_xz( CpDry * xz_PotTempBasicZ / xz_EffMolWtBasicZ ) * ( pz_dx_xz( xz_Exner ) - pz_dx_xz( DampSound * xz_DivVel ) )  
    
  end function pz_GradPi
          | Function : | |||
| xr_AdvVelZ(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8) 
 | ||
| xr_VelZ(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | ||
| pz_VelX(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | 
x 方向に半格子ずれた点における移流を計算
  function xr_AdvVelZ(xr_VelZ, pz_VelX)
    !
    ! x 方向に半格子ずれた点における移流を計算
    !
    
    !モジュール読み込み
    use differentiate_center4, only: pr_dx_xr, xz_dz_xr
!    use differentiate_center2, only: pr_dx_xr, xz_dz_xr
    
    !暗黙の型宣言禁止
    implicit none
    
    !変数定義
    real(8), intent(in) :: pz_VelX(DimXMin:DimXMax, DimZMin:DimZMax)
                                                        !水平風速
    real(8), intent(in) :: xr_VelZ(DimXMin:DimXMax, DimZMin:DimZMax)
                                                        !鉛直風速
    real(8)             :: xr_AdvVelZ(DimXMin:DimXMax, DimZMin:DimZMax)
                                                        !スカラー量の水平移流
  
!    xr_AdvVelZ = 0.0d0  !初期化
    xr_AdvVelZ = - xr_avr_pr( pr_avr_pz( pz_VelX ) * pr_dx_xr( xr_VelZ ) ) - xr_VelZ * xr_avr_xz( xz_dz_xr( xr_VelZ ) )
    
  end function xr_AdvVelZ
          | Function : | |||
| xr_Buoy(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8) 
 | ||
| xz_PotTemp(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | 
鉛直方向の運動方程式に現れる浮力項を計算
  function xr_Buoy(xz_PotTemp)
    !
    ! 鉛直方向の運動方程式に現れる浮力項を計算
    !
    
    !暗黙の型宣言禁止
    implicit none
    
    !変数定義
    real(8), intent(in)  :: xz_PotTemp(DimXMin:DimXMax, DimZMin:DimZMax)
                                               !温位擾乱
    real(8)              :: xr_Buoy(DimXMin:DimXMax, DimZMin:DimZMax)
                                               !浮力項
!    !初期化
!    xr_Buoy = 0.0d0
    !浮力項の計算
    xr_Buoy = Grav * xr_avr_xz(xz_PotTemp / xz_PotTempBasicZ)
    call StoreBuoyTemp(xz_avr_xr(xr_Buoy))
  end function xr_Buoy
          | Function : | |||
| xz_AdvKm(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8) 
 | ||
| xz_Var(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | ||
| pz_VelX(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | ||
| xr_VelZ(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | 
x, z 方向に半格子ずれた点における移流を計算
  function xz_AdvKm(xz_Var, pz_VelX, xr_VelZ)
    !
    ! x, z 方向に半格子ずれた点における移流を計算
    !
    
    !モジュール読み込み
    use differentiate_center4, only: pz_dx_xz, xr_dz_xz
!    use differentiate_center2, only: pz_dx_xz, xr_dz_xz
    !暗黙の型宣言禁止
    implicit none
    
    !変数定義
    real(8), intent(in) :: pz_VelX(DimXMin:DimXMax, DimZMin:DimZMax)
                                                        !水平風速
    real(8), intent(in) :: xr_VelZ(DimXMin:DimXMax, DimZMin:DimZMax)
                                                        !鉛直風速
    real(8), intent(in) :: xz_Var(DimXMin:DimXMax, DimZMin:DimZMax)
                                                        !スカラー量
    real(8)             :: xz_AdvKm(DimXMin:DimXMax, DimZMin:DimZMax)
                                                        !スカラー量の水平移流
    
    xz_AdvKm = - xz_avr_pz(pz_VelX * pz_dx_xz(xz_Var)) - xz_avr_xr(xr_VelZ * xr_dz_xz(xz_Var))    
    
  end function xz_AdvKm
          | Function : | |||
| xz_AdvScalar(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8) 
 | ||
| xz_Var(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | ||
| pz_VelX(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | ||
| xr_VelZ(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | 
x, z 方向に半格子ずれた点における移流を計算
  function xz_AdvScalar(xz_Var, pz_VelX, xr_VelZ)
    !
    ! x, z 方向に半格子ずれた点における移流を計算
    !
    
    !モジュール読み込み
    use differentiate_center4, only: pz_dx_xz, xr_dz_xz
!    use differentiate_center2, only: pz_dx_xz, xr_dz_xz
    !暗黙の型宣言禁止
    implicit none
    
    !変数定義
    real(8), intent(in) :: pz_VelX(DimXMin:DimXMax, DimZMin:DimZMax)
                                                        !水平風速
    real(8), intent(in) :: xr_VelZ(DimXMin:DimXMax, DimZMin:DimZMax)
                                                        !鉛直風速
    real(8), intent(in) :: xz_Var(DimXMin:DimXMax, DimZMin:DimZMax)
                                                        !スカラー量
    real(8)             :: xz_AdvScalar(DimXMin:DimXMax, DimZMin:DimZMax)
                                                        !スカラー量の水平移流
    
    xz_AdvScalar = - xz_avr_pz(pz_VelX * pz_dx_xz(xz_Var)) - xz_avr_xr(xr_VelZ * xr_dz_xz(xz_Var))    
    call StorePotTempAdv( xz_AdvScalar )   
  end function xz_AdvScalar
          | Function : | |||
| xza_AdvScalar(DimXMin:DimXMax, DimZMin:DimZMax, SpcNum) : | real(8) 
 | ||
| xza_Var(DimXMin:DimXMax, DimZMin:DimZMax, SpcNum) : | real(8), intent(in) 
 | ||
| pz_VelX(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | ||
| xr_VelZ(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | 
x, z 方向に半格子ずれた点における移流を計算
  function xza_AdvScalar(xza_Var, pz_VelX, xr_VelZ)
    !
    ! x, z 方向に半格子ずれた点における移流を計算
    !
    
    !モジュール読み込み
    use differentiate_center4, only: pz_dx_xz, xr_dz_xz
!    use differentiate_center2, only: pz_dx_xz, xr_dz_xz
    !暗黙の型宣言禁止
    implicit none
    
    !変数定義
    real(8), intent(in) :: pz_VelX(DimXMin:DimXMax, DimZMin:DimZMax)
                                                        !水平風速
    real(8), intent(in) :: xr_VelZ(DimXMin:DimXMax, DimZMin:DimZMax)
                                                        !鉛直風速
    real(8), intent(in) :: xza_Var(DimXMin:DimXMax, DimZMin:DimZMax, SpcNum)
                                                        !スカラー量
    real(8)             :: xza_AdvScalar(DimXMin:DimXMax, DimZMin:DimZMax, SpcNum)
                                                        !スカラー量の水平移流
    integer             :: s
    do s = 1, SpcNum
      xza_AdvScalar(:,:,s) = - xz_avr_pz(pz_VelX * pz_dx_xz(xza_Var(:,:,s))) - xz_avr_xr(xr_VelZ * xr_dz_xz(xza_Var(:,:,s)))    
    end do
    call StoreMixRtAdv( xza_AdvScalar )   
    
  end function xza_AdvScalar