SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
get_sfx_land.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  SUBROUTINE get_sfx_land (I, U, &
7  ocpl_gw,ocpl_flood,ocpl_calving, &
8  prunoff,pdrain,pcalving,precharge, &
9  psrcflood )
10 ! ###############################################################################
11 !
12 !!**** *GET_SFX_LAND* - routine to get some land surface variables from surfex
13 !! PURPOSE
14 !! -------
15 !!
16 !!** METHOD
17 !! ------
18 !!
19 !! EXTERNAL
20 !! --------
21 !!
22 !!
23 !! IMPLICIT ARGUMENTS
24 !! ------------------
25 !!
26 !! REFERENCE
27 !! ---------
28 !!
29 !!
30 !! AUTHOR
31 !! ------
32 !! B. Decharme *Meteo France*
33 !!
34 !! MODIFICATIONS
35 !! -------------
36 !! Original 10/2013
37 !-------------------------------------------------------------------------------
38 !
39 !* 0. DECLARATIONS
40 ! ------------
41 !
42 !
43 USE modd_isba_n, ONLY : isba_t
44 USE modd_surf_atm_n, ONLY : surf_atm_t
45 !
46 USE modd_surf_par, ONLY : xundef
47 !
48 !
49 !
51 !
52 USE yomhook ,ONLY : lhook, dr_hook
53 USE parkind1 ,ONLY : jprb
54 !
55 IMPLICIT NONE
56 !
57 !* 0.1 Declarations of arguments
58 ! -------------------------
59 !
60 !
61 TYPE(isba_t), INTENT(INOUT) :: i
62 TYPE(surf_atm_t), INTENT(INOUT) :: u
63 !
64 LOGICAL, INTENT(IN) :: ocpl_gw ! groundwater/surface key
65 LOGICAL, INTENT(IN) :: ocpl_flood ! flood key
66 LOGICAL, INTENT(IN) :: ocpl_calving ! calving key
67 !
68 REAL, DIMENSION(:), INTENT(OUT) :: prunoff ! Cumulated Surface runoff (kg/m2)
69 REAL, DIMENSION(:), INTENT(OUT) :: pdrain ! Cumulated Deep drainage (kg/m2)
70 REAL, DIMENSION(:), INTENT(OUT) :: pcalving ! Cumulated Calving flux (kg/m2)
71 REAL, DIMENSION(:), INTENT(OUT) :: precharge ! Cumulated Recharge to groundwater (kg/m2)
72 REAL, DIMENSION(:), INTENT(OUT) :: psrcflood ! Cumulated freshwater flux (kg/m2)
73 !
74 !* 0.2 Declarations of local variables
75 ! -------------------------------
76 !
77 REAL, DIMENSION(SIZE(I%XCPL_PFLOOD)) :: zsrcflood
78 !
79 REAL, DIMENSION(SIZE(PCALVING)) :: zcalving
80 !
81 REAL(KIND=JPRB) :: zhook_handle
82 !
83 !-------------------------------------------------------------------------------
84 IF (lhook) CALL dr_hook('GET_SFX_LAND',0,zhook_handle)
85 !-------------------------------------------------------------------------------
86 !
87 !* 1.0 Initialization
88 ! --------------
89 !
90 prunoff(:) = xundef
91 pdrain(:) = xundef
92 pcalving(:) = xundef
93 precharge(:) = xundef
94 psrcflood(:) = xundef
95 !
96 !* 2.0 Get variable over nature
97 ! ------------------------
98 !
99 IF(u%NSIZE_NATURE>0)THEN
100 !
101 ! * surface runoff
102 !
103  CALL unpack_same_rank(u%NR_NATURE,i%XCPL_RUNOFF(:),prunoff(:),xundef)
104  i%XCPL_RUNOFF (:) = 0.0
105 !
106 ! * deep drainage
107 !
108  CALL unpack_same_rank(u%NR_NATURE,i%XCPL_DRAIN(:),pdrain(:),xundef)
109  i%XCPL_DRAIN(:) = 0.0
110 !
111 ! * Calving flux
112 !
113  IF(ocpl_calving)THEN
114  CALL unpack_same_rank(u%NR_NATURE,i%XCPL_ICEFLUX(:),pcalving(:),xundef)
115  i%XCPL_ICEFLUX(:) = 0.0
116  ELSEIF(i%LGLACIER)THEN
117  i%XCPL_DRAIN (:) = i%XCPL_DRAIN(:) + i%XCPL_ICEFLUX(:)
118  i%XCPL_ICEFLUX(:) = 0.0
119  ENDIF
120 !
121 ! * groundwater recharge
122 !
123  IF(ocpl_gw)THEN
124  CALL unpack_same_rank(u%NR_NATURE,i%XCPL_RECHARGE(:),precharge(:),xundef)
125  i%XCPL_RECHARGE(:)=0.0
126  ENDIF
127 !
128 ! * floodplain source terms
129 !
130  IF(ocpl_flood)THEN
131  zsrcflood(:) = i%XCPL_PFLOOD(:)-i%XCPL_EFLOOD(:)-i%XCPL_IFLOOD(:)
132  i%XCPL_PFLOOD(:) = 0.0
133  i%XCPL_EFLOOD(:) = 0.0
134  i%XCPL_IFLOOD(:) = 0.0
135  CALL unpack_same_rank(u%NR_NATURE,zsrcflood(:),psrcflood(:),xundef)
136  ENDIF
137 !
138 ENDIF
139 !
140 !-------------------------------------------------------------------------------
141 IF (lhook) CALL dr_hook('GET_SFX_LAND',1,zhook_handle)
142 !-------------------------------------------------------------------------------
143 !
144 END SUBROUTINE get_sfx_land
subroutine get_sfx_land(I, U, OCPL_GW, OCPL_FLOOD, OCPL_CALVING, PRUNOFF, PDRAIN, PCALVING, PRECHARGE, PSRCFLOOD)
Definition: get_sfx_land.F90:6