SURFEX v8.1
General documentation of Surfex
init_water_sbl.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 init_water_sbl(SB, PPA, PPS, PTA, PQA, PRHOA, PU, PV, PRAIN, PSNOW, &
7  PSFTH, PSFTQ, PZREF, PUREF, PTS, PZ0 )
8 ! #################################################################################
9 !
10 !!**** *INIT_WATER_SBL* - inits water SBL profiles
11 !!
12 !! PURPOSE
13 !! -------
14 !
15 !!** METHOD
16 !! ------
17 !!
18 !! REFERENCE
19 !! ---------
20 !!
21 !!
22 !! AUTHOR
23 !! ------
24 !! S. Riette
25 !!
26 !! MODIFICATIONS
27 !! -------------
28 !! Original 03/2010
29 !!------------------------------------------------------------------
30 !
31 USE modd_canopy_n, ONLY : canopy_t
32 !
33 USE modd_csts, ONLY : xcpd, xrd, xp00, xtt, xg
34 USE modd_canopy_turb, ONLY : xalpsbl
35 !
36 USE modi_cls_wind
37 USE modi_cls_tq
38 USE modi_water_flux
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 TYPE(canopy_t), INTENT(INOUT) :: SB
48 !
49 REAL, DIMENSION(:), INTENT(IN) :: PPA ! pressure at forcing level (Pa)
50 REAL, DIMENSION(:), INTENT(IN) :: PPS ! pressure at atmospheric model surface (Pa)
51 REAL, DIMENSION(:), INTENT(IN) :: PTA ! air temperature forcing (K)
52 REAL, DIMENSION(:), INTENT(IN) :: PQA ! air humidity forcing (kg/m3)
53 REAL, DIMENSION(:), INTENT(IN) :: PRHOA ! air density (kg/m3)
54 REAL, DIMENSION(:), INTENT(IN) :: PU ! zonal wind (m/s)
55 REAL, DIMENSION(:), INTENT(IN) :: PV ! meridian wind (m/s)
56 REAL, DIMENSION(:), INTENT(IN) :: PSNOW ! snow precipitation (kg/m2/s)
57 REAL, DIMENSION(:), INTENT(IN) :: PRAIN ! liquid precipitation (kg/m2/s)
58 REAL, DIMENSION(:), INTENT(IN) :: PZREF ! height of T,q forcing (m)
59 REAL, DIMENSION(:), INTENT(IN) :: PUREF ! height of wind forcing (m)
60 REAL, DIMENSION(:), INTENT(IN) :: PTS ! surface temperature
61 !
62 REAL, DIMENSION(:), INTENT(INOUT) :: PZ0 ! roughness length
63 REAL, DIMENSION(:), INTENT(OUT) :: PSFTH ! flux of heat (W/m2)
64 REAL, DIMENSION(:), INTENT(OUT) :: PSFTQ ! flux of water vapor (kg/m2/s)
65 !
66 !* 0.2 declarations of local variables
67 !
68 !* forcing variables
69 !
70 REAL, DIMENSION(SIZE(PTA)) :: ZWIND ! lowest atmospheric level wind speed (m/s)
71 REAL, DIMENSION(SIZE(PTA)) :: ZEXNA ! Exner function at lowest SBL scheme level (-)
72 REAL, DIMENSION(SIZE(PTA)) :: ZQA ! specific humidity (kg/m3)
73 !
74 ! SBL turbulence scheme
75 !
76 REAL, DIMENSION(SIZE(PTA)) :: ZUSTAR ! friction velocity (m/s)
77 !
78 REAL, DIMENSION(SIZE(PTA)) :: ZEXNS
79 REAL, DIMENSION(SIZE(PTA)) :: ZQSAT
80 REAL, DIMENSION(SIZE(PTA)) :: ZCD
81 REAL, DIMENSION(SIZE(PTA)) :: ZCDN
82 REAL, DIMENSION(SIZE(PTA)) :: ZCH
83 REAL, DIMENSION(SIZE(PTA)) :: ZRI
84 REAL, DIMENSION(SIZE(PTA)) :: ZRESA_SEA
85 REAL, DIMENSION(SIZE(PTA)) :: ZZ0H
86 REAL, DIMENSION(SIZE(PTA)) :: ZCLS_WIND_ZON
87 REAL, DIMENSION(SIZE(PTA)) :: ZCLS_WIND_MER
88 REAL, DIMENSION(SIZE(PTA)) :: ZTNM
89 REAL, DIMENSION(SIZE(PTA)) :: ZQNM
90 REAL, DIMENSION(SIZE(PTA)) :: ZHUNM
91 REAL, DIMENSION(SIZE(PTA)) :: ZHU
92 INTEGER :: J
93 INTEGER :: JLAYER
94 LOGICAL :: GHANDLE_SIC = .false. ! no sea-ice model
95 REAL(KIND=JPRB) :: ZHOOK_HANDLE
96 !-------------------------------------------------------------------------------------
97 !
98 !* 1.2 Initialisation at first time step
99 ! ---------------------------------
100 !
101 IF (lhook) CALL dr_hook('INIT_WATER_SBL',0,zhook_handle)
102 !
103 zexna(:) = (ppa(:)/xp00)**(xrd/xcpd)
104 zexns(:) = (pps(:)/xp00)**(xrd/xcpd)
105 zqa(:) = pqa(:) / prhoa(:)
106 zwind(:) = sqrt(pu**2+pv**2)
107 !
108 !We choose the case CSEA_FLUX=DIRECT to compute CD, CDN, CH, RI and ZZ0H
109 !Iterative computation of PZ0 / CD, CDN, CH, ZH0
110 DO j=1,5
111  CALL water_flux(pz0, pta, zexna, prhoa, pts, zexns, zqa, prain, &
112  psnow, xtt, zwind, pzref, puref, &
113  pps, ghandle_sic, zqsat, psfth, psftq, zustar, &
114  zcd, zcdn, zch, zri, zresa_sea, zz0h )
115 ENDDO
116 !
117 !Initialisation of T, Q, Wind and TKE on all canopy levels
118 zhu(:)=1.
119 DO jlayer=1,sb%NLVL
120  !
121  CALL cls_tq(pta, zqa, ppa, pps, pzref, zcd, zch, zri, pts, zhu, zz0h, &
122  sb%XZ(:,jlayer), ztnm, zqnm, zhunm )
123  !
124  sb%XT(:,jlayer)=ztnm
125  sb%XQ(:,jlayer)=zqnm
126  !
127  CALL cls_wind(pu, pv, puref, zcd, zcdn, zri, sb%XZ(:,jlayer), &
128  zcls_wind_zon, zcls_wind_mer )
129  !
130  sb%XU (:,jlayer) = sqrt( zcls_wind_zon(:)**2 + zcls_wind_mer(:)**2 )
131  sb%XTKE (:,jlayer) = xalpsbl * zcd(:) * ( pu(:)**2 + pv(:)**2 )
132  sb%XP (:,jlayer) = ppa(:) + xg * prhoa(:) * ( sb%XZ(:,sb%NLVL) - sb%XZ(:,jlayer) )
133  !
134 ENDDO
135 !
136 IF (lhook) CALL dr_hook('INIT_WATER_SBL',1,zhook_handle)
137 !
138 END SUBROUTINE init_water_sbl
subroutine cls_wind(PZONA, PMERA, PHW, PCD, PCDN, PRI, PHV, PZON10M, PMER10M)
Definition: cls_wind.F90:7
real, save xcpd
Definition: modd_csts.F90:63
subroutine init_water_sbl(SB, PPA, PPS, PTA, PQA, PRHOA, PU, PV, PRAIN, PSNOW, PSFTH, PSFTQ, PZREF, PUREF, PTS, PZ0)
real, save xrd
Definition: modd_csts.F90:62
subroutine water_flux(PZ0SEA,
Definition: water_flux.F90:7
real, save xg
Definition: modd_csts.F90:55
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
real, save xtt
Definition: modd_csts.F90:66
real, save xp00
Definition: modd_csts.F90:57
subroutine cls_tq(PTA, PQA, PPA, PPS, PHT, PCD, PCH, PRI, PTS, PHU, PZ0H, PH, PTNM, PQNM, PHUNM)
Definition: cls_tq.F90:8