Class StoreDensCloud
In: setup/storedenscloud.f90

雲密度に関する積算値を保管するための変数型モジュール.

Methods

Included Modules

gridset TimeSet

Public Instance methods

Subroutine :
Work(DimXMin:DimXMax, DimZMin:DimZMax) :real(8), intent(in)

2 delta t の各時間内で求めた移流項 tendency の足しこみ

[Source]

  subroutine DensCloudAdvTendSum( Work )
    ! 2 \delta t の各時間内で求めた移流項 tendency の足しこみ

    implicit none

    real(8), intent(in)  :: Work(DimXMin:DimXMax, DimZMin:DimZMax)
    real(8)              :: Work2(DimXMin:DimXMax, DimZMin:DimZMax)

    Work2  = xz_DensCloudAdv2 + Work
    xz_DensCloudAdv2 = Work2

    xz_DensCloudAdv = 0.0d0

  end subroutine DensCloudAdvTendSum
Subroutine :
Work(DimXMin:DimXMax, DimZMin:DimZMax) :real(8), intent(in)

2 delta t の各時間内で求めた潜熱加熱項 tendency の足しこみ

[Source]

  subroutine DensCloudCondTendSum( Work )
    ! 2 \delta t の各時間内で求めた潜熱加熱項 tendency の足しこみ

    implicit none

    real(8), intent(in)  :: Work(DimXMin:DimXMax, DimZMin:DimZMax)
    real(8)              :: Work2(DimXMin:DimXMax, DimZMin:DimZMax)

    Work2   = xz_DensCloudCond2 + Work
    xz_DensCloudCond2 = Work2

    xz_DensCloudCond = 0.0d0

  end subroutine DensCloudCondTendSum
Subroutine :
Work(DimXMin:DimXMax, DimZMin:DimZMax) :real(8), intent(in)

2 delta t の各時間内で求めた数値拡散項 tendency の足しこみ. 短い時間ステップのループ内に行く前に xz_DensCloudxxx の量を クリアーしておく.

[Source]

  subroutine DensCloudDiffTendSum( Work )
    ! 2 \delta t の各時間内で求めた数値拡散項 tendency の足しこみ.
    ! 短い時間ステップのループ内に行く前に xz_DensCloudxxx  の量を
    ! クリアーしておく.

    implicit none

    real(8), intent(in)  :: Work(DimXMin:DimXMax, DimZMin:DimZMax)
    real(8)              :: Work2(DimXMin:DimXMax, DimZMin:DimZMax)

    Work2   = xz_DensCloudDiff2 + Work
    xz_DensCloudDiff2 = Work2

    xz_DensCloudDiff = 0.0d0

  end subroutine DensCloudDiffTendSum
Subroutine :
Work(DimXMin:DimXMax, DimZMin:DimZMax) :real(8), intent(in)

2 delta t の各時間内で求めた穴埋め量 tendency の足しこみ

[Source]

  subroutine DensCloudFillTendSum( Work )
    ! 2 \delta t の各時間内で求めた穴埋め量 tendency の足しこみ

    implicit none

    real(8), intent(in)  :: Work(DimXMin:DimXMax, DimZMin:DimZMax)
    real(8)              :: Work2(DimXMin:DimXMax, DimZMin:DimZMax)

    Work2     = Work + xz_DensCloudFill2
    xz_DensCloudFill2 = Work2

    xz_DensCloudFill = 0.0d0

  end subroutine DensCloudFillTendSum
Subroutine :
Work(DimXMin:DimXMax, DimZMin:DimZMax) :real(8), intent(in)

2 delta t の各時間内で求めた穴埋め量 tendency の足しこみ

[Source]

  subroutine DensCloudFillZeroTendSum( Work )
    ! 2 \delta t の各時間内で求めた穴埋め量 tendency の足しこみ

    implicit none

    real(8), intent(in)  :: Work(DimXMin:DimXMax, DimZMin:DimZMax)
    real(8)              :: Work2(DimXMin:DimXMax, DimZMin:DimZMax)

    Work2     = Work + xz_DensCloudFillZero2
    xz_DensCloudFillZero2 = Work2

    xz_DensCloudFillZero = 0.0d0

  end subroutine DensCloudFillZeroTendSum
Subroutine :
Work(DimXMin:DimXMax, DimZMin:DimZMax) :real(8), intent(in)

2 delta t の各時間内で求めた乱流項 tendency の足しこみ

