source: trunk/LMDZ.GENERIC/libf/dyn3d/sortvarc0.F @ 1422

Last change on this file since 1422 was 1422, checked in by milmd, 10 years ago

In GENERIC, MARS and COMMON models replace some include files by modules (usefull for decoupling physics with dynamics).

File size: 3.9 KB
Line 
1      SUBROUTINE sortvarc0
2     $(itau,ucov,teta,ps,masse,pk,phis,vorpot,phi,bern,dp,time ,
3     $ vcov)
4
5      USE comconst_mod, ONLY: dtvr,daysec,rad,g,omeg
6      USE temps_mod, ONLY: day_ini
7      USE ener_mod, ONLY: etot0,ptot0,ztot0,stot0,ang0,rmsv,rmsdpdt
8
9      IMPLICIT NONE
10
11c=======================================================================
12c
13c   Auteur:    P. Le Van
14c   -------
15c
16c   Objet:
17c   ------
18c
19c   sortie des variables de controle
20c
21c=======================================================================
22c-----------------------------------------------------------------------
23c   Declarations:
24c   -------------
25
26#include "dimensions.h"
27#include "paramet.h"
28#include "comgeom.h"
29
30c   Arguments:
31c   ----------
32
33      INTEGER itau
34      REAL ucov(ip1jmp1,llm),teta(ip1jmp1,llm),masse(ip1jmp1,llm)
35      REAL vcov(ip1jm,llm)
36      REAL ps(ip1jmp1),phis(ip1jmp1)
37      REAL vorpot(ip1jm,llm)
38      REAL phi(ip1jmp1,llm),bern(ip1jmp1,llm)
39      REAL dp(ip1jmp1)
40      REAL time
41      REAL pk(ip1jmp1,llm)
42
43c   Local:
44c   ------
45
46      REAL vor(ip1jm),bernf(ip1jmp1,llm),ztotl(llm)
47      REAL etotl(llm),stotl(llm),rmsvl(llm),angl(llm),ge(ip1jmp1)
48      REAL cosphi(ip1jm),omegcosp(ip1jm)
49      REAL dtvrs1j,rjour,heure,radsg,radomeg
50      REAL rday, massebxy(ip1jm,llm)
51      INTEGER  l, ij, imjmp1
52
53      EXTERNAL  filtreg, massbarxy
54c     EXTERNAL FLUSH
55      EXTERNAL   SSUM, SCOPY ,ismin,ismax
56      REAL       SSUM
57      integer  ismin,ismax
58
59c-----------------------------------------------------------------------
60
61       dtvrs1j   = dtvr/daysec
62       rjour     = FLOAT( INT( itau * dtvrs1j ))
63       heure     = ( itau*dtvrs1j-rjour ) * 24.
64       imjmp1    = iim * jjp1
65       IF(ABS(heure - 24.).LE.0.0001 ) heure = 0.
66c
67       CALL massbarxy ( masse, massebxy )
68
69c   .....  Calcul  de  rmsdpdt  .....
70
71       CALL multipl(ip1jmp1,dp,dp,ge)
72
73       rmsdpdt = SSUM(ip1jmp1,ge,1) - SSUM(jjp1,ge,iip1)
74c
75       rmsdpdt = daysec* 1.e-2 * SQRT(rmsdpdt/imjmp1)
76
77       CALL SCOPY( ijp1llm,bern,1,bernf,1 )
78       CALL filtreg(bernf,jjp1,llm,-2,2,.TRUE.,1)
79
80c   .....  Calcul du moment  angulaire   .....
81
82       radsg    = rad /g
83       radomeg  = rad * omeg
84c
85       DO ij=iip2,ip1jm
86          cosphi( ij ) = COS(rlatu((ij-1)/iip1+1))
87          omegcosp(ij) = radomeg   * cosphi(ij)
88       ENDDO
89
90c  ...  Calcul  de l'energie,de l'enstrophie,de l'entropie et de rmsv  .
91
92       DO l=1,llm
93          DO ij = 1,ip1jm
94             vor(ij)=vorpot(ij,l)*vorpot(ij,l)*massebxy(ij,l)
95          ENDDO
96          ztotl(l)=(SSUM(ip1jm,vor,1)-SSUM(jjm,vor,iip1))
97
98          DO ij = 1,ip1jmp1
99             ge(ij)= masse(ij,l)*(phis(ij)+teta(ij,l)*pk(ij,l)  +
100     s        bernf(ij,l)-phi(ij,l))
101          ENDDO
102          etotl(l) = SSUM(ip1jmp1,ge,1) - SSUM(jjp1,ge,iip1)
103
104          DO   ij   = 1, ip1jmp1
105             ge(ij) = masse(ij,l)*teta(ij,l)
106          ENDDO
107          stotl(l)= SSUM(ip1jmp1,ge,1) - SSUM(jjp1,ge,iip1)
108
109          DO ij=1,ip1jmp1
110             ge(ij)=masse(ij,l)*AMAX1(bernf(ij,l)-phi(ij,l),0.)
111          ENDDO
112          rmsvl(l)=2.*(SSUM(ip1jmp1,ge,1)-SSUM(jjp1,ge,iip1))
113
114          DO ij =iip2,ip1jm
115             ge(ij)=(ucov(ij,l)/cu(ij)+omegcosp(ij))*masse(ij,l) *
116     *               cosphi(ij)
117          ENDDO
118          angl(l) = radsg *
119     s    (SSUM(ip1jm-iip1,ge(iip2),1)-SSUM(jjm-1,ge(iip2),iip1))
120      ENDDO
121
122          DO ij=1,ip1jmp1
123            ge(ij)= ps(ij)*aire(ij)
124          ENDDO
125      ptot0  = SSUM(ip1jmp1,ge,1)-SSUM(jjp1,ge,iip1)
126      etot0  = SSUM(     llm, etotl, 1 )
127      ztot0  = SSUM(     llm, ztotl, 1 )
128      stot0  = SSUM(     llm, stotl, 1 )
129      rmsv   = SSUM(     llm, rmsvl, 1 )
130      ang0   = SSUM(     llm,  angl, 1 )
131
132      rday = day_ini
133c
134      PRINT 3500, itau, rday, heure, time
135      PRINT *, ptot0,etot0,ztot0,stot0,ang0
136
1373500   FORMAT('0',10(1h*),4x,'pas',i7,5x,'jour',f5.0,'heure',f5.1,4x
138     *   ,'date',f10.5,4x,10(1h*))
139      RETURN
140      END
141
Note: See TracBrowser for help on using the repository browser.