/[lmdze]/trunk/libf/phylmd/Conflx/flxdtdq.f90
ViewVC logotype

Contents of /trunk/libf/phylmd/Conflx/flxdtdq.f90

Parent Directory Parent Directory | Revision Log Revision Log


Revision 71 - (show annotations)
Mon Jul 8 18:12:18 2013 UTC (10 years, 9 months ago) by guez
File size: 2337 byte(s)
No reason to call inidissip in ce0l.

In inidissip, set random seed to 1 beacuse PGI compiler does not
accept all zeros.

dq was computed needlessly in caladvtrac. Arguments masse and dq of
calfis not used.

Replaced real*8 by double precision.

Pass arrays with inverted order of vertical levels to conflx instead
of creating local variables for this inside conflx.

1 module flxdtdq_m
2
3 IMPLICIT none
4
5 contains
6
7 SUBROUTINE flxdtdq(ktopm2, paph, ldcum, pten, pmfus, pmfds, pmfuq, pmfdq, &
8 pmful, pdmfup, pdmfdp, pdpmel, dt_con, dq_con)
9
10 USE dimphy, ONLY: klev, klon
11 USE suphec_m, ONLY: rcpd, rg, rlmlt, rlstt, rlvtt, rtt
12
13 !----------------------------------------------------------------------
14 ! calculer les tendances T et Q
15 !----------------------------------------------------------------------
16 ! -----------------------------------------------------------------
17 LOGICAL llo1
18 !
19 REAL, intent(in):: pten(klon,klev), paph(klon,klev+1)
20 REAL, intent(in):: pmfus(klon,klev), pmfuq(klon,klev), pmful(klon,klev)
21 REAL pmfds(klon,klev), pmfdq(klon,klev)
22 REAL pdmfup(klon,klev)
23 REAL pdmfdp(klon,klev)
24 REAL pdpmel(klon,klev)
25 LOGICAL ldcum(klon)
26 REAL dt_con(klon,klev), dq_con(klon,klev)
27 !
28 INTEGER ktopm2
29 !
30 INTEGER i, k
31 REAL zalv, zdtdt, zdqdt
32 !
33 DO k=ktopm2,klev-1
34 DO i = 1, klon
35 IF (ldcum(i)) THEN
36 llo1 = (pten(i,k)-RTT).GT.0.
37 zalv = RLSTT
38 IF (llo1) zalv = RLVTT
39 zdtdt=RG/(paph(i,k+1)-paph(i,k))/RCPD &
40 *(pmfus(i,k+1)-pmfus(i,k) &
41 +pmfds(i,k+1)-pmfds(i,k) &
42 -RLMLT*pdpmel(i,k) &
43 -zalv*(pmful(i,k+1)-pmful(i,k)-pdmfup(i,k)-pdmfdp(i,k)) &
44 )
45 dt_con(i,k)=zdtdt
46 zdqdt=RG/(paph(i,k+1)-paph(i,k)) &
47 *(pmfuq(i,k+1)-pmfuq(i,k) &
48 +pmfdq(i,k+1)-pmfdq(i,k) &
49 +pmful(i,k+1)-pmful(i,k)-pdmfup(i,k)-pdmfdp(i,k))
50 dq_con(i,k)=zdqdt
51 ENDIF
52 end DO
53 end DO
54 !
55 k = klev
56 DO i = 1, klon
57 IF (ldcum(i)) THEN
58 llo1 = (pten(i,k)-RTT).GT.0.
59 zalv = RLSTT
60 IF (llo1) zalv = RLVTT
61 zdtdt=-RG/(paph(i,k+1)-paph(i,k))/RCPD &
62 *(pmfus(i,k)+pmfds(i,k)+RLMLT*pdpmel(i,k) &
63 -zalv*(pmful(i,k)+pdmfup(i,k)+pdmfdp(i,k)))
64 dt_con(i,k)=zdtdt
65 zdqdt=-RG/(paph(i,k+1)-paph(i,k)) &
66 *(pmfuq(i,k)+pmfdq(i,k)+pmful(i,k) &
67 +pdmfup(i,k)+pdmfdp(i,k))
68 dq_con(i,k)=zdqdt
69 ENDIF
70 end DO
71
72 END SUBROUTINE flxdtdq
73
74 end module flxdtdq_m

  ViewVC Help
Powered by ViewVC 1.1.21