Ignore:
Timestamp:
Jul 29, 2024, 11:01:04 PM (8 weeks ago)
Author:
abarral
Message:

Put YOMCST.h into modules

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/Amaury_dev/libf/phylmd/tilft43.F90

    r5113 r5144  
    1 
    21! $Header$
    32
    43SUBROUTINE tlift43(p, t, q, qs, gz, icb, nk, tvp, tpk, clw, nd, nl, kk)
     4  USE lmdz_yomcst
     5
    56  IMPLICIT NONE
    67  REAL gz(nd), tpk(nd), clw(nd), p(nd)
    78  REAL t(nd), q(nd), qs(nd), tvp(nd), lv0
    89  INTEGER icb, nk, nd, nl, kk
    9   REAL cpd, cpv,  cl, g, rowl, gravity, cpvmcl, eps, epsi
     10  REAL cpd, cpv, cl, g, rowl, gravity, cpvmcl, eps, epsi
    1011  REAL ah0, cpp, cpinv, tg, qg, alv, s, ahg, tc, denom, es
    11   INTEGER i, nst, nsb, j 
     12  INTEGER i, nst, nsb, j
    1213  ! ***   ASSIGN VALUES OF THERMODYNAMIC CONSTANTS     ***
    1314
     
    2223  !      ROWL=1000.0
    2324  ! ajouts:
    24   include "YOMCST.h"
     25
    2526  cpd = rcpd
    2627  cpv = rcpv
     
    2829  lv0 = rlvtt
    2930  g = rg
    30   rowl = ratm/100.
     31  rowl = ratm / 100.
    3132  gravity = rg !sb: Pr que gravite ne devienne pas humidite!
    3233  ! sb --
    3334
    3435  cpvmcl = cl - cpv
    35   eps = rd/rv
    36   epsi = 1./eps
     36  eps = rd / rv
     37  epsi = 1. / eps
    3738
    3839  ! ***  CALCULATE CERTAIN PARCEL QUANTITIES, INCLUDING STATIC ENERGY   ***
    3940
    40   ah0 = (cpd*(1.-q(nk))+cl*q(nk))*t(nk) + q(nk)*(lv0-cpvmcl*(t(nk)-273.15)) + &
    41     gz(nk)
    42   cpp = cpd*(1.-q(nk)) + q(nk)*cpv
    43   cpinv = 1./cpp
     41  ah0 = (cpd * (1. - q(nk)) + cl * q(nk)) * t(nk) + q(nk) * (lv0 - cpvmcl * (t(nk) - 273.15)) + &
     42          gz(nk)
     43  cpp = cpd * (1. - q(nk)) + q(nk) * cpv
     44  cpinv = 1. / cpp
    4445
    4546  IF (kk==1) THEN
     
    5152    END DO
    5253    DO i = nk, icb - 1
    53       tpk(i) = t(nk) - (gz(i)-gz(nk))*cpinv
    54       tvp(i) = tpk(i)*(1.+q(nk)*epsi)
     54      tpk(i) = t(nk) - (gz(i) - gz(nk)) * cpinv
     55      tvp(i) = tpk(i) * (1. + q(nk) * epsi)
    5556    END DO
    5657  END IF
     
    6768    tg = t(i)
    6869    qg = qs(i)
    69     alv = lv0 - cpvmcl*(t(i)-273.15)
     70    alv = lv0 - cpvmcl * (t(i) - 273.15)
    7071    DO j = 1, 2
    71       s = cpd + alv*alv*qg/(rv*t(i)*t(i))
    72       s = 1./s
    73       ahg = cpd*tg + (cl-cpd)*q(nk)*t(i) + alv*qg + gz(i)
    74       tg = tg + s*(ah0-ahg)
     72      s = cpd + alv * alv * qg / (rv * t(i) * t(i))
     73      s = 1. / s
     74      ahg = cpd * tg + (cl - cpd) * q(nk) * t(i) + alv * qg + gz(i)
     75      tg = tg + s * (ah0 - ahg)
    7576      tg = max(tg, 35.0)
    7677      tc = tg - 273.15
    7778      denom = 243.5 + tc
    7879      IF (tc>=0.0) THEN
    79         es = 6.112*exp(17.67*tc/denom)
     80        es = 6.112 * exp(17.67 * tc / denom)
    8081      ELSE
    81         es = exp(23.33086-6111.72784/tg+0.15215*log(tg))
     82        es = exp(23.33086 - 6111.72784 / tg + 0.15215 * log(tg))
    8283      END IF
    83       qg = eps*es/(p(i)-es*(1.-eps))
     84      qg = eps * es / (p(i) - es * (1. - eps))
    8485    END DO
    85     alv = lv0 - cpvmcl*(t(i)-273.15)
    86     tpk(i) = (ah0-(cl-cpd)*q(nk)*t(i)-gz(i)-alv*qg)/cpd
     86    alv = lv0 - cpvmcl * (t(i) - 273.15)
     87    tpk(i) = (ah0 - (cl - cpd) * q(nk) * t(i) - gz(i) - alv * qg) / cpd
    8788    clw(i) = q(nk) - qg
    8889    clw(i) = max(0.0, clw(i))
    89     rg = qg/(1.-q(nk))
    90     tvp(i) = tpk(i)*(1.+rg*epsi)
     90    rg = qg / (1. - q(nk))
     91    tvp(i) = tpk(i) * (1. + rg * epsi)
    9192  END DO
    9293
     
    9596  ! sb --
    9697
    97 
    9898END SUBROUTINE tlift43
    9999
Note: See TracChangeset for help on using the changeset viewer.