source: LMDZ5/trunk/libf/dyn3d_common/interpre.F @ 2602

Last change on this file since 2602 was 2601, checked in by Ehouarn Millour, 9 years ago

Cleanup in the dynamics: turn temps.h into module temps_mod.F90
EM

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.6 KB
Line 
1!
2! $Id: interpre.F 2601 2016-07-24 09:51:55Z emillour $
3!
4       subroutine interpre(q,qppm,w,fluxwppm,masse,
5     s            apppm,bpppm,massebx,masseby,pbaru,pbarv,
6     s            unatppm,vnatppm,psppm)
7
8      USE comconst_mod, ONLY: g
9      USE comvert_mod, ONLY: ap, bp
10
11       implicit none
12
13      include "dimensions.h"
14      include "paramet.h"
15      include "comdissip.h"
16      include "comgeom2.h"
17      include "logic.h"
18      include "ener.h"
19      include "description.h"
20
21c---------------------------------------------------
22c Arguments     
23      real   apppm(llm+1),bpppm(llm+1)
24      real   q(iip1,jjp1,llm),qppm(iim,jjp1,llm)
25c---------------------------------------------------
26      real   masse(iip1,jjp1,llm)
27      real   massebx(iip1,jjp1,llm),masseby(iip1,jjm,llm)     
28      real   w(iip1,jjp1,llm)
29      real   fluxwppm(iim,jjp1,llm)
30      real   pbaru(iip1,jjp1,llm )
31      real   pbarv(iip1,jjm,llm)
32      real   unatppm(iim,jjp1,llm)
33      real   vnatppm(iim,jjp1,llm)
34      real   psppm(iim,jjp1)
35c---------------------------------------------------
36c Local
37      real   vnat(iip1,jjp1,llm)
38      real   unat(iip1,jjp1,llm)
39      real   fluxw(iip1,jjp1,llm)
40      real   smass(iip1,jjp1)
41c----------------------------------------------------
42      integer l,ij,i,j
43
44c       CALCUL DE LA PRESSION DE SURFACE
45c       Les coefficients ap et bp sont passés en common
46c       Calcul de la pression au sol en mb optimisée pour
47c       la vectorialisation
48                   
49         do j=1,jjp1
50             do i=1,iip1
51                smass(i,j)=0.
52             enddo
53         enddo
54
55         do l=1,llm
56             do j=1,jjp1
57                 do i=1,iip1
58                    smass(i,j)=smass(i,j)+masse(i,j,l)
59                 enddo
60             enddo
61         enddo
62     
63         do j=1,jjp1
64             do i=1,iim
65                 psppm(i,j)=smass(i,j)/aire(i,j)*g*0.01
66             end do
67         end do                       
68       
69c RECONSTRUCTION DES CHAMPS CONTRAVARIANTS
70c Le programme ppm3d travaille avec les composantes
71c de vitesse et pas les flux, on doit donc passer de l'un à l'autre
72c Dans le même temps, on fait le changement d'orientation du vent en v
73      do l=1,llm
74          do j=1,jjm
75              do i=1,iip1
76                  vnat(i,j,l)=-pbarv(i,j,l)/masseby(i,j,l)*cv(i,j)
77              enddo
78          enddo
79          do  i=1,iim
80          vnat(i,jjp1,l)=0.
81          enddo
82          do j=1,jjp1
83              do i=1,iip1
84                  unat(i,j,l)=pbaru(i,j,l)/massebx(i,j,l)*cu(i,j)
85              enddo
86          enddo
87      enddo
88             
89c CALCUL DU FLUX MASSIQUE VERTICAL
90c Flux en l=1 (sol) nul
91      fluxw=0.       
92      do l=1,llm
93           do j=1,jjp1
94              do i=1,iip1             
95               fluxw(i,j,l)=w(i,j,l)*g*0.01/aire(i,j)
96C               print*,i,j,l,'fluxw(i,j,l)=',fluxw(i,j,l),
97C     c                      'w(i,j,l)=',w(i,j,l)
98              enddo
99           enddo
100      enddo
101     
102c INVERSION DES NIVEAUX
103c le programme ppm3d travaille avec une 3ème coordonnée inversée par rapport
104c de celle du LMDZ: z=1<=>niveau max, z=llm+1<=>surface
105c On passe donc des niveaux du LMDZ à ceux de Lin
106     
107      do l=1,llm+1
108          apppm(l)=ap(llm+2-l)
109          bpppm(l)=bp(llm+2-l)         
110      enddo
111     
112      do l=1,llm
113          do j=1,jjp1
114             do i=1,iim     
115                 unatppm(i,j,l)=unat(i,j,llm-l+1)
116                 vnatppm(i,j,l)=vnat(i,j,llm-l+1)
117                 fluxwppm(i,j,l)=fluxw(i,j,llm-l+1)
118                 qppm(i,j,l)=q(i,j,llm-l+1)
119             enddo
120          enddo                               
121      enddo
122   
123      return
124      end
125
126
127
128
129
130
Note: See TracBrowser for help on using the repository browser.