/[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 288 by guez, Tue Jul 24 16:27:12 2018 UTC revision 302 by guez, Thu Sep 6 13:19:51 2018 UTC
# Line 4  module coef_diff_turb_m Line 4  module coef_diff_turb_m
4    
5  contains  contains
6    
7    subroutine coef_diff_turb(dtime, nsrf, ni, paprs, pplay, u, v, q, t, ts, &    subroutine coef_diff_turb(nsrf, ni, paprs, pplay, u, v, q, t, ts, cdragm, &
8         cdragm, zgeop, coefm, coefh, q2)         zgeop, coefm, coefh, q2)
9    
10      ! Computes coefficients for turbulent diffusion in the atmosphere.      ! Computes coefficients for turbulent diffusion in the atmosphere.
11    
# Line 21  contains Line 21  contains
21      use ustarhb_m, only: ustarhb      use ustarhb_m, only: ustarhb
22      use yamada4_m, only: yamada4      use yamada4_m, only: yamada4
23    
     REAL, INTENT(IN):: dtime ! interval du temps (secondes)  
24      INTEGER, INTENT(IN):: nsrf      INTEGER, INTENT(IN):: nsrf
25      INTEGER, INTENT(IN):: ni(:) ! (knon)      INTEGER, INTENT(IN):: ni(:) ! (knon)
26      REAL, INTENT(IN):: paprs(:, :) ! (knon, klev + 1)      REAL, INTENT(IN):: paprs(:, :) ! (knon, klev + 1)
# Line 48  contains Line 47  contains
47           size(v, 1), size(q, 1), size(t, 1), size(ts), size(cdragm), &           size(v, 1), size(q, 1), size(t, 1), size(ts), size(cdragm), &
48           size(zgeop, 1), size(coefm, 1), size(coefh, 1), size(q2, 1)], &           size(zgeop, 1), size(coefm, 1), size(coefh, 1), size(q2, 1)], &
49           "coef_diff_turb knon")           "coef_diff_turb knon")
       
     CALL coefkz(nsrf, paprs, pplay, ts, u, v, t, q, zgeop, coefm, coefh)  
   
     IF (iflag_pbl == 1) THEN  
        CALL coefkz2(nsrf, paprs, pplay, t, coefm0, coefh0)  
        coefm = max(coefm, coefm0)  
        coefh = max(coefh, coefh0)  
     END IF  
   
     IF (ok_kzmin) THEN  
        ! Calcul d'une diffusion minimale pour les conditions tres stables  
        CALL coefkzmin(paprs, pplay, u, v, t, q, cdragm, coefh0)  
        coefm = max(coefm, coefh0)  
        coefh = max(coefh, coefh0)  
     END IF  
50    
51      IF (iflag_pbl >= 6) THEN      IF (iflag_pbl >= 6) THEN
52         ! Mellor et Yamada adapt\'e \`a Mars, Richard Fournier et         ! Mellor et Yamada adapt\'e \`a Mars, Richard Fournier et
# Line 79  contains Line 63  contains
63              * (paprs(:, 1) / pplay(:, k))**rkappa * (1. + 0.61 * q(:, k))              * (paprs(:, 1) / pplay(:, k))**rkappa * (1. + 0.61 * q(:, k))
64    
65         zlev(:, 1) = 0.         zlev(:, 1) = 0.
        zlev(:, klev + 1) = 2. * zlay(:, klev) - zlay(:, klev - 1)  
66         forall (k = 2:klev) zlev(:, k) = 0.5 * (zlay(:, k) + zlay(:, k-1))         forall (k = 2:klev) zlev(:, k) = 0.5 * (zlay(:, k) + zlay(:, k-1))
67           zlev(:, klev + 1) = 2. * zlay(:, klev) - zlay(:, klev - 1)
68    
69         CALL yamada4(dtime, zlev, zlay, u, v, teta, q2, coefm, coefh, &         CALL yamada4(zlev, zlay, u, v, teta, q2, coefm, coefh, &
70              ustarhb(u(:, 1), v(:, 1), cdragm))              ustarhb(u(:, 1), v(:, 1), cdragm))
71        else
72           CALL coefkz(nsrf, paprs, pplay, ts, u, v, t, q, zgeop, coefm, coefh)
73    
74           IF (iflag_pbl == 1) THEN
75              CALL coefkz2(nsrf, paprs, pplay, t, coefm0, coefh0)
76              coefm = max(coefm, coefm0)
77              coefh = max(coefh, coefh0)
78           END IF
79    
80           IF (ok_kzmin) THEN
81              ! Calcul d'une diffusion minimale pour les conditions tres stables
82              CALL coefkzmin(paprs, pplay, u, v, t, q, cdragm, coefh0)
83              coefm = max(coefm, coefh0)
84              coefh = max(coefh, coefh0)
85           END IF
86      END IF      END IF
87    
88    end subroutine coef_diff_turb    end subroutine coef_diff_turb

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

  ViewVC Help
Powered by ViewVC 1.1.21