1 |
|
4866912 |
SUBROUTINE stratocu_if(klon,klev,pctsrf,paprs, pplay,t & |
2 |
|
288 |
,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 |
|
288 |
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 |
✓✓ |
286560 |
DO i = 1, klon |
51 |
|
286272 |
invb(i) = klev |
52 |
|
286560 |
dthmin(i)=0.0 |
53 |
|
|
ENDDO |
54 |
✓✓ |
5184 |
DO k = 2, klev/2-1 |
55 |
✓✓ |
4871808 |
DO i = 1, klon |
56 |
|
|
zdthdp = (t(i,k)-t(i,k+1))/(pplay(i,k)-pplay(i,k+1)) & |
57 |
|
4866624 |
- RD * 0.5*(t(i,k)+t(i,k+1))/RCPD/paprs(i,k+1) |
58 |
|
4866624 |
zdthdp = zdthdp * 100.0 |
59 |
✓✓✓✓
|
4866624 |
IF (pplay(i,k).GT.0.8*paprs(i,1) .AND. & |
60 |
|
4896 |
zdthdp.LT.dthmin(i) ) THEN |
61 |
|
800074 |
dthmin(i) = zdthdp |
62 |
|
800074 |
invb(i) = k |
63 |
|
|
ENDIF |
64 |
|
|
ENDDO |
65 |
|
|
ENDDO |
66 |
|
|
|
67 |
|
|
|
68 |
|
|
! |
69 |
|
|
! Introduire une diffusion: |
70 |
|
|
! |
71 |
✓✓ |
286560 |
DO i = 1, klon |
72 |
|
|
IF ( (pctsrf(i,is_oce) < 0.5) .OR. & |
73 |
✓✓✓✗ ✓✓ |
286560 |
(invb(i) == klev) .OR. (dthmin(i) > seuil_inversion) ) THEN |
74 |
|
242170 |
weak_inversion(i)=1. |
75 |
|
|
ELSE |
76 |
|
44102 |
weak_inversion(i)=0. |
77 |
|
|
ENDIF |
78 |
|
|
ENDDO |
79 |
|
|
|
80 |
|
288 |
END SUBROUTINE stratocu_if |