Subroutine : |
|
xyz_UB(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in)
: | .
東西風速. Eastward wind
|
|
xyz_VB(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in)
: | .
南北風速. Northward wind
|
|
xyz_TempB(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in)
: | . 温度.
Temperature
|
|
xyz_QVapB(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in)
: | . 比湿.
Specific humidity
|
|
xy_PsB(0:imax-1, 1:jmax) : | real(DP), intent(in)
: | . 地表面気圧. Surface pressure
|
|
xyz_UN(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(inout)
: | . 東西風速. Eastward
wind
|
|
xyz_VN(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(inout)
: | . 南北風速.
Northward wind
|
|
xyz_TempN(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(inout)
: | . 温度. Temperature
|
|
xyz_QVapN(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(inout)
: | . 比湿. Specific
humidity
|
|
xy_PsN(0:imax-1, 1:jmax) : | real(DP), intent(inout)
: | . 地表面気圧. Surface pressure
|
|
xyz_UA(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in)
: | .
東西風速. Eastward wind
|
|
xyz_VA(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in)
: | .
南北風速. Northward wind
|
|
xyz_TempA(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in)
: | . 温度.
Temperature
|
|
xyz_QVapA(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in)
: | . 比湿.
Specific humidity
|
|
xy_PsA(0:imax-1, 1:jmax) : | real(DP), intent(in)
: | . 地表面気圧. Surface pressure
|
|
予報変数にタイムフィルターを適用します.
Time filter is applied to predictional variables.
subroutine TimeFilter( xyz_UB, xyz_VB, xyz_TempB, xyz_QVapB, xy_PsB, xyz_UN, xyz_VN, xyz_TempN, xyz_QVapN, xy_PsN, xyz_UA, xyz_VA, xyz_TempA, xyz_QVapA, xy_PsA )
!
! 予報変数にタイムフィルターを適用します.
!
! Time filter is applied to predictional variables.
!
! モジュール引用 ; USE statements
!
! 時刻管理
! Time control
!
use timeset, only: TimesetClockStart, TimesetClockStop
! 宣言文 ; Declaration statements
!
implicit none
real(DP), intent(in):: xyz_UB (0:imax-1, 1:jmax, 1:kmax)
! $ u (t-\Delta t) $ . 東西風速. Eastward wind
real(DP), intent(in):: xyz_VB (0:imax-1, 1:jmax, 1:kmax)
! $ v (t-\Delta t) $ . 南北風速. Northward wind
real(DP), intent(in):: xyz_TempB (0:imax-1, 1:jmax, 1:kmax)
! $ T (t-\Delta t) $ . 温度. Temperature
real(DP), intent(in):: xyz_QVapB (0:imax-1, 1:jmax, 1:kmax)
! $ q (t-\Delta t) $ . 比湿. Specific humidity
real(DP), intent(in):: xy_PsB (0:imax-1, 1:jmax)
! $ p_s (t-\Delta t) $ . 地表面気圧. Surface pressure
real(DP), intent(inout):: xyz_UN (0:imax-1, 1:jmax, 1:kmax)
! $ u (t) $ . 東西風速. Eastward wind
real(DP), intent(inout):: xyz_VN (0:imax-1, 1:jmax, 1:kmax)
! $ v (t) $ . 南北風速. Northward wind
real(DP), intent(inout):: xyz_TempN (0:imax-1, 1:jmax, 1:kmax)
! $ T (t) $ . 温度. Temperature
real(DP), intent(inout):: xyz_QVapN (0:imax-1, 1:jmax, 1:kmax)
! $ q (t) $ . 比湿. Specific humidity
real(DP), intent(inout):: xy_PsN (0:imax-1, 1:jmax)
! $ p_s (t) $ . 地表面気圧. Surface pressure
real(DP), intent(in):: xyz_UA (0:imax-1, 1:jmax, 1:kmax)
! $ u (t+\Delta t) $ . 東西風速. Eastward wind
real(DP), intent(in):: xyz_VA (0:imax-1, 1:jmax, 1:kmax)
! $ v (t+\Delta t) $ . 南北風速. Northward wind
real(DP), intent(in):: xyz_TempA (0:imax-1, 1:jmax, 1:kmax)
! $ T (t+\Delta t) $ . 温度. Temperature
real(DP), intent(in):: xyz_QVapA (0:imax-1, 1:jmax, 1:kmax)
! $ q (t+\Delta t) $ . 比湿. Specific humidity
real(DP), intent(in):: xy_PsA (0:imax-1, 1:jmax)
! $ p_s (t+\Delta t) $ . 地表面気圧. Surface pressure
! 作業変数
! Work variables
!
! 実行文 ; Executable statement
!
! 計算時間計測開始
! Start measurement of computation time
!
call TimesetClockStart( module_name )
! 初期化
! Initialization
!
if ( .not. timefilter_asselin1972_inited ) call TimeFiltInit
! ステップのチェック
! Check Step
!
CurStep = CurStep + 1
if ( CurStep - PrevStep < IntStep ) return
PrevStep = CurStep
! FilterParameter の有効性のチェック
! Check validity of "FilterParameter"
!
if ( FilterParameter == 0.0_DP ) return
! タイムフィルターを適用
! Apply time filter
!
xyz_UN = ( 1.0 - 2.0 * FilterParameter ) * xyz_UN + FilterParameter * ( xyz_UB + xyz_UA )
xyz_VN = ( 1.0 - 2.0 * FilterParameter ) * xyz_VN + FilterParameter * ( xyz_VB + xyz_VA )
xyz_TempN = ( 1.0 - 2.0 * FilterParameter ) * xyz_TempN + FilterParameter * ( xyz_TempB + xyz_TempA )
xyz_QVapN = ( 1.0 - 2.0 * FilterParameter ) * xyz_QVapN + FilterParameter * ( xyz_QVapB + xyz_QVapA )
xy_PsN = ( 1.0 - 2.0 * FilterParameter ) * xy_PsN + FilterParameter * ( xy_PsB + xy_PsA )
! 計算時間計測一時停止
! Pause measurement of computation time
!
call TimesetClockStop( module_name )
end subroutine TimeFilter