7 ptstep,psea,puref,prhoa,pu,pv,psfu,psfv)
45 USE yomhook
,ONLY : lhook, dr_hook
46 USE parkind1
,ONLY : jprb
49 USE modi_canopy_grid_update
50 USE modi_sso_beljaars04
60 REAL,
INTENT(IN) :: ptstep
61 REAL,
DIMENSION(:),
INTENT(IN) :: psea
62 REAL,
DIMENSION(:),
INTENT(IN) :: puref
63 REAL,
DIMENSION(:),
INTENT(IN) :: prhoa
64 REAL,
DIMENSION(:),
INTENT(IN) :: pu
65 REAL,
DIMENSION(:),
INTENT(IN) :: pv
66 REAL,
DIMENSION(:),
INTENT(INOUT) :: psfu
67 REAL,
DIMENSION(:),
INTENT(INOUT) :: psfv
71 REAL,
DIMENSION(SIZE(PU)) :: zwind
72 REAL,
DIMENSION(SIZE(PU)) :: zsso_stdev
73 REAL,
DIMENSION(SIZE(PU)) :: zustar
77 REAL,
DIMENSION(SIZE(PU)) :: zta
78 REAL,
DIMENSION(SIZE(PU)) :: zqa
79 REAL,
DIMENSION(SIZE(PU)) :: zpa
80 REAL,
DIMENSION(SIZE(PU),SSCP%NLVL) :: zt
81 REAL,
DIMENSION(SIZE(PU),SSCP%NLVL) :: zq
82 REAL,
DIMENSION(SIZE(PU),SSCP%NLVL) :: zlmo
83 REAL,
DIMENSION(SIZE(PU),SSCP%NLVL) :: zlm
84 REAL,
DIMENSION(SIZE(PU),SSCP%NLVL) :: zleps
85 REAL,
DIMENSION(SIZE(PU),SSCP%NLVL) :: zp
86 REAL,
DIMENSION(SIZE(PU)) :: zsflux_t
87 REAL,
DIMENSION(SIZE(PU)) :: zsflux_q
88 REAL,
DIMENSION(SIZE(PU),SSCP%NLVL) :: zforc_t
89 REAL,
DIMENSION(SIZE(PU),SSCP%NLVL) :: zdforc_tdt
90 REAL,
DIMENSION(SIZE(PU),SSCP%NLVL) :: zforc_q
91 REAL,
DIMENSION(SIZE(PU),SSCP%NLVL) :: zdforc_qdq
92 REAL,
DIMENSION(SIZE(PU)) :: zalfath
93 REAL,
DIMENSION(SIZE(PU)) :: zbetath
94 REAL,
DIMENSION(SIZE(PU)) :: zalfaq
95 REAL,
DIMENSION(SIZE(PU)) :: zbetaq
97 REAL,
DIMENSION(SIZE(PU), SSCP%NLVL) :: zforc_u
98 REAL,
DIMENSION(SIZE(PU), SSCP%NLVL) :: zdforc_udu
100 REAL,
DIMENSION(SIZE(PU), SSCP%NLVL) :: zforc_e
101 REAL,
DIMENSION(SIZE(PU), SSCP%NLVL) :: zdforc_ede
106 REAL,
DIMENSION(SIZE(PU)) :: zh
107 REAL,
DIMENSION(SIZE(PU)) :: zsflux_u
108 REAL,
DIMENSION(SIZE(PU)) :: zalfau
109 REAL,
DIMENSION(SIZE(PU)) :: zbetau
110 REAL(KIND=JPRB) :: zhook_handle
120 IF (lhook) CALL dr_hook(
'SSO_BE04_FRICTION_N',0,zhook_handle)
129 zwind = sqrt(pu**2+pv**2)
131 zsflux_u = - sqrt(psfu**2+psfv**2)
137 IF (any(sscp%XU(:,sscp%NLVL)==xundef))
THEN
138 DO jlayer=1,sscp%NLVL
140 sscp%XU (ji,jlayer) = max( zwind(ji) + sqrt(-zsflux_u(ji)) / xkarman &
141 * log(sscp%XZ(ji,jlayer)/sscp%XZ(ji,sscp%NLVL)) , 0.)
142 sscp%XTKE(ji,jlayer) = - xalpsbl * zsflux_u(ji)
153 zsso_stdev = uss%XSSO_STDEV
154 WHERE (zsso_stdev==xundef) zsso_stdev=0.
163 ini,sscp%NLVL,sscp%XZ,zsso_stdev,sscp%XU,zforc_u,zdforc_udu )
165 DO jlayer=1,sscp%NLVL
167 zforc_u(ji,sscp%NLVL) = zforc_u(ji,sscp%NLVL) * (1.0-psea(ji))
168 zdforc_udu(ji,sscp%NLVL) = zdforc_udu(ji,sscp%NLVL) * (1.0-psea(ji))
186 zforc_t(:,:) = xundef
187 zdforc_tdt(:,:) = xundef
188 zforc_q(:,:) = xundef
189 zdforc_qdq(:,:) = xundef
191 CALL
canopy_evol(ini, sscp%NLVL, ptstep, 2, sscp%XZ, zwind, zta, zqa, zpa, prhoa, &
192 zsflux_u, zsflux_t, zsflux_q, &
193 zforc_u, zdforc_udu, zforc_e, zdforc_ede, &
194 zforc_t, zdforc_tdt, zforc_q, zdforc_qdq, &
195 sscp%XZ, sscp%XZF, sscp%XDZ, sscp%XDZF, sscp%XU, sscp%XTKE, zt, zq, zlmo, zlm, &
197 zalfau, zbetau, zalfath, zbetath, zalfaq, zbetaq, &
206 psfu(:) = - pu(:)/zwind(:) * zustar(:)**2 * prhoa(:)
207 psfv(:) = - pv(:)/zwind(:) * zustar(:)**2 * prhoa(:)
210 IF (lhook) CALL dr_hook(
'SSO_BE04_FRICTION_N',1,zhook_handle)
subroutine sso_beljaars04(USS, KI, KLVL, PZ, PSSO_STDEV, PU, PFORC_U, PDFORC_UDU)
subroutine canopy_grid_update(KI, KLVL, PH, PZFORC, PZ, PZF, PDZ, PDZF)
subroutine sso_be04_friction_n(SSCP, USS, PTSTEP, PSEA, PUREF, PRHOA, PU, PV, PSFU, PSFV)
subroutine canopy_evol(KI, KLVL, PTSTEP, KIMPL, PZZ, PWIND, PTA, PQA, PPA, PRHOA, PSFLUX_U, PSFLUX_T, PSFLUX_Q, PFORC_U, PDFORC_UDU, PFORC_E, PDFORC_EDE, PFORC_T, PDFORC_TDT, PFORC_Q, PDFORC_QDQ, PZ, PZF, PDZ, PDZF, PU, PTKE, PT, PQ, PLMO, PLM, PLEPS, PP, PUSTAR, PALFAU, PBETAU, PALFATH, PBETATH, PALFAQ, PBETAQ, ONEUTRAL)