GCC Code Coverage Report
Directory: ./ Exec Total Coverage
File: phylmd/calbeta.F90 Lines: 30 32 93.8 %
Date: 2023-06-30 12:56:34 Branches: 29 34 85.3 %

Line Branch Exec Source
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