1 |
|
|
! |
2 |
|
|
! $Header$ |
3 |
|
|
! |
4 |
|
1152 |
SUBROUTINE calbeta(dtime,indice,knon,snow,qsol, & |
5 |
|
1152 |
vbeta,vcal,vdif) |
6 |
|
|
|
7 |
|
|
USE dimphy |
8 |
|
|
USE indice_sol_mod |
9 |
|
|
|
10 |
|
|
IMPLICIT none |
11 |
|
|
|
12 |
|
|
INCLUDE "flux_arp.h" |
13 |
|
|
|
14 |
|
|
!====================================================================== |
15 |
|
|
! Auteur(s): Z.X. Li (LMD/CNRS) (adaptation du GCM au LMD) |
16 |
|
|
! date: 19940414 |
17 |
|
|
!====================================================================== |
18 |
|
|
! |
19 |
|
|
! Calculer quelques parametres pour appliquer la couche limite |
20 |
|
|
! ------------------------------------------------------------ |
21 |
|
|
! Variables d'entrees |
22 |
|
|
!**************************************************************************************** |
23 |
|
|
REAL, INTENT(IN) :: dtime |
24 |
|
|
INTEGER, INTENT(IN) :: indice |
25 |
|
|
INTEGER, INTENT(IN) :: knon |
26 |
|
|
REAL, DIMENSION(klon), INTENT(IN) :: snow |
27 |
|
|
REAL, DIMENSION(klon), INTENT(IN) :: qsol |
28 |
|
|
|
29 |
|
|
|
30 |
|
|
! Variables de sorties |
31 |
|
|
!**************************************************************************************** |
32 |
|
|
REAL, DIMENSION(klon), INTENT(OUT) :: vbeta |
33 |
|
|
REAL, DIMENSION(klon), INTENT(OUT) :: vcal |
34 |
|
|
REAL, DIMENSION(klon), INTENT(OUT) :: vdif |
35 |
|
|
|
36 |
|
|
! Variables locales |
37 |
|
|
!**************************************************************************************** |
38 |
|
|
REAL, PARAMETER :: tau_gl=86400.0*5.0 ! temps de relaxation pour la glace de mer |
39 |
|
|
!cc PARAMETER (tau_gl=86400.0*30.0) |
40 |
|
|
REAL, PARAMETER :: mx_eau_sol=150.0 |
41 |
|
|
REAL, PARAMETER :: calsol=1.0/(2.5578E+06*0.15) |
42 |
|
|
REAL, PARAMETER :: calsno=1.0/(2.3867E+06*0.15) |
43 |
|
|
REAL, PARAMETER :: calice=1.0/(5.1444E+06*0.15) |
44 |
|
|
|
45 |
|
|
INTEGER :: i |
46 |
|
|
|
47 |
|
|
!**************************************************************************************** |
48 |
|
|
|
49 |
✓✓ |
1146240 |
vbeta(:) = 0.0 |
50 |
✓✓ |
1146240 |
vcal(:) = 0.0 |
51 |
✓✓ |
1146240 |
vdif(:) = 0.0 |
52 |
|
|
|
53 |
✓✓ |
1152 |
IF (indice.EQ.is_oce) THEN |
54 |
✓✓ |
218016 |
DO i = 1, knon |
55 |
|
217728 |
vcal(i) = 0.0 |
56 |
|
217728 |
vbeta(i) = 1.0 |
57 |
|
218016 |
vdif(i) = 0.0 |
58 |
|
|
ENDDO |
59 |
|
|
ENDIF |
60 |
|
|
|
61 |
✓✓ |
1152 |
IF (indice.EQ.is_sic) THEN |
62 |
✓✓ |
62978 |
DO i = 1, knon |
63 |
|
62690 |
vcal(i) = calice |
64 |
✓✓ |
62690 |
IF (snow(i) .GT. 0.0) vcal(i) = calsno |
65 |
|
62690 |
vbeta(i) = 1.0 |
66 |
|
62978 |
vdif(i) = 1.0/tau_gl |
67 |
|
|
! vdif(i) = calice/tau_gl ! c'etait une erreur |
68 |
|
|
ENDDO |
69 |
|
|
ENDIF |
70 |
|
|
|
71 |
✓✓ |
1152 |
IF (indice.EQ.is_ter) THEN |
72 |
✓✓ |
148896 |
DO i = 1, knon |
73 |
|
148608 |
vcal(i) = calsol |
74 |
✓✓ |
148608 |
IF (snow(i) .GT. 0.0) vcal(i) = calsno |
75 |
|
148608 |
vbeta(i) = MIN(2.0*qsol(i)/mx_eau_sol, 1.0) |
76 |
|
148896 |
vdif(i) = 0.0 |
77 |
|
|
ENDDO |
78 |
|
|
ENDIF |
79 |
|
|
|
80 |
✓✓ |
1152 |
IF (indice.EQ.is_lic) THEN |
81 |
✓✓ |
44064 |
DO i = 1, knon |
82 |
|
43776 |
vcal(i) = calice |
83 |
✓✓ |
43776 |
IF (snow(i) .GT. 0.0) vcal(i) = calsno |
84 |
|
43776 |
vbeta(i) = 1.0 |
85 |
|
44064 |
vdif(i) = 0.0 |
86 |
|
|
ENDDO |
87 |
|
|
ENDIF |
88 |
|
|
|
89 |
|
|
! EV: when beta is prescribed for 1D cases: |
90 |
✗✓✗✗
|
1152 |
IF (knon.EQ.1 .AND. ok_prescr_beta) THEN |
91 |
|
|
DO i = 1, knon |
92 |
|
|
vbeta(i)=betaevap |
93 |
|
|
ENDDO |
94 |
|
|
ENDIF |
95 |
|
|
|
96 |
|
1152 |
END SUBROUTINE calbeta |
97 |
|
|
|
98 |
|
|
|
99 |
|
|
|
100 |
|
|
|
101 |
|
|
|
102 |
|
|
|
103 |
|
|
|
104 |
|
|
|
105 |
|
|
|
106 |
|
|
|
107 |
|
|
|
108 |
|
|
|
109 |
|
|
|
110 |
|
|
|
111 |
|
|
|
112 |
|
|
|
113 |
|
|
|