Linux  R2.6.5-7.282-sn2 FORTRAN90/SX         Rev.360        Tue Oct 11 12:33:47 2011
FILE NAME: cflcheck.f90
PROGRAM NAME: cflcheck
DIAGNOSTIC LIST

  LINE  LEVEL( NO.): DIAGNOSTIC MESSAGE

    88  vec  (   4): Vectorized array expression.
    88  vec  (   4): Vectorized array expression.
    92  vec  (   4): Vectorized array expression.
    92  vec  (   4): Vectorized array expression.
   103  vec  (   4): Vectorized array expression.
   108  vec  (   4): Vectorized array expression.
   130  vec  (   4): Vectorized array expression.
   156  vec  (   4): Vectorized array expression.
   182  vec  (   4): Vectorized array expression.
Linux  R2.6.5-7.282-sn2 FORTRAN90/SX         Rev.360        Tue Oct 11 12:33:47 2011
FILE NAME: cflcheck.f90
PROGRAM NAME: cflcheck
TRANSFORMATION LIST

  LINE                   FORTRAN STATEMENT

     1  != Module CFLCheck
     2  !
     3  ! Authors::   SUGIYAMA Ko-ichiro
     4  ! Version::   $Id: cflcheck.f90,v 1.2 2011-10-04 05:19:02 sugiyama Exp $
     5  ! Tag Name::  $Name: arare5-20111010 $
     6  ! Copyright:: Copyright (C) GFD Dennou Club, 2006. All rights reserved.
     7  ! License::   See COPYRIGHT[link:../../COPYRIGHT]
     8  !
     9  !== Overview
    10  !
    11  ! CFL 条件のチェックをするためのパッケージ型モジュール
    12  !   * 音波に対して CFL 条件をチェック
    13  !   * 入力された速度に対して CFL 条件をチェック
    14  !
    15  !== Error Handling
    16  !
    17  !== Known Bugs
    18  !
    19  !== Note
    20  !
    21  !== Future Plans
    22  !
    23  !Error Handling を gtool5 を利用するように変更
    24  !
    25  
    26  module CFLCheck
    27    !
    28    !CFL 条件のチェックをするためのパッケージ型モジュール
    29    !  * 音波に対して CFL 条件をチェック
    30    !  * 入力された速度に対して CFL 条件をチェック
    31    !
    32  
    33    !モジュール読み込み
    34    use dc_types,   only: DP
    35    use dc_message, only: MessageNotify
    36  
    37    use gridset, only: imin,    &! x 方向の配列の下限
    38      &                imax,    &! x 方向の配列の上限
    39      &                jmin,    &! z 方向の配列の下限
    40      &                jmax,    &! z 方向の配列の上限
    41      &                kmin,    &! z 方向の配列の下限
    42      &                kmax      ! z 方向の配列の上限
    43    use axesset, only: xyz_dX,  &! x 方向の格子点間隔
    44      &                xyz_dY,  &! y 方向の格子点間隔
    45      &                xyz_dZ    ! z 方向の格子点間隔
    46    use timeset, only: DelTimeShort,  &!短い時間ステップ
    47      &                DelTimeLong     !長い時間ステップ
    48  
    49    !暗黙の型宣言禁止
    50    implicit none
    51  
    52    !private 属性の指定
    53    private
    54  
    55    !型宣言
    56    character(*), parameter:: module_name = 'cflcheck'
    57                                ! モジュールの名称.
    58                                ! Module name
    59  
    60    !関数を public 属性に設定
    61    public CFLCheckTimeShort
    62    public CFLCheckTimeLongVelX
    63    public CFLCheckTimeLongVelY
    64    public CFLCheckTimeLongVelZ
    65  
    66  contains
    67  
    68  !!!-----------------------------------------------------------------!!!
    69    subroutine CFLCheckTimeShort( xyz_VelSound )
    70      !
    71      !音波に対して CFL 条件をチェック
    72      !
    73  
    74      !暗黙の型宣言禁止
    75      implicit none
    76  
    77      !変数定義
    78      real(DP), intent(in) :: xyz_VelSound(imin:imax,jmin:jmax, kmin:kmax)
    79                                          !音速
    80      real(DP)             :: xyz_CFL(imin:imax,jmin:jmax, kmin:kmax)
    81                                          !クーラン数
    82  !    real(DP)             :: DxyzMin      !最小格子間隔
    83  
    84      !音速と CFL 条件を求める
    85  !    DxyzMin = min(min(minval(xyz_dx), minval(xyz_dy)), minval(xyz_dz))
    86  !    CFL = DelTimeShort * maxval(xyz_VelSound) / DxyzMin
    87  
    88      xyz_CFL = DelTimeShort * xyz_VelSound       &
     .        if (xyz_velsound.DSC.U2 + 1 - xyz_velsound.DSC.L2 .gt. 0) then    
     .           J1 = and(xyz_velsound.DSC.U2 + 1 - xyz_velsound.DSC.L2,3)      
     .  !CDIR    NODEP                                                          
     .           do t150 = 1, J1                                                
     .  !CDIR       NODEP                                                       
     .              do t152 = 1, xyz_velsound.DSC.U1 + 1 - xyz_velsound.DSC.L1  
     .                 xyz_cfl(xyz_cfl.DSC.L1+t152-1,t150-1+xyz_cfl.DSC.L2,t148+
     .       1            xyz_cfl.DSC.L3) = deltimeshort*xyz_velsound(          
     .       2            xyz_velsound.DSC.L1+t152-1,t150-1+xyz_velsound.DSC.L2,
     .       3            t148+xyz_velsound.DSC.L3)*(1.00000000000000e+000/     
     .       4            xyz_dx(xyz_dx.DSC.L1+t152-1,t150-1+xyz_dx.DSC.L2,t148+
     .       5            xyz_dx.DSC.L3)**2.00000000000000e+000+                
     .       6            1.00000000000000e+000/xyz_dy(xyz_dy.DSC.L1+t152-1,t150
     .       7            -1+xyz_dy.DSC.L2,t148+xyz_dy.DSC.L3)**                
     .       8            2.00000000000000e+000)**5.00000000000000e-001         
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t150=J1+1,xyz_velsound.DSC.U2+1-xyz_velsound.DSC.L2,4       
     .  !CDIR       NODEP                                                       
     .              do t152 = 1, xyz_velsound.DSC.U1 + 1 - xyz_velsound.DSC.L1  
     .                 xyz_cfl(xyz_cfl.DSC.L1+t152-1,t150-1+xyz_cfl.DSC.L2,t148+
     .       1            xyz_cfl.DSC.L3) = deltimeshort*xyz_velsound(          
     .       2            xyz_velsound.DSC.L1+t152-1,t150-1+xyz_velsound.DSC.L2,
     .       3            t148+xyz_velsound.DSC.L3)*(1.00000000000000e+000/     
     .       4            xyz_dx(xyz_dx.DSC.L1+t152-1,t150-1+xyz_dx.DSC.L2,t148+
     .       5            xyz_dx.DSC.L3)**2.00000000000000e+000+                
     .       6            1.00000000000000e+000/xyz_dy(xyz_dy.DSC.L1+t152-1,t150
     .       7            -1+xyz_dy.DSC.L2,t148+xyz_dy.DSC.L3)**                
     .       8            2.00000000000000e+000)**5.00000000000000e-001         
     .                 xyz_cfl(xyz_cfl.DSC.L1+t152-1,t150+xyz_cfl.DSC.L2,t148+  
     .       1            xyz_cfl.DSC.L3) = deltimeshort*xyz_velsound(          
     .       2            xyz_velsound.DSC.L1+t152-1,t150+xyz_velsound.DSC.L2,  
     .       3            t148+xyz_velsound.DSC.L3)*(1.00000000000000e+000/     
     .       4            xyz_dx(xyz_dx.DSC.L1+t152-1,t150+xyz_dx.DSC.L2,t148+  
     .       5            xyz_dx.DSC.L3)**2.00000000000000e+000+                
     .       6            1.00000000000000e+000/xyz_dy(xyz_dy.DSC.L1+t152-1,t150
     .       7            +xyz_dy.DSC.L2,t148+xyz_dy.DSC.L3)**                  
     .       8            2.00000000000000e+000)**5.00000000000000e-001         
     .                 xyz_cfl(xyz_cfl.DSC.L1+t152-1,t150+1+xyz_cfl.DSC.L2,t148+
     .       1            xyz_cfl.DSC.L3) = deltimeshort*xyz_velsound(          
     .       2            xyz_velsound.DSC.L1+t152-1,t150+1+xyz_velsound.DSC.L2,
     .       3            t148+xyz_velsound.DSC.L3)*(1.00000000000000e+000/     
     .       4            xyz_dx(xyz_dx.DSC.L1+t152-1,t150+1+xyz_dx.DSC.L2,t148+
     .       5            xyz_dx.DSC.L3)**2.00000000000000e+000+                
     .       6            1.00000000000000e+000/xyz_dy(xyz_dy.DSC.L1+t152-1,t150
     .       7            +1+xyz_dy.DSC.L2,t148+xyz_dy.DSC.L3)**                
     .       8            2.00000000000000e+000)**5.00000000000000e-001         
     .                 xyz_cfl(xyz_cfl.DSC.L1+t152-1,t150+2+xyz_cfl.DSC.L2,t148+
     .       1            xyz_cfl.DSC.L3) = deltimeshort*xyz_velsound(          
     .       2            xyz_velsound.DSC.L1+t152-1,t150+2+xyz_velsound.DSC.L2,
     .       3            t148+xyz_velsound.DSC.L3)*(1.00000000000000e+000/     
     .       4            xyz_dx(xyz_dx.DSC.L1+t152-1,t150+2+xyz_dx.DSC.L2,t148+
     .       5            xyz_dx.DSC.L3)**2.00000000000000e+000+                
     .       6            1.00000000000000e+000/xyz_dy(xyz_dy.DSC.L1+t152-1,t150
     .       7            +2+xyz_dy.DSC.L2,t148+xyz_dy.DSC.L3)**                
     .       8            2.00000000000000e+000)**5.00000000000000e-001         
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
    89        &       * ((1.0d0 / (xyz_dx ** 2.0d0) + 1.0d0 / (xyz_dy ** 2.0d0)) ** 0.5d0)
    90  
    91      !メッセージ
    92      call MessageNotify( "M", &
     .        if (xyz_velsound.DSC.U2 + 1 - xyz_velsound.DSC.L2 .gt. 0) then    
     .           J2 = and(xyz_velsound.DSC.U2 + 1 - xyz_velsound.DSC.L2,3)      
     .  !CDIR    NODEP                                                          
     .           do t96 = 1, J2                                                 
     .  !CDIR       NODEP                                                       
     .              do t98 = 1, xyz_velsound.DSC.U1 + 1 - xyz_velsound.DSC.L1   
     .                 t92 = max(xyz_velsound(xyz_velsound.DSC.L1+t98-1,t96-1+  
     .       1            xyz_velsound.DSC.L2,t94),t92)                         
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t96=J2+1,xyz_velsound.DSC.U2+1-xyz_velsound.DSC.L2,4        
     .  !CDIR       NODEP                                                       
     .              do t98 = 1, xyz_velsound.DSC.U1 + 1 - xyz_velsound.DSC.L1   
     .                 t92 = max(xyz_velsound(xyz_velsound.DSC.L1+t98-1,t96-1+  
     .       1            xyz_velsound.DSC.L2,t94),xyz_velsound(                
     .       2            xyz_velsound.DSC.L1+t98-1,t96+xyz_velsound.DSC.L2,t94)
     .       3            ,xyz_velsound(xyz_velsound.DSC.L1+t98-1,t96+1+        
     .       4            xyz_velsound.DSC.L2,t94),xyz_velsound(                
     .       5            xyz_velsound.DSC.L1+t98-1,t96+2+xyz_velsound.DSC.L2,  
     .       6            t94),t92)                                             
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
    93        & module_name, &
    94        & "Sound Wave Velocity = %f", d=(/maxval(xyz_VelSound)/) )
    95  !    call MessageNotify( "M", &
    96  !      & module_name, &
    97  !      & "min(DelX, DelY, DelZ) = %f", d=(/DxyzMin/) )
    98      call MessageNotify( "M", &
    99        & module_name, &
   100        & "DelTimeShort = %f", d=(/DelTimeShort/) )
   101  
   102      !警告メッセージ
   103      if ( maxval(xyz_CFL) >= 1.0) then
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t119 = 1, (xyz_cfl.DSC.U3 + 1 - xyz_cfl.DSC.L3)*(xyz_cfl.DSC.U2
     .       1    + 1 - xyz_cfl.DSC.L2)*(xyz_cfl.DSC.U1 + 1 - xyz_cfl.DSC.L1)   
     .           t117 = max(xyz_cfl(xyz_cfl.DSC.L1+t119-1,xyz_cfl.DSC.L2,       
     .       1      xyz_cfl.DSC.L3),t117)                                       
     .        end do                                                            
   104        call MessageNotify( "E", &
   105          & module_name, &
   106          & "CFL Condition is broken, DelTimeShort * VelSound > min(DelX, DelZ)")
   107      else
   108        call MessageNotify( "M", &
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t136 = 1, (xyz_cfl.DSC.U3 + 1 - xyz_cfl.DSC.L3)*(xyz_cfl.DSC.U2
     .       1    + 1 - xyz_cfl.DSC.L2)*(xyz_cfl.DSC.U1 + 1 - xyz_cfl.DSC.L1)   
     .           t134 = max(xyz_cfl(xyz_cfl.DSC.L1+t136-1,xyz_cfl.DSC.L2,       
     .       1      xyz_cfl.DSC.L3),t134)                                       
     .        end do                                                            
   109          & module_name, &
   110          & "Courant number for DelTimeSort = %f", d=(/maxval(xyz_CFL)/) )
   111      end if
   112  
   113    end subroutine CFLCheckTimeShort
   114  
   115  
   116  !!!-----------------------------------------------------------------!!!
   117    subroutine CFLCheckTimeLongVelX( pyz_VelX )
   118      !
   119      !水平速度に対して CFL 条件をチェック.
   120      !
   121  
   122      !暗黙の型宣言禁止
   123      implicit none
   124  
   125      !内部変数
   126      real(DP), intent(in) :: pyz_VelX(imin:imax,jmin:jmax,kmin:kmax)
   127      real(DP)             :: CFL
   128  
   129      !CFL 条件を求める
   130      CFL = (2.0d0 * DelTimeLong) * maxval(abs(pyz_VelX/xyz_dx))
     .  !CDIR NODEP                                                             
     .        do t44 = 1, imax + 1 - imin                                       
     .           t45 = t44 - 1                                                  
     .           t461 = t42 - 1                                                 
     .           t46 = t461 + t15                                               
     .           t471 = t40 - 1                                                 
     .           t47 = t471 + t17                                               
     .           t49 = t44 - 1                                                  
     .           t501 = t42 - 1                                                 
     .           t50 = t501 + xyz_dx.DSC.L2                                     
     .           t511 = t40 - 1                                                 
     .           t51 = t511 + xyz_dx.DSC.L3                                     
     .           t38 = max(abs(pyz_velx(t45+t13,t46,t47)/xyz_dx(t49+            
     .       1      xyz_dx.DSC.L1,t50,t51)),t38)                                
     .        end do                                                            
   131  
   132      !メッセージ出力
   133      call MessageNotify( "M", &
   134        & module_name, &
   135        & "Courant number of VelX for DelTimeLong = %f", d=(/CFL/) )
   136  
   137  !    if (CFL > 1.0d0) stop
   138  
   139    end subroutine CFLCheckTimeLongVelX
   140  
   141  
   142  !!!-----------------------------------------------------------------!!!
   143    subroutine CFLCheckTimeLongVelY( xqz_VelY )
   144      !
   145      !水平速度に対して CFL 条件をチェック.
   146      !
   147  
   148      !暗黙の型宣言禁止
   149      implicit none
   150  
   151      !内部変数
   152      real(DP), intent(in) :: xqz_VelY(imin:imax,jmin:jmax,kmin:kmax)
   153      real(DP)             :: CFL
   154  
   155      !CFL 条件を求める
   156      CFL = (2.0d0 * DelTimeLong) * maxval(abs(xqz_VelY/xyz_dy))
     .  !CDIR NODEP                                                             
     .        do t44 = 1, imax + 1 - imin                                       
     .           t45 = t44 - 1                                                  
     .           t461 = t42 - 1                                                 
     .           t46 = t461 + t15                                               
     .           t471 = t40 - 1                                                 
     .           t47 = t471 + t17                                               
     .           t49 = t44 - 1                                                  
     .           t501 = t42 - 1                                                 
     .           t50 = t501 + xyz_dy.DSC.L2                                     
     .           t511 = t40 - 1                                                 
     .           t51 = t511 + xyz_dy.DSC.L3                                     
     .           t38 = max(abs(xqz_vely(t45+t13,t46,t47)/xyz_dy(t49+            
     .       1      xyz_dy.DSC.L1,t50,t51)),t38)                                
     .        end do                                                            
   157  
   158      !メッセージ出力
   159      call MessageNotify( "M", &
   160        & module_name, &
   161        & "Courant number of VelY for DelTimeLong = %f", d=(/CFL/) )
   162  
   163  !    if (CFL > 1.0d0) stop
   164  
   165    end subroutine CFLCheckTimeLongVelY
   166  
   167  
   168  !!!-----------------------------------------------------------------!!!
   169    subroutine CFLCheckTimeLongVelZ( xyr_VelZ )
   170      !
   171      !水平速度に対して CFL 条件をチェック.
   172      !
   173  
   174      !暗黙の型宣言禁止
   175      implicit none
   176  
   177      !内部変数
   178      real(DP), intent(in) :: xyr_VelZ(imin:imax,jmin:jmax,kmin:kmax)
   179      real(DP)             :: CFL
   180  
   181      !CFL 条件を求める
   182      CFL = (2.0d0 * DelTimeLong) * maxval(abs(xyr_VelZ/xyz_dz))
     .  !CDIR NODEP                                                             
     .        do t44 = 1, imax + 1 - imin                                       
     .           t45 = t44 - 1                                                  
     .           t461 = t42 - 1                                                 
     .           t46 = t461 + t15                                               
     .           t471 = t40 - 1                                                 
     .           t47 = t471 + t17                                               
     .           t49 = t44 - 1                                                  
     .           t501 = t42 - 1                                                 
     .           t50 = t501 + xyz_dz.DSC.L2                                     
     .           t511 = t40 - 1                                                 
     .           t51 = t511 + xyz_dz.DSC.L3                                     
     .           t38 = max(abs(xyr_velz(t45+t13,t46,t47)/xyz_dz(t49+            
     .       1      xyz_dz.DSC.L1,t50,t51)),t38)                                
     .        end do                                                            
   183  
   184      !メッセージ出力
   185      call MessageNotify( "M", &
   186        & module_name, &
   187        & "Courant number of VelZ for DelTimeLong = %f", d=(/CFL/) )
   188  
   189  !    if (CFL > 1.0d0) stop
   190  
   191    end subroutine CFLCheckTimeLongVelZ
   192  
   193  end module CFLCheck
