9 USE yomhook
,ONLY : lhook, dr_hook
10 USE parkind1
,ONLY : jprb
15 SUBROUTINE init_forc( PFORC_U, PDFORC_UDU, PFORC_E, PDFORC_EDE, &
16 pforc_t, pdforc_tdt, pforc_q, pdforc_qdq )
20 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pforc_u
21 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pdforc_udu
22 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pforc_e
23 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pdforc_ede
24 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pforc_t
25 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pdforc_tdt
26 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pforc_q
27 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pdforc_qdq
29 REAL(KIND=JPRB) :: zhook_handle
31 IF (lhook) CALL dr_hook(
'MODE_COUPLING_CANOPY:INIT_FORC',0,zhook_handle)
45 IF (lhook) CALL dr_hook(
'MODE_COUPLING_CANOPY:INIT_FORC',1,zhook_handle)
52 prhoa, palfau, pbetau, palfath, &
53 pbetath, palfaq, pbetaq, &
54 pppa, ptta, pqqa, puu, pvv, &
55 puuref, pzzref, pexna, &
56 ppew_aa_coef, ppew_bb_coef, &
57 ppet_aa_coef, ppet_bb_coef, &
58 ppeq_aa_coef, ppeq_bb_coef )
66 REAL,
DIMENSION(:),
INTENT(IN) :: pp
67 REAL,
DIMENSION(:),
INTENT(IN) :: ppa
68 REAL,
DIMENSION(:),
INTENT(IN) :: pt
69 REAL,
DIMENSION(:),
INTENT(IN) :: pq
70 REAL,
DIMENSION(:),
INTENT(IN) :: pu
71 REAL,
DIMENSION(:),
INTENT(IN) :: pv
72 REAL,
DIMENSION(:),
INTENT(IN) :: pz
73 REAL,
DIMENSION(:),
INTENT(IN) :: pxu
74 REAL,
DIMENSION(:),
INTENT(IN) :: prhoa
75 REAL,
DIMENSION(:),
INTENT(IN) :: palfau
76 REAL,
DIMENSION(:),
INTENT(IN) :: pbetau
77 REAL,
DIMENSION(:),
INTENT(IN) :: palfath
78 REAL,
DIMENSION(:),
INTENT(IN) :: pbetath
79 REAL,
DIMENSION(:),
INTENT(IN) :: palfaq
80 REAL,
DIMENSION(:),
INTENT(IN) :: pbetaq
81 REAL,
DIMENSION(:),
INTENT(OUT) :: pppa
82 REAL,
DIMENSION(:),
INTENT(OUT) :: ptta
83 REAL,
DIMENSION(:),
INTENT(OUT) :: pqqa
84 REAL,
DIMENSION(:),
INTENT(OUT) :: puu
85 REAL,
DIMENSION(:),
INTENT(OUT) :: pvv
86 REAL,
DIMENSION(:),
INTENT(OUT) :: puuref
87 REAL,
DIMENSION(:),
INTENT(OUT) :: pzzref
88 REAL,
DIMENSION(:),
INTENT(OUT) :: pexna
89 REAL,
DIMENSION(:),
INTENT(OUT) :: ppew_aa_coef
90 REAL,
DIMENSION(:),
INTENT(OUT) :: ppew_bb_coef
91 REAL,
DIMENSION(:),
INTENT(OUT) :: ppet_aa_coef
92 REAL,
DIMENSION(:),
INTENT(OUT) :: ppet_bb_coef
93 REAL,
DIMENSION(:),
INTENT(OUT) :: ppeq_aa_coef
94 REAL,
DIMENSION(:),
INTENT(OUT) :: ppeq_bb_coef
96 REAL(KIND=JPRB) :: zhook_handle
98 IF (lhook) CALL dr_hook(
'MODE_COUPLING_CANOPY:INIT_COUPLING_CANOPY',0,zhook_handle)
103 puu = pu / max(sqrt(pu**2+pv**2),xwindmin) * pxu(:)
104 pvv = pv / max(sqrt(pu**2+pv**2),xwindmin) * pxu(:)
108 pexna(:) = (pp(:)/xp00)**(xrd/xcpd)
109 WHERE (pp(:)==xundef)
110 pexna = (ppa/xp00)**(xrd/xcpd)
119 ppew_aa_coef = - palfau / prhoa
120 ppew_bb_coef = pbetau
121 ppet_aa_coef = - palfath / prhoa
122 ppet_bb_coef = pbetath
123 ppeq_aa_coef = - palfaq / prhoa
124 ppeq_bb_coef = pbetaq
126 IF (lhook) CALL dr_hook(
'MODE_COUPLING_CANOPY:INIT_COUPLING_CANOPY',1,zhook_handle)
133 pps, ppa, pta, pqa, pu, pv, &
135 ppew_a_coef, ppew_b_coef, &
136 ppet_a_coef, ppet_b_coef, &
137 ppeq_a_coef, ppeq_b_coef, &
138 pppa, ptta, pqqa, puu, pvv, &
140 ppew_aa_coef, ppew_bb_coef, &
141 ppet_aa_coef, ppet_bb_coef, &
142 ppeq_aa_coef, ppeq_bb_coef )
148 CHARACTER(LEN=1),
INTENT(IN) :: hcoupling
149 REAL,
DIMENSION(:),
INTENT(IN) :: pps
150 REAL,
DIMENSION(:),
INTENT(IN) :: ppa
151 REAL,
DIMENSION(:),
INTENT(IN) :: pta
152 REAL,
DIMENSION(:),
INTENT(IN) :: pqa
153 REAL,
DIMENSION(:),
INTENT(IN) :: pu
154 REAL,
DIMENSION(:),
INTENT(IN) :: pv
155 REAL,
DIMENSION(:),
INTENT(IN) :: puref
156 REAL,
DIMENSION(:),
INTENT(IN) :: pzref
157 REAL,
DIMENSION(:),
INTENT(IN) :: ppew_a_coef
158 REAL,
DIMENSION(:),
INTENT(IN) :: ppew_b_coef
159 REAL,
DIMENSION(:),
INTENT(IN) :: ppet_a_coef
160 REAL,
DIMENSION(:),
INTENT(IN) :: ppet_b_coef
161 REAL,
DIMENSION(:),
INTENT(IN) :: ppeq_a_coef
162 REAL,
DIMENSION(:),
INTENT(IN) :: ppeq_b_coef
163 REAL,
DIMENSION(:),
INTENT(OUT) :: pppa
164 REAL,
DIMENSION(:),
INTENT(OUT) :: ptta
165 REAL,
DIMENSION(:),
INTENT(OUT) :: pqqa
166 REAL,
DIMENSION(:),
INTENT(OUT) :: puu
167 REAL,
DIMENSION(:),
INTENT(OUT) :: pvv
168 REAL,
DIMENSION(:),
INTENT(OUT) :: puuref
169 REAL,
DIMENSION(:),
INTENT(OUT) :: pzzref
170 REAL,
DIMENSION(:),
INTENT(OUT) :: ppew_aa_coef
171 REAL,
DIMENSION(:),
INTENT(OUT) :: ppew_bb_coef
172 REAL,
DIMENSION(:),
INTENT(OUT) :: ppet_aa_coef
173 REAL,
DIMENSION(:),
INTENT(OUT) :: ppet_bb_coef
174 REAL,
DIMENSION(:),
INTENT(OUT) :: ppeq_aa_coef
175 REAL,
DIMENSION(:),
INTENT(OUT) :: ppeq_bb_coef
177 REAL(KIND=JPRB) :: zhook_handle
179 IF (lhook) CALL dr_hook(
'MODE_COUPLING_CANOPY:INIT_COUPLING',0,zhook_handle)
189 ppew_aa_coef = ppew_a_coef
190 ppew_bb_coef = ppew_b_coef
192 IF (hcoupling==
'I')
THEN
193 ppet_aa_coef = ppet_a_coef
194 ppeq_aa_coef = ppeq_a_coef
195 ppet_bb_coef = ppet_b_coef
196 ppeq_bb_coef = ppeq_b_coef
199 ppet_bb_coef = pta / (ppa/xp00)**(xrd/xcpd)
204 IF (lhook) CALL dr_hook(
'MODE_COUPLING_CANOPY:INIT_COUPLING',1,zhook_handle)
210 SUBROUTINE init_2m_10m( PP, PT, PQ, PXU, PXZ, PU, PV, PWIND, PRHOA, &
211 pt2m, pq2m, phu2m, pzon10m, pmer10m, &
212 pwind10m, pwind10m_max, pt2m_min, pt2m_max, &
213 phu2m_min, phu2m_max )
219 USE modi_interpol_sbl
223 REAL,
DIMENSION(:),
INTENT(IN) :: pp
224 REAL,
DIMENSION(:),
INTENT(IN) :: pt
225 REAL,
DIMENSION(:),
INTENT(IN) :: pq
226 REAL,
DIMENSION(:,:),
INTENT(IN) :: pxu
227 REAL,
DIMENSION(:,:),
INTENT(IN) :: pxz
228 REAL,
DIMENSION(:),
INTENT(IN) :: pu
229 REAL,
DIMENSION(:),
INTENT(IN) :: pv
230 REAL,
DIMENSION(:),
INTENT(IN) :: pwind
231 REAL,
DIMENSION(:),
INTENT(IN) :: prhoa
232 REAL,
DIMENSION(:),
INTENT(OUT) :: pt2m
233 REAL,
DIMENSION(:),
INTENT(OUT) :: pq2m
234 REAL,
DIMENSION(:),
INTENT(OUT) :: phu2m
235 REAL,
DIMENSION(:),
INTENT(OUT) :: pzon10m
236 REAL,
DIMENSION(:),
INTENT(OUT) :: pmer10m
237 REAL,
DIMENSION(:),
INTENT(OUT) :: pwind10m
238 REAL,
DIMENSION(:),
INTENT(INOUT) :: pwind10m_max
239 REAL,
DIMENSION(:),
INTENT(INOUT) :: pt2m_min
240 REAL,
DIMENSION(:),
INTENT(INOUT) :: pt2m_max
241 REAL,
DIMENSION(:),
INTENT(INOUT) :: phu2m_min
242 REAL,
DIMENSION(:),
INTENT(INOUT) :: phu2m_max
244 REAL,
DIMENSION(SIZE(PT)) :: zu10
246 REAL(KIND=JPRB) :: zhook_handle
248 IF (lhook) CALL dr_hook(
'MODE_COUPLING_CANOPY:INIT_2M_10M',0,zhook_handle)
251 pt2m_min(:) = min(pt2m(:),pt2m_min(:))
252 pt2m_max(:) = max(pt2m(:),pt2m_max(:))
253 pq2m(:) = pq(:) / prhoa(:)
254 phu2m(:)= min( pq2m(:) /
qsat(pt2m(:),pp(:)) , 1.)
255 phu2m_min(:) = min(phu2m(:),phu2m_min(:))
256 phu2m_max(:) = max(phu2m(:),phu2m_max(:))
259 IF (zu10(jj)/=xundef)
THEN
260 IF (pwind(jj)>0.)
THEN
261 pzon10m(jj) = zu10(jj) * pu(jj)/pwind(jj)
262 pmer10m(jj) = zu10(jj) * pv(jj)/pwind(jj)
267 pwind10m(jj) = sqrt(pzon10m(jj)**2+pmer10m(jj)**2)
268 pwind10m_max(jj) = max(pwind10m(jj),pwind10m_max(jj))
272 pwind10m(jj) = xundef
273 pwind10m_max(jj) = xundef
277 IF (lhook) CALL dr_hook(
'MODE_COUPLING_CANOPY:INIT_2M_10M',1,zhook_handle)
subroutine init_coupling_canopy(PP, PPA, PT, PQ, PU, PV, PZ, PXU, 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)
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 interpol_sbl(PZ, PIN, PH, POUT)
subroutine init_2m_10m(PP, PT, PQ, PXU, PXZ, PU, PV, PWIND, PRHOA, PT2M, PQ2M, PHU2M, PZON10M, PMER10M, PWIND10M, PWIND10M_MAX, PT2M_MIN, PT2M_MAX, PHU2M_MIN, PHU2M_MAX)
subroutine init_forc(PFORC_U, PDFORC_UDU, PFORC_E, PDFORC_EDE, PFORC_T, PDFORC_TDT, PFORC_Q, PDFORC_QDQ)