source: LMDZ.3.3/branches/LF/libf/dyn3d/sortvarc0.F

Last change on this file was 2, checked in by lmdz, 25 years ago

Initial revision

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