Class boundary
In: util/boundary.f90

Methods

Included Modules

gridset

Public Instance methods

Function :
aa_BoundaryXCyc_aa(DimXMin:DimXMax, DimZMin:DimZMax) :real(8)
aa_Var(DimXMin:DimXMax, DimZMin:DimZMax) :real(8), intent(inout)

x 方向に「周期境界条件」を適用する. 格子点, 半格子点においても, 関数の形式は同じ

[Source]

  function aa_BoundaryXCyc_aa( aa_Var )
    !
    ! x 方向に「周期境界条件」を適用する. 
    ! 格子点, 半格子点においても, 関数の形式は同じ
    !

    !暗黙の型宣言禁止
    implicit none
    
    !変数定義
    real(8)                 :: aa_BoundaryXCyc_aa(DimXMin:DimXMax, DimZMin:DimZMax)
    real(8), intent(inout)  :: aa_Var(DimXMin:DimXMax, DimZMin:DimZMax)
    integer                 :: i
    
    aa_BoundaryXCyc_aa = aa_Var
    
    do i = 0, MarginX
      aa_BoundaryXCyc_aa(RegXMin - i, :) = aa_Var(RegXMax - i, :)
    end do
    do i = 1, MarginX
      aa_BoundaryXCyc_aa(RegXMax + i, :) = aa_Var(RegXMin + i, :) 
    end do
    
  end function aa_BoundaryXCyc_aa
Function :
az_BoundaryZAntiSym_az(DimXMin:DimXMax, DimZMin:DimZMax) :real(8)
az_Var(DimXMin:DimXMax, DimZMin:DimZMax) :real(8), intent(inout)

z 方向に半格子ずれた点に存在する変数に対し, z 方向に「反対称境界条件」を適用する.

[Source]

  function az_BoundaryZAntiSym_az( az_Var )
    !
    ! z 方向に半格子ずれた点に存在する変数に対し, 
    ! z 方向に「反対称境界条件」を適用する. 
    !

    !暗黙の型宣言禁止
    implicit none
    
    !変数定義
    real(8)                 :: az_BoundaryZAntiSym_az(DimXMin:DimXMax, DimZMin:DimZMax)
    real(8), intent(inout)  :: az_Var(DimXMin:DimXMax, DimZMin:DimZMax)
    integer                 :: k
    
    az_BoundaryZAntiSym_az = az_Var
    
    do k = 0, MarginZ
      az_BoundaryZAntiSym_az( :, RegZMin - k ) = - az_Var( :, RegZMin + 1 + k )
    end do
    do k = 1, MarginZ
      az_BoundaryZAntiSym_az( :, RegZMax + k ) = - az_Var( :, RegZMax + 1 - k )
    end do
    
  end function az_BoundaryZAntiSym_az
Function :
az_BoundaryZSym_az(DimXMin:DimXMax, DimZMin:DimZMax) :real(8)
az_Var(DimXMin:DimXMax, DimZMin:DimZMax) :real(8), intent(inout)

z 方向に半格子ずれた点に存在する変数に対し, z 方向に「対称境界条件」を適用する.

[Source]

  function az_BoundaryZSym_az( az_Var )
    !
    ! z 方向に半格子ずれた点に存在する変数に対し, 
    ! z 方向に「対称境界条件」を適用する. 
    !

    !暗黙の型宣言禁止
    implicit none
    
    !変数定義
    real(8)                 :: az_BoundaryZSym_az(DimXMin:DimXMax, DimZMin:DimZMax)
    real(8), intent(inout)  :: az_Var(DimXMin:DimXMax, DimZMin:DimZMax)
    integer                 :: k
  
    az_BoundaryZSym_az = az_Var

    do k = 0, MarginZ
      az_BoundaryZSym_az( :, RegZMin - k ) = az_Var( :, RegZMin + 1 + k )
    end do
    do k = 1, MarginZ
      az_BoundaryZSym_az( :, RegZMax + k ) = az_Var( :, RegZMax + 1 - k )
    end do
    
  end function az_BoundaryZSym_az
