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/wake.F90

    r1999 r2160  
    1919
    2020  USE dimphy
     21  use mod_phys_lmdz_para
    2122  IMPLICIT NONE
    2223  ! ============================================================================
     
    151152  ! Variables à fixer
    152153  REAL alon
    153   REAL coefgw
    154   REAL :: wdens_ref
    155   REAL stark
    156   REAL alpk
     154  LOGICAL, SAVE :: first = .TRUE.
     155  !$OMP THREADPRIVATE(first)
     156  REAL, SAVE ::  stark, wdens_ref, coefgw, alpk, crep_upper, crep_sol 
     157  !$OMP THREADPRIVATE(stark, wdens_ref, coefgw, alpk, crep_upper, crep_sol)
    157158  REAL delta_t_min
    158159  INTEGER nsub
     
    232233
    233234  REAL, DIMENSION (klon, klev) :: crep
    234   REAL crep_upper, crep_sol
    235235
    236236  REAL, DIMENSION (klon, klev) :: ppi
     
    280280  ! alpk = 0.05
    281281
     282 if (first) then
    282283  stark = 0.33
    283284  alpk = 0.25
     
    288289
    289290  ! cc nrlmd Lecture du fichier wake_param.data
     291 !$OMP MASTER
    290292  OPEN (99, FILE='wake_param.data', STATUS='old', FORM='formatted', ERR=9999)
    291293  READ (99, *, END=9998) stark
     
    296298  CLOSE (99)
    2972999999 CONTINUE
     300 !$OMP END MASTER
     301  CALL bcast(stark)
     302  CALL bcast(alpk)
     303  CALL bcast(wdens_ref)
     304  CALL bcast(coefgw)
     305
     306  first=.false.
     307 endif
    298308
    299309  ! Initialisation de toutes des densites a wdens_ref.
     
    10791089          ! print*,'dtKE= ',dtKE(i,k),' dqKE= ',dqKE(i,k)
    10801090
    1081           dtpbl(i, k) = (wdtpbl(i,k)/sigmaw(i)-udtpbl(i,k)/(1.-sigmaw(i)))
    1082           dqpbl(i, k) = (wdqpbl(i,k)/sigmaw(i)-udqpbl(i,k)/(1.-sigmaw(i)))
     1091!jyg<
     1092!!
     1093!!---------------------------------------------------------------
     1094!! The change of delta_T due to PBL (vertical diffusion plus thermal plumes)
     1095!! is accounted for by the PBL and the Thermals schemes. It is now set to zero
     1096!! within the Wake scheme.
     1097!!---------------------------------------------------------------
     1098          dtPBL(i,k) = 0.
     1099          dqPBL(i,k) = 0.
     1100!
     1101!!          dtPBL(i,k)=wdtPBL(i,k) - udtPBL(i,k)
     1102!!          dqPBL(i,k)=wdqPBL(i,k) - udqPBL(i,k)
     1103!
     1104!!          dtpbl(i, k) = (wdtpbl(i,k)/sigmaw(i)-udtpbl(i,k)/(1.-sigmaw(i)))
     1105!!          dqpbl(i, k) = (wdqpbl(i,k)/sigmaw(i)-udqpbl(i,k)/(1.-sigmaw(i)))
    10831106          ! print*,'dtPBL= ',dtPBL(i,k),' dqPBL= ',dqPBL(i,k)
     1107!>jyg
     1108!
    10841109
    10851110          ! cc nrlmd          Prise en compte du taux de mortalité
     
    17951820END SUBROUTINE wake_vec_modulation
    17961821
    1797 SUBROUTINE wake_scal(p, ph, ppi, dtime, sigd_con, te0, qe0, omgb, dtdwn, &
    1798     dqdwn, amdwn, amup, dta, dqa, wdtpbl, wdqpbl, udtpbl, udqpbl, deltatw, &
    1799     deltaqw, dth, hw, sigmaw, wape, fip, gfl, dtls, dqls, ktopw, omgbdth, &
    1800     dp_omgb, wdens, tu, qu, dtke, dqke, dtpbl, dqpbl, omg, dp_deltomg, &
    1801     spread, cstar, d_deltat_gw, d_deltatw2, d_deltaqw2)
    1802 
    1803   ! **************************************************************
    1804   ! *
    1805   ! WAKE                                                        *
    1806   ! retour a un Pupper fixe                                *
    1807   ! *
    1808   ! written by   :  GRANDPEIX Jean-Yves   09/03/2000            *
    1809   ! modified by :   ROEHRIG Romain        01/29/2007            *
    1810   ! **************************************************************
    1811 
    1812   USE dimphy
    1813   IMPLICIT NONE
    1814   ! ============================================================================
    1815 
    1816 
    1817   ! But : Decrire le comportement des poches froides apparaissant dans les
    1818   ! grands systemes convectifs, et fournir l'energie disponible pour
    1819   ! le declenchement de nouvelles colonnes convectives.
    1820 
    1821   ! Variables d'etat : deltatw    : ecart de temperature wake-undisturbed
    1822   ! area
    1823   ! deltaqw    : ecart d'humidite wake-undisturbed area
    1824   ! sigmaw     : fraction d'aire occupee par la poche.
    1825 
    1826   ! Variable de sortie :
    1827 
    1828   ! wape : WAke Potential Energy
    1829   ! fip  : Front Incident Power (W/m2) - ALP
    1830   ! gfl  : Gust Front Length per unit area (m-1)
    1831   ! dtls : large scale temperature tendency due to wake
    1832   ! dqls : large scale humidity tendency due to wake
    1833   ! hw   : hauteur de la poche
    1834   ! dp_omgb : vertical gradient of large scale omega
    1835   ! omgbdth: flux of Delta_Theta transported by LS omega
    1836   ! dtKE   : differential heating (wake - unpertubed)
    1837   ! dqKE   : differential moistening (wake - unpertubed)
    1838   ! omg    : Delta_omg =vertical velocity diff. wake-undist. (Pa/s)
    1839   ! dp_deltomg  : vertical gradient of omg (s-1)
    1840   ! spread  : spreading term in dt_wake and dq_wake
    1841   ! deltatw     : updated temperature difference (T_w-T_u).
    1842   ! deltaqw     : updated humidity difference (q_w-q_u).
    1843   ! sigmaw      : updated wake fractional area.
    1844   ! d_deltat_gw : delta T tendency due to GW
    1845 
    1846   ! Variables d'entree :
    1847 
    1848   ! aire : aire de la maille
    1849   ! te0  : temperature dans l'environnement  (K)
    1850   ! qe0  : humidite dans l'environnement     (kg/kg)
    1851   ! omgb : vitesse verticale moyenne sur la maille (Pa/s)
    1852   ! dtdwn: source de chaleur due aux descentes (K/s)
    1853   ! dqdwn: source d'humidite due aux descentes (kg/kg/s)
    1854   ! dta  : source de chaleur due courants satures et detrain  (K/s)
    1855   ! dqa  : source d'humidite due aux courants satures et detra (kg/kg/s)
    1856   ! amdwn: flux de masse total des descentes, par unite de
    1857   ! surface de la maille (kg/m2/s)
    1858   ! amup : flux de masse total des ascendances, par unite de
    1859   ! surface de la maille (kg/m2/s)
    1860   ! p    : pressions aux milieux des couches (Pa)
    1861   ! ph   : pressions aux interfaces (Pa)
    1862   ! ppi  : (p/p_0)**kapa (adim)
    1863   ! dtime: increment temporel (s)
    1864 
    1865   ! Variables internes :
    1866 
    1867   ! rhow : masse volumique de la poche froide
    1868   ! rho  : environment density at P levels
    1869   ! rhoh : environment density at Ph levels
    1870   ! te   : environment temperature | may change within
    1871   ! qe   : environment humidity    | sub-time-stepping
    1872   ! the  : environment potential temperature
    1873   ! thu  : potential temperature in undisturbed area
    1874   ! tu   :  temperature  in undisturbed area
    1875   ! qu   : humidity in undisturbed area
    1876   ! dp_omgb: vertical gradient og LS omega
    1877   ! omgbw  : wake average vertical omega
    1878   ! dp_omgbw: vertical gradient of omgbw
    1879   ! omgbdq : flux of Delta_q transported by LS omega
    1880   ! dth  : potential temperature diff. wake-undist.
    1881   ! th1  : first pot. temp. for vertical advection (=thu)
    1882   ! th2  : second pot. temp. for vertical advection (=thw)
    1883   ! q1   : first humidity for vertical advection
    1884   ! q2   : second humidity for vertical advection
    1885   ! d_deltatw   : terme de redistribution pour deltatw
    1886   ! d_deltaqw   : terme de redistribution pour deltaqw
    1887   ! deltatw0   : deltatw initial
    1888   ! deltaqw0   : deltaqw initial
    1889   ! hw0    : hw initial
    1890   ! sigmaw0: sigmaw initial
    1891   ! amflux : horizontal mass flux through wake boundary
    1892   ! wdens  : number of wakes per unit area (3D) or per
    1893   ! unit length (2D)
    1894   ! Tgw    : 1 sur la période de onde de gravité
    1895   ! Cgw    : vitesse de propagation de onde de gravité
    1896   ! LL     : distance entre 2 poches
    1897 
    1898   ! -------------------------------------------------------------------------
    1899   ! Déclaration de variables
    1900   ! -------------------------------------------------------------------------
    1901 
    1902   include "dimensions.h"
    1903   ! ccc      include "dimphy.h"
    1904   include "YOMCST.h"
    1905   include "cvthermo.h"
    1906   include "iniprint.h"
    1907 
    1908   ! Arguments en entree
    1909   ! --------------------
    1910 
    1911   REAL p(klev), ph(klev+1), ppi(klev)
    1912   REAL dtime
    1913   REAL te0(klev), qe0(klev)
    1914   REAL omgb(klev+1)
    1915   REAL dtdwn(klev), dqdwn(klev)
    1916   REAL wdtpbl(klev), wdqpbl(klev)
    1917   REAL udtpbl(klev), udqpbl(klev)
    1918   REAL amdwn(klev), amup(klev)
    1919   REAL dta(klev), dqa(klev)
    1920   REAL sigd_con
    1921 
    1922   ! Sorties
    1923   ! --------
    1924 
    1925   REAL deltatw(klev), deltaqw(klev), dth(klev)
    1926   REAL tu(klev), qu(klev)
    1927   REAL dtls(klev), dqls(klev)
    1928   REAL dtke(klev), dqke(klev)
    1929   REAL dtpbl(klev), dqpbl(klev)
    1930   REAL spread(klev)
    1931   REAL d_deltatgw(klev)
    1932   REAL d_deltatw2(klev), d_deltaqw2(klev)
    1933   REAL omgbdth(klev+1), omg(klev+1)
    1934   REAL dp_omgb(klev), dp_deltomg(klev)
    1935   REAL d_deltat_gw(klev)
    1936   REAL hw, sigmaw, wape, fip, gfl, cstar
    1937   INTEGER ktopw
    1938 
    1939   ! Variables internes
    1940   ! -------------------
    1941 
    1942   ! Variables à fixer
    1943   REAL alon
    1944   REAL coefgw
    1945   REAL wdens0, wdens
    1946   REAL stark
    1947   REAL alpk
    1948   REAL delta_t_min
    1949   REAL pupper
    1950   INTEGER nsub
    1951   REAL dtimesub
    1952   REAL sigmad, hwmin
    1953 
    1954   ! Variables de sauvegarde
    1955   REAL deltatw0(klev)
    1956   REAL deltaqw0(klev)
    1957   REAL te(klev), qe(klev)
    1958   REAL sigmaw0, sigmaw1
    1959 
    1960   ! Variables pour les GW
    1961   REAL ll
    1962   REAL n2(klev)
    1963   REAL cgw(klev)
    1964   REAL tgw(klev)
    1965 
    1966   ! Variables liées au calcul de hw
    1967   REAL ptop_provis, ptop, ptop_new
    1968   REAL sum_dth
    1969   REAL dthmin
    1970   REAL z, dz, hw0
    1971   INTEGER ktop, kupper
    1972 
    1973   ! Autres variables internes
    1974   INTEGER isubstep, k
    1975 
    1976   REAL sum_thu, sum_tu, sum_qu, sum_thvu
    1977   REAL sum_dq, sum_rho
    1978   REAL sum_dtdwn, sum_dqdwn
    1979   REAL av_thu, av_tu, av_qu, av_thvu
    1980   REAL av_dth, av_dq, av_rho
    1981   REAL av_dtdwn, av_dqdwn
    1982 
    1983   REAL rho(klev), rhoh(klev+1), rhow(klev)
    1984   REAL rhow_moyen(klev)
    1985   REAL zh(klev), zhh(klev+1)
    1986   REAL epaisseur1(klev), epaisseur2(klev)
    1987 
    1988   REAL the(klev), thu(klev)
    1989 
    1990   REAL d_deltatw(klev), d_deltaqw(klev)
    1991 
    1992   REAL omgbw(klev+1), omgtop
    1993   REAL dp_omgbw(klev)
    1994   REAL ztop, dztop
    1995   REAL alpha_up(klev)
    1996 
    1997   REAL rre1, rre2, rrd1, rrd2
    1998   REAL th1(klev), th2(klev), q1(klev), q2(klev)
    1999   REAL d_th1(klev), d_th2(klev), d_dth(klev)
    2000   REAL d_q1(klev), d_q2(klev), d_dq(klev)
    2001   REAL omgbdq(klev)
    2002 
    2003   REAL ff, gg
    2004   REAL wape2, cstar2, heff
    2005 
    2006   REAL crep(klev)
    2007   REAL crep_upper, crep_sol
    2008 
    2009   ! -------------------------------------------------------------------------
    2010   ! Initialisations
    2011   ! -------------------------------------------------------------------------
    2012 
    2013   ! print*, 'wake initialisations'
    2014 
    2015   ! Essais d'initialisation avec sigmaw = 0.02 et hw = 10.
    2016   ! -------------------------------------------------------------------------
    2017 
    2018   DATA sigmad, hwmin/.02, 10./
    2019 
    2020   ! Longueur de maille (en m)
    2021   ! -------------------------------------------------------------------------
    2022 
    2023   ! ALON = 3.e5
    2024   alon = 1.E6
    2025 
    2026 
    2027   ! Configuration de coefgw,stark,wdens (22/02/06 by YU Jingmei)
    2028 
    2029   ! coefgw : Coefficient pour les ondes de gravité
    2030   ! stark : Coefficient k dans Cstar=k*sqrt(2*WAPE)
    2031   ! wdens : Densité de poche froide par maille
    2032   ! -------------------------------------------------------------------------
    2033 
    2034   coefgw = 10
    2035   ! coefgw=1
    2036   ! wdens0 = 1.0/(alon**2)
    2037   wdens = 1.0/(alon**2)
    2038   stark = 0.50
    2039   ! CRtest
    2040   alpk = 0.1
    2041   ! alpk = 1.0
    2042   ! alpk = 0.5
    2043   ! alpk = 0.05
    2044   crep_upper = 0.9
    2045   crep_sol = 1.0
    2046 
    2047 
    2048   ! Minimum value for |T_wake - T_undist|. Used for wake top definition
    2049   ! -------------------------------------------------------------------------
    2050 
    2051   delta_t_min = 0.2
    2052 
    2053 
    2054   ! 1. - Save initial values and initialize tendencies
    2055   ! --------------------------------------------------
    2056 
    2057   DO k = 1, klev
    2058     deltatw0(k) = deltatw(k)
    2059     deltaqw0(k) = deltaqw(k)
    2060     te(k) = te0(k)
    2061     qe(k) = qe0(k)
    2062     dtls(k) = 0.
    2063     dqls(k) = 0.
    2064     d_deltat_gw(k) = 0.
    2065     d_deltatw2(k) = 0.
    2066     d_deltaqw2(k) = 0.
    2067   END DO
    2068   ! sigmaw1=sigmaw
    2069   ! IF (sigd_con.GT.sigmaw1) THEN
    2070   ! print*, 'sigmaw,sigd_con', sigmaw, sigd_con
    2071   ! ENDIF
    2072   sigmaw = max(sigmaw, sigd_con)
    2073   sigmaw = max(sigmaw, sigmad)
    2074   sigmaw = min(sigmaw, 0.99)
    2075   sigmaw0 = sigmaw
    2076   ! wdens=wdens0/(10.*sigmaw)
    2077   ! IF (sigd_con.GT.sigmaw1) THEN
    2078   ! print*, 'sigmaw1,sigd1', sigmaw, sigd_con
    2079   ! ENDIF
    2080 
    2081   ! 2. - Prognostic part
    2082   ! =========================================================
    2083 
    2084   ! print *, 'prognostic wake computation'
    2085 
    2086 
    2087   ! 2.1 - Undisturbed area and Wake integrals
    2088   ! ---------------------------------------------------------
    2089 
    2090   z = 0.
    2091   ktop = 0
    2092   kupper = 0
    2093   sum_thu = 0.
    2094   sum_tu = 0.
    2095   sum_qu = 0.
    2096   sum_thvu = 0.
    2097   sum_dth = 0.
    2098   sum_dq = 0.
    2099   sum_rho = 0.
    2100   sum_dtdwn = 0.
    2101   sum_dqdwn = 0.
    2102 
    2103   av_thu = 0.
    2104   av_tu = 0.
    2105   av_qu = 0.
    2106   av_thvu = 0.
    2107   av_dth = 0.
    2108   av_dq = 0.
    2109   av_rho = 0.
    2110   av_dtdwn = 0.
    2111   av_dqdwn = 0.
    2112 
    2113   ! Potential temperatures and humidity
    2114   ! ----------------------------------------------------------
    2115 
    2116   DO k = 1, klev
    2117     rho(k) = p(k)/(rd*te(k))
    2118     IF (k==1) THEN
    2119       rhoh(k) = ph(k)/(rd*te(k))
    2120       zhh(k) = 0
    2121     ELSE
    2122       rhoh(k) = ph(k)*2./(rd*(te(k)+te(k-1)))
    2123       zhh(k) = (ph(k)-ph(k-1))/(-rhoh(k)*rg) + zhh(k-1)
    2124     END IF
    2125     the(k) = te(k)/ppi(k)
    2126     thu(k) = (te(k)-deltatw(k)*sigmaw)/ppi(k)
    2127     tu(k) = te(k) - deltatw(k)*sigmaw
    2128     qu(k) = qe(k) - deltaqw(k)*sigmaw
    2129     rhow(k) = p(k)/(rd*(te(k)+deltatw(k)))
    2130     dth(k) = deltatw(k)/ppi(k)
    2131     ll = (1-sqrt(sigmaw))/sqrt(wdens)
    2132   END DO
    2133 
    2134   DO k = 1, klev - 1
    2135     IF (k==1) THEN
    2136       n2(k) = 0
    2137     ELSE
    2138       n2(k) = max(0., -rg**2/the(k)*rho(k)*(the(k+1)-the(k-1))/(p(k+ &
    2139         1)-p(k-1)))
    2140     END IF
    2141     zh(k) = (zhh(k)+zhh(k+1))/2
    2142 
    2143     cgw(k) = sqrt(n2(k))*zh(k)
    2144     tgw(k) = coefgw*cgw(k)/ll
    2145   END DO
    2146 
    2147   n2(klev) = 0
    2148   zh(klev) = 0
    2149   cgw(klev) = 0
    2150   tgw(klev) = 0
    2151 
    2152   ! Calcul de la masse volumique moyenne de la colonne
    2153   ! -----------------------------------------------------------------
    2154 
    2155   DO k = 1, klev
    2156     epaisseur1(k) = 0.
    2157     epaisseur2(k) = 0.
    2158   END DO
    2159 
    2160   epaisseur1(1) = -(ph(2)-ph(1))/(rho(1)*rg) + 1.
    2161   epaisseur2(1) = -(ph(2)-ph(1))/(rho(1)*rg) + 1.
    2162   rhow_moyen(1) = rhow(1)
    2163 
    2164   DO k = 2, klev
    2165     epaisseur1(k) = -(ph(k+1)-ph(k))/(rho(k)*rg) + 1.
    2166     epaisseur2(k) = epaisseur2(k-1) + epaisseur1(k)
    2167     rhow_moyen(k) = (rhow_moyen(k-1)*epaisseur2(k-1)+rhow(k)*epaisseur1(k))/ &
    2168       epaisseur2(k)
    2169   END DO
    2170 
    2171 
    2172   ! Choose an integration bound well above wake top
    2173   ! -----------------------------------------------------------------
    2174 
    2175   ! Pupper = 50000.  ! melting level
    2176   pupper = 60000.
    2177   ! Pupper = 70000.
    2178 
    2179 
    2180   ! Determine Wake top pressure (Ptop) from buoyancy integral
    2181   ! -----------------------------------------------------------------
    2182 
    2183   ! -1/ Pressure of the level where dth becomes less than delta_t_min.
    2184 
    2185   ptop_provis = ph(1)
    2186   DO k = 2, klev
    2187     IF (dth(k)>-delta_t_min .AND. dth(k-1)<-delta_t_min) THEN
    2188       ptop_provis = ((dth(k)+delta_t_min)*p(k-1)-(dth(k- &
    2189         1)+delta_t_min)*p(k))/(dth(k)-dth(k-1))
    2190       GO TO 25
    2191     END IF
    2192   END DO
    2193 25 CONTINUE
    2194 
    2195   ! -2/ dth integral
    2196 
    2197   sum_dth = 0.
    2198   dthmin = -delta_t_min
    2199   z = 0.
    2200 
    2201   DO k = 1, klev
    2202     dz = -(max(ph(k+1),ptop_provis)-ph(k))/(rho(k)*rg)
    2203     IF (dz<=0) GO TO 40
    2204     z = z + dz
    2205     sum_dth = sum_dth + dth(k)*dz
    2206     dthmin = min(dthmin, dth(k))
    2207   END DO
    2208 40 CONTINUE
    2209 
    2210   ! -3/ height of triangle with area= sum_dth and base = dthmin
    2211 
    2212   hw0 = 2.*sum_dth/min(dthmin, -0.5)
    2213   hw0 = max(hwmin, hw0)
    2214 
    2215   ! -4/ now, get Ptop
    2216 
    2217   z = 0.
    2218   ptop = ph(1)
    2219 
    2220   DO k = 1, klev
    2221     dz = min(-(ph(k+1)-ph(k))/(rho(k)*rg), hw0-z)
    2222     IF (dz<=0) GO TO 45
    2223     z = z + dz
    2224     ptop = ph(k) - rho(k)*rg*dz
    2225   END DO
    2226 45 CONTINUE
    2227 
    2228 
    2229   ! -5/ Determination de ktop et kupper
    2230 
    2231   DO k = klev, 1, -1
    2232     IF (ph(k+1)<ptop) ktop = k
    2233     IF (ph(k+1)<pupper) kupper = k
    2234   END DO
    2235 
    2236   ! -6/ Correct ktop and ptop
    2237 
    2238   ptop_new = ptop
    2239   DO k = ktop, 2, -1
    2240     IF (dth(k)>-delta_t_min .AND. dth(k-1)<-delta_t_min) THEN
    2241       ptop_new = ((dth(k)+delta_t_min)*p(k-1)-(dth(k-1)+delta_t_min)*p(k))/ &
    2242         (dth(k)-dth(k-1))
    2243       GO TO 225
    2244     END IF
    2245   END DO
    2246 225 CONTINUE
    2247 
    2248   ptop = ptop_new
    2249 
    2250   DO k = klev, 1, -1
    2251     IF (ph(k+1)<ptop) ktop = k
    2252   END DO
    2253 
    2254   ! Set deltatw & deltaqw to 0 above kupper
    2255   ! -----------------------------------------------------------
    2256 
    2257   DO k = kupper, klev
    2258     deltatw(k) = 0.
    2259     deltaqw(k) = 0.
    2260   END DO
    2261 
    2262 
    2263   ! Vertical gradient of LS omega
    2264   ! ------------------------------------------------------------
    2265 
    2266   DO k = 1, kupper
    2267     dp_omgb(k) = (omgb(k+1)-omgb(k))/(ph(k+1)-ph(k))
    2268   END DO
    2269 
    2270 
    2271   ! Integrals (and wake top level number)
    2272   ! -----------------------------------------------------------
    2273 
    2274   ! Initialize sum_thvu to 1st level virt. pot. temp.
    2275 
    2276   z = 1.
    2277   dz = 1.
    2278   sum_thvu = thu(1)*(1.+eps*qu(1))*dz
    2279   sum_dth = 0.
    2280 
    2281   DO k = 1, klev
    2282     dz = -(max(ph(k+1),ptop)-ph(k))/(rho(k)*rg)
    2283     IF (dz<=0) GO TO 50
    2284     z = z + dz
    2285     sum_thu = sum_thu + thu(k)*dz
    2286     sum_tu = sum_tu + tu(k)*dz
    2287     sum_qu = sum_qu + qu(k)*dz
    2288     sum_thvu = sum_thvu + thu(k)*(1.+eps*qu(k))*dz
    2289     sum_dth = sum_dth + dth(k)*dz
    2290     sum_dq = sum_dq + deltaqw(k)*dz
    2291     sum_rho = sum_rho + rhow(k)*dz
    2292     sum_dtdwn = sum_dtdwn + dtdwn(k)*dz
    2293     sum_dqdwn = sum_dqdwn + dqdwn(k)*dz
    2294   END DO
    2295 50 CONTINUE
    2296 
    2297   hw0 = z
    2298 
    2299   ! 2.1 - WAPE and mean forcing computation
    2300   ! -------------------------------------------------------------
    2301 
    2302   ! Means
    2303 
    2304   av_thu = sum_thu/hw0
    2305   av_tu = sum_tu/hw0
    2306   av_qu = sum_qu/hw0
    2307   av_thvu = sum_thvu/hw0
    2308   ! av_thve = sum_thve/hw0
    2309   av_dth = sum_dth/hw0
    2310   av_dq = sum_dq/hw0
    2311   av_rho = sum_rho/hw0
    2312   av_dtdwn = sum_dtdwn/hw0
    2313   av_dqdwn = sum_dqdwn/hw0
    2314 
    2315   wape = -rg*hw0*(av_dth+eps*(av_thu*av_dq+av_dth*av_qu+av_dth*av_dq))/ &
    2316     av_thvu
    2317 
    2318   ! 2.2 Prognostic variable update
    2319   ! ------------------------------------------------------------
    2320 
    2321   ! Filter out bad wakes
    2322 
    2323   IF (wape<0.) THEN
    2324     IF (prt_level>=10) PRINT *, 'wape<0'
    2325     wape = 0.
    2326     hw = hwmin
    2327     sigmaw = max(sigmad, sigd_con)
    2328     fip = 0.
    2329     DO k = 1, klev
    2330       deltatw(k) = 0.
    2331       deltaqw(k) = 0.
    2332       dth(k) = 0.
    2333     END DO
    2334   ELSE
    2335     IF (prt_level>=10) PRINT *, 'wape>0'
    2336     cstar = stark*sqrt(2.*wape)
    2337   END IF
    2338 
    2339   ! ------------------------------------------------------------------
    2340   ! Sub-time-stepping
    2341   ! ------------------------------------------------------------------
    2342 
    2343   ! nsub=36
    2344   nsub = 10
    2345   dtimesub = dtime/nsub
    2346 
    2347   ! ------------------------------------------------------------
    2348   DO isubstep = 1, nsub
    2349     ! ------------------------------------------------------------
    2350 
    2351     ! print*,'---------------','substep=',isubstep,'-------------'
    2352 
    2353     ! Evolution of sigmaw
    2354 
    2355 
    2356     gfl = 2.*sqrt(3.14*wdens*sigmaw)
    2357 
    2358     sigmaw = sigmaw + gfl*cstar*dtimesub
    2359     sigmaw = min(sigmaw, 0.99) !!!!!!!!
    2360     ! wdens = wdens0/(10.*sigmaw)
    2361     ! sigmaw =max(sigmaw,sigd_con)
    2362     ! sigmaw =max(sigmaw,sigmad)
    2363 
    2364     ! calcul de la difference de vitesse verticale poche - zone non perturbee
    2365 
    2366     z = 0.
    2367     dp_deltomg(1:klev) = 0.
    2368     omg(1:klev+1) = 0.
    2369 
    2370     omg(1) = 0.
    2371     dp_deltomg(1) = -(gfl*cstar)/(sigmaw*(1-sigmaw))
    2372 
    2373     DO k = 2, ktop
    2374       dz = -(ph(k)-ph(k-1))/(rho(k-1)*rg)
    2375       z = z + dz
    2376       dp_deltomg(k) = dp_deltomg(1)
    2377       omg(k) = dp_deltomg(1)*z
    2378     END DO
    2379 
    2380     dztop = -(ptop-ph(ktop))/(rho(ktop)*rg)
    2381     ztop = z + dztop
    2382     omgtop = dp_deltomg(1)*ztop
    2383 
    2384 
    2385     ! Conversion de la vitesse verticale de m/s a Pa/s
    2386 
    2387     omgtop = -rho(ktop)*rg*omgtop
    2388     dp_deltomg(1) = omgtop/(ptop-ph(1))
    2389 
    2390     DO k = 1, ktop
    2391       omg(k) = -rho(k)*rg*omg(k)
    2392       dp_deltomg(k) = dp_deltomg(1)
    2393     END DO
    2394 
    2395     ! raccordement lineaire de omg de ptop a pupper
    2396 
    2397     IF (kupper>ktop) THEN
    2398       omg(kupper+1) = -rg*amdwn(kupper+1)/sigmaw + rg*amup(kupper+1)/(1.- &
    2399         sigmaw)
    2400       dp_deltomg(kupper) = (omgtop-omg(kupper+1))/(ptop-pupper)
    2401       DO k = ktop + 1, kupper
    2402         dp_deltomg(k) = dp_deltomg(kupper)
    2403         omg(k) = omgtop + (ph(k)-ptop)*dp_deltomg(kupper)
    2404       END DO
    2405     END IF
    2406 
    2407     ! Compute wake average vertical velocity omgbw
    2408 
    2409     DO k = 1, klev + 1
    2410       omgbw(k) = omgb(k) + (1.-sigmaw)*omg(k)
    2411     END DO
    2412 
    2413     ! and its vertical gradient dp_omgbw
    2414 
    2415     DO k = 1, klev
    2416       dp_omgbw(k) = (omgbw(k+1)-omgbw(k))/(ph(k+1)-ph(k))
    2417     END DO
    2418 
    2419 
    2420     ! Upstream coefficients for omgb velocity
    2421     ! --    (alpha_up(k) is the coefficient of the value at level k)
    2422     ! --    (1-alpha_up(k) is the coefficient of the value at level k-1)
    2423 
    2424     DO k = 1, klev
    2425       alpha_up(k) = 0.
    2426       IF (omgb(k)>0.) alpha_up(k) = 1.
    2427     END DO
    2428 
    2429     ! Matrix expressing [The,deltatw] from  [Th1,Th2]
    2430 
    2431     rre1 = 1. - sigmaw
    2432     rre2 = sigmaw
    2433     rrd1 = -1.
    2434     rrd2 = 1.
    2435 
    2436     ! Get [Th1,Th2], dth and [q1,q2]
    2437 
    2438     DO k = 1, kupper + 1
    2439       dth(k) = deltatw(k)/ppi(k)
    2440       th1(k) = the(k) - sigmaw*dth(k) ! undisturbed area
    2441       th2(k) = the(k) + (1.-sigmaw)*dth(k) ! wake
    2442       q1(k) = qe(k) - sigmaw*deltaqw(k) ! undisturbed area
    2443       q2(k) = qe(k) + (1.-sigmaw)*deltaqw(k) ! wake
    2444     END DO
    2445 
    2446     d_th1(1) = 0.
    2447     d_th2(1) = 0.
    2448     d_dth(1) = 0.
    2449     d_q1(1) = 0.
    2450     d_q2(1) = 0.
    2451     d_dq(1) = 0.
    2452 
    2453     DO k = 2, kupper + 1 !   loop on interfaces
    2454       d_th1(k) = th1(k-1) - th1(k)
    2455       d_th2(k) = th2(k-1) - th2(k)
    2456       d_dth(k) = dth(k-1) - dth(k)
    2457       d_q1(k) = q1(k-1) - q1(k)
    2458       d_q2(k) = q2(k-1) - q2(k)
    2459       d_dq(k) = deltaqw(k-1) - deltaqw(k)
    2460     END DO
    2461 
    2462     omgbdth(1) = 0.
    2463     omgbdq(1) = 0.
    2464 
    2465     DO k = 2, kupper + 1 !   loop on interfaces
    2466       omgbdth(k) = omgb(k)*(dth(k-1)-dth(k))
    2467       omgbdq(k) = omgb(k)*(deltaqw(k-1)-deltaqw(k))
    2468     END DO
    2469 
    2470 
    2471     ! -----------------------------------------------------------------
    2472     DO k = 1, kupper - 1
    2473       ! -----------------------------------------------------------------
    2474 
    2475       ! Compute redistribution (advective) term
    2476 
    2477       d_deltatw(k) = dtimesub/(ph(k)-ph(k+1))*(rrd1*omg(k)*sigmaw*d_th1(k)- &
    2478         rrd2*omg(k+1)*(1.-sigmaw)*d_th2(k+1)-(1.-alpha_up( &
    2479         k))*omgbdth(k)-alpha_up(k+1)*omgbdth(k+1))*ppi(k)
    2480       ! print*,'d_deltatw=',d_deltatw(k)
    2481 
    2482       d_deltaqw(k) = dtimesub/(ph(k)-ph(k+1))*(rrd1*omg(k)*sigmaw*d_q1(k)- &
    2483         rrd2*omg(k+1)*(1.-sigmaw)*d_q2(k+1)-(1.-alpha_up( &
    2484         k))*omgbdq(k)-alpha_up(k+1)*omgbdq(k+1))
    2485       ! print*,'d_deltaqw=',d_deltaqw(k)
    2486 
    2487       ! and increment large scale tendencies
    2488 
    2489       dtls(k) = dtls(k) + dtimesub*((rre1*omg(k)*sigmaw*d_th1(k)-rre2*omg(k+ &
    2490         1)*(1.-sigmaw)*d_th2(k+1))/(ph(k)-ph(k+1))-sigmaw*(1.-sigmaw)*dth(k)* &
    2491         dp_deltomg(k))*ppi(k)
    2492       ! print*,'dtls=',dtls(k)
    2493 
    2494       dqls(k) = dqls(k) + dtimesub*((rre1*omg(k)*sigmaw*d_q1(k)-rre2*omg(k+ &
    2495         1)*(1.-sigmaw)*d_q2(k+1))/(ph(k)-ph(k+1))-sigmaw*(1.-sigmaw)*deltaqw( &
    2496         k)*dp_deltomg(k))
    2497       ! print*,'dqls=',dqls(k)
    2498 
    2499       ! -------------------------------------------------------------------
    2500     END DO
    2501     ! ------------------------------------------------------------------
    2502 
    2503     ! Increment state variables
    2504 
    2505     DO k = 1, kupper - 1
    2506 
    2507       ! Coefficient de répartition
    2508 
    2509       crep(k) = crep_sol*(ph(kupper)-ph(k))/(ph(kupper)-ph(1))
    2510       crep(k) = crep(k) + crep_upper*(ph(1)-ph(k))/(p(1)-ph(kupper))
    2511 
    2512 
    2513       ! Reintroduce compensating subsidence term.
    2514 
    2515       ! dtKE(k)=(dtdwn(k)*Crep(k))/sigmaw
    2516       ! dtKE(k)=dtKE(k)-(dtdwn(k)*(1-Crep(k))+dta(k))
    2517       ! .                   /(1-sigmaw)
    2518       ! dqKE(k)=(dqdwn(k)*Crep(k))/sigmaw
    2519       ! dqKE(k)=dqKE(k)-(dqdwn(k)*(1-Crep(k))+dqa(k))
    2520       ! .                   /(1-sigmaw)
    2521 
    2522       ! dtKE(k)=(dtdwn(k)*Crep(k)+(1-Crep(k))*dta(k))/sigmaw
    2523       ! dtKE(k)=dtKE(k)-(dtdwn(k)*(1-Crep(k))+dta(k)*Crep(k))
    2524       ! .                   /(1-sigmaw)
    2525       ! dqKE(k)=(dqdwn(k)*Crep(k)+(1-Crep(k))*dqa(k))/sigmaw
    2526       ! dqKE(k)=dqKE(k)-(dqdwn(k)*(1-Crep(k))+dqa(k)*Crep(k))
    2527       ! .                   /(1-sigmaw)
    2528 
    2529       dtke(k) = (dtdwn(k)/sigmaw-dta(k)/(1.-sigmaw))
    2530       dqke(k) = (dqdwn(k)/sigmaw-dqa(k)/(1.-sigmaw))
    2531       ! print*,'dtKE=',dtKE(k)
    2532       ! print*,'dqKE=',dqKE(k)
    2533 
    2534       dtpbl(k) = (wdtpbl(k)/sigmaw-udtpbl(k)/(1.-sigmaw))
    2535       dqpbl(k) = (wdqpbl(k)/sigmaw-udqpbl(k)/(1.-sigmaw))
    2536 
    2537       spread(k) = (1.-sigmaw)*dp_deltomg(k) + gfl*cstar/sigmaw
    2538       ! print*,'spread=',spread(k)
    2539 
    2540 
    2541       ! ajout d'un effet onde de gravité -Tgw(k)*deltatw(k) 03/02/06 YU
    2542       ! Jingmei
    2543 
    2544       d_deltat_gw(k) = d_deltat_gw(k) - tgw(k)*deltatw(k)*dtimesub
    2545       ! print*,'d_delta_gw=',d_deltat_gw(k)
    2546       ff = d_deltatw(k)/dtimesub
    2547 
    2548       ! Sans GW
    2549 
    2550       ! deltatw(k)=deltatw(k)+dtimesub*(ff+dtKE(k)-spread(k)*deltatw(k))
    2551 
    2552       ! GW formule 1
    2553 
    2554       ! deltatw(k) = deltatw(k)+dtimesub*
    2555       ! $         (ff+dtKE(k) - spread(k)*deltatw(k)-Tgw(k)*deltatw(k))
    2556 
    2557       ! GW formule 2
    2558 
    2559       IF (dtimesub*tgw(k)<1.E-10) THEN
    2560         deltatw(k) = deltatw(k) + dtimesub*(ff+dtke(k)+dtpbl(k)-spread(k)* &
    2561           deltatw(k)-tgw(k)*deltatw(k))
    2562       ELSE
    2563         deltatw(k) = deltatw(k) + 1/tgw(k)*(1-exp(-dtimesub*tgw(k)))*(ff+dtke &
    2564           (k)+dtpbl(k)-spread(k)*deltatw(k)-tgw(k)*deltatw(k))
    2565       END IF
    2566 
    2567       dth(k) = deltatw(k)/ppi(k)
    2568 
    2569       gg = d_deltaqw(k)/dtimesub
    2570 
    2571       deltaqw(k) = deltaqw(k) + dtimesub*(gg+dqke(k)+dqpbl(k)-spread(k)* &
    2572         deltaqw(k))
    2573 
    2574       d_deltatw2(k) = d_deltatw2(k) + d_deltatw(k)
    2575       d_deltaqw2(k) = d_deltaqw2(k) + d_deltaqw(k)
    2576     END DO
    2577 
    2578     ! And update large scale variables
    2579 
    2580     DO k = 1, kupper
    2581       te(k) = te0(k) + dtls(k)
    2582       qe(k) = qe0(k) + dqls(k)
    2583       the(k) = te(k)/ppi(k)
    2584     END DO
    2585 
    2586     ! Determine Ptop from buoyancy integral
    2587     ! ----------------------------------------------------------------------
    2588 
    2589     ! -1/ Pressure of the level where dth changes sign.
    2590 
    2591     ptop_provis = ph(1)
    2592 
    2593     DO k = 2, klev
    2594       IF (dth(k)>-delta_t_min .AND. dth(k-1)<-delta_t_min) THEN
    2595         ptop_provis = ((dth(k)+delta_t_min)*p(k-1)-(dth(k- &
    2596           1)+delta_t_min)*p(k))/(dth(k)-dth(k-1))
    2597         GO TO 65
    2598       END IF
    2599     END DO
    2600 65  CONTINUE
    2601 
    2602     ! -2/ dth integral
    2603 
    2604     sum_dth = 0.
    2605     dthmin = -delta_t_min
    2606     z = 0.
    2607 
    2608     DO k = 1, klev
    2609       dz = -(max(ph(k+1),ptop_provis)-ph(k))/(rho(k)*rg)
    2610       IF (dz<=0) GO TO 70
    2611       z = z + dz
    2612       sum_dth = sum_dth + dth(k)*dz
    2613       dthmin = min(dthmin, dth(k))
    2614     END DO
    2615 70  CONTINUE
    2616 
    2617     ! -3/ height of triangle with area= sum_dth and base = dthmin
    2618 
    2619     hw = 2.*sum_dth/min(dthmin, -0.5)
    2620     hw = max(hwmin, hw)
    2621 
    2622     ! -4/ now, get Ptop
    2623 
    2624     ktop = 0
    2625     z = 0.
    2626 
    2627     DO k = 1, klev
    2628       dz = min(-(ph(k+1)-ph(k))/(rho(k)*rg), hw-z)
    2629       IF (dz<=0) GO TO 75
    2630       z = z + dz
    2631       ptop = ph(k) - rho(k)*rg*dz
    2632       ktop = k
    2633     END DO
    2634 75  CONTINUE
    2635 
    2636     ! -5/Correct ktop and ptop
    2637 
    2638     ptop_new = ptop
    2639 
    2640     DO k = ktop, 2, -1
    2641       IF (dth(k)>-delta_t_min .AND. dth(k-1)<-delta_t_min) THEN
    2642         ptop_new = ((dth(k)+delta_t_min)*p(k-1)-(dth(k-1)+delta_t_min)*p(k))/ &
    2643           (dth(k)-dth(k-1))
    2644         GO TO 275
    2645       END IF
    2646     END DO
    2647 275 CONTINUE
    2648 
    2649     ptop = ptop_new
    2650 
    2651     DO k = klev, 1, -1
    2652       IF (ph(k+1)<ptop) ktop = k
    2653     END DO
    2654 
    2655     ! -6/ Set deltatw & deltaqw to 0 above kupper
    2656 
    2657     DO k = kupper, klev
    2658       deltatw(k) = 0.
    2659       deltaqw(k) = 0.
    2660     END DO
    2661 
    2662     ! ------------------------------------------------------------------
    2663   END DO ! end sub-timestep loop
    2664   ! -----------------------------------------------------------------
    2665 
    2666   ! Get back to tendencies per second
    2667 
    2668   DO k = 1, kupper - 1
    2669     dtls(k) = dtls(k)/dtime
    2670     dqls(k) = dqls(k)/dtime
    2671     d_deltatw2(k) = d_deltatw2(k)/dtime
    2672     d_deltaqw2(k) = d_deltaqw2(k)/dtime
    2673     d_deltat_gw(k) = d_deltat_gw(k)/dtime
    2674   END DO
    2675 
    2676   ! 2.1 - Undisturbed area and Wake integrals
    2677   ! ---------------------------------------------------------
    2678 
    2679   z = 0.
    2680   sum_thu = 0.
    2681   sum_tu = 0.
    2682   sum_qu = 0.
    2683   sum_thvu = 0.
    2684   sum_dth = 0.
    2685   sum_dq = 0.
    2686   sum_rho = 0.
    2687   sum_dtdwn = 0.
    2688   sum_dqdwn = 0.
    2689 
    2690   av_thu = 0.
    2691   av_tu = 0.
    2692   av_qu = 0.
    2693   av_thvu = 0.
    2694   av_dth = 0.
    2695   av_dq = 0.
    2696   av_rho = 0.
    2697   av_dtdwn = 0.
    2698   av_dqdwn = 0.
    2699 
    2700   ! Potential temperatures and humidity
    2701   ! ----------------------------------------------------------
    2702 
    2703   DO k = 1, klev
    2704     rho(k) = p(k)/(rd*te(k))
    2705     IF (k==1) THEN
    2706       rhoh(k) = ph(k)/(rd*te(k))
    2707       zhh(k) = 0
    2708     ELSE
    2709       rhoh(k) = ph(k)*2./(rd*(te(k)+te(k-1)))
    2710       zhh(k) = (ph(k)-ph(k-1))/(-rhoh(k)*rg) + zhh(k-1)
    2711     END IF
    2712     the(k) = te(k)/ppi(k)
    2713     thu(k) = (te(k)-deltatw(k)*sigmaw)/ppi(k)
    2714     tu(k) = te(k) - deltatw(k)*sigmaw
    2715     qu(k) = qe(k) - deltaqw(k)*sigmaw
    2716     rhow(k) = p(k)/(rd*(te(k)+deltatw(k)))
    2717     dth(k) = deltatw(k)/ppi(k)
    2718 
    2719   END DO
    2720 
    2721   ! Integrals (and wake top level number)
    2722   ! -----------------------------------------------------------
    2723 
    2724   ! Initialize sum_thvu to 1st level virt. pot. temp.
    2725 
    2726   z = 1.
    2727   dz = 1.
    2728   sum_thvu = thu(1)*(1.+eps*qu(1))*dz
    2729   sum_dth = 0.
    2730 
    2731   DO k = 1, klev
    2732     dz = -(max(ph(k+1),ptop)-ph(k))/(rho(k)*rg)
    2733 
    2734     IF (dz<=0) GO TO 51
    2735     z = z + dz
    2736     sum_thu = sum_thu + thu(k)*dz
    2737     sum_tu = sum_tu + tu(k)*dz
    2738     sum_qu = sum_qu + qu(k)*dz
    2739     sum_thvu = sum_thvu + thu(k)*(1.+eps*qu(k))*dz
    2740     sum_dth = sum_dth + dth(k)*dz
    2741     sum_dq = sum_dq + deltaqw(k)*dz
    2742     sum_rho = sum_rho + rhow(k)*dz
    2743     sum_dtdwn = sum_dtdwn + dtdwn(k)*dz
    2744     sum_dqdwn = sum_dqdwn + dqdwn(k)*dz
    2745   END DO
    2746 51 CONTINUE
    2747 
    2748   hw0 = z
    2749 
    2750   ! 2.1 - WAPE and mean forcing computation
    2751   ! -------------------------------------------------------------
    2752 
    2753   ! Means
    2754 
    2755   av_thu = sum_thu/hw0
    2756   av_tu = sum_tu/hw0
    2757   av_qu = sum_qu/hw0
    2758   av_thvu = sum_thvu/hw0
    2759   av_dth = sum_dth/hw0
    2760   av_dq = sum_dq/hw0
    2761   av_rho = sum_rho/hw0
    2762   av_dtdwn = sum_dtdwn/hw0
    2763   av_dqdwn = sum_dqdwn/hw0
    2764 
    2765   wape2 = -rg*hw0*(av_dth+eps*(av_thu*av_dq+av_dth*av_qu+av_dth*av_dq))/ &
    2766     av_thvu
    2767 
    2768 
    2769   ! 2.2 Prognostic variable update
    2770   ! ------------------------------------------------------------
    2771 
    2772   ! Filter out bad wakes
    2773 
    2774   IF (wape2<0.) THEN
    2775     IF (prt_level>=10) PRINT *, 'wape2<0'
    2776     wape2 = 0.
    2777     hw = hwmin
    2778     sigmaw = max(sigmad, sigd_con)
    2779     fip = 0.
    2780     DO k = 1, klev
    2781       deltatw(k) = 0.
    2782       deltaqw(k) = 0.
    2783       dth(k) = 0.
    2784     END DO
    2785   ELSE
    2786     IF (prt_level>=10) PRINT *, 'wape2>0'
    2787     cstar2 = stark*sqrt(2.*wape2)
    2788 
    2789   END IF
    2790 
    2791   ktopw = ktop
    2792 
    2793   IF (ktopw>0) THEN
    2794 
    2795     ! jyg1     Utilisation d'un h_efficace constant ( ~ feeding layer)
    2796     ! cc       heff = 600.
    2797     ! Utilisation de la hauteur hw
    2798     ! c       heff = 0.7*hw
    2799     heff = hw
    2800 
    2801     fip = 0.5*rho(ktopw)*cstar2**3*heff*2*sqrt(sigmaw*wdens*3.14)
    2802     fip = alpk*fip
    2803     ! jyg2
    2804   ELSE
    2805     fip = 0.
    2806   END IF
    2807 
    2808 
    2809   ! Limitation de sigmaw
    2810 
    2811   ! sécurité : si le wake occuppe plus de 90 % de la surface de la maille,
    2812   ! alors il disparait en se mélangeant à la partie undisturbed
    2813 
    2814   ! correction NICOLAS     .     ((wape.ge.wape2).and.(wape2.le.1.0))) THEN
    2815   IF ((sigmaw>0.9) .OR. ((wape>=wape2) .AND. (wape2<= &
    2816       1.0)) .OR. (ktopw<=2)) THEN
    2817     ! IM cf NR/JYG 251108    .     ((wape.ge.wape2).and.(wape2.le.1.0))) THEN
    2818     ! IF (sigmaw.GT.0.9) THEN
    2819     DO k = 1, klev
    2820       dtls(k) = 0.
    2821       dqls(k) = 0.
    2822       deltatw(k) = 0.
    2823       deltaqw(k) = 0.
    2824     END DO
    2825     wape = 0.
    2826     hw = hwmin
    2827     sigmaw = sigmad
    2828     fip = 0.
    2829   END IF
    2830 
    2831   RETURN
    2832 END SUBROUTINE wake_scal
    2833 
    2834 
    2835 
     1822
Note: See TracChangeset for help on using the changeset viewer.