From 924db7f08483dc2d2516d3221e75bf353843084b Mon Sep 17 00:00:00 2001 From: Angel Farguell Date: Wed, 2 Mar 2022 12:09:26 -0700 Subject: [PATCH] Fixing domain dx and dy in calc_dfdx and calc_dfdy --- geogrid/src/process_tile_module.F | 40 +++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/geogrid/src/process_tile_module.F b/geogrid/src/process_tile_module.F index 8dea88c..19cd5b0 100644 --- a/geogrid/src/process_tile_module.F +++ b/geogrid/src/process_tile_module.F @@ -2046,7 +2046,7 @@ module process_tile_module end_mem_i, end_mem_j, end_mem_k, sr_y, mapfac) ! Modules - use gridinfo_module + use llxy_module implicit none @@ -2059,37 +2059,41 @@ module process_tile_module ! Local variables integer :: i, j, k - + real :: dom_dx, dom_dy + + ! Get domain resolution + call get_domain_resolution(dom_dx, dom_dy) + if (present(mapfac)) then do k=start_mem_k,end_mem_k do i=start_mem_i, end_mem_i do j=start_mem_j+1, end_mem_j-1 - dst_arr(i,j,k) = (src_arr(i,j+1,k) - src_arr(i,j-1,k))/(2.*dykm*mapfac(i,j)/sr_y) + dst_arr(i,j,k) = (src_arr(i,j+1,k) - src_arr(i,j-1,k))/(2.*dom_dy*mapfac(i,j)/sr_y) end do end do do i=start_mem_i, end_mem_i - dst_arr(i,start_mem_j,k) = (src_arr(i,start_mem_j+1,k) - src_arr(i,start_mem_j,k))/(dykm*mapfac(i,j)/sr_y) + dst_arr(i,start_mem_j,k) = (src_arr(i,start_mem_j+1,k) - src_arr(i,start_mem_j,k))/(dom_dy*mapfac(i,j)/sr_y) end do do i=start_mem_i, end_mem_i - dst_arr(i,end_mem_j,k) = (src_arr(i,end_mem_j,k) - src_arr(i,end_mem_j-1,k))/(dykm*mapfac(i,j)/sr_y) + dst_arr(i,end_mem_j,k) = (src_arr(i,end_mem_j,k) - src_arr(i,end_mem_j-1,k))/(dom_dy*mapfac(i,j)/sr_y) end do end do else do k=start_mem_k,end_mem_k do i=start_mem_i, end_mem_i do j=start_mem_j+1, end_mem_j-1 - dst_arr(i,j,k) = (src_arr(i,j+1,k) - src_arr(i,j-1,k))/(2.*dykm/sr_y) + dst_arr(i,j,k) = (src_arr(i,j+1,k) - src_arr(i,j-1,k))/(2.*dom_dy/sr_y) end do end do do i=start_mem_i, end_mem_i - dst_arr(i,start_mem_j,k) = (src_arr(i,start_mem_j+1,k) - src_arr(i,start_mem_j,k))/(dykm/sr_y) + dst_arr(i,start_mem_j,k) = (src_arr(i,start_mem_j+1,k) - src_arr(i,start_mem_j,k))/(dom_dy/sr_y) end do do i=start_mem_i, end_mem_i - dst_arr(i,end_mem_j,k) = (src_arr(i,end_mem_j,k) - src_arr(i,end_mem_j-1,k))/(dykm/sr_y) + dst_arr(i,end_mem_j,k) = (src_arr(i,end_mem_j,k) - src_arr(i,end_mem_j-1,k))/(dom_dy/sr_y) end do end do end if @@ -2107,7 +2111,7 @@ module process_tile_module start_mem_k, end_mem_i, end_mem_j, end_mem_k, sr_x, mapfac) ! Modules - use gridinfo_module + use llxy_module implicit none @@ -2120,37 +2124,41 @@ module process_tile_module ! Local variables integer :: i, j, k - + real :: dom_dx, dom_dy + + ! Get domain resolution + call get_domain_resolution(dom_dx, dom_dy) + if (present(mapfac)) then do k=start_mem_k, end_mem_k do i=start_mem_i+1, end_mem_i-1 do j=start_mem_j, end_mem_j - dst_arr(i,j,k) = (src_arr(i+1,j,k) - src_arr(i-1,j,k))/(2.*dxkm*mapfac(i,j)/sr_x) + dst_arr(i,j,k) = (src_arr(i+1,j,k) - src_arr(i-1,j,k))/(2.*dom_dx*mapfac(i,j)/sr_x) end do end do do j=start_mem_j, end_mem_j - dst_arr(start_mem_i,j,k) = (src_arr(start_mem_i+1,j,k) - src_arr(start_mem_i,j,k))/(dxkm*mapfac(i,j)/sr_x) + dst_arr(start_mem_i,j,k) = (src_arr(start_mem_i+1,j,k) - src_arr(start_mem_i,j,k))/(dom_dx*mapfac(i,j)/sr_x) end do do j=start_mem_j, end_mem_j - dst_arr(end_mem_i,j,k) = (src_arr(end_mem_i,j,k) - src_arr(end_mem_i-1,j,k))/(dxkm*mapfac(i,j)/sr_x) + dst_arr(end_mem_i,j,k) = (src_arr(end_mem_i,j,k) - src_arr(end_mem_i-1,j,k))/(dom_dx*mapfac(i,j)/sr_x) end do end do else do k=start_mem_k, end_mem_k do i=start_mem_i+1, end_mem_i-1 do j=start_mem_j, end_mem_j - dst_arr(i,j,k) = (src_arr(i+1,j,k) - src_arr(i-1,j,k))/(2.*dxkm/sr_x) + dst_arr(i,j,k) = (src_arr(i+1,j,k) - src_arr(i-1,j,k))/(2.*dom_dx/sr_x) end do end do do j=start_mem_j, end_mem_j - dst_arr(start_mem_i,j,k) = (src_arr(start_mem_i+1,j,k) - src_arr(start_mem_i,j,k))/(dxkm/sr_x) + dst_arr(start_mem_i,j,k) = (src_arr(start_mem_i+1,j,k) - src_arr(start_mem_i,j,k))/(dom_dx/sr_x) end do do j=start_mem_j, end_mem_j - dst_arr(end_mem_i,j,k) = (src_arr(end_mem_i,j,k) - src_arr(end_mem_i-1,j,k))/(dxkm/sr_x) + dst_arr(end_mem_i,j,k) = (src_arr(end_mem_i,j,k) - src_arr(end_mem_i-1,j,k))/(dom_dx/sr_x) end do end do end if -- 2.11.4.GIT