SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
get_fluxn.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_flux_n (DGU, &
7  hprogram,ki,prn,ph,ple,plei,pgflux,pt2m,pq2m, &
8  phu2m,pzon10m,pmer10m,psurflwnet,psurfswnet,pcd,&
9  pevap, psubl )
10 ! ########################################
11 !
12 !!**** *GET_FLUX_n* - routine to get some surface fields
13 !!
14 !! PURPOSE
15 !! -------
16 !!
17 !!** METHOD
18 !! ------
19 !!
20 !! EXTERNAL
21 !! --------
22 !!
23 !!
24 !! IMPLICIT ARGUMENTS
25 !! ------------------
26 !!
27 !! REFERENCE
28 !! ---------
29 !!
30 !!
31 !! AUTHOR
32 !! ------
33 !! V. Masson *Meteo France*
34 !!
35 !! MODIFICATIONS
36 !! -------------
37 !! Original 01/2004
38 ! B. decharme 04/2013 : Add EVAP and SUBL diag
39 !-------------------------------------------------------------------------------
40 !
41 !* 0. DECLARATIONS
42 ! ------------
43 !
44 !
46 !
47 USE modi_get_luout
48 USE modd_surf_par, ONLY : xundef
49 !
50 !
51 USE yomhook ,ONLY : lhook, dr_hook
52 USE parkind1 ,ONLY : jprb
53 !
54 IMPLICIT NONE
55 !
56 !* 0.1 Declarations of arguments
57 ! -------------------------
58 !
59 !
60 TYPE(diag_surf_atm_t), INTENT(INOUT) :: dgu
61 !
62  CHARACTER(LEN=6), INTENT(IN) :: hprogram
63 INTEGER, INTENT(IN) :: ki ! Number of points
64 REAL, DIMENSION(KI), INTENT(OUT) :: prn ! Net radiation at surface (W/m2)
65 REAL, DIMENSION(KI), INTENT(OUT) :: ph ! Sensible heat flux (W/m2)
66 REAL, DIMENSION(KI), INTENT(OUT) :: ple ! Total Latent heat flux (W/m2)
67 REAL, DIMENSION(KI), INTENT(OUT) :: plei ! Solid Latent heat flux (W/m2)
68 REAL, DIMENSION(KI), INTENT(OUT) :: pgflux ! Net soil-vegetation flux (W/m2)
69 REAL, DIMENSION(KI), INTENT(OUT) :: pt2m ! Air temperature at 2 meters (K)
70 REAL, DIMENSION(KI), INTENT(OUT) :: pq2m ! Air humidity at 2 meters (kg/kg)
71 REAL, DIMENSION(KI), INTENT(OUT) :: phu2m ! Air relative humidity at 2 meters (-)
72 REAL, DIMENSION(KI), INTENT(OUT) :: pzon10m ! zonal Wind at 10 meters (m/s)
73 REAL, DIMENSION(KI), INTENT(OUT) :: pmer10m ! meridian Wind at 10 meters (m/s)
74 REAL, DIMENSION(KI), INTENT(OUT) :: psurflwnet ! LW net at the surface
75 REAL, DIMENSION(KI), INTENT(OUT) :: psurfswnet ! SW net at the surface
76 REAL, DIMENSION(KI), INTENT(OUT) :: pcd ! exchange coeficient at the surface
77 REAL, DIMENSION(KI), INTENT(OUT) :: pevap ! Total evapotranspiration (kg/m2/s)
78 REAL, DIMENSION(KI), INTENT(OUT) :: psubl ! Sublimation (kg/m2/s)
79 !
80 !
81 !* 0.2 Declarations of local variables
82 ! -------------------------------
83 !
84 INTEGER :: iluout
85 REAL(KIND=JPRB) :: zhook_handle
86 !
87 !-------------------------------------------------------------------------------
88 IF (lhook) CALL dr_hook('GET_FLUX_N',0,zhook_handle)
89  CALL get_luout(hprogram,iluout)
90 !-------------------------------------------------------------------------------
91 !
92 IF (dgu%LSURF_BUDGET) THEN
93  prn = dgu%XAVG_RN
94  ph = dgu%XAVG_H
95  ple = dgu%XAVG_LE
96  plei = dgu%XAVG_LEI
97  pgflux = dgu%XAVG_GFLUX
98  psurflwnet= dgu%XAVG_LWD-dgu%XAVG_LWU
99  psurfswnet= dgu%XAVG_SWD-dgu%XAVG_SWU
100  pevap = dgu%XAVG_EVAP
101  psubl = dgu%XAVG_SUBL
102  ELSE
103  prn = xundef
104  ph = xundef
105  ple = xundef
106  plei = xundef
107  pgflux = xundef
108  psurflwnet= xundef
109  psurfswnet= xundef
110  pevap = xundef
111  psubl = xundef
112 ENDIF
113 !
114 IF (dgu%N2M>0) THEN
115  pt2m = dgu%XAVG_T2M
116  pq2m = dgu%XAVG_Q2M
117  phu2m = dgu%XAVG_HU2M
118  pzon10m = dgu%XAVG_ZON10M
119  pmer10m = dgu%XAVG_MER10M
120  ELSE
121  pt2m = xundef
122  pq2m = xundef
123  phu2m = xundef
124  pzon10m = xundef
125  pmer10m = xundef
126 ENDIF
127 !
128 IF (dgu%LCOEF) THEN
129  pcd = dgu%XAVG_CD
130 ELSE
131  pcd = xundef
132 ENDIF
133 !
134 IF (lhook) CALL dr_hook('GET_FLUX_N',1,zhook_handle)
135 !==============================================================================
136 !
137 END SUBROUTINE get_flux_n
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:6
subroutine get_flux_n(DGU, HPROGRAM, KI, PRN, PH, PLE, PLEI, PGFLUX, PT2M, PQ2M, PHU2M, PZON10M, PMER10M, PSURFLWNET, PSURFSWNET, PCD, PEVAP, PSUBL)
Definition: get_fluxn.F90:6