SCALE-RM
Data Types | Functions/Subroutines
scale_filter Module Reference

module FILTER More...

Functions/Subroutines

subroutine filter_hyperdiff_3d (KA, KS, KE, IA, IS, IE, JA, JS, JE, data, order, nite, limiter_sign)
 Hyper diffusion filter 3D. More...
 

Detailed Description

module FILTER

Description
Horizontal filter
Author
Team SCALE

Function/Subroutine Documentation

◆ filter_hyperdiff_3d()

subroutine scale_filter::filter_hyperdiff_3d ( integer, intent(in)  KA,
integer, intent(in)  KS,
integer, intent(in)  KE,
integer, intent(in)  IA,
integer, intent(in)  IS,
integer, intent(in)  IE,
integer, intent(in)  JA,
integer, intent(in)  JS,
integer, intent(in)  JE,
real(rp), dimension(ka,ia,ja), intent(inout)  data,
integer, intent(in)  order,
integer, intent(in)  nite,
real(rp), dimension(ka,ia,ja), intent(in), optional  limiter_sign 
)

Hyper diffusion filter 3D.

Definition at line 208 of file scale_filter.F90.

208  use scale_comm_cartesc, only: &
209  comm_vars8, &
210  comm_wait
211  use scale_prc, only: &
212  prc_abort
213  integer, intent(in) :: KA, KS, KE
214  integer, intent(in) :: IA, IS, IE
215  integer, intent(in) :: JA, JS, JE
216 
217  real(RP), intent(inout) :: data(KA,IA,JA)
218 
219  integer, intent(in) :: order
220  integer, intent(in) :: nite
221 
222  real(RP), intent(in), optional :: limiter_sign(KA,IA,JA)
223 
224  real(RP) :: work_data(IA,JA)
225  real(RP) :: work_sign(IA,JA)
226 
227  logical :: flag
228 
229  integer :: k, i, j
230 
231  if ( present(limiter_sign) ) then
232  flag = .true.
233  else
234  flag = .false.
235  end if
236 
237  do k = ks, ke
238 
239  !$omp parallel do
240  do j = js, je
241  do i = is, ie
242  work_data(i,j) = data(k,i,j)
243  end do
244  end do
245  if ( flag ) then
246  !$omp parallel do
247  do j = js, je
248  do i = is, ie
249  work_sign(i,j) = limiter_sign(k,i,j)
250  end do
251  end do
252 
253  call filter_hyperdiff_2d( ia, is, ie, ja, js, je, &
254  work_data(:,:), order, nite, &
255  limiter_sign = work_sign )
256 
257  else
258 
259  call filter_hyperdiff_2d( ia, is, ie, ja, js, je, &
260  work_data(:,:), order, nite )
261  end if
262 
263 
264  !$omp parallel do
265  do j = 1, ja
266  do i = 1, ia
267  data(k,i,j) = work_data(i,j)
268  end do
269  end do
270 
271  end do
272 
273 
274  return

References scale_prc::prc_abort().

Here is the call graph for this function:
scale_prc::prc_abort
subroutine, public prc_abort
Abort Process.
Definition: scale_prc.F90:342
scale_prc
module PROCESS
Definition: scale_prc.F90:11
scale_comm_cartesc
module COMMUNICATION
Definition: scale_comm_cartesC.F90:11