[Source]

  subroutine DensCloudTurbTendSum( Work )
    ! 2 \delta t の各時間内で求めた乱流項 tendency の足しこみ

    implicit none

    real(8), intent(in)  :: Work(DimXMin:DimXMax, DimZMin:DimZMax)
    real(8)              :: Work2(DimXMin:DimXMax, DimZMin:DimZMax)

    Work2   = xz_DensCloudTurb2 + Work
    xz_DensCloudTurb2 = Work2

    xz_DensCloudTurb = 0.0d0

  end subroutine DensCloudTurbTendSum
Subroutine :
Work(DimXMin:DimXMax, DimZMin:DimZMax) :real(8), intent(in)

移流項の保管

[Source]

  subroutine StoreDensCloudAdv( Work )
    !移流項の保管

    implicit none

    real(8), intent(in)  :: Work(DimXMin:DimXMax, DimZMin:DimZMax)
    real(8)              :: Work2(DimXMin:DimXMax, DimZMin:DimZMax)

    Work2  = xz_DensCloudAdv + Work
    xz_DensCloudAdv = Work2

  end subroutine StoreDensCloudAdv
Subroutine :

保管した値のクリアー

[Source]

  subroutine StoreDensCloudClean( )
    !保管した値のクリアー
    
    z_DensCloudAdv  = 0.0d0
    z_DensCloudTurb = 0.0d0
    z_DensCloudDiff = 0.0d0
    z_DensCloudCond = 0.0d0
    z_DensCloudFill = 0.0d0
    z_DensCloudFillZero = 0.0d0

    xz_DensCloudAdv  = 0.0d0
    xz_DensCloudTurb = 0.0d0
    xz_DensCloudDiff = 0.0d0
    xz_DensCloudCond = 0.0d0
    xz_DensCloudFill = 0.0d0
    xz_DensCloudFillZero = 0.0d0

    xz_DensCloudAdv2  = 0.0d0
    xz_DensCloudTurb2 = 0.0d0
    xz_DensCloudDiff2 = 0.0d0
    xz_DensCloudCond2 = 0.0d0
    xz_DensCloudFill2 = 0.0d0
    xz_DensCloudFillZero2 = 0.0d0
   
!    CalNum  = 1.0d-40    !ゼロ割を禁止. 
  end subroutine StoreDensCloudClean
Subroutine :
Work(DimXMin:DimXMax, DimZMin:DimZMax) :real(8), intent(in)

潜熱・蒸発熱の保管

[Source]

  subroutine StoreDensCloudCond( Work )
    !潜熱・蒸発熱の保管

    implicit none
    
    real(8), intent(in)  :: Work(DimXMin:DimXMax, DimZMin:DimZMax)
    real(8)              :: Work2(DimXMin:DimXMax, DimZMin:DimZMax)

    Work2   = xz_DensCloudCond + Work
    xz_DensCloudCond = Work2

  end subroutine StoreDensCloudCond
Subroutine :
Work(DimXMin:DimXMax, DimZMin:DimZMax) :real(8), intent(in)

数値拡散項の保管

[Source]

  subroutine StoreDensCloudDiff( Work )
    !数値拡散項の保管

    implicit none
    
    real(8), intent(in)  :: Work(DimXMin:DimXMax, DimZMin:DimZMax)
    real(8)              :: Work2(DimXMin:DimXMax, DimZMin:DimZMax)

    Work2   = xz_DensCloudDiff + Work
    xz_DensCloudDiff = Work2

  end subroutine StoreDensCloudDiff
Subroutine :
Work(DimXMin:DimXMax, DimZMin:DimZMax) :real(8), intent(in)

穴埋めプログラムによる変化

[Source]

  subroutine StoreDensCloudFill( Work )
    !穴埋めプログラムによる変化

    implicit none

    real(8), intent(in)  :: Work(DimXMin:DimXMax, DimZMin:DimZMax)
    real(8)              :: Work2(DimXMin:DimXMax, DimZMin:DimZMax)

    Work2     = Work + xz_DensCloudFill
    xz_DensCloudFill = Work2

  end subroutine StoreDensCloudFill
Subroutine :
Work(DimXMin:DimXMax, DimZMin:DimZMax) :real(8), intent(in)

穴埋めプログラムによる変化

[Source]

  subroutine StoreDensCloudFillZero( Work )
    !穴埋めプログラムによる変化

    implicit none

    real(8), intent(in)  :: Work(DimXMin:DimXMax, DimZMin:DimZMax)
    real(8)              :: Work2(DimXMin:DimXMax, DimZMin:DimZMax)

    Work2     = Work + xz_DensCloudFillZero
    xz_DensCloudFillZero = Work2

  end subroutine StoreDensCloudFillZero
