/[lmdze]/trunk/Sources/phylmd/Interface_surf/calbeta.f
ViewVC logotype

Diff of /trunk/Sources/phylmd/Interface_surf/calbeta.f

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

trunk/libf/phylmd/calbeta.f revision 38 by guez, Thu Jan 6 17:52:19 2011 UTC trunk/Sources/phylmd/Interface_surf/calbeta.f revision 134 by guez, Wed Apr 29 15:47:56 2015 UTC
# Line 1  Line 1 
1        SUBROUTINE calbeta(dtime,indice,knon,snow,qsol,  module calbeta_m
2       .                    vbeta,vcal,vdif)  
3        use dimens_m    IMPLICIT NONE
4        use indicesol  
5        use dimphy  contains
6        use iniprint  
7        use SUPHEC_M    SUBROUTINE calbeta(indice, snow, qsol, vbeta, vcal, vdif)
8        IMPLICIT none  
9  c======================================================================      ! Author: Z. X. Li (LMD/CNRS)
10  c Auteur(s): Z.X. Li (LMD/CNRS) (adaptation du GCM du LMD)      ! Date: April 14th, 1994
11  c date: 19940414  
12  c======================================================================      ! Calcul de quelques paramètres pour appliquer la couche limite.
13  c  
14  c Calculer quelques parametres pour appliquer la couche limite      USE indicesol, ONLY: is_lic, is_oce, is_sic, is_ter
15  c ------------------------------------------------------------  
16        REAL tau_gl ! temps de relaxation pour la glace de mer      INTEGER, intent(in):: indice
17  ccc      PARAMETER (tau_gl=86400.0*30.0)      REAL, intent(in):: snow(:), qsol(:) ! (knon)
18        PARAMETER (tau_gl=86400.0*5.0)      REAL, intent(out):: vbeta(:), vcal(:), vdif(:) ! (knon)
19        REAL mx_eau_sol  
20        PARAMETER (mx_eau_sol=150.0)      ! Local:
21  c  
22        REAL calsol, calsno, calice ! epaisseur du sol: 0.15 m      REAL, PARAMETER:: tau_gl = 86400. * 5.
23        PARAMETER (calsol=1.0/(2.5578E+06*0.15))      ! temps de relaxation pour la glace de mer
24        PARAMETER (calsno=1.0/(2.3867E+06*0.15))  
25        PARAMETER (calice=1.0/(5.1444E+06*0.15))      REAL, PARAMETER:: max_eau_sol = 150. ! in kg m-2
26  C  
27        INTEGER i      ! Pour une épaisseur du sol de 15 cm :
28  c      REAL, PARAMETER:: calsol = 1. / (2.5578E6 * 0.15)
29        REAL dtime      REAL, PARAMETER:: calsno = 1. / (2.3867E6 * 0.15)
30        REAL snow(klon), qsol(klon)      REAL, PARAMETER:: calice = 1. / (5.1444E6 * 0.15)
31        INTEGER indice, knon  
32  C      !------------------------------------------------------------
33        REAL vbeta(klon)  
34        REAL vcal(klon)      select case (indice)
35        REAL vdif(klon)      case(is_oce)
36  C         vbeta = 1.
37           vcal = 0.
38        IF (indice.EQ.is_oce) THEN         vdif = 0.
39        DO i = 1, knon  
40            vcal(i)   = 0.0      case (is_sic)
41            vbeta(i)  = 1.0         vbeta = 1.
42            vdif(i) = 0.0         vcal = merge(calsno, calice, snow > 0.)
43        ENDDO         vdif = 1. / tau_gl
44        ENDIF  
45  c      case (is_ter)
46        IF (indice.EQ.is_sic) THEN         vbeta = min(2. * qsol / max_eau_sol, 1.)
47        DO i = 1, knon         vcal = merge(calsno, calsol, snow > 0.)
48            vcal(i) = calice         vdif = 0.
49            IF (snow(i) .GT. 0.0) vcal(i) = calsno  
50            vbeta(i)  = 1.0      case (is_lic)
51            vdif(i) = 1.0/tau_gl         vbeta = 1.
52  ccc          vdif(i) = calice/tau_gl ! c'etait une erreur         vcal = merge(calsno, calice, snow > 0.)
53        ENDDO         vdif = 0.
54        ENDIF      END select
55  c  
56        IF (indice.EQ.is_ter) THEN    END SUBROUTINE calbeta
57        DO i = 1, knon  
58            vcal(i) = calsol  end module calbeta_m
           IF (snow(i) .GT. 0.0) vcal(i) = calsno  
           vbeta(i)  = MIN(2.0*qsol(i)/mx_eau_sol, 1.0)  
           vdif(i) = 0.0  
       ENDDO  
       ENDIF  
 c  
       IF (indice.EQ.is_lic) THEN  
       DO i = 1, knon  
           vcal(i) = calice  
           IF (snow(i) .GT. 0.0) vcal(i) = calsno  
           vbeta(i)  = 1.0  
           vdif(i) = 0.0  
       ENDDO  
       ENDIF  
 c  
       RETURN  
       END  

Legend:
Removed from v.38  
changed lines
  Added in v.134

  ViewVC Help
Powered by ViewVC 1.1.21