Function :
aa_BoundaryXCyc_aa(DimXMin:DimXMax, DimZMin:DimZMax) :real(8)
aa_Var(DimXMin:DimXMax, DimZMin:DimZMax) :real(8), intent(inout)

x 方向に「周期境界条件」を適用する. 格子点, 半格子点においても, 関数の形式は同じ

[Source]

  function aa_BoundaryXCyc_aa( aa_Var )
    !
    ! x 方向に「周期境界条件」を適用する. 
    ! 格子点, 半格子点においても, 関数の形式は同じ
    !

    !暗黙の型宣言禁止
    implicit none
    
    !変数定義
    real(8)                 :: aa_BoundaryXCyc_aa(DimXMin:DimXMax, DimZMin:DimZMax)
    real(8), intent(inout)  :: aa_Var(DimXMin:DimXMax, DimZMin:DimZMax)
    integer                 :: i
    
    aa_BoundaryXCyc_aa = aa_Var
    
    do i = 0, MarginX
      aa_BoundaryXCyc_aa(RegXMin - i, :) = aa_Var(RegXMax - i, :)
    end do
    do i = 1, MarginX
      aa_BoundaryXCyc_aa(RegXMax + i, :) = aa_Var(RegXMin + i, :) 
    end do
    
  end function aa_BoundaryXCyc_aa
Function :
ar_BoundaryZAntiSym_ar(DimXMin:DimXMax, DimZMin:DimZMax) :real(8)
ar_Var(DimXMin:DimXMax, DimZMin:DimZMax) :real(8), intent(inout)

z 方向の格子点上に存在する変数に対し, z 方向に「反対称境界条件」を適用する.

[Source]

  function ar_BoundaryZAntiSym_ar( ar_Var )
    !
    ! z 方向の格子点上に存在する変数に対し, 
    ! z 方向に「反対称境界条件」を適用する. 
    !
    
    !暗黙の型宣言禁止
    implicit none
    
    !変数定義
    real(8)                 :: ar_BoundaryZAntiSym_ar(DimXMin:DimXMax, DimZMin:DimZMax)
    real(8), intent(inout)  :: ar_Var(DimXMin:DimXMax, DimZMin:DimZMax)
    integer                 :: k
  
    ar_BoundaryZAntiSym_ar = ar_Var

    !境界での速度はゼロ
    ar_BoundaryZAntiSym_ar( :, RegZMin ) = 0.0d0
    ar_BoundaryZAntiSym_ar( :, RegZMax ) = 0.0d0

    do k = 1, MarginZ
      ar_BoundaryZAntiSym_ar( :, RegZMin - k ) = - ar_Var( :, RegZMin + k )
      ar_BoundaryZAntiSym_ar( :, RegZMax + k ) = - ar_Var( :, RegZMax - k )
    end do
    
  end function ar_BoundaryZAntiSym_ar
Function :
ar_BoundaryZSym_ar(DimXMin:DimXMax, DimZMin:DimZMax) :real(8)
ar_Var(DimXMin:DimXMax, DimZMin:DimZMax) :real(8), intent(inout)

z 方向の格子点上に存在する変数に対し, z 方向に「対称境界条件」を適用する.

[Source]

  function ar_BoundaryZSym_ar( ar_Var )
    !
    ! z 方向の格子点上に存在する変数に対し, 
    ! z 方向に「対称境界条件」を適用する. 
    !
    
    !暗黙の型宣言禁止
    implicit none
    
    !変数定義
    real(8)                 :: ar_BoundaryZSym_ar(DimXMin:DimXMax, DimZMin:DimZMax)
    real(8), intent(inout)  :: ar_Var(DimXMin:DimXMax, DimZMin:DimZMax)
    integer                 :: k
  
    ar_BoundaryZSym_ar = ar_Var

    !境界での速度はゼロ
    ar_BoundaryZSym_ar( :, RegZMin ) = 0.0d0
    ar_BoundaryZSym_ar( :, RegZMax ) = 0.0d0
    
    do k = 1, MarginZ
      ar_BoundaryZSym_ar( :, RegZMin - k ) = ar_Var( :, RegZMin + k )
      ar_BoundaryZSym_ar( :, RegZMax + k ) = ar_Var( :, RegZMax - k )
    end do
    
  end function ar_BoundaryZSym_ar
