My Project
 All Classes Files Functions Variables Macros
calbeta.F90
Go to the documentation of this file.
1 !
2 ! $Header$
3 !
4 SUBROUTINE calbeta(dtime,indice,knon,snow,qsol, &
5  vbeta,vcal,vdif)
6 
7  USE dimphy
8  IMPLICIT none
9 !======================================================================
10 ! Auteur(s): Z.X. Li (LMD/CNRS) (adaptation du GCM au LMD)
11 ! date: 19940414
12 !======================================================================
13 !
14 ! Calculer quelques parametres pour appliquer la couche limite
15 ! ------------------------------------------------------------
16  include "indicesol.h"
17 
18 ! Variables d'entrees
19 !****************************************************************************************
20  REAL, INTENT(IN) :: dtime
21  INTEGER, INTENT(IN) :: indice
22  INTEGER, INTENT(IN) :: knon
23  REAL, DIMENSION(klon), INTENT(IN) :: snow
24  REAL, DIMENSION(klon), INTENT(IN) :: qsol
25 
26 
27 ! Variables de sorties
28 !****************************************************************************************
29  REAL, DIMENSION(klon), INTENT(OUT) :: vbeta
30  REAL, DIMENSION(klon), INTENT(OUT) :: vcal
31  REAL, DIMENSION(klon), INTENT(OUT) :: vdif
32 
33 ! Variables locales
34 !****************************************************************************************
35  REAL, PARAMETER :: tau_gl=86400.0*5.0 ! temps de relaxation pour la glace de mer
36 !cc PARAMETER (tau_gl=86400.0*30.0)
37  REAL, PARAMETER :: mx_eau_sol=150.0
38  REAL, PARAMETER :: calsol=1.0/(2.5578e+06*0.15)
39  REAL, PARAMETER :: calsno=1.0/(2.3867e+06*0.15)
40  REAL, PARAMETER :: calice=1.0/(5.1444e+06*0.15)
41 
42  INTEGER :: i
43 
44 !****************************************************************************************
45 
46  vbeta(:) = 0.0
47  vcal(:) = 0.0
48  vdif(:) = 0.0
49 
50  IF (indice.EQ.is_oce) THEN
51  DO i = 1, knon
52  vcal(i) = 0.0
53  vbeta(i) = 1.0
54  vdif(i) = 0.0
55  ENDDO
56  ENDIF
57 
58  IF (indice.EQ.is_sic) THEN
59  DO i = 1, knon
60  vcal(i) = calice
61  IF (snow(i) .GT. 0.0) vcal(i) = calsno
62  vbeta(i) = 1.0
63  vdif(i) = 1.0/tau_gl
64 ! vdif(i) = calice/tau_gl ! c'etait une erreur
65  ENDDO
66  ENDIF
67 
68  IF (indice.EQ.is_ter) THEN
69  DO i = 1, knon
70  vcal(i) = calsol
71  IF (snow(i) .GT. 0.0) vcal(i) = calsno
72  vbeta(i) = min(2.0*qsol(i)/mx_eau_sol, 1.0)
73  vdif(i) = 0.0
74  ENDDO
75  ENDIF
76 
77  IF (indice.EQ.is_lic) THEN
78  DO i = 1, knon
79  vcal(i) = calice
80  IF (snow(i) .GT. 0.0) vcal(i) = calsno
81  vbeta(i) = 1.0
82  vdif(i) = 0.0
83  ENDDO
84  ENDIF
85 
86 END SUBROUTINE calbeta
87 
88 
89 
90 
91 
92 
93 
94 
95 
96 
97 
98 
99 
100 
101 
102 
103