10 xzs_thread,xzs_xy_thread,xslopang_thread,xslopazi_thread,xsurf_triangle_thread,&
11 xxhat,xyhat,xxhat_thread,xyhat_thread,nnxloc,nnyloc,nixloc,niyloc,&
12 lrevertgrid,nix,niy,nindx1_x,nindx2_x,nindx1_y,nindx2_y
14 USE modd_surfex_mpi, ONLY : nrank, npio, nproc, ncomm, nsize, nindex, nsize_task
18 INTEGER,
INTENT(IN)::jpindx1,jpindx2
19 INTEGER,
SAVE::nindx1_mpi_omp,nindx2_mpi_omp,iminmpi
27 IF(nindex(jj)==nrank)
THEN
37 nindx1_mpi_omp=iminmpi+jpindx1-1
38 nindx2_mpi_omp=iminmpi+jpindx2-1
42 nindx1_x=mod(nindx1_mpi_omp-1,nix)+1
43 nindx2_x=mod(nindx2_mpi_omp-1,nix)+3
44 nindx1_y=niy-(nindx2_mpi_omp-1)/nix
45 nindx2_y=niy-(nindx1_mpi_omp-1)/nix+2
47 nindx1_x=mod(nindx1_mpi_omp-1,nix)+1
48 nindx2_x=mod(nindx2_mpi_omp-1,nix)+3
49 nindx1_y=(nindx1_mpi_omp-1)/nix+1
50 nindx2_y=(nindx2_mpi_omp-1)/nix+3
53 nnxloc=nindx2_x-nindx1_x+1
54 nnyloc=nindx2_y-nindx1_y+1
58 ALLOCATE(xzs_thread(nnxloc,nnyloc))
59 ALLOCATE(xzs_xy_thread(nnxloc,nnyloc))
60 ALLOCATE(xslopang_thread(nnxloc,nnyloc,4))
61 ALLOCATE(xslopazi_thread(nnxloc,nnyloc,4))
62 ALLOCATE(xsurf_triangle_thread(nnxloc,nnyloc,4))
64 ALLOCATE(xxhat_thread(nnxloc))
65 ALLOCATE(xyhat_thread(nnyloc))
68 xxhat_thread(:)=xxhat(nindx1_x:nindx2_x)
69 xyhat_thread(:)=xyhat(nindx1_y:nindx2_y)
71 xzs_thread=xzsl(nindx1_x:nindx2_x,nindx1_y:nindx2_y)
72 xzs_xy_thread=xzs_xy(nindx1_x:nindx2_x,nindx1_y:nindx2_y)
73 xslopang_thread=xslopang(nindx1_x:nindx2_x,nindx1_y:nindx2_y,:)
74 xslopazi_thread=xslopazi(nindx1_x:nindx2_x,nindx1_y:nindx2_y,:)
75 xsurf_triangle_thread=xsurf_triangle(nindx1_x:nindx2_x,nindx1_y:nindx2_y,:)
subroutine local_slope_param(JPINDX1, JPINDX2)