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

Annotation of /trunk/dyn3d/interpre.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 57 - (hide annotations)
Mon Jan 30 12:54:02 2012 UTC (12 years, 3 months ago) by guez
Original Path: trunk/libf/dyn3d/interpre.f
File size: 3635 byte(s)
Write used namelists to file "" instead of standard output.

Avoid aliasing in "inidissip" in calls to "divgrad2", "divgrad",
"gradiv2", "gradiv", "nxgraro2" and "nxgrarot". Add a degenerate
dimension to arrays so they have rank 3, like the dummy arguments in
"divgrad2", "divgrad", "gradiv2", "gradiv", "nxgraro2" and "nxgrarot".

Extract the initialization part from "bilan_dyn" and make a separate
procedure, "init_dynzon", from it.

Move variables from modules "iniprint" and "logic" to module
"conf_gcm_m".

Promote internal procedures of "fxy" to private procedures of module
"fxy_m".

Extracted documentation from "inigeom". Removed useless "save"
attributes. Removed useless intermediate variables. Extracted
processing of poles from loop on latitudes. Write coordinates to file
"longitude_latitude.txt" instead of standard output.

Do not use ozone tracer for radiative transfer.

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 guez 57 use conf_gcm_m
14 guez 3 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