SURFEX v8.1
General documentation of Surfex
diag_surf_budget_flake.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 diag_surf_budget_flake (D, PRHOA, PSFTH, PDIR_SW, PSCA_SW, PLW, &
7  PDIR_ALB, PSCA_ALB, PLWUP, PSFZON, PSFMER )
8 ! ###############################################################################
9 !
10 !!**** *DIAG_SURF_BUDGET_FLAKE * - Computes diagnostics over lake
11 !!
12 !! PURPOSE
13 !! -------
14 !
15 !!** METHOD
16 !! ------
17 !!
18 !! REFERENCE
19 !! ---------
20 !!
21 !!
22 !! AUTHOR
23 !! ------
24 !! B. Decharme
25 !!
26 !! MODIFICATIONS
27 !! -------------
28 !! Original 04/2013
29 !!------------------------------------------------------------------
30 !
31 USE modd_diag_n, ONLY : diag_t
32 !
33 USE yomhook ,ONLY : lhook, dr_hook
34 USE parkind1 ,ONLY : jprb
35 !
36 IMPLICIT NONE
37 !
38 !* 0.1 declarations of arguments
39 !
40 TYPE(diag_t), INTENT(INOUT) :: D
41 !
42 REAL, DIMENSION(:), INTENT(IN) :: PRHOA ! air density
43 REAL, DIMENSION(:), INTENT(IN) :: PSFTH ! heat flux
44 REAL, DIMENSION(:,:),INTENT(IN):: PDIR_SW ! direct solar radiation (on horizontal surf.)
45 ! ! (W/m2)
46 REAL, DIMENSION(:,:),INTENT(IN):: PSCA_SW ! diffuse solar radiation (on horizontal surf.)
47 ! ! (W/m2)
48 REAL, DIMENSION(:), INTENT(IN) :: PLW ! longwave radiation (on horizontal surf.)
49 REAL, DIMENSION(:), INTENT(IN) :: PLWUP ! upward longwave radiation (W/m2)
50 REAL, DIMENSION(:,:),INTENT(IN):: PDIR_ALB ! direct albedo for each spectral band (-)
51 REAL, DIMENSION(:,:),INTENT(IN):: PSCA_ALB ! diffuse albedo for each spectral band (-)
52 REAL, DIMENSION(:), INTENT(IN) :: PSFZON ! zonal friction
53 REAL, DIMENSION(:), INTENT(IN) :: PSFMER ! meridional friction
54 !
55 !* 0.2 declarations of local variables
56 !
57 INTEGER :: ISWB ! number of SW bands
58 INTEGER :: JSWB ! loop counter on number of SW bands
59 REAL(KIND=JPRB) :: ZHOOK_HANDLE
60 !-------------------------------------------------------------------------------------
61 !
62 !
63 IF (lhook) CALL dr_hook('DIAG_SURF_BUDGET_FLAKE',0,zhook_handle)
64 iswb = SIZE(pdir_sw,2)
65 !
66 !* total incoming and outgoing SW
67 !
68 DO jswb=1,iswb
69  d%XSWBD(:,jswb) = pdir_sw(:,jswb) + psca_sw(:,jswb)
70  d%XSWBU(:,jswb) = pdir_sw(:,jswb) * pdir_alb(:,jswb) + psca_sw(:,jswb) * psca_alb(:,jswb)
71 ENDDO
72 !
73 d%XSWD(:) = 0.
74 d%XSWU(:) = 0.
75 DO jswb=1,iswb
76  d%XSWD(:)=d%XSWD(:)+d%XSWBD(:,jswb)
77  d%XSWU(:)=d%XSWU(:)+d%XSWBU(:,jswb)
78 ENDDO
79 !
80 !*incoming outgoing LW
81 !
82 d%XLWD(:)=plw(:)
83 d%XLWU(:)=plwup(:)
84 !
85 !* net radiation
86 !
87 d%XRN = d%XSWD(:) - d%XSWU(:) + d%XLWD(:) - d%XLWU(:)
88 !
89 !* sensible heat flux
90 !
91 d%XH = psfth(:)
92 !
93 !* storage flux
94 !
95 d%XGFLUX = d%XRN - d%XH - d%XLE
96 !
97 !* wind stress
98 !
99 d%XFMU = psfzon
100 !
101 d%XFMV = psfmer
102 IF (lhook) CALL dr_hook('DIAG_SURF_BUDGET_FLAKE',1,zhook_handle)
103 !
104 !-------------------------------------------------------------------------------------
105 !
106 END SUBROUTINE diag_surf_budget_flake
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
subroutine diag_surf_budget_flake(D, PRHOA, PSFTH, PDIR_SW, PSCA_SW, PLW, PDIR_ALB, PSCA_ALB, PLWUP, PSFZON, PSFMER)