SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
dispatch_wg.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 dispatch_wg (I, &
8  ki,pwg,pwgi,pdg)
9 ! ##########################
10 !
11 !!
12 !! PURPOSE
13 !! -------
14 ! from AVERAGE_DIAG_MISC_ISBA_n
15 !
16 !!** METHOD
17 !! ------
18 !
19 !! EXTERNAL
20 !! --------
21 !!
22 !! none
23 !!
24 !! IMPLICIT ARGUMENTS
25 !! ------------------
26 !!
27 !! REFERENCE
28 !! ---------
29 !!
30 !! AUTHOR
31 !! ------
32 !!
33 !! ELYAZIDI/HEYMES/RISTOR * Meteo-France *
34 !!
35 !! MODIFICATIONS
36 !! -------------
37 !!
38 !! Original 02/2011
39 !-------------------------------------------------------------------------------
40 !
41 !* 0. DECLARATIONS
42 ! ------------
43 !
44 !
45 !
46 USE modd_isba_n, ONLY : isba_t
47 !
48 USE modd_surf_par, ONLY : xundef, nundef
49 USE modd_isba_par, ONLY : xwgmin
50 USE modd_coupling_topd, ONLY : xatop
51 !
52 USE yomhook , ONLY : lhook, dr_hook
53 USE parkind1 , ONLY : jprb
54 !
55 !
56 IMPLICIT NONE
57 !
58 !* 0.1 declarations of argumentsXPATCH
59 
60 !
61 TYPE(isba_t), INTENT(INOUT) :: i
62 !
63  INTEGER, INTENT(IN) :: ki
64  REAL, DIMENSION(:,:), INTENT(IN) :: pwg
65  REAL, DIMENSION(:,:), INTENT(IN) :: pwgi
66  REAL, DIMENSION(:,:), INTENT(IN) :: pdg
67 !
68 !* 0.2 declarations of local variables
69  INTEGER :: jj, jlayer, jpatch ! loop indexes
70  INTEGER :: idepth
71  INTEGER :: ini, inp
72  REAL :: zwork,ztmp, zwork2
73  REAL, DIMENSION(SIZE(I%XPATCH,1)) :: zsumpatch
74  REAL, DIMENSION(SIZE(I%XPATCH,1),SIZE(I%XPATCH,2)) :: zfrac_patch2
75  REAL, DIMENSION(SIZE(I%XPATCH,1),SIZE(I%XPATCH,2)) :: zfrac_patch3
76  REAL, DIMENSION(SIZE(PWG,1),SIZE(PWG,2)) :: zwg_ctl
77  !
78  REAL(KIND=JPRB) :: zhook_handle
79 !-------------------------------------------------------------------------------
80 IF (lhook) CALL dr_hook('DISPATCH_WG',0,zhook_handle)
81 !
82 ini=SIZE(i%XPATCH,1)
83 inp=SIZE(i%XPATCH,2)
84 !
85  !DO JPATCH=1,INP
86  !
87  ! write(*,*) 'In dispatch XPATCH (1)',JPATCH,XPATCH(1,JPATCH),XWG(1,2,JPATCH)
88  !ENDDO
89 !write(*,*) 'In dispatch wg ,KI,INI,INP ',KI,INI,INP
90 IF (inp/=1)THEN
91  DO jpatch=1,inp
92  DO jj=1,ini
93  IF ((i%XPATCH(jj,jpatch)/=xundef).AND.(i%XPATCH(jj,jpatch)/=0.)&
94  .AND.(xatop(jj)==1.)) THEN
95  WHERE (i%XWG(jj,:,jpatch)/=xundef)
96  i%XWG(jj,:,jpatch) = pwg(jj,:)
97  i%XWGI(jj,:,jpatch)= pwgi(jj,:)
98  i%XDG(jj,:,jpatch) = pdg(jj,:)
99  ENDWHERE
100  ENDIF
101  ENDDO
102  ENDDO
103 
104 ELSE
105  i%XWG(:,:,1) = pwg(:,:)
106  i%XWGI(:,:,1)= pwgi(:,:)
107  i%XDG(:,:,1) = pdg(:,:)
108 ENDIF
109 !
110 WHERE (i%XWG(:,:,:)<xwgmin)
111  i%XWG(:,:,:)=xwgmin
112 ENDWHERE
113  !
114 IF (lhook) CALL dr_hook('DISPATCH_WG',1,zhook_handle)
115 
116 END SUBROUTINE dispatch_wg
117 
118 
subroutine dispatch_wg(I, KI, PWG, PWGI, PDG)
Definition: dispatch_wg.F90:7