/[lmdze]/trunk/Sources/phylmd/coefkz2.f
ViewVC logotype

Annotation of /trunk/Sources/phylmd/coefkz2.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 234 - (hide annotations)
Tue Nov 7 12:20:42 2017 UTC (6 years, 6 months ago) by guez
File size: 2731 byte(s)
Almost nothing.
1 guez 233 module coefkz2_m
2 guez 234
3 guez 233 IMPLICIT none
4 guez 51
5 guez 233 contains
6    
7     SUBROUTINE coefkz2(nsrf, knon, paprs, pplay, t, pcfm, pcfh)
8    
9 guez 234 ! 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 guez 51
13 guez 234 use dimens_m
14     use indicesol
15     use dimphy
16     use conf_gcm_m
17     use SUPHEC_M
18 guez 51
19 guez 234 ! Arguments:
20     ! nsrf-----input-I- indicateur de la nature du sol
21     ! knon-----input-I- nombre de points a traiter
22     ! paprs----input-R- pression a chaque intercouche (en Pa)
23     ! pplay----input-R- pression au milieu de chaque couche (en Pa)
24     ! t--------input-R- temperature (K)
25 guez 51
26 guez 234 ! pcfm-----output-R- coefficients a calculer (vitesse)
27     ! pcfh-----output-R- coefficients a calculer (chaleur et humidite)
28 guez 51
29 guez 234 ! Arguments:
30 guez 51
31 guez 234 INTEGER knon, nsrf
32     REAL paprs(klon, klev+1), pplay(klon, klev)
33     REAL t(klon, klev)
34 guez 51
35 guez 234 REAL, intent(out):: pcfm(:, :), pcfh(:, :) ! (knon, klev)
36 guez 51
37 guez 234 ! Quelques constantes et options:
38 guez 51
39 guez 234 REAL prandtl
40     PARAMETER (prandtl=0.4)
41     REAL kstable
42     PARAMETER (kstable=0.002)
43     REAL mixlen ! constante controlant longueur de melange
44     PARAMETER (mixlen=35.0)
45     REAL seuil ! au-dela l'inversion est consideree trop faible
46     PARAMETER (seuil=-0.02)
47 guez 51
48 guez 234 ! Variables locales:
49 guez 51
50 guez 234 INTEGER i, k, invb(knon)
51     REAL zl2(knon)
52     REAL zdthmin(knon), zdthdp
53 guez 51
54 guez 234 !----------------------------------------------------------
55 guez 51
56 guez 234 ! Initialiser les sorties
57     DO k = 1, klev
58     DO i = 1, knon
59     pcfm(i, k) = 0.0
60     pcfh(i, k) = 0.0
61     ENDDO
62     ENDDO
63 guez 51
64 guez 234 ! Chercher la zone d'inversion forte
65 guez 51
66 guez 234 DO i = 1, knon
67     invb(i) = klev
68     zdthmin(i)=0.0
69     ENDDO
70     DO k = 2, klev/ 2 - 1
71     DO i = 1, knon
72     zdthdp = (t(i, k) - t(i, k + 1)) / (pplay(i, k) - pplay(i, k + 1)) &
73     - RD * 0.5 * (t(i, k) + t(i, k + 1)) / RCPD / paprs(i, k + 1)
74     zdthdp = zdthdp * 100.
75     IF (pplay(i, k) > 0.8 * paprs(i, 1) .AND. zdthdp < zdthmin(i)) THEN
76     zdthmin(i) = zdthdp
77     invb(i) = k
78     ENDIF
79     ENDDO
80     ENDDO
81 guez 51
82 guez 234 ! Introduire une diffusion:
83     DO k = 2, klev
84     DO i = 1, knon
85     ! si on est sur ocean et s'il n'y a pas d'inversion ou si
86     ! l'inversion est trop faible:
87     IF ((nsrf.EQ.is_oce) .AND. &
88     ((invb(i).EQ.klev) .OR. (zdthmin(i) > seuil))) THEN
89     zl2(i)=(mixlen*MAX(0.0, (paprs(i, k)-paprs(i, klev+1)) &
90     /(paprs(i, 2)-paprs(i, klev+1))))**2
91     pcfm(i, k)= zl2(i)* kstable
92     pcfh(i, k) = pcfm(i, k) /prandtl ! h et m different
93     ENDIF
94     ENDDO
95     ENDDO
96 guez 51
97 guez 234 END SUBROUTINE coefkz2
98 guez 233
99     end module coefkz2_m

  ViewVC Help
Powered by ViewVC 1.1.21