source: trunk/LMDZ.GENERIC/libf/dyn3d/fluxstoke.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 fluxstoke(pbaru,pbarv,masse,teta,phi,phis)
2c
3c     Auteur :  F. Hourdin
4c
5c
6ccc   ..   Modif. P. Le Van  ( 20/12/97 )  ...
7c
8      USE comvert_mod, ONLY: presnivs
9      USE comconst_mod, ONLY: dtvr,pi
10
11      IMPLICIT NONE
12c
13#include "dimensions.h"
14#include "paramet.h"
15#include "comgeom.h"
16#include "tracstoke.h"
17
18
19      REAL pbaru(ip1jmp1,llm),pbarv(ip1jm,llm)
20      REAL masse(ip1jmp1,llm),teta(ip1jmp1,llm),phi(ip1jmp1,llm)
21      REAL phis(ip1jmp1)
22
23      REAL pbaruc(ip1jmp1,llm),pbarvc(ip1jm,llm)
24      REAL massem(ip1jmp1,llm),tetac(ip1jmp1,llm),phic(ip1jmp1,llm)
25
26      REAL pbarug(ip1jmp1,llm),pbarvg(iip1,jjm,llm),wg(ip1jmp1,llm)
27
28      REAL pbarvst(iip1,jjp1,llm)
29
30
31      INTEGER iadvtr
32      INTEGER ij,l,irec,i,j
33 
34      SAVE iadvtr, massem,pbaruc,pbarvc,irec
35      SAVE phic,tetac
36      logical first
37      save first
38      data first/.true./
39      DATA iadvtr/0/
40
41      if(first) then
42#ifdef CRAY
43         CALL ASSIGN("assign -N ieee -F null f:fluxmass")
44#endif
45         open(47,file='fluxmass',form='unformatted',
46     s        access='direct',recl=4*(6*ijp1llm))
47         irec=1
48         first=.false.
49
50         open(77,file='fluxmass.ctl',status='unknown',form='formatted')
51
52      endif
53
54
55      IF(iadvtr.EQ.0) THEN
56         CALL initial0(ijp1llm,phic)
57         CALL initial0(ijp1llm,tetac)
58         CALL initial0(ijp1llm,pbaruc)
59         CALL initial0(ijmllm,pbarvc)
60      ENDIF
61
62c   accumulation des flux de masse horizontaux
63      DO l=1,llm
64         DO ij = 1,ip1jmp1
65            pbaruc(ij,l) = pbaruc(ij,l) + pbaru(ij,l)
66            tetac(ij,l) = tetac(ij,l) + teta(ij,l)
67            phic(ij,l) = phic(ij,l) + phi(ij,l)
68         ENDDO
69         DO ij = 1,ip1jm
70            pbarvc(ij,l) = pbarvc(ij,l) + pbarv(ij,l)
71         ENDDO
72      ENDDO
73
74c   selection de la masse instantannee des mailles avant le transport.
75      IF(iadvtr.EQ.0) THEN
76         CALL SCOPY(ip1jmp1*llm,masse,1,massem,1)
77      ENDIF
78
79      iadvtr   = iadvtr+1
80
81
82c   Test pour savoir si on advecte a ce pas de temps
83      IF ( iadvtr.EQ.istdyn ) THEN
84
85c    normalisation
86      DO l=1,llm
87         DO ij = 1,ip1jmp1
88            pbaruc(ij,l) = pbaruc(ij,l)/float(istdyn)
89            tetac(ij,l) = tetac(ij,l)/float(istdyn)
90            phic(ij,l) = phic(ij,l)/float(istdyn)
91         ENDDO
92         DO ij = 1,ip1jm
93            pbarvc(ij,l) = pbarvc(ij,l)/float(istdyn)
94         ENDDO
95      ENDDO
96
97c   traitement des flux de masse avant advection.
98c     1. calcul de w
99c     2. groupement des mailles pres du pole.
100
101        CALL groupe( massem, pbaruc,pbarvc, pbarug,pbarvg,wg )
102
103        do l=1,llm
104           do j=1,jjm
105              do i=1,iip1
106                 pbarvst(i,j,l)=pbarvg(i,j,l)
107              enddo
108           enddo
109           do i=1,iip1
110              pbarvst(i,jjp1,l)=0.
111           enddo
112        enddo
113
114         iadvtr=0
115
116         irec=irec+1
117         write(47,rec=1) float(irec),dtvr,float(istdyn),
118     s    float(iim),float(jjm),float(llm),rlonu,rlonv,rlatu,rlatv
119     s    ,aire,phis
120         write(47,rec=irec) massem,pbarug,pbarvst,wg,tetac,phic
121
122c   on reinitialise a zero les flux de masse cumules.
123
124      write(77,'(a4,2x,a40)')
125     &       'DSET ','^fluxmass'
126
127      write(77,'(a12)') 'UNDEF 1.0E30'
128      write(77,'(a5,1x,a40)') 'TITLE ','Titre a voir'
129      call formcoord(77,iip1,rlonv,180./pi,.false.,'XDEF')
130      call formcoord(77,jjp1,rlatu,180./pi,.true.,'YDEF')
131      call formcoord(77,llm,presnivs,1.,.false.,'ZDEF')
132      write(77,'(a4,i10,a30)')
133     &       'TDEF ',irec,' LINEAR 02JAN1987 1DY '
134      write(77,'(a4,2x,i5)') 'VARS',6
135      write(77,1000) 'masse',llm,99,'masse    '
136      write(77,1000) 'pbaru',llm,99,'pbaru    '
137      write(77,1000) 'pbarv',llm,99,'pbarv    '
138      write(77,1000) 'w    ',llm,99,'w        '
139      write(77,1000) 'teta ',llm,99,'teta     '
140      write(77,1000) 'phi  ',llm,99,'phi      '
141      write(77,'(a7)') 'ENDVARS'
142
1431000  format(a5,3x,i4,i3,1x,a39)
144
145
146
147      ENDIF ! if iadvtr.EQ.istdyn
148
149      RETURN
150      END
Note: See TracBrowser for help on using the repository browser.