Ignore:
Timestamp:
Nov 28, 2014, 4:36:29 PM (10 years ago)
Author:
Laurent Fairhead
Message:

Merged trunk changes -r2070:2158 into testing branch. Compilation problems introduced by revision r2155 have been corrected by hand

Location:
LMDZ5/branches/testing
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ5/branches/testing

  • LMDZ5/branches/testing/libf/phylmd/calwake.F90

    r1999 r2160  
    233233  RETURN
    234234END 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 dimphy
    254   IMPLICIT NONE
    255   ! ======================================================================
    256 
    257   include "dimensions.h"
    258   ! ccc#include "dimphy.h"
    259   include "YOMCST.h"
    260 
    261   ! Arguments
    262   ! ----------
    263 
    264   INTEGER i, l, ktopw
    265   REAL dtime
    266 
    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 internes
    293   ! -----------------
    294 
    295   REAL aire
    296   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, gfl
    306   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), cstar
    310   REAL sigd0, wdens
    311 
    312   REAL rdcp
    313 
    314   ! print *, '-> calwake, wake_s ', wake_s(1)
    315 
    316   rdcp = 1./3.5
    317 
    318   ! -----------------------------------------------------------
    319   DO i = 1, klon ! a vectoriser
    320     ! ----------------------------------------------------------
    321 
    322 
    323     DO l = 1, klev
    324       p(l) = pplay(i, l)
    325       ph(l) = paprs(i, l)
    326       pi(l) = (pplay(i,l)/100000.)**rdcp
    327 
    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 DO
    341 
    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, klev
    349       dtw(l) = wake_deltat(i, l)
    350       dqw(l) = wake_deltaq(i, l)
    351     END DO
    352 
    353     DO l = 1, klev
    354       dtls(l) = dt_wake(i, l)
    355       dqls(l) = dq_wake(i, l)
    356     END DO
    357 
    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 la
    362     ! surface
    363     ! fkc  on veut le flux de masse au milieu des couches
    364 
    365     DO l = 1, klev - 1
    366       amdwn(l) = 0.5*(m_dwn(i,l)+m_dwn(i,l+1))
    367       amdwn(l) = (m_dwn(i,l+1))
    368     END DO
    369 
    370     ! au sommet le flux de masse est nul
    371 
    372     amdwn(klev) = 0.5*m_dwn(i, klev)
    373 
    374     DO l = 1, klev
    375       amup(l) = m_up(i, l)
    376     END DO
    377 
    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) THEN
    385       DO l = 1, klev
    386         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 DO
    406     ELSE
    407       DO l = 1, klev
    408         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 DO
    424     END IF
    425 
    426     wake_h(i) = hw
    427     wake_s(i) = sigmaw
    428     wake_pe(i) = wape
    429     wake_fip(i) = fip
    430     wake_gfl(i) = gfl
    431     wake_k(i) = ktopw
    432     wake_cstar(i) = cstar
    433     wake_dens(i) = wdens
    434 
    435   END DO
    436 
    437   RETURN
    438 END SUBROUTINE calwake_scal
Note: See TracChangeset for help on using the changeset viewer.