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 |