LMDZ
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 
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  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  DO i = 1, klon
51  invb(i) = klev
52  dthmin(i)=0.0
53  ENDDO
54  DO k = 2, klev/2-1
55  DO i = 1, klon
56  zdthdp = (t(i,k)-t(i,k+1))/(pplay(i,k)-pplay(i,k+1)) &
57  - rd * 0.5*(t(i,k)+t(i,k+1))/rcpd/paprs(i,k+1)
58  zdthdp = zdthdp * 100.0
59  IF (pplay(i,k).GT.0.8*paprs(i,1) .AND. &
60  zdthdp.LT.dthmin(i) ) THEN
61  dthmin(i) = zdthdp
62  invb(i) = k
63  ENDIF
64  ENDDO
65  ENDDO
66 
67 
68 !
69 ! Introduire une diffusion:
70 !
71  DO i = 1, klon
72  IF ( (pctsrf(i,is_oce) < 0.5) .OR. &
73  (invb(i) == klev) .OR. (dthmin(i) > seuil_inversion) ) THEN
74  weak_inversion(i)=1.
75  ELSE
76  weak_inversion(i)=0.
77  ENDIF
78  ENDDO
79 
80  END SUBROUTINE stratocu_if
integer, parameter is_oce
subroutine stratocu_if(klon, klev, pctsrf, paprs, pplay, t, seuil_inversion, weak_inversion, dthmin)
Definition: stratocu_if.F90:3