Subroutine :

[Source]

  subroutine StoreDensCloudMean( )

    !保管した値の水平平均値 [K/s]
    real(8) :: CalNumShort

    CalNumShort = 2.0d0 * DelTimeLong / DelTimeShort
    
    
    xz_DensCloudAdv  =  xz_DensCloudAdv    / ( CalNumShort * TimeDisp )
    xz_DensCloudTurb =  xz_DensCloudTurb   / ( CalNumShort * TimeDisp )
    xz_DensCloudDiff =  xz_DensCloudDiff   / ( CalNumShort * TimeDisp )
    xz_DensCloudCond =  xz_DensCloudCond   / ( CalNumShort * TimeDisp )
    xz_DensCloudFill =  xz_DensCloudFill   / ( CalNumShort * TimeDisp )
    xz_DensCloudFillZero =  xz_DensCloudFillZero   / ( CalNumShort * TimeDisp )

  end subroutine StoreDensCloudMean
Subroutine :
Work(DimXMin:DimXMax, DimZMin:DimZMax) :real(8), intent(in)

乱流項の保管

[Source]

  subroutine StoreDensCloudTurb( Work )
    !乱流項の保管

    implicit none

    real(8), intent(in)  :: Work(DimXMin:DimXMax, DimZMin:DimZMax)
    real(8)              :: Work2(DimXMin:DimXMax, DimZMin:DimZMax)

    Work2   = xz_DensCloudTurb + Work
    xz_DensCloudTurb = Work2

  end subroutine StoreDensCloudTurb
Subroutine :

初期化ルーチン

[Source]

  subroutine StoreDensCloud_Init( )
    !初期化ルーチン

    allocate( z_DensCloudAdv(DimZMin:DimZMax), z_DensCloudTurb(DimZMin:DimZMax), z_DensCloudDiff(DimZMin:DimZMax), z_DensCloudCond(DimZMin:DimZMax), z_DensCloudFill(DimZMin:DimZMax), z_DensCloudFillZero(DimZMin:DimZMax), xz_DensCloudAdv(DimXMin:DimXMax, DimZMin:DimZMax), xz_DensCloudTurb(DimXMin:DimXMax, DimZMin:DimZMax), xz_DensCloudDiff(DimXMin:DimXMax, DimZMin:DimZMax), xz_DensCloudCond(DimXMin:DimXMax, DimZMin:DimZMax), xz_DensCloudFill(DimXMin:DimXMax, DimZMin:DimZMax), xz_DensCloudFillZero(DimXMin:DimXMax, DimZMin:DimZMax), xz_DensCloudAdv2(DimXMin:DimXMax, DimZMin:DimZMax), xz_DensCloudTurb2(DimXMin:DimXMax, DimZMin:DimZMax), xz_DensCloudDiff2(DimXMin:DimXMax, DimZMin:DimZMax), xz_DensCloudCond2(DimXMin:DimXMax, DimZMin:DimZMax), xz_DensCloudFill2(DimXMin:DimXMax, DimZMin:DimZMax), xz_DensCloudFillZero2(DimXMin:DimXMax, DimZMin:DimZMax) )

    call StoreDensCloudClean

  end subroutine StoreDensCloud_Init
xz_DensCloudAdv
Variable :
xz_DensCloudAdv(:,:) :real(8), allocatable
xz_DensCloudAdv2
Variable :
xz_DensCloudAdv2(:,:) :real(8), allocatable
xz_DensCloudCond
Variable :
xz_DensCloudCond(:,:) :real(8), allocatable
xz_DensCloudCond2
Variable :
xz_DensCloudCond2(:,:) :real(8), allocatable
xz_DensCloudDiff
Variable :
xz_DensCloudDiff(:,:) :real(8), allocatable
xz_DensCloudDiff2
Variable :
xz_DensCloudDiff2(:,:) :real(8), allocatable
xz_DensCloudFill
Variable :
xz_DensCloudFill(:,:) :real(8), allocatable
xz_DensCloudFill2
Variable :
xz_DensCloudFill2(:,:) :real(8), allocatable
xz_DensCloudFillZero
Variable :
xz_DensCloudFillZero(:,:) :real(8), allocatable
xz_DensCloudFillZero2
Variable :
xz_DensCloudFillZero2(:,:) :real(8), allocatable
xz_DensCloudTurb
Variable :
xz_DensCloudTurb(:,:) :real(8), allocatable
xz_DensCloudTurb2
Variable :
xz_DensCloudTurb2(:,:) :real(8), allocatable