Linux  R2.6.5-7.282-sn2 FORTRAN90/SX         Rev.360        Tue Oct 11 12:33:47 2011
FILE NAME: cflcheck.f90
PROGRAM NAME: cflcheck
FORMAT LIST

  LINE    LOOP     FORTRAN STATEMENT

     1:            != Module CFLCheck
     2:            !
     3:            ! Authors::   SUGIYAMA Ko-ichiro
     4:            ! Version::   $Id: cflcheck.f90,v 1.2 2011-10-04 05:19:02 sugiyama Exp $ 
     5:            ! Tag Name::  $Name: arare5-20111010 $
     6:            ! Copyright:: Copyright (C) GFD Dennou Club, 2006. All rights reserved.
     7:            ! License::   See COPYRIGHT[link:../../COPYRIGHT]
     8:            !
     9:            !== Overview 
    10:            !
    11:            ! CFL 条件のチェックをするためのパッケージ型モジュール
    12:            !   * 音波に対して CFL 条件をチェック
    13:            !   * 入力された速度に対して CFL 条件をチェック
    14:            !
    15:            !== Error Handling
    16:            !
    17:            !== Known Bugs
    18:            !
    19:            !== Note
    20:            !
    21:            !== Future Plans
    22:            !
    23:            !Error Handling を gtool5 を利用するように変更
    24:            !
    25:            
    26:            module CFLCheck
    27:              !
    28:              !CFL 条件のチェックをするためのパッケージ型モジュール
    29:              !  * 音波に対して CFL 条件をチェック
    30:              !  * 入力された速度に対して CFL 条件をチェック
    31:              !
    32:            
    33:              !モジュール読み込み
    34:              use dc_types,   only: DP
    35:              use dc_message, only: MessageNotify
    36:            
    37:              use gridset, only: imin,    &! x 方向の配列の下限
    38:                &                imax,    &! x 方向の配列の上限
    39:                &                jmin,    &! z 方向の配列の下限
    40:                &                jmax,    &! z 方向の配列の上限
    41:                &                kmin,    &! z 方向の配列の下限
    42:                &                kmax      ! z 方向の配列の上限
    43:              use axesset, only: xyz_dX,  &! x 方向の格子点間隔
    44:                &                xyz_dY,  &! y 方向の格子点間隔
    45:                &                xyz_dZ    ! z 方向の格子点間隔
    46:              use timeset, only: DelTimeShort,  &!短い時間ステップ
    47:                &                DelTimeLong     !長い時間ステップ
    48:            
    49:              !暗黙の型宣言禁止
    50:              implicit none
    51:            
    52:              !private 属性の指定
    53:              private
    54:            
    55:              !型宣言
    56:              character(*), parameter:: module_name = 'cflcheck'
    57:                                          ! モジュールの名称.
    58:                                          ! Module name
    59:              
    60:              !関数を public 属性に設定
    61:              public CFLCheckTimeShort
    62:              public CFLCheckTimeLongVelX
    63:              public CFLCheckTimeLongVelY
    64:              public CFLCheckTimeLongVelZ
    65:              
    66:            contains  
    67:            
    68:            !!!-----------------------------------------------------------------!!!
    69:              subroutine CFLCheckTimeShort( xyz_VelSound )
    70:                !
    71:                !音波に対して CFL 条件をチェック
    72:                ! 
    73:            
    74:                !暗黙の型宣言禁止
    75:                implicit none
    76:                
    77:                !変数定義
    78:                real(DP), intent(in) :: xyz_VelSound(imin:imax,jmin:jmax, kmin:kmax)
    79:                                                    !音速
    80:                real(DP)             :: xyz_CFL(imin:imax,jmin:jmax, kmin:kmax)
    81:                                                    !クーラン数
    82:            !    real(DP)             :: DxyzMin      !最小格子間隔
    83:                
    84:                !音速と CFL 条件を求める
    85:            !    DxyzMin = min(min(minval(xyz_dx), minval(xyz_dy)), minval(xyz_dz))
    86:            !    CFL = DelTimeShort * maxval(xyz_VelSound) / DxyzMin
    87:            
    88: ++V====        xyz_CFL = DelTimeShort * xyz_VelSound       &
    89:                  &       * ((1.0d0 / (xyz_dx ** 2.0d0) + 1.0d0 / (xyz_dy ** 2.0d0)) ** 0.5d0)
    90:            
    91:                !メッセージ
    92: ++V====        call MessageNotify( "M", &
    93:                  & module_name, &
    94:                  & "Sound Wave Velocity = %f", d=(/maxval(xyz_VelSound)/) )
    95:            !    call MessageNotify( "M", &
    96:            !      & module_name, &
    97:            !      & "min(DelX, DelY, DelZ) = %f", d=(/DxyzMin/) )
    98:                call MessageNotify( "M", &
    99:                  & module_name, &
   100:                  & "DelTimeShort = %f", d=(/DelTimeShort/) )
   101:            
   102:                !警告メッセージ
   103: WW+====        if ( maxval(xyz_CFL) >= 1.0) then 
   104:                  call MessageNotify( "E", &
   105:                    & module_name, &
   106:                    & "CFL Condition is broken, DelTimeShort * VelSound > min(DelX, DelZ)")
   107:                else
   108: +++====          call MessageNotify( "M", &
   109:                    & module_name, &
   110:                    & "Courant number for DelTimeSort = %f", d=(/maxval(xyz_CFL)/) )
   111:                end if
   112:              
   113:              end subroutine CFLCheckTimeShort
   114:            
   115:            
   116:            !!!-----------------------------------------------------------------!!!
   117:              subroutine CFLCheckTimeLongVelX( pyz_VelX )
   118:                !
   119:                !水平速度に対して CFL 条件をチェック. 
   120:                ! 
   121:            
   122:                !暗黙の型宣言禁止
   123:                implicit none
   124:                
   125:                !内部変数
   126:                real(DP), intent(in) :: pyz_VelX(imin:imax,jmin:jmax,kmin:kmax)
   127:                real(DP)             :: CFL
   128:            
   129:                !CFL 条件を求める
   130: ++V====        CFL = (2.0d0 * DelTimeLong) * maxval(abs(pyz_VelX/xyz_dx))
   131:              
   132:                !メッセージ出力
   133:                call MessageNotify( "M", &
   134:                  & module_name, &
   135:                  & "Courant number of VelX for DelTimeLong = %f", d=(/CFL/) )
   136:            
   137:            !    if (CFL > 1.0d0) stop 
   138:            
   139:              end subroutine CFLCheckTimeLongVelX
   140:                
   141:            
   142:            !!!-----------------------------------------------------------------!!!
   143:              subroutine CFLCheckTimeLongVelY( xqz_VelY )
   144:                !
   145:                !水平速度に対して CFL 条件をチェック. 
   146:                ! 
   147:            
   148:                !暗黙の型宣言禁止
   149:                implicit none
   150:                
   151:                !内部変数
   152:                real(DP), intent(in) :: xqz_VelY(imin:imax,jmin:jmax,kmin:kmax)
   153:                real(DP)             :: CFL
   154:            
   155:                !CFL 条件を求める
   156: ++V====        CFL = (2.0d0 * DelTimeLong) * maxval(abs(xqz_VelY/xyz_dy))
   157:              
   158:                !メッセージ出力
   159:                call MessageNotify( "M", &
   160:                  & module_name, &
   161:                  & "Courant number of VelY for DelTimeLong = %f", d=(/CFL/) )
   162:            
   163:            !    if (CFL > 1.0d0) stop 
   164:            
   165:              end subroutine CFLCheckTimeLongVelY
   166:            
   167:            
   168:            !!!-----------------------------------------------------------------!!!
   169:              subroutine CFLCheckTimeLongVelZ( xyr_VelZ )
   170:                !
   171:                !水平速度に対して CFL 条件をチェック. 
   172:                ! 
   173:            
   174:                !暗黙の型宣言禁止
   175:                implicit none
   176:                
   177:                !内部変数
   178:                real(DP), intent(in) :: xyr_VelZ(imin:imax,jmin:jmax,kmin:kmax)
   179:                real(DP)             :: CFL
   180:                
   181:                !CFL 条件を求める
   182: ++V====        CFL = (2.0d0 * DelTimeLong) * maxval(abs(xyr_VelZ/xyz_dz)) 
   183:                
   184:                !メッセージ出力
   185:                call MessageNotify( "M", &
   186:                  & module_name, &
   187:                  & "Courant number of VelZ for DelTimeLong = %f", d=(/CFL/) )
   188:                
   189:            !    if (CFL > 1.0d0) stop 
   190:            
   191:              end subroutine CFLCheckTimeLongVelZ
   192:              
   193:            end module CFLCheck
