| Class | differentiate_center4 | 
| In: | util/differentiate_center4.f90 | 
4 次精度の微分演算を行うための関数群をまとめたパッケージ型モジュール 水平 Arakawa-C, 鉛直 Lorentz グリッドでの微分計算
| Function : | |||
| pr_dx_xr(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8) 
 | ||
| xr_var(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | 
格子点上での x 方向 4 次精度微分演算
  function pr_dx_xr( xr_var )
    !
    !格子点上での x 方向 4 次精度微分演算
    !
    !暗黙の型宣言禁止
    implicit none
    !変数定義    
    real(8), intent(in) :: xr_var(DimXMin:DimXMax, DimZMin:DimZMax)
                                     !微分演算の対象となる変数
    real(8)             :: pr_dx_xr(DimXMin:DimXMax, DimZMin:DimZMax)
                                     !微分値
    
    pr_dx_xr = 1.0d-16
    pr_dx_xr(DimXMin+1:DimXMax-2, DimZMin:DimZMax) = ( xr_var(DimXMin+2:DimXMax-1,DimZMin:DimZMax) - xr_var(DimXMin+1:DimXMax-2,DimZMin:DimZMax) ) * 9.0d0 / ( 8.0d0 * DelX ) - ( xr_var(DimXMin+3:DimXMax,DimZMin:DimZMax) - xr_var(DimXMin:DimXMax-3,DimZMin:DimZMax) ) / ( 24.0d0 * DelX)
    
  end function pr_dx_xr
          | Function : | |||
| pr_dz_pz(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8) 
 | ||
| pz_var(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | 
格子点上での x 方向 4 次精度微分演算
  function pr_dz_pz( pz_var )
    !
    !格子点上での x 方向 4 次精度微分演算
    !
    !暗黙の型宣言禁止
    implicit none
    
    !変数定義
    real(8), intent(in) :: pz_var(DimXMin:DimXMax, DimZMin:DimZMax)
                                     !微分演算の対象となる変数
    real(8)             :: pr_dz_pz(DimXMin:DimXMax, DimZMin:DimZMax)
                                     !微分値    
    pr_dz_pz = 1.0d-16
    pr_dz_pz(DimXMin:DimXMax, DimZMin+1:DimZMax-2) = ( pz_var(DimXMin:DimXMax,DimZMin+2:DimZMax-1) - pz_var(DimXMin:DimXMax,DimZMin+1:DimZMax-2) ) * 9.0d0 / ( 8.0d0 * DelZ ) - ( pz_var(DimXMin:DimXMax,DimZMin+3:DimZMax) - pz_var(DimXMin:DimXMax,DimZMin:DimZMax-3) ) / ( 24.0d0 * DelZ )
    
  end function pr_dz_pz
          | Function : | |||
| pz_dx_xz(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8) 
 | ||
| xz_var(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | 
z 方向に半格子ずれた点での x 方向 4 次精度微分演算
  function pz_dx_xz( xz_var ) 
    !
    ! z 方向に半格子ずれた点での x 方向 4 次精度微分演算
    !
   
    !暗黙の型宣言禁止
    implicit none
    !変数定義
    real(8), intent(in) :: xz_var(DimXMin:DimXMax, DimZMin:DimZMax)
                                     !微分演算の対象となる変数
    real(8)             :: pz_dx_xz(DimXMin:DimXMax, DimZMin:DimZMax)
                                     !微分値
    pz_dx_xz = 1.0d-16
    pz_dx_xz(DimXMin+1:DimXMax-2,DimZMin:DimZMax) = ( xz_var(DimXMin+2:DimXMax-1,DimZMin:DimZMax) - xz_var(DimXMin+1:DimXMax-2,DimZMin:DimZMax) ) * 9.0d0 / ( 8.0d0 * DelX ) - ( xz_var(DimXMin+3:DimXMax,DimZMin:DimZMax) - xz_var(DimXMin:DimXMax-3,DimZMin:DimZMax) ) / ( 24.0d0 * DelX )
  end function pz_dx_xz
          | Function : | |||
| pz_dz_pr(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8) 
 | ||
| pr_var(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | 
z 方向に半格子ずれた点での z 方向 4 次精度微分演算
  function pz_dz_pr( pr_var )
    !
    ! z 方向に半格子ずれた点での z 方向 4 次精度微分演算
    !
    !暗黙の型宣言禁止
    implicit none
    
    real(8), intent(in) :: pr_var(DimXMin:DimXMax, DimZMin:DimZMax)
                                     !微分演算の対象となる変数
    real(8)             :: pz_dz_pr(DimXMin:DimXMax, DimZMin:DimZMax)
                                     !微分値
    
    pz_dz_pr = 1.0d-16
    pz_dz_pr(DimXMin:DimXMax, DimZMin+2:DimZMax-1) = ( pr_var(DimXMin:DimXMax,DimZMin+2:DimZMax-1) - pr_var(DimXMin:DimXMax,DimZMin+1:DimZMax-2) ) * 9.0d0 / ( 8.0d0 * DelZ ) - ( pr_var(DimXMin:DimXMax,DimZMin+3:DimZMax) - pr_var(DimXMin:DimXMax,DimZMin:DimZMax-3) ) / ( 24.0d0 * DelZ )
    
  end function pz_dz_pr
          | Function : | |||
| xr_dx_pr(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8) 
 | ||
| pr_var(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | 
x 方向に半格子ずれた点での x 方向 4 次精度微分演算
  function xr_dx_pr( pr_var ) 
    !
    ! x 方向に半格子ずれた点での x 方向 4 次精度微分演算
    !
    
    !暗黙の型宣言禁止
    implicit none
    !変数定義
    real(8), intent(in) :: pr_var(DimXMin:DimXMax, DimZMin:DimZMax)
                                     !微分演算の対象となる変数
    real(8)             :: xr_dx_pr(DimXMin:DimXMax, DimZMin:DimZMax)
                                     !微分値
    
    xr_dx_pr = 1.0d-16
    xr_dx_pr(DimXMin+2:DimXMax-1, DimZMin:DimZMax) = ( pr_var(DimXMin+2:DimXMax-1,DimZMin:DimZMax) - pr_var(DimXMin+1:DimXMax-2,DimZMin:DimZMax) ) * 9.0d0 / ( 8.0d0 * DelX ) - ( pr_var(DimXMin+3:DimXMax,DimZMin:DimZMax) - pr_var(DimXMin:DimXMax-3,DimZMin:DimZMax) ) / ( 24.0d0 * DelX )
    
  end function xr_dx_pr
          | Function : | |||
| xr_dz_xz(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8) 
 | ||
| xz_var(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | 
x 方向に半格子ずれた点での z 方向 4 次精度微分演算
  function xr_dz_xz( xz_var ) 
    !
    ! x 方向に半格子ずれた点での z 方向 4 次精度微分演算
    !
    !暗黙の型宣言禁止
    implicit none
    !変数定義
    real(8), intent(in) :: xz_var(DimXMin:DimXMax, DimZMin:DimZMax)
                                     !微分演算の対象となる変数    
    real(8)             :: xr_dz_xz(DimXMin:DimXMax, DimZMin:DimZMax)
                                     !微分値
    
    xr_dz_xz = 1.0d-16 
    xr_dz_xz(DimXMin:DimXMax,DimZMin+1:DimZMax-2) = ( xz_var(DimXMin:DimXMax,DimZMin+2:DimZMax-1) - xz_var(DimXMin:DimXMax,DimZMin+1:DimZMax-2) ) * 9.0d0 / ( 8.0d0 * DelZ ) - ( xz_var(DimXMin:DimXMax,DimZMin+3:DimZMax) - xz_var(DimXMin:DimXMax,DimZMin:DimZMax-3) ) / ( 24.0d0 * DelZ )
    
  end function xr_dz_xz
          | Function : | |||
| xz_dx_pz(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8) 
 | ||
| pz_var(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | 
x, z 方向に半格子ずれた点での x 方向 4 次精度微分演算
  function xz_dx_pz( pz_var ) 
    !
    ! x, z 方向に半格子ずれた点での x 方向 4 次精度微分演算
    !
    !暗黙の型宣言禁止
    implicit none
    !変数定義
    real(8), intent(in) :: pz_var(DimXMin:DimXMax, DimZMin:DimZMax)
                                     !微分演算の対象となる変数
    real(8)             :: xz_dx_pz(DimXMin:DimXMax, DimZMin:DimZMax)
                                     !微分値
    xz_dx_pz = 1.0d-16 
    xz_dx_pz(DimXMin+2:DimXMax-1,DimZMin:DimZMax) = ( pz_var(DimXMin+2:DimXMax-1,DimZMin:DimZMax) - pz_var(DimXMin+1:DimXMax-2,DimZMin:DimZMax) ) * 9.0d0 / (8.0d0 * DelX ) - ( pz_var(DimXMin+3:DimXMax,DimZMin:DimZMax) - pz_var(DimXMin:DimXMax-3,DimZMin:DimZMax) ) / ( 24.0d0 * DelX )
  end function xz_dx_pz
          | Function : | |||
| xz_dz_xr(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8) 
 | ||
| xr_var(DimXMin:DimXMax, DimZMin:DimZMax) : | real(8), intent(in) 
 | 
x, z 方向に半格子ずれた点での z 方向 4 次精度微分演算
  function xz_dz_xr( xr_var ) 
    !
    ! x, z 方向に半格子ずれた点での z 方向 4 次精度微分演算
    !
    !暗黙の型宣言禁止
    implicit none
    !変数定義
    real(8), intent(in) :: xr_var(DimXMin:DimXMax, DimZMin:DimZMax)
                                     !微分演算の対象となる変数
    real(8)             :: xz_dz_xr(DimXMin:DimXMax, DimZMin:DimZMax)
                                     !微分値
    
    xz_dz_xr = 1.0d-16 
    xz_dz_xr(DimXMin:DimXMax,DimZMin+2:DimZMax-1) = ( xr_var(DimXMin:DimXMax,DimZMin+2:DimZMax-1) - xr_var(DimXMin:DimXMax,DimZMin+1:DimZMax-2) ) * 9.0d0 / ( 8.0d0 * DelZ ) - ( xr_var(DimXMin:DimXMax,DimZMin+3:DimZMax) - xr_var(DimXMin:DimXMax,DimZMin:DimZMax-3) ) / ( 24.0d0 * DelZ )
  end function xz_dz_xr