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

Annotation of /trunk/dyn3d/interpre.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 31 - (hide annotations)
Thu Apr 1 14:59:19 2010 UTC (14 years, 2 months ago) by guez
Original Path: trunk/libf/dyn3d/interpre.f
File size: 3739 byte(s)
Split "vlsplt.f" in single-procedure files. Gathered the files in
directory "dyn3d/Vlsplt".

Defined "pbarum(:, 1, :)" and "pbarum(:, jjm + 1, :)" in procedure
"groupe".

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

  ViewVC Help
Powered by ViewVC 1.1.21