| 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 |