source: LMDZ6/trunk/libf/phylmd/stratocu_if.f90 @ 5451

Last change on this file since 5451 was 5285, checked in by abarral, 2 months ago

As discussed internally, remove generic ONLY: ... for new _mod_h modules

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