My Project
 All Classes Files Functions Variables Macros
stratocu_if.F90
Go to the documentation of this file.
1  SUBROUTINE stratocu_if(klon,klev,pctsrf,paprs, pplay,t &
2 ,seuil_inversion,weak_inversion,dthmin)
3 implicit none
4 
5 !======================================================================
6 ! J'introduit un peu de diffusion sauf dans les endroits
7 ! ou une forte inversion est presente
8 ! On peut dire qu'il represente la convection peu profonde
9 !
10 ! Arguments:
11 ! klon-----input-I- nombre de points a traiter
12 ! paprs----input-R- pression a chaque intercouche (en Pa)
13 ! pplay----input-R- pression au milieu de chaque couche (en Pa)
14 ! t--------input-R- temperature (K)
15 !
16 ! weak_inversion-----logical
17 !======================================================================
18 !
19 ! Arguments:
20 !
21  INTEGER, INTENT(IN) :: klon,klev
22  REAL, DIMENSION(klon, klev+1), INTENT(IN) :: paprs
23  REAL, DIMENSION(klon, klev), INTENT(IN) :: pplay
24  REAL, DIMENSION(klon, 4), INTENT(IN) :: pctsrf
25  REAL, DIMENSION(klon, klev), INTENT(IN) :: t
26 
27  REAL, DIMENSION(klon), INTENT(OUT) :: weak_inversion
28 !
29 ! Quelques constantes et options:
30 !
31  REAL seuil_inversion ! au-dela l'inversion est consideree trop faible
32 ! PARAMETER (seuil=-0.1)
33 
34 !
35 ! Variables locales:
36 !
37  INTEGER i, k, invb(klon)
38  REAL zl2(klon)
39  REAL dthmin(klon), zdthdp
40 
41  include "indicesol.h"
42  include "YOMCST.h"
43 
44 !
45 ! Chercher la zone d'inversion forte
46 !
47 
48  DO i = 1, klon
49  invb(i) = klev
50  dthmin(i)=0.0
51  ENDDO
52  DO k = 2, klev/2-1
53  DO i = 1, klon
54  zdthdp = (t(i,k)-t(i,k+1))/(pplay(i,k)-pplay(i,k+1)) &
55  - rd * 0.5*(t(i,k)+t(i,k+1))/rcpd/paprs(i,k+1)
56  zdthdp = zdthdp * 100.0
57  IF (pplay(i,k).GT.0.8*paprs(i,1) .AND. &
58  zdthdp.LT.dthmin(i) ) THEN
59  dthmin(i) = zdthdp
60  invb(i) = k
61  ENDIF
62  ENDDO
63  ENDDO
64 
65 
66 !
67 ! Introduire une diffusion:
68 !
69  DO i = 1, klon
70  IF ( (pctsrf(i,is_oce) < 0.5) .OR. &
71  (invb(i) == klev) .OR. (dthmin(i) > seuil_inversion) ) THEN
72  weak_inversion(i)=1.
73  ELSE
74  weak_inversion(i)=0.
75  ENDIF
76  ENDDO
77 
78  END SUBROUTINE stratocu_if