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

Annotation of /trunk/dyn3d/interpre.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 32 - (hide annotations)
Tue Apr 6 17:52:58 2010 UTC (14 years, 1 month ago) by guez
Original Path: trunk/libf/dyn3d/interpre.f
File size: 3630 byte(s)
Split "stringop.f90" into single-procedure files. Gathered files in directory
"IOIPSL/Stringop".

Split "flincom.f90" into "flincom.f90" and "flinget.f90". Removed
unused procedures from module "flincom". Removed unused argument
"filename" of procedure "flinopen_nozoom".

Removed unused files.

Split "grid_change.f90" into "grid_change.f90" and
"gr_phy_write_3d.f90".

Removed unused procedures from modules "calendar", "ioipslmpp",
"grid_atob", "gath_cpl" and "getincom". Removed unused procedures in
files "ppm3d.f" and "thermcell.f".

Split "mathelp.f90" into "mathelp.f90" and "mathop.f90".

Removed unused variable "dpres" of module "comvert".

Use argument "itau" instead of local variables "iadvtr" and "first" to
control algorithm in procedure "fluxstokenc".

Removed unused arguments of procedure "integrd".

Removed useless computations at the end of procedure "leapfrog".

Merged common block "matrfil" into module "parafilt".

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     enddo
95     enddo
96     enddo
97    
98     c INVERSION DES NIVEAUX
99     c le programme ppm3d travaille avec une 3ème coordonnée inversée par rapport
100     c de celle du LMDZ: z=1<=>niveau max, z=llm+1<=>surface
101     c On passe donc des niveaux du LMDZ à ceux de Lin
102    
103     do l=1,llm+1
104     apppm(l)=ap(llm+2-l)
105     bpppm(l)=bp(llm+2-l)
106     enddo
107    
108     do l=1,llm
109     do j=1,jjp1
110     do i=1,iim
111     unatppm(i,j,l)=unat(i,j,llm-l+1)
112     vnatppm(i,j,l)=vnat(i,j,llm-l+1)
113     fluxwppm(i,j,l)=fluxw(i,j,llm-l+1)
114     qppm(i,j,l)=q(i,j,llm-l+1)
115     enddo
116     enddo
117     enddo
118    
119     return
120     end
121    
122    
123    
124    
125    
126    

  ViewVC Help
Powered by ViewVC 1.1.21