Function :
aa_BoundaryXCyc_aa(DimXMin:DimXMax, DimZMin:DimZMax) :real(8)
aa_Var(DimXMin:DimXMax, DimZMin:DimZMax) :real(8), intent(inout)

x 方向に「周期境界条件」を適用する. 格子点, 半格子点においても, 関数の形式は同じ

[Source]

  function aa_BoundaryXCyc_aa( aa_Var )
    !
    ! x 方向に「周期境界条件」を適用する. 
    ! 格子点, 半格子点においても, 関数の形式は同じ
    !

    !暗黙の型宣言禁止
    implicit none
    
    !変数定義
    real(8)                 :: aa_BoundaryXCyc_aa(DimXMin:DimXMax, DimZMin:DimZMax)
    real(8), intent(inout)  :: aa_Var(DimXMin:DimXMax, DimZMin:DimZMax)
    integer                 :: i
    
    aa_BoundaryXCyc_aa = aa_Var
    
    do i = 0, MarginX
      aa_BoundaryXCyc_aa(RegXMin - i, :) = aa_Var(RegXMax - i, :)
    end do
    do i = 1, MarginX
      aa_BoundaryXCyc_aa(RegXMax + i, :) = aa_Var(RegXMin + i, :) 
    end do
    
  end function aa_BoundaryXCyc_aa
Function :
az_BoundaryZAntiSym_az(DimXMin:DimXMax, DimZMin:DimZMax) :real(8)
az_Var(DimXMin:DimXMax, DimZMin:DimZMax) :real(8), intent(inout)

z 方向に半格子ずれた点に存在する変数に対し, z 方向に「反対称境界条件」を適用する.

[Source]

  function az_BoundaryZAntiSym_az( az_Var )
    !
    ! z 方向に半格子ずれた点に存在する変数に対し, 
    ! z 方向に「反対称境界条件」を適用する. 
    !

    !暗黙の型宣言禁止
    implicit none
    
    !変数定義
    real(8)                 :: az_BoundaryZAntiSym_az(DimXMin:DimXMax, DimZMin:DimZMax)
    real(8), intent(inout)  :: az_Var(DimXMin:DimXMax, DimZMin:DimZMax)
    integer                 :: k
    
    az_BoundaryZAntiSym_az = az_Var
    
    do k = 0, MarginZ
      az_BoundaryZAntiSym_az( :, RegZMin - k ) = - az_Var( :, RegZMin + 1 + k )
    end do
    do k = 1, MarginZ
      az_BoundaryZAntiSym_az( :, RegZMax + k ) = - az_Var( :, RegZMax + 1 - k )
    end do
    
  end function az_BoundaryZAntiSym_az
Function :
az_BoundaryZSym_az(DimXMin:DimXMax, DimZMin:DimZMax) :real(8)
az_Var(DimXMin:DimXMax, DimZMin:DimZMax) :real(8), intent(inout)

z 方向に半格子ずれた点に存在する変数に対し, z 方向に「対称境界条件」を適用する.

[Source]

  function az_BoundaryZSym_az( az_Var )
    !
    ! z 方向に半格子ずれた点に存在する変数に対し, 
    ! z 方向に「対称境界条件」を適用する. 
    !

    !暗黙の型宣言禁止
    implicit none
    
    !変数定義
    real(8)                 :: az_BoundaryZSym_az(DimXMin:DimXMax, DimZMin:DimZMax)
    real(8), intent(inout)  :: az_Var(DimXMin:DimXMax, DimZMin:DimZMax)
    integer                 :: k
  
    az_BoundaryZSym_az = az_Var

    do k = 0, MarginZ
      az_BoundaryZSym_az( :, RegZMin - k ) = az_Var( :, RegZMin + 1 + k )
    end do
    do k = 1, MarginZ
      az_BoundaryZSym_az( :, RegZMax + k ) = az_Var( :, RegZMax + 1 - k )
    end do
    
  end function az_BoundaryZSym_az
Function :
aaa_BoundaryXCyc_aaa(DimXMin:DimXMax, DimZMin:DimZMax, SpcNum) :real(8)
aaa_Var(DimXMin:DimXMax, DimZMin:DimZMax, SpcNum) :real(8), intent(inout)

