/[lmdze]/trunk/phylmd/Interface_surf/cdrag.f
ViewVC logotype

Diff of /trunk/phylmd/Interface_surf/cdrag.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 291 by guez, Wed Jul 25 14:15:44 2018 UTC revision 292 by guez, Wed Jul 25 14:25:28 2018 UTC
# Line 17  contains Line 17  contains
17    
18      ! Ionela MUSAT, July, 1st, 2002      ! Ionela MUSAT, July, 1st, 2002
19    
20      ! Louis, J. F., Tiedtke, M. and Geleyn, J. F., 1982: `A short      ! Louis, J. F., Tiedtke, M. and Geleyn, J. F., 1982. A short
21      ! history of the operational PBL parametrization at      ! history of the operational PBL parametrization at
22      ! ECMWF'. Workshop on boundary layer parametrization, November      ! ECMWF. Workshop on boundary layer parametrization, November
23      ! 1981, ECMWF, Reading, England. Page: 19. Equations in Table 1.      ! 1981, ECMWF, Reading, England. Page: 19. Equations in Table 1.
24    
25        ! Miller, M. J., A. C. M. Beljaars, T. N. Palmer, 1992. The
26        ! sensitivity of the ECMWF model to the parameterization of
27        ! evaporation from the tropical oceans. J. Climate, 5:418-434.
28    
29      use nr_util, only: assert_eq      use nr_util, only: assert_eq
30    
31      use clesphys, only: f_cdrag_oce, f_cdrag_ter      use clesphys, only: f_cdrag_oce, f_cdrag_ter
# Line 55  contains Line 59  contains
59    
60      ! Local:      ! Local:
61    
62      REAL, PARAMETER:: ckap = 0.40, cb = 5., cc = 5., cd = 5., cepdu2 = 0.1**2      REAL, PARAMETER:: ckap = 0.4, cb = 5., cc = 5., cd = 5., cepdu2 = 0.1**2
63      real, parameter:: f_ri_cd_min = 0.1      real, parameter:: f_ri_cd_min = 0.1
64      INTEGER i, knon      INTEGER i, knon
65      REAL zdu2, ztsolv, ztvd, zscf, zucf      REAL zdu2, ztsolv, ztvd, zscf, zucf
# Line 68  contains Line 72  contains
72      !-------------------------------------------------------------------------      !-------------------------------------------------------------------------
73    
74      knon = assert_eq([size(speed), size(t), size(q), size(zgeop), size(ts), &      knon = assert_eq([size(speed), size(t), size(q), size(zgeop), size(ts), &
75           size(qsurf), size(rugos), size(cdragm), size(cdragh)], &           size(qsurf), size(rugos), size(cdragm), size(cdragh)], "cdrag knon")
          "cdrag knon")  
76    
77      DO i = 1, knon      DO i = 1, knon
78         zdu2 = max(cepdu2, speed(i)**2)         zdu2 = max(cepdu2, speed(i)**2)
# Line 79  contains Line 82  contains
82         zri = zgeop(i) * (ztvd - ztsolv) / (zdu2 * ztvd)         zri = zgeop(i) * (ztvd - ztsolv) / (zdu2 * ztvd)
83         zcdn = (ckap / log(1. + zgeop(i) / (RG * rugos(i))))**2         zcdn = (ckap / log(1. + zgeop(i) / (RG * rugos(i))))**2
84    
85         IF (zri > 0.) THEN         IF (zri < 0.) THEN
           ! Situation stable. Pour \'eviter les incoh\'erences dans  
           ! les cas tr\`es stables, on limite zri \`a 20. Cf Hess et  
           ! al. (1995).  
           zri = min(20., zri)  
           zscf = SQRT(1. + cd * ABS(zri))  
           cdragm(i) = zcdn * max(1. / (1. + 2. * CB * zri / zscf), f_ri_cd_min)  
           cdragh(i) = merge(f_cdrag_oce, f_cdrag_ter, nsrf == is_oce) * zcdn &  
                * max(1. / (1. + 3. * CB * zri * zscf), f_ri_cd_min)  
        ELSE  
86            ! situation instable            ! situation instable
87            zucf = 1. / (1. + 3. * cb * cc * zcdn &            zucf = 1. / (1. + 3. * cb * cc * zcdn &
88                 * SQRT(ABS(zri) * (1. + zgeop(i) / (RG * rugos(i)))))                 * SQRT(ABS(zri) * (1. + zgeop(i) / (RG * rugos(i)))))
# Line 103  contains Line 97  contains
97               cdragh(i) = f_cdrag_ter * zcdn &               cdragh(i) = f_cdrag_ter * zcdn &
98                    * max((1. - 3. * cb * zri * zucf), f_ri_cd_min)                    * max((1. - 3. * cb * zri * zucf), f_ri_cd_min)
99            end IF            end IF
100           ELSE
101              ! Situation stable. Pour \'eviter les incoh\'erences dans
102              ! les cas tr\`es stables, on limite zri \`a 20. Cf Hess et
103              ! al. (1995).
104              zri = min(20., zri)
105              zscf = SQRT(1. + cd * ABS(zri))
106              cdragm(i) = zcdn * max(1. / (1. + 2. * CB * zri / zscf), f_ri_cd_min)
107              cdragh(i) = merge(f_cdrag_oce, f_cdrag_ter, nsrf == is_oce) * zcdn &
108                   * max(1. / (1. + 3. * CB * zri * zscf), f_ri_cd_min)
109         ENDIF         ENDIF
110      END DO      END DO
111    

Legend:
Removed from v.291  
changed lines
  Added in v.292

  ViewVC Help
Powered by ViewVC 1.1.21