! $Id: cos_window.f90 2022-11-02 09:51:28Z ychen $ !****s* fsi/cos_window * ! ! NAME ! runav - This subroutine performs COSINE filter ! ! SYNOPSIS ! call cos_window(x1, x2, dx1, dx2, x, w) ! ! DESCRIPTION ! This subroutine performs COSINE filter with dx1, dx2 points at each edges ! ! INPUTS ! REAL(wp), :: x1 ! REAL(wp), :: x2 ! REAL(wp), :: dx1 ! REAL(wp), :: dx2 ! REAL(wp), :: x ! ! OUTPUT ! REAL(wp), :: w cosine weighting ! ! AUTHOR ! Yong Chen, NOAA/NESDIS/STAR, yong.chen@noaa.gov ! ! COPYRIGHT ! Copyright (c) 2022-2023 Yong Chen ! For further details please refer to the file COPYRIGHT ! which you should have received as part of this distribution. ! !**** SUBROUTINE cos_window(x1, x2, dx1, dx2, x, w) USE typesizes, ONLY: wp => EightByteReal USE ropp_pp_constants, ONLY: Pi IMPLICIT NONE REAL(wp), INTENT(IN) :: x1 REAL(wp), INTENT(IN) :: x2 REAL(wp), INTENT(IN) :: dx1 REAL(wp), INTENT(IN) :: dx2 REAL(wp), INTENT(IN) :: x REAL(wp), INTENT(OUT) :: w IF ( (x >= x1 + dx1) .and. (x <= x2 - dx2) ) w = 1.0_wp IF ( (x <= x1 - dx1) .or. (x >= x2 + dx2) ) w = 0.0_wp IF ( (x < x1 + dx1) .and. (x > x1 - dx1) ) & w = (1.0_wp + dsin(Pi * (x - x1) / dx1 / 2.0_wp) ) / 2.0_wp IF ( (x > x2 - dx2) .and. (x < x2 + dx2) ) & w = (1.0_wp - dsin(Pi * (x - x2) / dx2 / 2.0_wp) ) / 2.0_wp END SUBROUTINE cos_window