source: LMDZ5/branches/testing/libf/phylmd/stratocu_if.F90 @ 5446

Last change on this file since 5446 was 1910, checked in by Laurent Fairhead, 11 years ago

Merged trunk changes r1860:1909 into testing branch

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.1 KB
Line 
1  SUBROUTINE stratocu_if(klon,klev,pctsrf,paprs, pplay,t &
2,seuil_inversion,weak_inversion,dthmin)
3
4  USE indice_sol_mod
5
6IMPLICIT 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
Note: See TracBrowser for help on using the repository browser.