SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
topd_to_isba_slope.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 !-----------------------------------------------------------------
6 ! ####################
7  SUBROUTINE topd_to_isba_slope (USS, &
8  ki)
9 ! ####################
10 !
11 !!**** *TOPD_TO_ISBA*
12 !!
13 !! PURPOSE
14 !! -------
15 !
16 !
17 !
18 !
19 !!** METHOD
20 !! ------
21 !
22 !! EXTERNAL
23 !! --------
24 !!
25 !! none
26 !!
27 !! IMPLICIT ARGUMENTS
28 !! ------------------
29 !!
30 !!
31 !!
32 !!
33 !!
34 !! REFERENCE
35 !! ---------
36 !!
37 !!
38 !!
39 !! AUTHOR
40 !! ------
41 !!
42 !! B. Vincendon * Meteo-France *
43 !!
44 !! MODIFICATIONS
45 !! -------------
46 !!
47 !! Original 12/11/2012
48 !-------------------------------------------------------------------------------
49 !
50 !* 0. DECLARATIONS
51 ! ------------
52 !
53 !
55 !
56 USE modd_topodyn, ONLY : nncat, nnmc, xtanb
57 USE modd_coupling_topd, ONLY : nmaskt,nnpix
58 USE modd_surf_par, ONLY : nundef
59 !
60 USE yomhook ,ONLY : lhook, dr_hook
61 USE parkind1 ,ONLY : jprb
62 !
63 IMPLICIT NONE
64 !
65 !* 0.1 declarations of arguments
66 !
67 !
68 !
69 TYPE(surf_atm_sso_t), INTENT(INOUT) :: uss
70 !
71 INTEGER, INTENT(IN) :: ki ! Grid dimensions
72 !
73 !* 0.2 declarations of local variables
74 !
75 !
76 INTEGER :: jcat,jpix,jj ! loop control
77 REAL, DIMENSION(KI) :: zcount ! TOPO pixel number in an ISBA pixel
78  ! on the full grid
79 REAL, DIMENSION(KI) :: zsso_slope
80 REAL(KIND=JPRB) :: zhook_handle
81 !-------------------------------------------------------------------------------
82 !
83 IF (lhook) CALL dr_hook('TOPD_TO_ISBA_SLOPE',0,zhook_handle)
84 !
85 !* 1.0 Compute Mean slope over each ISBA_MESH
86 ! ----------------------------------------------------------------------
87 !
88 !write(*,*) 'pente avt topmodel',MINVAL(XSSO_SLOPE),MAXVAL(XSSO_SLOPE),SUM(XSSO_SLOPE,MASK=XSSO_SLOPE/=XUNDEF)
89 !
90 zsso_slope = uss%XSSO_SLOPE
91 !
92 zcount(:) = REAL(nnpix(:))
93 
94 WHERE (zcount /= 0.0)
95  zsso_slope = 0.
96 ENDWHERE
97 !
98 DO jcat=1,nncat
99  DO jpix=1,nnmc(jcat)
100  IF (nmaskt(jcat,jpix) /= nundef) THEN
101  zsso_slope(nmaskt(jcat,jpix)) = zsso_slope(nmaskt(jcat,jpix)) + xtanb(jcat,jpix)
102  ENDIF
103  ENDDO
104 ENDDO
105 !
106 WHERE (zcount /= 0.0)
107  zsso_slope = zsso_slope / zcount
108 ENDWHERE
109 !
110 uss%XSSO_SLOPE = zsso_slope
111 !
112 !write(*,*) 'pente apres modification', &
113 ! MINVAL(XSSO_SLOPE),MAXVAL(XSSO_SLOPE),COUNT(ZCOUNT/=0.0),SUM(XSSO_SLOPE,MASK=XSSO_SLOPE/=XUNDEF)
114 !
115 IF (lhook) CALL dr_hook('TOPD_TO_ISBA_SLOPE',1,zhook_handle)
116 !
117 END SUBROUTINE topd_to_isba_slope
subroutine topd_to_isba_slope(USS, KI)