48 USE modi_canopy_grid_update
49 USE modi_sso_beljaars04
57 TYPE(
sso_t),
INTENT(INOUT) :: USS
59 REAL,
INTENT(IN) :: PTSTEP
60 REAL,
DIMENSION(:),
INTENT(IN) :: PSEA
61 REAL,
DIMENSION(:),
INTENT(IN) :: PUREF
62 REAL,
DIMENSION(:),
INTENT(IN) :: PRHOA
63 REAL,
DIMENSION(:),
INTENT(IN) :: PU
64 REAL,
DIMENSION(:),
INTENT(IN) :: PV
65 REAL,
DIMENSION(:),
INTENT(INOUT) :: PSFU
66 REAL,
DIMENSION(:),
INTENT(INOUT) :: PSFV
70 REAL,
DIMENSION(SIZE(PU)) :: ZWIND
71 REAL,
DIMENSION(SIZE(PU)) :: ZSSO_STDEV
72 REAL,
DIMENSION(SIZE(PU)) :: ZUSTAR
76 REAL,
DIMENSION(SIZE(PU)) :: ZTA
77 REAL,
DIMENSION(SIZE(PU)) :: ZQA
78 REAL,
DIMENSION(SIZE(PU)) :: ZPA
79 REAL,
DIMENSION(SIZE(PU),SB%NLVL) :: ZLM
80 REAL,
DIMENSION(SIZE(PU),SB%NLVL) :: ZLEPS
81 REAL,
DIMENSION(SIZE(PU),SB%NLVL) :: ZP
82 REAL,
DIMENSION(SIZE(PU)) :: ZSFLUX_T
83 REAL,
DIMENSION(SIZE(PU)) :: ZSFLUX_Q
84 REAL,
DIMENSION(SIZE(PU),SB%NLVL) :: ZFORC_T
85 REAL,
DIMENSION(SIZE(PU),SB%NLVL) :: ZDFORC_TDT
86 REAL,
DIMENSION(SIZE(PU),SB%NLVL) :: ZFORC_Q
87 REAL,
DIMENSION(SIZE(PU),SB%NLVL) :: ZDFORC_QDQ
88 REAL,
DIMENSION(SIZE(PU)) :: ZALFATH
89 REAL,
DIMENSION(SIZE(PU)) :: ZBETATH
90 REAL,
DIMENSION(SIZE(PU)) :: ZALFAQ
91 REAL,
DIMENSION(SIZE(PU)) :: ZBETAQ
93 REAL,
DIMENSION(SIZE(PU), SB%NLVL) :: ZFORC_U
94 REAL,
DIMENSION(SIZE(PU), SB%NLVL) :: ZDFORC_UDU
96 REAL,
DIMENSION(SIZE(PU), SB%NLVL) :: ZFORC_E
97 REAL,
DIMENSION(SIZE(PU), SB%NLVL) :: ZDFORC_EDE
102 REAL,
DIMENSION(SIZE(PU)) :: ZH
103 REAL,
DIMENSION(SIZE(PU)) :: ZSFLUX_U
104 REAL,
DIMENSION(SIZE(PU)) :: ZALFAU
105 REAL,
DIMENSION(SIZE(PU)) :: ZBETAU
106 REAL(KIND=JPRB) :: ZHOOK_HANDLE
116 IF (
lhook)
CALL dr_hook(
'SSO_BE04_FRICTION_N',0,zhook_handle)
125 zwind = sqrt(pu**2+pv**2)
127 zsflux_u = - sqrt(psfu**2+psfv**2)
133 IF (any(sb%XU(:,sb%NLVL)==
xundef))
THEN 136 sb%XU (ji,jlayer) = max( zwind(ji) + sqrt(-zsflux_u(ji)) /
xkarman &
137 * log(sb%XZ(ji,jlayer)/sb%XZ(ji,sb%NLVL)) , 0.)
138 sb%XTKE(ji,jlayer) = -
xalpsbl * zsflux_u(ji)
149 zsso_stdev = uss%XSSO_STDEV
150 WHERE (zsso_stdev==
xundef) zsso_stdev=0.
158 CALL sso_beljaars04(uss, sb, ini, zsso_stdev, zforc_u, zdforc_udu )
162 zforc_u(ji,sb%NLVL) = zforc_u(ji,sb%NLVL) * (1.0-psea(ji))
163 zdforc_udu(ji,sb%NLVL) = zdforc_udu(ji,sb%NLVL) * (1.0-psea(ji))
183 CALL canopy_evol(sb, ini, ptstep, 2, sb%XZ, zwind, zta, zqa, zpa, prhoa, &
184 zsflux_u, zsflux_t, zsflux_q, zforc_u, zdforc_udu, &
185 zforc_e, zdforc_ede, zforc_t, zdforc_tdt, &
186 zforc_q, zdforc_qdq, zlm, zleps, zustar, &
187 zalfau, zbetau, zalfath, zbetath, zalfaq, zbetaq, &
196 psfu(:) = - pu(:)/zwind(:) * zustar(:)**2 * prhoa(:)
197 psfv(:) = - pv(:)/zwind(:) * zustar(:)**2 * prhoa(:)
200 IF (
lhook)
CALL dr_hook(
'SSO_BE04_FRICTION_N',1,zhook_handle)
subroutine sso_beljaars04(USS, SB, KI, PSSO_STDEV, PFORC_U, PDFORC_UDU)
subroutine sso_be04_friction_n(SB, USS, PTSTEP, PSEA, PUREF, PRHOA, PU, PV, PSFU, PSFV)
subroutine canopy_evol(SB, KI, PTSTEP, KIMPL, PZZ, PWIND, PTA, PQA
subroutine canopy_grid_update(KI, PH, PZFORC, SB)