source: LMDZ4/trunk/libf/phylmd/add_phys_tend.F90 @ 924

Last change on this file since 924 was 924, checked in by lmdzadmin, 16 years ago

Petits bogues dimensions points a pb FH
IM

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.3 KB
Line 
1!
2! $Header$
3!
4SUBROUTINE add_phys_tend (zdu,zdv,zdt,zdq,zdql,text)
5!======================================================================
6! Ajoute les tendances des variables physiques aux variables
7! d'etat de la dynamique t_seri, q_seri ...
8! On en profite pour faire des tests sur les tendances en question.
9!======================================================================
10
11
12!======================================================================
13! Declarations
14!======================================================================
15
16use dimphy
17use phys_local_var_mod
18IMPLICIT none
19
20! Arguments :
21!------------
22REAL zdu(klon,klev),zdv(klon,klev)
23REAL zdt(klon,klev),zdq(klon,klev),zdql(klon,klev)
24CHARACTER*(*) text
25
26! Local :
27!--------
28REAL zt,zq
29
30INTEGER i, k,j
31INTEGER jadrs(klon*klev), jbad
32INTEGER jqadrs(klon*klev), jqbad
33
34integer debug_level
35
36!======================================================================
37! Initialisations
38
39debug_level=10
40
41!======================================================================
42! Ajout des tendances sur le vent et l'eau liquide
43!======================================================================
44
45     u_seri(:,:)=u_seri(:,:)+zdu(:,:)
46     v_seri(:,:)=v_seri(:,:)+zdv(:,:)
47     ql_seri(:,:)=ql_seri(:,:)+zdql(:,:)
48
49!======================================================================
50! On ajoute les tendances de la temperature et de la vapeur d'eau
51! en verifiant que ca ne part pas dans les choux
52!======================================================================
53
54      jbad=0
55      jqbad=0
56      DO k = 1, klev
57         DO i = 1, klon
58            zt=t_seri(i,k)+zdt(i,k)
59            zq=q_seri(i,k)+zdq(i,k)
60            IF ( zt>370. .or. zt<130. .or. abs(zdt(i,k))>50. ) then
61            jbad = jbad + 1
62            jadrs(jbad) = i
63            ENDIF
64            IF ( zq<0. .or. zq>0.1 .or. abs(zdq(i,k))>1.e-2 ) then
65            jqbad = jqbad + 1
66            jqadrs(jqbad) = i
67            ENDIF
68            t_seri(i,k)=zt
69            q_seri(i,k)=zq
70         ENDDO
71      ENDDO
72
73!=====================================================================================
74! Impression et stop en cas de probleme important
75!=====================================================================================
76
77IF (jbad .GT. 0) THEN
78      DO j = 1, jbad
79         i=jadrs(j)
80         print*,'PLANTAGE POUR LE POINT i=',i,text
81         print*,'l    T     dT       Q     dQ    '
82         DO k = 1, klev
83             write(*,'(i3,2f14.4,2e14.2)') k,t_seri(i,k),zdt(i,k),q_seri(i,k),zdq(i,k)
84         ENDDO
85         call print_debug_phys(i,debug_level,text)
86      ENDDO
87ENDIF
88!
89!=====================================================================================
90! Impression, warning et correction en cas de probleme moins important
91!=====================================================================================
92IF (jqbad .GT. 0) THEN
93      DO j = 1, jqbad
94         i=jqadrs(j)
95         print*,'WARNING  : EAU POUR LE POINT i=',i,text
96         print*,'l    T     dT       Q     dQ    '
97         DO k = 1, klev
98            write(*,'(i3,2f14.4,2e14.2)') k,t_seri(i,k),zdt(i,k),q_seri(i,k),zdq(i,k)
99!           zq=q_seri(i,k)+zdq(i,k)
100!           if (zq.lt.1.e-15) then
101!              zdq(i,k)=(1.e-15-q_seri(i,k))
102!           endif
103         ENDDO
104         call print_debug_phys(i,debug_level,text)
105      ENDDO
106ENDIF
107!
108
109      RETURN
110      END
Note: See TracBrowser for help on using the repository browser.