Changeset 2160 for LMDZ5/branches/testing/libf/phylmd/calwake.F90
- Timestamp:
- Nov 28, 2014, 4:36:29 PM (10 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 2072,2075-2115,2117-2126,2128-2158
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/libf/phylmd/calwake.F90
r1999 r2160 233 233 RETURN 234 234 END SUBROUTINE calwake 235 236 SUBROUTINE calwake_scal(paprs, pplay, dtime, t, q, omgb, dt_dwn, dq_dwn, &237 m_dwn, m_up, dt_a, dq_a, sigd, wdt_pbl, wdq_pbl, udt_pbl, udq_pbl, &238 wake_deltat, wake_deltaq, wake_dth, wake_h, wake_s, wake_dens, wake_pe, &239 wake_fip, wake_gfl, dt_wake, dq_wake, wake_k, undi_t, undi_q, &240 wake_omgbdth, wake_dp_omgb, wake_dtke, wake_dqke, wake_dtpbl, wake_dqpbl, &241 wake_omg, wake_dp_deltomg, wake_spread, wake_cstar, wake_d_deltat_gw, &242 wake_ddeltat, wake_ddeltaq)243 ! **************************************************************244 ! *245 ! CALWAKE *246 ! interface avec le schema de calcul de la poche *247 ! froide *248 ! *249 ! written by : CHERUY Frederique, 13/03/2000, 10.31.05 *250 ! modified by : ROEHRIG Romain, 01/30/2007 *251 ! **************************************************************252 253 USE dimphy254 IMPLICIT NONE255 ! ======================================================================256 257 include "dimensions.h"258 ! ccc#include "dimphy.h"259 include "YOMCST.h"260 261 ! Arguments262 ! ----------263 264 INTEGER i, l, ktopw265 REAL dtime266 267 REAL paprs(klon, klev+1), pplay(klon, klev)268 REAL t(klon, klev), q(klon, klev), omgb(klon, klev)269 REAL dt_dwn(klon, klev), dq_dwn(klon, klev), m_dwn(klon, klev)270 REAL m_up(klon, klev)271 REAL dt_a(klon, klev), dq_a(klon, klev)272 REAL wdt_pbl(klon, klev), wdq_pbl(klon, klev)273 REAL udt_pbl(klon, klev), udq_pbl(klon, klev)274 REAL wake_deltat(klon, klev), wake_deltaq(klon, klev)275 REAL dt_wake(klon, klev), dq_wake(klon, klev)276 REAL wake_d_deltat_gw(klon, klev)277 REAL wake_h(klon), wake_s(klon)278 REAL wake_dth(klon, klev)279 REAL wake_pe(klon), wake_fip(klon), wake_gfl(klon)280 REAL undi_t(klon, klev), undi_q(klon, klev)281 REAL wake_omgbdth(klon, klev), wake_dp_omgb(klon, klev)282 REAL wake_dtke(klon, klev), wake_dqke(klon, klev)283 REAL wake_dtpbl(klon, klev), wake_dqpbl(klon, klev)284 REAL wake_omg(klon, klev+1), wake_dp_deltomg(klon, klev)285 REAL wake_spread(klon, klev), wake_cstar(klon)286 REAL wake_ddeltat(klon, klev), wake_ddeltaq(klon, klev)287 REAL d_deltatw(klev), d_deltaqw(klev)288 INTEGER wake_k(klon)289 REAL sigd(klon)290 REAL wake_dens(klon)291 292 ! Variable internes293 ! -----------------294 295 REAL aire296 REAL p(klev), ph(klev+1), pi(klev)297 REAL te(klev), qe(klev), omgbe(klev), dtdwn(klev), dqdwn(klev)298 REAL dta(klev), dqa(klev)299 REAL wdtpbl(klev), wdqpbl(klev)300 REAL udtpbl(klev), udqpbl(klev)301 REAL amdwn(klev), amup(klev)302 REAL dtw(klev), dqw(klev), dth(klev), d_deltat_gw(klev)303 REAL dtls(klev), dqls(klev)304 REAL tu(klev), qu(klev)305 REAL hw, sigmaw, wape, fip, gfl306 REAL omgbdth(klev), dp_omgb(klev)307 REAL dtke(klev), dqke(klev)308 REAL dtpbl(klev), dqpbl(klev)309 REAL omg(klev+1), dp_deltomg(klev), spread(klev), cstar310 REAL sigd0, wdens311 312 REAL rdcp313 314 ! print *, '-> calwake, wake_s ', wake_s(1)315 316 rdcp = 1./3.5317 318 ! -----------------------------------------------------------319 DO i = 1, klon ! a vectoriser320 ! ----------------------------------------------------------321 322 323 DO l = 1, klev324 p(l) = pplay(i, l)325 ph(l) = paprs(i, l)326 pi(l) = (pplay(i,l)/100000.)**rdcp327 328 te(l) = t(i, l)329 qe(l) = q(i, l)330 omgbe(l) = omgb(i, l)331 332 dtdwn(l) = dt_dwn(i, l)333 dqdwn(l) = dq_dwn(i, l)334 dta(l) = dt_a(i, l)335 dqa(l) = dq_a(i, l)336 wdtpbl(l) = wdt_pbl(i, l)337 wdqpbl(l) = wdq_pbl(i, l)338 udtpbl(l) = udt_pbl(i, l)339 udqpbl(l) = udq_pbl(i, l)340 END DO341 342 sigd0 = sigd(i)343 ! print*, 'sigd0,sigd', sigd0, sigd(i)344 ph(klev+1) = 0.345 346 ktopw = wake_k(i)347 348 DO l = 1, klev349 dtw(l) = wake_deltat(i, l)350 dqw(l) = wake_deltaq(i, l)351 END DO352 353 DO l = 1, klev354 dtls(l) = dt_wake(i, l)355 dqls(l) = dq_wake(i, l)356 END DO357 358 hw = wake_h(i)359 sigmaw = wake_s(i)360 361 ! fkc les flux de masses sont evalues aux niveaux et valent 0 a la362 ! surface363 ! fkc on veut le flux de masse au milieu des couches364 365 DO l = 1, klev - 1366 amdwn(l) = 0.5*(m_dwn(i,l)+m_dwn(i,l+1))367 amdwn(l) = (m_dwn(i,l+1))368 END DO369 370 ! au sommet le flux de masse est nul371 372 amdwn(klev) = 0.5*m_dwn(i, klev)373 374 DO l = 1, klev375 amup(l) = m_up(i, l)376 END DO377 378 CALL wake_scal(p, ph, pi, dtime, sigd0, te, qe, omgbe, dtdwn, dqdwn, &379 amdwn, amup, dta, dqa, wdtpbl, wdqpbl, udtpbl, udqpbl, dtw, dqw, dth, &380 hw, sigmaw, wape, fip, gfl, dtls, dqls, ktopw, omgbdth, dp_omgb, wdens, &381 tu, qu, dtke, dqke, dtpbl, dqpbl, omg, dp_deltomg, spread, cstar, &382 d_deltat_gw, d_deltatw, d_deltaqw)383 384 IF (ktopw>0) THEN385 DO l = 1, klev386 wake_deltat(i, l) = dtw(l)387 wake_deltaq(i, l) = dqw(l)388 wake_d_deltat_gw(i, l) = d_deltat_gw(l)389 wake_omgbdth(i, l) = omgbdth(l)390 wake_dp_omgb(i, l) = dp_omgb(l)391 wake_dtke(i, l) = dtke(l)392 wake_dqke(i, l) = dqke(l)393 wake_dtpbl(i, l) = dtpbl(l)394 wake_dqpbl(i, l) = dqpbl(l)395 wake_omg(i, l) = omg(l)396 wake_dp_deltomg(i, l) = dp_deltomg(l)397 wake_spread(i, l) = spread(l)398 wake_dth(i, l) = dth(l)399 dt_wake(i, l) = dtls(l)400 dq_wake(i, l) = dqls(l)401 undi_t(i, l) = tu(l)402 undi_q(i, l) = qu(l)403 wake_ddeltat(i, l) = d_deltatw(l)404 wake_ddeltaq(i, l) = d_deltaqw(l)405 END DO406 ELSE407 DO l = 1, klev408 wake_deltat(i, l) = 0.409 wake_deltaq(i, l) = 0.410 wake_d_deltat_gw(i, l) = 0.411 wake_omgbdth(i, l) = 0.412 wake_dp_omgb(i, l) = 0.413 wake_dtke(i, l) = 0.414 wake_dqke(i, l) = 0.415 wake_omg(i, l) = 0.416 wake_dp_deltomg(i, l) = 0.417 wake_spread(i, l) = 0.418 wake_dth(i, l) = 0.419 dt_wake(i, l) = 0.420 dq_wake(i, l) = 0.421 undi_t(i, l) = te(l)422 undi_q(i, l) = qe(l)423 END DO424 END IF425 426 wake_h(i) = hw427 wake_s(i) = sigmaw428 wake_pe(i) = wape429 wake_fip(i) = fip430 wake_gfl(i) = gfl431 wake_k(i) = ktopw432 wake_cstar(i) = cstar433 wake_dens(i) = wdens434 435 END DO436 437 RETURN438 END SUBROUTINE calwake_scal
Note: See TracChangeset
for help on using the changeset viewer.