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

Contents of /trunk/dyn3d/interpre.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3 - (show 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 !
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