GCC Code Coverage Report


Directory: ./
File: phys/stratocu_if.f90
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 19 19 100.0%
Branches: 17 18 94.4%

Line Branch Exec Source
1 8111520 SUBROUTINE stratocu_if(klon,klev,pctsrf,paprs, pplay,t &
2 480 ,seuil_inversion,weak_inversion,dthmin)
3
4 USE indice_sol_mod
5
6 IMPLICIT NONE
7
8 !======================================================================
9 ! J'introduit un peu de diffusion sauf dans les endroits
10 ! ou une forte inversion est presente
11 ! On peut dire qu'il represente la convection peu profonde
12 !
13 ! Arguments:
14 ! klon-----input-I- nombre de points a traiter
15 ! paprs----input-R- pression a chaque intercouche (en Pa)
16 ! pplay----input-R- pression au milieu de chaque couche (en Pa)
17 ! t--------input-R- temperature (K)
18 !
19 ! weak_inversion-----logical
20 !======================================================================
21 !
22 ! Arguments:
23 !
24 INTEGER, INTENT(IN) :: klon,klev
25 REAL, DIMENSION(klon, klev+1), INTENT(IN) :: paprs
26 REAL, DIMENSION(klon, klev), INTENT(IN) :: pplay
27 REAL, DIMENSION(klon, 4), INTENT(IN) :: pctsrf
28 REAL, DIMENSION(klon, klev), INTENT(IN) :: t
29
30 REAL, DIMENSION(klon), INTENT(OUT) :: weak_inversion
31 !
32 ! Quelques constantes et options:
33 !
34 REAL seuil_inversion ! au-dela l'inversion est consideree trop faible
35 ! PARAMETER (seuil=-0.1)
36
37 !
38 ! Variables locales:
39 !
40 480 INTEGER i, k, invb(klon)
41 REAL zl2(klon)
42 REAL dthmin(klon), zdthdp
43
44 INCLUDE "YOMCST.h"
45
46 !
47 ! Chercher la zone d'inversion forte
48 !
49
50
2/2
✓ Branch 0 taken 477120 times.
✓ Branch 1 taken 480 times.
477600 DO i = 1, klon
51 477120 invb(i) = klev
52 477600 dthmin(i)=0.0
53 ENDDO
54
2/2
✓ Branch 0 taken 8160 times.
✓ Branch 1 taken 480 times.
8640 DO k = 2, klev/2-1
55
2/2
✓ Branch 0 taken 8111040 times.
✓ Branch 1 taken 8160 times.
8119680 DO i = 1, klon
56 zdthdp = (t(i,k)-t(i,k+1))/(pplay(i,k)-pplay(i,k+1)) &
57 8111040 - RD * 0.5*(t(i,k)+t(i,k+1))/RCPD/paprs(i,k+1)
58 8111040 zdthdp = zdthdp * 100.0
59
4/4
✓ Branch 0 taken 3346335 times.
✓ Branch 1 taken 4764705 times.
✓ Branch 2 taken 1403585 times.
✓ Branch 3 taken 1942750 times.
8111040 IF (pplay(i,k).GT.0.8*paprs(i,1) .AND. &
60 8160 zdthdp.LT.dthmin(i) ) THEN
61 1403585 dthmin(i) = zdthdp
62 1403585 invb(i) = k
63 ENDIF
64 ENDDO
65 ENDDO
66
67
68 !
69 ! Introduire une diffusion:
70 !
71
2/2
✓ Branch 0 taken 477120 times.
✓ Branch 1 taken 480 times.
477600 DO i = 1, klon
72 IF ( (pctsrf(i,is_oce) < 0.5) .OR. &
73
5/6
✓ Branch 0 taken 271776 times.
✓ Branch 1 taken 205344 times.
✓ Branch 2 taken 271776 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 204825 times.
✓ Branch 5 taken 66951 times.
477600 (invb(i) == klev) .OR. (dthmin(i) > seuil_inversion) ) THEN
74 410169 weak_inversion(i)=1.
75 ELSE
76 66951 weak_inversion(i)=0.
77 ENDIF
78 ENDDO
79
80 480 END SUBROUTINE stratocu_if
81