SURFEX v8.1
General documentation of Surfex
local_slope_param.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 SUBROUTINE local_slope_param(JPINDX1,JPINDX2)
6 
7 !! 03/14 : M Lafaysse, modifs for optimization and parallelization
8 
13 
15 
16 IMPLICIT NONE
17 
18 INTEGER,INTENT(IN)::JPINDX1,JPINDX2
19 INTEGER,SAVE::NINDX1_MPI_OMP,NINDX2_MPI_OMP,IMINMPI
20 INTEGER::JJ
21 
22 
23 ! Il faut déterminer la position de début du thread MPI par rapport au ZZS1D_FULL de init_slope_param :
24 IF (nproc>1) THEN
25  DO jj=1,SIZE(nindex)
26  IF(nindex(jj)==nrank) THEN
27  iminmpi=jj
28  EXIT
29  ENDIF
30  END DO
31 ELSE
32  iminmpi=1
33 END IF
34 
35 nindx1_mpi_omp=iminmpi+jpindx1-1
36 nindx2_mpi_omp=iminmpi+jpindx2-1
37 
38 
39 IF (lrevertgrid) THEN
40  nindx1_x=mod(nindx1_mpi_omp-1,nix)+1
41  nindx2_x=mod(nindx2_mpi_omp-1,nix)+3
42  nindx1_y=niy-(nindx2_mpi_omp-1)/nix
43  nindx2_y=niy-(nindx1_mpi_omp-1)/nix+2
44 ELSE
45  nindx1_x=mod(nindx1_mpi_omp-1,nix)+1
46  nindx2_x=mod(nindx2_mpi_omp-1,nix)+3
47  nindx1_y=(nindx1_mpi_omp-1)/nix+1
48  nindx2_y=(nindx2_mpi_omp-1)/nix+3
49 ENDIF
50 
53 nixloc=nnxloc-2
54 niyloc=nnyloc-2
55 
56 ALLOCATE(xzs_thread(nnxloc,nnyloc))
57 ALLOCATE(xzs_xy_thread(nnxloc,nnyloc))
58 ALLOCATE(xslopang_thread(nnxloc,nnyloc,4))
59 ALLOCATE(xslopazi_thread(nnxloc,nnyloc,4))
61 
62 ALLOCATE(xxhat_thread(nnxloc))
63 ALLOCATE(xyhat_thread(nnyloc))
64 
65 
68 
74 
75 
76 END SUBROUTINE local_slope_param
integer, save nindx1_y
real, dimension(:,:,:), allocatable xslopazi
real, dimension(:,:), allocatable xzs_thread
real, dimension(:,:,:), allocatable xsurf_triangle_thread
real, dimension(:), allocatable xyhat
real, dimension(:), allocatable xxhat_thread
subroutine local_slope_param(JPINDX1, JPINDX2)
real, dimension(:,:,:), allocatable xsurf_triangle
real, dimension(:), allocatable xxhat
integer, save nindx1_x
integer, dimension(:), allocatable nsize_task
real, dimension(:), allocatable xyhat_thread
real, dimension(:,:), allocatable xzs_xy_thread
real, dimension(:,:), allocatable xzs_xy
real, dimension(:,:), allocatable xzsl
real, dimension(:,:,:), allocatable xslopang_thread
integer, dimension(:), allocatable nindex
real, dimension(:,:,:), allocatable xslopazi_thread
integer, save nindx2_y
real, dimension(:,:,:), allocatable xslopang
integer, save nindx2_x