SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
flake_albedo.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 flake_albedo( PDIR_SW , PSCA_SW , KSW, &
7  pdir_alb , psca_alb, &
8  pglobal_sw, palb )
9 ! ##########################################################################
10 !
11 !!**** *FLAKE_ALBEDO*
12 !!
13 !! PURPOSE
14 !! -------
15 !
16 ! Calculates albedo and emissivity
17 !
18 !! EXTERNAL
19 !! --------
20 !!
21 !! none
22 !!
23 !! IMPLICIT ARGUMENTS
24 !! ------------------
25 !!
26 !! AUTHOR
27 !! ------
28 !!
29 !! P. Le Moigne * Meteo-France *
30 !!
31 !! Modified by P. Le Moigne - 10/2013 : bug in ZSW_UP declaration
32 !-------------------------------------------------------------------------------
33 !
34 !* 0. DECLARATIONS
35 ! ------------
36 !
37 !
38 USE modd_surf_par, ONLY : xundef
39 !
40 USE yomhook ,ONLY : lhook, dr_hook
41 USE parkind1 ,ONLY : jprb
42 !
43 IMPLICIT NONE
44 !
45 !* 0.1 declarations of arguments
46 !
47 REAL, DIMENSION(:,:), INTENT(IN) :: pdir_sw ! direct incoming solar radiation
48 REAL, DIMENSION(:,:), INTENT(IN) :: psca_sw ! diffuse incoming solar radiation
49 REAL, DIMENSION(:,:), INTENT(IN) :: pdir_alb ! direct albedo
50 REAL, DIMENSION(:,:), INTENT(IN) :: psca_alb ! diffuse albedo
51 INTEGER, INTENT(IN) :: ksw ! number of short-wave spectral bands
52 !
53 REAL, DIMENSION(:) , INTENT(OUT) :: pglobal_sw ! global incoming SW rad.
54 REAL, DIMENSION(:) , INTENT(OUT) :: palb ! albedo
55 !
56 !-------------------------------------------------------------------------------
57 !
58 !* 0. Local variables
59 ! ---------------
60 !
61 INTEGER :: jswb
62 REAL, DIMENSION(SIZE(PDIR_SW,1)) :: zsw_up
63 !
64 REAL(KIND=JPRB) :: zhook_handle
65 !
66 !-------------------------------------------------------------------------------
67 !
68 !* 1. surface albedo for each wavelength
69 ! ----------------------------------
70 !
71 IF (lhook) CALL dr_hook('FLAKE_ALBEDO',0,zhook_handle)
72 !
73 !* total shortwave incoming radiation
74 !
75  pglobal_sw(:) = 0.
76  DO jswb=1,ksw
77  pglobal_sw(:) = pglobal_sw(:) + (pdir_sw(:,jswb) + psca_sw(:,jswb))
78  END DO
79 !
80 !* total shortwave upcoming radiation
81 !
82  zsw_up(:) = 0.
83  DO jswb=1,ksw
84  zsw_up(:) = zsw_up(:) &
85  + pdir_alb(:,jswb) * pdir_sw(:,jswb) &
86  + psca_alb(:,jswb) * psca_sw(:,jswb)
87  END DO
88 !
89 !* global albedo
90 !
91  WHERE(pglobal_sw(:)>0.)
92  palb(:) = zsw_up(:) / pglobal_sw(:)
93  ELSEWHERE
94  palb(:) = pdir_alb(:,1)
95  END WHERE
96 !
97 IF (lhook) CALL dr_hook('FLAKE_ALBEDO',1,zhook_handle)
98 !
99 !-------------------------------------------------------------------------------
100 !
101 END SUBROUTINE flake_albedo
subroutine flake_albedo(PDIR_SW, PSCA_SW, KSW, PDIR_ALB, PSCA_ALB, PGLOBAL_SW, PALB)
Definition: flake_albedo.F90:6