| 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