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

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

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

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

Legend:
Removed from v.99  
changed lines
  Added in v.101

  ViewVC Help
Powered by ViewVC 1.1.21