x 方向に「周期境界条件」を適用する. 格子点, 半格子点においても, 関数の形式は同じ

[Source]

  function aaa_BoundaryXCyc_aaa( aaa_Var )
    !
    ! x 方向に「周期境界条件」を適用する. 
    ! 格子点, 半格子点においても, 関数の形式は同じ
    !

    !暗黙の型宣言禁止
    implicit none
    
    !変数定義
    real(8)                 :: aaa_BoundaryXCyc_aaa(DimXMin:DimXMax, DimZMin:DimZMax, SpcNum)
    real(8), intent(inout)  :: aaa_Var(DimXMin:DimXMax, DimZMin:DimZMax, SpcNum)
    integer                 :: i
    
    aaa_BoundaryXCyc_aaa = aaa_Var

    do i = 0, MarginX
      aaa_BoundaryXCyc_aaa(RegXMin - i, :, :) = aaa_Var(RegXMax - i, :, :)
    end do
    do i = 1, MarginX
      aaa_BoundaryXCyc_aaa(RegXMax + i, :, :) = aaa_Var(RegXMin + i, :, :) 
    end do
    
  end function aaa_BoundaryXCyc_aaa
Function :
aza_BoundaryZAntiSym_aza(DimXMin:DimXMax, DimZMin:DimZMax, SpcNum) :real(8)
aza_Var(DimXMin:DimXMax, DimZMin:DimZMax, SpcNum) :real(8), intent(inout)

z 方向に半格子ずれた点に存在する変数に対し, z 方向に「反対称境界条件」を適用する.

[Source]

  function aza_BoundaryZAntiSym_aza( aza_Var )
    !
    ! z 方向に半格子ずれた点に存在する変数に対し, 
    ! z 方向に「反対称境界条件」を適用する. 
    !

    !暗黙の型宣言禁止
    implicit none
    
    !変数定義
    real(8)                 :: aza_BoundaryZAntiSym_aza(DimXMin:DimXMax, DimZMin:DimZMax, SpcNum)
    real(8), intent(inout)  :: aza_Var(DimXMin:DimXMax, DimZMin:DimZMax, SpcNum)
    integer                 :: k
    
    aza_BoundaryZAntiSym_aza = aza_Var
    
    do k = 0, MarginZ
      aza_BoundaryZAntiSym_aza( :, RegZMin - k, : ) = - aza_Var( :, RegZMin + 1 + k, : )
    end do
    do k = 1, MarginZ
      aza_BoundaryZAntiSym_aza( :, RegZMax + k, : ) = - aza_Var( :, RegZMax + 1 - k, : )
    end do
    
  end function aza_BoundaryZAntiSym_aza
Function :
aza_BoundaryZSym_aza(DimXMin:DimXMax, DimZMin:DimZMax, SpcNum) :real(8)
aza_Var(DimXMin:DimXMax, DimZMin:DimZMax, SpcNum) :real(8), intent(inout)

z 方向に半格子ずれた点に存在する変数に対し, z 方向に「対称境界条件」を適用する.

[Source]

  function aza_BoundaryZSym_aza( aza_Var )
    !
    ! z 方向に半格子ずれた点に存在する変数に対し, 
    ! z 方向に「対称境界条件」を適用する. 
    !

    !暗黙の型宣言禁止
    implicit none
    
    !変数定義
    real(8)                 :: aza_BoundaryZSym_aza(DimXMin:DimXMax, DimZMin:DimZMax, SpcNum)
    real(8), intent(inout)  :: aza_Var(DimXMin:DimXMax, DimZMin:DimZMax, SpcNum)
    integer                 :: k
  
    aza_BoundaryZSym_aza = aza_Var

    do k = 0, MarginZ
      aza_BoundaryZSym_aza( :, RegZMin - k, : ) = aza_Var( :, RegZMin + 1 + k, : )
    end do
    do k = 1, MarginZ
      aza_BoundaryZSym_aza( :, RegZMax + k, : ) = aza_Var( :, RegZMax + 1 - k, : )
    end do
    
  end function aza_BoundaryZSym_aza

[Validate]