source: trunk/libf/phylmd/stratocu_if.F90 @ 1

Last change on this file since 1 was 1, checked in by emillour, 14 years ago

Import initial LMDZ5

File size: 2.1 KB
Line 
1  SUBROUTINE stratocu_if(klon,klev,pctsrf,paprs, pplay,t &
2,seuil_inversion,weak_inversion,dthmin)
3implicit 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
Note: See TracBrowser for help on using the repository browser.