6 SUBROUTINE coupling_seaflux_sbl_n (CHS, DTS, DGS, O, OR, G, S, SB, DST, SLT, &
7 HPROGRAM, HCOUPLING, PTIMEC, PTSTEP, KYEAR, KMONTH, KDAY, PTIME, &
8 KI, KSV, KSW, PTSUN, PZENITH, PZENITH2, PAZIM, PZREF, PUREF, &
9 PU, PV, PQA, PTA, PRHOA, PSV, PCO2, HSV, &
10 PRAIN, PSNOW, PLW, PDIR_SW, PSCA_SW, PSW_BANDS, PPS, PPA, &
11 PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV, &
12 PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF, PZ0, PZ0H, PQSURF, &
13 PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, &
61 USE modi_init_water_sbl
64 USE modi_canopy_grid_update
66 USE modi_coupling_seaflux_n
79 TYPE(
ocean_t),
INTENT(INOUT) :: O
81 TYPE(
grid_t),
INTENT(INOUT) :: G
84 TYPE(
dst_t),
INTENT(INOUT) :: DST
85 TYPE(
slt_t),
INTENT(INOUT) :: SLT
87 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
88 CHARACTER(LEN=1),
INTENT(IN) :: HCOUPLING
91 REAL,
INTENT(IN) :: PTIMEC
92 INTEGER,
INTENT(IN) :: KYEAR
93 INTEGER,
INTENT(IN) :: KMONTH
94 INTEGER,
INTENT(IN) :: KDAY
95 REAL,
INTENT(IN) :: PTIME
96 INTEGER,
INTENT(IN) :: KI
97 INTEGER,
INTENT(IN) :: KSV
98 INTEGER,
INTENT(IN) :: KSW
99 REAL,
DIMENSION(KI),
INTENT(IN) :: PTSUN
100 REAL,
INTENT(IN) :: PTSTEP
101 REAL,
DIMENSION(KI),
INTENT(IN) :: PZREF
102 REAL,
DIMENSION(KI),
INTENT(IN) :: PUREF
104 REAL,
DIMENSION(KI),
INTENT(IN) :: PTA
105 REAL,
DIMENSION(KI),
INTENT(IN) :: PQA
106 REAL,
DIMENSION(KI),
INTENT(IN) :: PRHOA
107 REAL,
DIMENSION(KI,KSV),
INTENT(IN) :: PSV
110 CHARACTER(LEN=6),
DIMENSION(KSV),
INTENT(IN):: HSV
111 REAL,
DIMENSION(KI),
INTENT(IN) :: PU
112 REAL,
DIMENSION(KI),
INTENT(IN) :: PV
113 REAL,
DIMENSION(KI,KSW),
INTENT(IN) :: PDIR_SW
115 REAL,
DIMENSION(KI,KSW),
INTENT(IN) :: PSCA_SW
117 REAL,
DIMENSION(KSW),
INTENT(IN) :: PSW_BANDS
118 REAL,
DIMENSION(KI),
INTENT(IN) :: PZENITH
119 REAL,
DIMENSION(KI),
INTENT(IN) :: PZENITH2
120 REAL,
DIMENSION(KI),
INTENT(IN) :: PAZIM
121 REAL,
DIMENSION(KI),
INTENT(IN) :: PLW
123 REAL,
DIMENSION(KI),
INTENT(IN) :: PPS
124 REAL,
DIMENSION(KI),
INTENT(IN) :: PPA
125 REAL,
DIMENSION(KI),
INTENT(IN) :: PCO2
126 REAL,
DIMENSION(KI),
INTENT(IN) :: PSNOW
127 REAL,
DIMENSION(KI),
INTENT(IN) :: PRAIN
130 REAL,
DIMENSION(KI),
INTENT(OUT) :: PSFTH
131 REAL,
DIMENSION(KI),
INTENT(OUT) :: PSFTQ
132 REAL,
DIMENSION(KI),
INTENT(OUT) :: PSFU
133 REAL,
DIMENSION(KI),
INTENT(OUT) :: PSFV
134 REAL,
DIMENSION(KI),
INTENT(OUT) :: PSFCO2
135 REAL,
DIMENSION(KI,KSV),
INTENT(OUT):: PSFTS
137 REAL,
DIMENSION(KI),
INTENT(OUT) :: PTRAD
138 REAL,
DIMENSION(KI,KSW),
INTENT(OUT):: PDIR_ALB
139 REAL,
DIMENSION(KI,KSW),
INTENT(OUT):: PSCA_ALB
140 REAL,
DIMENSION(KI),
INTENT(OUT) :: PEMIS
142 REAL,
DIMENSION(KI),
INTENT(OUT) :: PTSURF
143 REAL,
DIMENSION(KI),
INTENT(OUT) :: PZ0
144 REAL,
DIMENSION(KI),
INTENT(OUT) :: PZ0H
145 REAL,
DIMENSION(KI),
INTENT(OUT) :: PQSURF
147 REAL,
DIMENSION(KI),
INTENT(IN) :: PPEW_A_COEF
148 REAL,
DIMENSION(KI),
INTENT(IN) :: PPEW_B_COEF
149 REAL,
DIMENSION(KI),
INTENT(IN) :: PPET_A_COEF
150 REAL,
DIMENSION(KI),
INTENT(IN) :: PPEQ_A_COEF
151 REAL,
DIMENSION(KI),
INTENT(IN) :: PPET_B_COEF
152 REAL,
DIMENSION(KI),
INTENT(IN) :: PPEQ_B_COEF
153 CHARACTER(LEN=2),
INTENT(IN) :: HTEST
159 REAL,
DIMENSION(KI) :: ZWIND
160 REAL,
DIMENSION(KI) :: ZEXNA
161 REAL,
DIMENSION(KI) :: ZTA
162 REAL,
DIMENSION(KI) :: ZPA
163 REAL,
DIMENSION(KI) :: ZZREF
164 REAL,
DIMENSION(KI) :: ZUREF
165 REAL,
DIMENSION(KI) :: ZU
166 REAL,
DIMENSION(KI) :: ZV
167 REAL,
DIMENSION(KI) :: ZQA
168 REAL,
DIMENSION(KI) :: ZPEQ_A_COEF
169 REAL,
DIMENSION(KI) :: ZPEQ_B_COEF
174 REAL,
DIMENSION(KI) :: ZSFLUX_U
175 REAL,
DIMENSION(KI) :: ZSFLUX_T
176 REAL,
DIMENSION(KI) :: ZSFLUX_Q
177 REAL,
DIMENSION(KI,SB%NLVL) :: ZFORC_U
178 REAL,
DIMENSION(KI,SB%NLVL) :: ZDFORC_UDU
180 REAL,
DIMENSION(KI,SB%NLVL) :: ZFORC_E
181 REAL,
DIMENSION(KI,SB%NLVL) :: ZDFORC_EDE
183 REAL,
DIMENSION(KI,SB%NLVL) :: ZFORC_T
184 REAL,
DIMENSION(KI,SB%NLVL) :: ZDFORC_TDT
186 REAL,
DIMENSION(KI,SB%NLVL) :: ZFORC_Q
187 REAL,
DIMENSION(KI,SB%NLVL) :: ZDFORC_QDQ
189 REAL,
DIMENSION(KI,SB%NLVL) :: ZLM
190 REAL,
DIMENSION(KI,SB%NLVL) :: ZLEPS
191 REAL,
DIMENSION(KI) :: ZH
192 REAL,
DIMENSION(KI) :: ZUSTAR
194 REAL,
DIMENSION(KI) :: ZPET_A_COEF
195 REAL,
DIMENSION(KI) :: ZPET_B_COEF
196 REAL,
DIMENSION(KI) :: ZPEW_A_COEF
197 REAL,
DIMENSION(KI) :: ZPEW_B_COEF
199 REAL,
DIMENSION(KI) :: ZALFAU
200 REAL,
DIMENSION(KI) :: ZBETAU
201 REAL,
DIMENSION(KI) :: ZALFATH
202 REAL,
DIMENSION(KI) :: ZBETATH
203 REAL,
DIMENSION(KI) :: ZALFAQ
204 REAL,
DIMENSION(KI) :: ZBETAQ
207 CHARACTER(LEN=1) :: GCOUPLING
208 REAL(KIND=JPRB) :: ZHOOK_HANDLE
215 IF (
lhook)
CALL dr_hook(
'COUPLING_SEAFLUX_SBL_N',0,zhook_handle)
231 IF(any(sb%XT(:,:) ==
xundef))
THEN 232 CALL init_water_sbl(sb, ppa, pps, pta, pqa, prhoa, pu, pv, prain, psnow, &
233 psfth, psftq, pzref, puref, s%XSST, s%XZ0 )
240 CALL init_forc(zforc_u, zdforc_udu, zforc_e, zdforc_ede, &
241 zforc_t, zdforc_tdt, zforc_q, zdforc_qdq )
250 zwind = sqrt(pu**2+pv**2)
251 CALL canopy_evol(sb, ki, ptstep,1, sb%XZ, zwind, pta, pqa, ppa, prhoa, &
252 zsflux_u, zsflux_t, zsflux_q, zforc_u, zdforc_udu, &
253 zforc_e, zdforc_ede, zforc_t, zdforc_tdt, &
254 zforc_q, zdforc_qdq, zlm, zleps, zustar, &
255 zalfau, zbetau, zalfath, zbetath, zalfaq ,zbetaq )
264 zalfau, zbetau, zalfath, zbetath,&
265 zalfaq, zbetaq, zpa, zta, zqa, &
266 zu, zv, zuref, zzref, zexna, &
267 zpew_a_coef, zpew_b_coef, &
268 zpet_a_coef, zpet_b_coef, &
269 zpeq_a_coef, zpeq_b_coef )
278 gcoupling = hcoupling
281 pps, ppa, pta, pqa, pu, pv, &
283 ppew_a_coef, ppew_b_coef, &
284 ppet_a_coef, ppet_b_coef, &
285 ppeq_a_coef, ppeq_b_coef, &
286 zpa, zta, zqa, zu, zv, &
288 zpew_a_coef, zpew_b_coef, &
289 zpet_a_coef, zpet_b_coef, &
290 zpeq_a_coef, zpeq_b_coef )
299 CALL coupling_seaflux_n(chs, dts, dgs, o, or, g, s, dst, slt, hprogram, gcoupling, &
300 ptimec, ptstep, kyear, kmonth, kday, ptime, ki, ksv, ksw, &
301 ptsun, pzenith, pzenith2, pazim, zzref, zuref, zu, zv, zqa, zta, prhoa, &
302 psv, pco2, hsv, prain, psnow, plw, pdir_sw, psca_sw, psw_bands, pps, zpa,&
303 psftq, psfth, psfts, psfco2, psfu, psfv, ptrad, pdir_alb, psca_alb, &
304 pemis, ptsurf, pz0, pz0h, pqsurf, zpew_a_coef, zpew_b_coef, &
305 zpet_a_coef, zpeq_a_coef, zpet_b_coef, zpeq_b_coef, htest)
312 IF (.NOT. s%LSBL .AND.
lhook)
CALL dr_hook(
'COUPLING_SEAFLUX_SBL_N',1,zhook_handle)
313 IF (.NOT. s%LSBL)
RETURN 320 CALL init_forc( zforc_u, zdforc_udu, zforc_e, zdforc_ede, &
321 zforc_t, zdforc_tdt, zforc_q, zdforc_qdq )
323 zsflux_u = - sqrt(psfu(:)**2+psfv(:)**2) / prhoa(:)
324 zsflux_t(:) = psfth(:) /
xcpd * zexna(:) / prhoa(:)
325 zsflux_q(:) = psftq(:)
332 zwind = sqrt(pu**2+pv**2)
333 CALL canopy_evol(sb,ki,ptstep,2,sb%XZ,zwind,pta,pqa,ppa,prhoa, &
334 zsflux_u,zsflux_t,zsflux_q, &
335 zforc_u,zdforc_udu,zforc_e,zdforc_ede, &
336 zforc_t,zdforc_tdt,zforc_q,zdforc_qdq, &
338 zalfau,zbetau,zalfath,zbetath,zalfaq,zbetaq )
340 DO jlayer=1,sb%NLVL-1
341 sb%XLMO(:,jlayer) = sb%XLMO(:,sb%NLVL)
349 IF (s%LSBL .AND. dgs%O%N2M>=1)
CALL init_2m_10m( sb, dgs%D, pu, pv, zwind, prhoa )
351 IF (
lhook)
CALL dr_hook(
'COUPLING_SEAFLUX_SBL_N',1,zhook_handle)
subroutine init_coupling(HCOUPLING, PPS, PPA, PTA, PQA, PU, PV, PUREF, PZREF, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPET_B_COEF, PPEQ_A_COEF, PPEQ_B_COEF, PPPA, PTTA, PQQA, PUU, PVV, PUUREF, PZZREF, PPEW_AA_COEF, PPEW_BB_COEF, PPET_AA_COEF, PPET_BB_COEF, PPEQ_AA_COEF, PPEQ_BB_COEF)
subroutine init_water_sbl(SB, PPA, PPS, PTA, PQA, PRHOA, PU, PV, PRAIN, PSNOW, PSFTH, PSFTQ, PZREF, PUREF, PTS, PZ0)
subroutine init_2m_10m(SB, D, PU, PV, PWIND, PRHOA)
subroutine canopy_evol(SB, KI, PTSTEP, KIMPL, PZZ, PWIND, PTA, PQA
subroutine coupling_seaflux_sbl_n(CHS, DTS, DGS, O, OR, G, S, SB, DST, SLT, HPROGRAM, HCOUPLING, PTIMEC, PTSTEP, KYEAR, KMONTH, KDAY, PTIME, KI, KSV, KSW, PTSUN, PZENITH, PZENITH2, PAZIM, PZREF, PUREF, PU, PV, PQA, PTA, PRHOA, PSV, PCO2, HSV, PRAIN, PSNOW, PLW, PDIR_SW, PSCA_SW, PSW_BANDS, PPS, PPA, PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV, PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF, PZ0, PZ0H, PQSURF, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, HTEST)
subroutine init_forc(PFORC_U, PDFORC_UDU, PFORC_E, PDFORC_EDE, PFORC_T, PDFORC_TDT, PFORC_Q, PDFORC_QDQ)
subroutine canopy_grid_update(KI, PH, PZFORC, SB)
subroutine coupling_seaflux_n(CHS, DTS, DGS, O, OR, G, S, DST, SLT, HPROGRAM, HCOUPLING, PTIMEC, PTSTEP, KYEAR, KMONTH, KDAY, PTIME, KI, KSV, KSW, PTSUN, PZENITH, PZENITH2, PAZIM, PZREF, PUREF, PU, PV, PQA, PTA, PRHOA, PSV, PCO2, HSV, PRAIN, PSNOW, PLW, PDIR_SW, PSCA_SW, PSW_BANDS, PPS, PPA, PSFTQ, PSFTH, PSFTS, PSFCO2, PSFU, PSFV, PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF, PZ0, PZ0H, PQSURF, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, HTEST)
subroutine init_coupling_canopy(SB, PPA, PU, PV, PRHOA, PALFAU, PBETAU, PALFATH, PBETATH, PALFAQ, PBETAQ, PPPA, PTTA, PQQA, PUU, PVV, PUUREF, PZZREF, PEXNA, PPEW_AA_COEF, PPEW_BB_COEF, PPET_AA_COEF, PPET_BB_COEF, PPEQ_AA_COEF, PPEQ_BB_COEF)