Class | CFLCheck |
In: |
utils/cflcheck.f90
|
CFL 条件のチェックをするためのパッケージ型モジュール
* 音波に対して CFL 条件をチェック * 入力された速度に対して CFL 条件をチェック
Subroutine : | |
pyz_VelX(imin:imax,jmin:jmax,kmin:kmax) : | real(DP), intent(in) |
水平速度に対して CFL 条件をチェック.
subroutine CFLCheckTimeLongVelX( pyz_VelX ) ! !水平速度に対して CFL 条件をチェック. ! !暗黙の型宣言禁止 implicit none !内部変数 real(DP), intent(in) :: pyz_VelX (imin:imax,jmin:jmax,kmin:kmax) real(DP) :: CFL !CFL 条件を求める CFL = DelTimeLong * maxval(abs(pyz_VelX/xyz_dx)) !メッセージ出力 call MessageNotify( "M", "CFLCheckTimeLongVelX", "Courant number of VelX for DelTimeLong = %f", d=(/CFL/) ) end subroutine CFLCheckTimeLongVelX
Subroutine : | |
xqz_VelY(imin:imax,jmin:jmax,kmin:kmax) : | real(DP), intent(in) |
水平速度に対して CFL 条件をチェック.
subroutine CFLCheckTimeLongVelY( xqz_VelY ) ! !水平速度に対して CFL 条件をチェック. ! !暗黙の型宣言禁止 implicit none !内部変数 real(DP), intent(in) :: xqz_VelY (imin:imax,jmin:jmax,kmin:kmax) real(DP) :: CFL !CFL 条件を求める CFL = DelTimeLong * maxval(abs(xqz_VelY/xyz_dy)) !メッセージ出力 call MessageNotify( "M", "CFLCheckTimeLongVelY", "Courant number of VelY for DelTimeLong = %f", d=(/CFL/) ) end subroutine CFLCheckTimeLongVelY
Subroutine : | |
xyr_VelZ(imin:imax,jmin:jmax,kmin:kmax) : | real(DP), intent(in) |
水平速度に対して CFL 条件をチェック.
subroutine CFLCheckTimeLongVelZ( xyr_VelZ ) ! !水平速度に対して CFL 条件をチェック. ! !暗黙の型宣言禁止 implicit none !内部変数 real(DP), intent(in) :: xyr_VelZ (imin:imax,jmin:jmax,kmin:kmax) real(DP) :: CFL !CFL 条件を求める CFL = DelTimeLong * maxval(abs(xyr_VelZ/xyz_dz)) !メッセージ出力 call MessageNotify( "M", "CFLCheckTimeLongVelZ", "Courant number of VelZ for DelTimeLong = %f", d=(/CFL/) ) end subroutine CFLCheckTimeLongVelZ
Subroutine : | |||
xyz_VelSound(imin:imax,jmin:jmax, kmin:kmax) : | real(DP), intent(in)
|
音波に対して CFL 条件をチェック
subroutine CFLCheckTimeShort( xyz_VelSound ) ! !音波に対して CFL 条件をチェック ! !暗黙の型宣言禁止 implicit none !変数定義 real(DP), intent(in) :: xyz_VelSound (imin:imax,jmin:jmax, kmin:kmax) !音速 real(DP) :: CFL !クーラン数 real(DP) :: DxyzMin !最小格子間隔 !音速と CFL 条件を求める DxyzMin = min(min(minval(xyz_dx), minval(xyz_dy)), minval(xyz_dz)) CFL = DelTimeShort * maxval(xyz_VelSound) / DxyzMin !メッセージ call MessageNotify( "M", "CFLCheckTimeShort", "Sound Wave Velocity = %f", d=(/maxval(xyz_VelSound)/) ) call MessageNotify( "M", "CFLCheckTimeShort", "min(DelX, DelY, DelZ) = %f", d=(/DxyzMin/) ) call MessageNotify( "M", "CFLCheckTimeShort", "DelTimeShort = %f", d=(/DelTimeSHort/) ) !警告メッセージ if ( CFL >= 1.0) then call MessageNotify( "E", "CFLCheckTimeShort", "CFL Condition is broken, DelTimeShort * VelSound > min(DelX, DelZ)") else call MessageNotify( "M", "CFLCheckTimeShort", "Courant number for DelTimeSort = %f", d=(/CFL/) ) end if end subroutine CFLCheckTimeShort