/[lmdze]/trunk/libf/phylmd/clcdrag.f90
ViewVC logotype

Diff of /trunk/libf/phylmd/clcdrag.f90

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

revision 46 by guez, Tue Feb 22 13:49:36 2011 UTC revision 47 by guez, Fri Jul 1 15:00:48 2011 UTC
# Line 30  SUBROUTINE clcdrag(klon, knon, nsrf, zxl Line 30  SUBROUTINE clcdrag(klon, knon, nsrf, zxl
30    ! dimension de la grille physique (= nb_pts_latitude X nb_pts_longitude)    ! dimension de la grille physique (= nb_pts_latitude X nb_pts_longitude)
31    
32    INTEGER, intent(in) :: knon, nsrf    INTEGER, intent(in) :: knon, nsrf
33    LOGICAL, intent(in) :: zxli  
34      ! Fonctions thermodynamiques et fonctions d'instabilite
35      LOGICAL, intent(in) :: zxli ! utiliser un jeu de fonctions simples
36    
37    REAL, intent(in), dimension(klon) :: u, v, t, q    REAL, intent(in), dimension(klon) :: u, v, t, q
38    REAL, intent(in):: zgeop(klon) ! géopotentiel au 1er niveau du modèle    REAL, intent(in):: zgeop(klon) ! géopotentiel au 1er niveau du modèle
39    REAL, intent(in), dimension(klon) :: ts, qsurf    REAL, intent(in), dimension(klon) :: ts, qsurf
# Line 50  SUBROUTINE clcdrag(klon, knon, nsrf, zxl Line 53  SUBROUTINE clcdrag(klon, knon, nsrf, zxl
53    REAL, dimension(klon) :: zcdn    REAL, dimension(klon) :: zcdn
54    REAL, dimension(klon) :: zri    REAL, dimension(klon) :: zri
55    
   ! Fonctions thermodynamiques et fonctions d'instabilite  
   REAL :: fsta, fins, x  
   fsta(x) = 1.0 / (1.0+10.0*x*(1+8.0*x))  
   fins(x) = SQRT(1.0-18.0*x)  
   
56    !--------------------------------------------------------------------    !--------------------------------------------------------------------
57    
58    ! Calculer le frottement au sol (Cdrag)    ! Calculer le frottement au sol (Cdrag)
# Line 70  SUBROUTINE clcdrag(klon, knon, nsrf, zxl Line 68  SUBROUTINE clcdrag(klon, knon, nsrf, zxl
68       IF (zri(i) .gt. 0.) THEN             IF (zri(i) .gt. 0.) THEN      
69          ! situation stable          ! situation stable
70          zri(i) = min(20.,zri(i))          zri(i) = min(20.,zri(i))
71          IF (.NOT.zxli) THEN          IF (.NOT. zxli) THEN
72             zscf = SQRT(1.+cd*ABS(zri(i)))             zscf = SQRT(1.+cd*ABS(zri(i)))
73             FRIV = AMAX1(1. / (1.+2.*CB*zri(i)/ZSCF), 0.1)             FRIV = AMAX1(1. / (1.+2.*CB*zri(i)/ZSCF), 0.1)
74             zcfm1(i) = zcdn(i) * FRIV             zcfm1(i) = zcdn(i) * FRIV
# Line 84  SUBROUTINE clcdrag(klon, knon, nsrf, zxl Line 82  SUBROUTINE clcdrag(klon, knon, nsrf, zxl
82          ENDIF          ENDIF
83       ELSE                                 ELSE                          
84          ! situation instable          ! situation instable
85          IF (.NOT.zxli) THEN          IF (.NOT. zxli) THEN
86             zucf = 1./(1.+3.0*cb*cc*zcdn(i)*SQRT(ABS(zri(i)) &             zucf = 1./(1.+3.0*cb*cc*zcdn(i)*SQRT(ABS(zri(i)) &
87                  *(1.0+zgeop(i)/(RG*rugos(i)))))                  *(1.0+zgeop(i)/(RG*rugos(i)))))
88             zcfm2(i) = zcdn(i)*amax1((1.-2.0*cb*zri(i)*zucf),0.1)             zcfm2(i) = zcdn(i)*amax1((1.-2.0*cb*zri(i)*zucf),0.1)
# Line 101  SUBROUTINE clcdrag(klon, knon, nsrf, zxl Line 99  SUBROUTINE clcdrag(klon, knon, nsrf, zxl
99       ENDIF       ENDIF
100    END DO    END DO
101    
102      contains
103    
104        ! Fonctions thermodynamiques et fonctions d'instabilite
105    
106        function fsta(x)
107          REAL fsta
108          real, intent(in):: x
109          fsta = 1.0 / (1.0+10.0*x*(1+8.0*x))
110        end function fsta
111    
112        !*******************************************************
113    
114        function fins(x)
115          REAL fins
116          real, intent(in):: x
117          fins = SQRT(1.0-18.0*x)
118        end function fins
119    
120  END SUBROUTINE clcdrag  END SUBROUTINE clcdrag

Legend:
Removed from v.46  
changed lines
  Added in v.47

  ViewVC Help
Powered by ViewVC 1.1.21