/[lmdze]/trunk/dyn3d/interpre.f
ViewVC logotype

Annotation of /trunk/dyn3d/interpre.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3 - (hide annotations)
Wed Feb 27 13:16:39 2008 UTC (16 years, 2 months ago) by guez
Original Path: trunk/libf/dyn3d/interpre.f
File size: 3731 byte(s)
Initial import
1 guez 3 !
2     ! $Header: /home/cvsroot/LMDZ4/libf/dyn3d/interpre.F,v 1.1.1.1 2004/05/19 12:53:07 lmdzadmin Exp $
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 dimens_m
9     use paramet_m
10     use comconst
11     use comvert
12     use conf_gcm_m
13     use logic
14     use comgeom
15     use temps
16     use ener
17     use comdissip
18     implicit none
19    
20     c---------------------------------------------------
21     c Arguments
22     real apppm(llm+1),bpppm(llm+1)
23     real q(iip1,jjp1,llm),qppm(iim,jjp1,llm)
24     c---------------------------------------------------
25     real masse(iip1,jjp1,llm)
26     real massebx(iip1,jjp1,llm),masseby(iip1,jjm,llm)
27     real w(iip1,jjp1,llm+1)
28     real fluxwppm(iim,jjp1,llm)
29     real pbaru(iip1,jjp1,llm )
30     real pbarv(iip1,jjm,llm)
31     real unatppm(iim,jjp1,llm)
32     real vnatppm(iim,jjp1,llm)
33     real psppm(iim,jjp1)
34     c---------------------------------------------------
35     c Local
36     real vnat(iip1,jjp1,llm)
37     real unat(iip1,jjp1,llm)
38     real fluxw(iip1,jjp1,llm)
39     real smass(iip1,jjp1)
40     c----------------------------------------------------
41     integer l,ij,i,j
42    
43     c CALCUL DE LA PRESSION DE SURFACE
44     c Les coefficients ap et bp sont passés en common
45     c Calcul de la pression au sol en mb optimisée pour
46     c la vectorialisation
47    
48     do j=1,jjp1
49     do i=1,iip1
50     smass(i,j)=0.
51     enddo
52     enddo
53    
54     do l=1,llm
55     do j=1,jjp1
56     do i=1,iip1
57     smass(i,j)=smass(i,j)+masse(i,j,l)
58     enddo
59     enddo
60     enddo
61    
62     do j=1,jjp1
63     do i=1,iim
64     psppm(i,j)=smass(i,j)/aire_2d(i,j)*g*0.01
65     end do
66     end do
67    
68     c RECONSTRUCTION DES CHAMPS CONTRAVARIANTS
69     c Le programme ppm3d travaille avec les composantes
70     c de vitesse et pas les flux, on doit donc passer de l'un à l'autre
71     c Dans le même temps, on fait le changement d'orientation du vent en v
72     do l=1,llm
73     do j=1,jjm
74     do i=1,iip1
75     vnat(i,j,l)=-pbarv(i,j,l)/masseby(i,j,l)*cv_2d(i,j)
76     enddo
77     enddo
78     do i=1,iim
79     vnat(i,jjp1,l)=0.
80     enddo
81     do j=1,jjp1
82     do i=1,iip1
83     unat(i,j,l)=pbaru(i,j,l)/massebx(i,j,l)*cu_2d(i,j)
84     enddo
85     enddo
86     enddo
87    
88     c CALCUL DU FLUX MASSIQUE VERTICAL
89     c Flux en l=1 (sol) nul
90     fluxw=0.
91     do l=1,llm
92     do j=1,jjp1
93     do i=1,iip1
94     fluxw(i,j,l)=w(i,j,l)*g*0.01/aire_2d(i,j)
95     C print*,i,j,l,'fluxw(i,j,l)=',fluxw(i,j,l),
96     C c 'w(i,j,l)=',w(i,j,l)
97     enddo
98     enddo
99     enddo
100    
101     c INVERSION DES NIVEAUX
102     c le programme ppm3d travaille avec une 3ème coordonnée inversée par rapport
103     c de celle du LMDZ: z=1<=>niveau max, z=llm+1<=>surface
104     c On passe donc des niveaux du LMDZ à ceux de Lin
105    
106     do l=1,llm+1
107     apppm(l)=ap(llm+2-l)
108     bpppm(l)=bp(llm+2-l)
109     enddo
110    
111     do l=1,llm
112     do j=1,jjp1
113     do i=1,iim
114     unatppm(i,j,l)=unat(i,j,llm-l+1)
115     vnatppm(i,j,l)=vnat(i,j,llm-l+1)
116     fluxwppm(i,j,l)=fluxw(i,j,llm-l+1)
117     qppm(i,j,l)=q(i,j,llm-l+1)
118     enddo
119     enddo
120     enddo
121    
122     return
123     end
124    
125    
126    
127    
128    
129    

  ViewVC Help
Powered by ViewVC 1.1.21