18Subroutine shiftkerneltoeven(ispec, y_dim_kernel_orig,x_dim_kernel_orig, y_dim_kernel,x_dim_kernel,kernel_orig,kernel_shifted)
19 USE gft,
only: gft_prec
22 INTEGER,
INTENT(IN):: y_dim_kernel_orig,x_dim_kernel_orig, y_dim_kernel,x_dim_kernel, ispec
23 REAL(kind=gft_prec) ,
DIMENSION(1: y_dim_kernel_orig ,1: x_dim_kernel_orig),
INTENT(IN):: kernel_orig
25 REAL(kind=gft_prec) ,
DIMENSION(0: y_dim_kernel-1 ,x_dim_kernel),
INTENT(OUT):: kernel_shifted
28 REAL(kind=gft_prec),
DIMENSION(1: y_dim_kernel ,x_dim_kernel) :: kernel_help
29 INTEGER:: y_dim_kernel2, x_dim_kernel2
34 if (mod(y_dim_kernel_orig, 2)==0 .and. mod(x_dim_kernel_orig,2) == 0)
THEN
35 kernel_shifted(0: y_dim_kernel-1,1:x_dim_kernel)=kernel_orig
37 y_dim_kernel2=int(y_dim_kernel_orig/2)
38 x_dim_kernel2=int(x_dim_kernel_orig/2)
40 kernel_help( 1:y_dim_kernel2 , 1:x_dim_kernel_orig)=kernel_orig(1:(y_dim_kernel2 ),:)
42 kernel_help((y_dim_kernel2+1) , 1:x_dim_kernel_orig)=kernel_orig((y_dim_kernel2 +1),:)
43 kernel_help((y_dim_kernel2+2) , 1:x_dim_kernel_orig)=kernel_orig((y_dim_kernel2 +1),:)
44 kernel_help((y_dim_kernel2+3):y_dim_kernel, 1:x_dim_kernel_orig)=kernel_orig((y_dim_kernel2+2):y_dim_kernel_orig,:)
45 kernel_shifted(0:x_dim_kernel-1, 1:x_dim_kernel2) = kernel_help(:, 1 :x_dim_kernel2 )
46 kernel_shifted(0:x_dim_kernel-1,(x_dim_kernel2+1)) = kernel_help(:,(x_dim_kernel2+1) )
47 kernel_shifted(0:x_dim_kernel-1,(x_dim_kernel2+2)) = kernel_help(:,(x_dim_kernel2+1) )
48 kernel_shifted(0:x_dim_kernel-1,(x_dim_kernel2+3):x_dim_kernel ) = kernel_help(:,(x_dim_kernel2+2): x_dim_kernel_orig )
74 INTEGER,
INTENT(IN):: dim_y,dim_x
75 REAL(kind=gft_prec),
DIMENSION(0:(dim_y-1),dim_x),
INTENT(IN):: shifted_kernel
77 REAL(kind=gft_prec),
DIMENSION(0:(dim_y-1),dim_x),
INTENT(OUT):: reorderedkernel
78 INTEGER:: center_dim_y, center_dim_x,i1,j1,i,j
79 REAL:: dim_y2,dim_x2,sumReOrderedKAr
88 center_dim_y=anint( dim_y2)
89 center_dim_x=anint( dim_x2)
91 reorderedkernel(:,:)=0.
93 i1= mod((i+ 1 +center_dim_y),dim_y)
95 j1 = mod((j-1+center_dim_x),dim_x) + 1
96 reorderedkernel(i ,j ) = shifted_kernel(i1,j1)
99 sumreorderedkar = sum(reorderedkernel)
100 reorderedkernel=reorderedkernel/sumreorderedkar
subroutine shiftkerneltoeven(ispec, y_dim_kernel_orig, x_dim_kernel_orig, y_dim_kernel, x_dim_kernel, kernel_orig, kernel_shifted)
ShiftKernelToEven.