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

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

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

revision 286 by guez, Tue Jul 24 15:22:48 2018 UTC revision 288 by guez, Tue Jul 24 16:27:12 2018 UTC
# Line 9  contains Line 9  contains
9    
10      ! Computes coefficients for turbulent diffusion in the atmosphere.      ! Computes coefficients for turbulent diffusion in the atmosphere.
11    
12        use nr_util, only: assert
13    
14      USE clesphys, ONLY: ok_kzmin      USE clesphys, ONLY: ok_kzmin
15      use coefkz_m, only: coefkz      use coefkz_m, only: coefkz
16      use coefkzmin_m, only: coefkzmin      use coefkzmin_m, only: coefkzmin
17      use coefkz2_m, only: coefkz2      use coefkz2_m, only: coefkz2
18      USE conf_phys_m, ONLY: iflag_pbl      USE conf_phys_m, ONLY: iflag_pbl
19      USE dimphy, ONLY: klev      USE dimphy, ONLY: klev
     use nr_util, only: assert  
20      USE suphec_m, ONLY: rd, rg, rkappa      USE suphec_m, ONLY: rd, rg, rkappa
21      use ustarhb_m, only: ustarhb      use ustarhb_m, only: ustarhb
22      use yamada4_m, only: yamada4      use yamada4_m, only: yamada4
# Line 39  contains Line 40  contains
40      REAL coefm0(size(ni), 2:klev), coefh0(size(ni), 2:klev) ! (knon, 2:klev)      REAL coefm0(size(ni), 2:klev), coefh0(size(ni), 2:klev) ! (knon, 2:klev)
41      REAL zlay(size(ni), klev), teta(size(ni), klev) ! (knon, klev)      REAL zlay(size(ni), klev), teta(size(ni), klev) ! (knon, klev)
42      real zlev(size(ni), klev + 1) ! (knon, klev + 1)      real zlev(size(ni), klev + 1) ! (knon, klev + 1)
     REAL ustar(size(ni)) ! (knon)  
43      integer k      integer k
44    
45      !-------------------------------------------------------------------------      !-------------------------------------------------------------------------
# Line 60  contains Line 60  contains
60      IF (ok_kzmin) THEN      IF (ok_kzmin) THEN
61         ! Calcul d'une diffusion minimale pour les conditions tres stables         ! Calcul d'une diffusion minimale pour les conditions tres stables
62         CALL coefkzmin(paprs, pplay, u, v, t, q, cdragm, coefh0)         CALL coefkzmin(paprs, pplay, u, v, t, q, cdragm, coefh0)
63         coefm0 = coefh0         coefm = max(coefm, coefh0)
        coefm = max(coefm, coefm0)  
64         coefh = max(coefh, coefh0)         coefh = max(coefh, coefh0)
65      END IF      END IF
66    
# Line 76  contains Line 75  contains
75                 / paprs(:, k) * (pplay(:, k-1) - pplay(:, k)) / rg                 / paprs(:, k) * (pplay(:, k-1) - pplay(:, k)) / rg
76         END DO         END DO
77    
78         DO k = 1, klev         forall (k = 1:klev) teta(:, k) = t(:, k) &
79            teta(:, k) = t(:, k) * (paprs(:, 1) / pplay(:, k))**rkappa &              * (paprs(:, 1) / pplay(:, k))**rkappa * (1. + 0.61 * q(:, k))
                * (1. + 0.61 * q(:, k))  
        END DO  
80    
81         zlev(:, 1) = 0.         zlev(:, 1) = 0.
82         zlev(:, klev + 1) = 2. * zlay(:, klev) - zlay(:, klev - 1)         zlev(:, klev + 1) = 2. * zlay(:, klev) - zlay(:, klev - 1)
83           forall (k = 2:klev) zlev(:, k) = 0.5 * (zlay(:, k) + zlay(:, k-1))
84    
85         DO k = 2, klev         CALL yamada4(dtime, zlev, zlay, u, v, teta, q2, coefm, coefh, &
86            zlev(:, k) = 0.5 * (zlay(:, k) + zlay(:, k-1))              ustarhb(u(:, 1), v(:, 1), cdragm))
        END DO  
   
        ustar = ustarhb(u(:, 1), v(:, 1), cdragm)  
        CALL yamada4(dtime, zlev, zlay, u, v, teta, q2, coefm, coefh, ustar)  
87      END IF      END IF
88    
89    end subroutine coef_diff_turb    end subroutine coef_diff_turb

Legend:
Removed from v.286  
changed lines
  Added in v.288

  ViewVC Help
Powered by ViewVC 1.1.21