LMDZ
interpre.F
Go to the documentation of this file.
1 !
2 ! $Id: interpre.F 2121 2014-09-16 12:01:11Z lguez $
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 control_mod
9 
10  implicit none
11 
12 #include "dimensions.h"
13 c#include "paramr2.h"
14 #include "paramet.h"
15 #include "comconst.h"
16 #include "comdissip.h"
17 #include "comvert.h"
18 #include "comgeom2.h"
19 #include "logic.h"
20 #include "temps.h"
21 #include "ener.h"
22 #include "description.h"
23 
24 c---------------------------------------------------
25 c arguments
26  real apppm(llm+1),bpppm(llm+1)
27  real q(iip1,jjp1,llm),qppm(iim,jjp1,llm)
28 c---------------------------------------------------
29  real masse(iip1,jjp1,llm)
30  real massebx(iip1,jjp1,llm),masseby(iip1,jjm,llm)
31  real w(iip1,jjp1,llm)
32  real fluxwppm(iim,jjp1,llm)
33  real pbaru(iip1,jjp1,llm )
34  real pbarv(iip1,jjm,llm)
35  real unatppm(iim,jjp1,llm)
36  real vnatppm(iim,jjp1,llm)
37  real psppm(iim,jjp1)
38 c---------------------------------------------------
39 c local
40  real vnat(iip1,jjp1,llm)
41  real unat(iip1,jjp1,llm)
42  real fluxw(iip1,jjp1,llm)
43  real smass(iip1,jjp1)
44 c----------------------------------------------------
45  integer l,ij,i,j
46 
47 c calcul de la pression de surface
48 c les coefficients ap et bp sont passé en common c Calcul de la pression au sol en mb optimisée pour c la vectorialisation do j=1,jjp1 do i=1,iip1 smass(i,j)=0. enddo enddo do l=1,llm do j=1,jjp1 do i=1,iip1 smass(i,j)=smass(i,j)+masse(i,j,l) enddo enddo enddo do j=1,jjp1 do i=1,iim psppm(i,j)=smass(i,j)/aire(i,j)*g*0.01 end do end do c RECONSTRUCTION DES CHAMPS CONTRAVARIANTS c Le programme ppm3d travaille avec les composantes c de vitesse et pas les flux, on doit donc passer de l'un à l'autre c Dans le même temps, on fait le changement d'orientation du vent en v do l=1,llm do j=1,jjm do i=1,iip1 vnat(i,j,l)=-pbarv(i,j,l)/masseby(i,j,l)*cv(i,j) enddo enddo do i=1,iim vnat(i,jjp1,l)=0. enddo do j=1,jjp1 do i=1,iip1 unat(i,j,l)=pbaru(i,j,l)/massebx(i,j,l)*cu(i,j) enddo enddo enddo c CALCUL DU FLUX MASSIQUE VERTICAL c Flux en l=1 (sol) nul fluxw=0. do l=1,llm do j=1,jjp1 do i=1,iip1 fluxw(i,j,l)=w(i,j,l)*g*0.01/aire(i,j) C print*,i,j,l,'fluxw(i,j,l)=',fluxw(i,j,l), C c 'w(i,j,l)=',w(i,j,l) enddo enddo enddo c INVERSION DES NIVEAUX c le programme ppm3d travaille avec une 3ème coordonnée inversée par rapport c de celle du LMDZ: z=1<=>niveau max, z=llm+1<=>surface c On passe donc des niveaux du LMDZ à ceux de Lin do l=1,llm+1 apppm(l)=ap(llm+2-l) bpppm(l)=bp(llm+2-l) enddo do l=1,llm do j=1,jjp1 do i=1,iim unatppm(i,j,l)=unat(i,j,llm-l+1) vnatppm(i,j,l)=vnat(i,j,llm-l+1) fluxwppm(i,j,l)=fluxw(i,j,llm-l+1) qppm(i,j,l)=q(i,j,llm-l+1) enddo enddo enddo return end s en common
49 c calcul de la pression au sol en mb optimisé pour c la vectorialisation do j=1,jjp1 do i=1,iip1 smass(i,j)=0. enddo enddo do l=1,llm do j=1,jjp1 do i=1,iip1 smass(i,j)=smass(i,j)+masse(i,j,l) enddo enddo enddo do j=1,jjp1 do i=1,iim psppm(i,j)=smass(i,j)/aire(i,j)*g*0.01 end do end do c RECONSTRUCTION DES CHAMPS CONTRAVARIANTS c Le programme ppm3d travaille avec les composantes c de vitesse et pas les flux, on doit donc passer de l'un à l'autre c Dans le même temps, on fait le changement d'orientation du vent en v do l=1,llm do j=1,jjm do i=1,iip1 vnat(i,j,l)=-pbarv(i,j,l)/masseby(i,j,l)*cv(i,j) enddo enddo do i=1,iim vnat(i,jjp1,l)=0. enddo do j=1,jjp1 do i=1,iip1 unat(i,j,l)=pbaru(i,j,l)/massebx(i,j,l)*cu(i,j) enddo enddo enddo c CALCUL DU FLUX MASSIQUE VERTICAL c Flux en l=1 (sol) nul fluxw=0. do l=1,llm do j=1,jjp1 do i=1,iip1 fluxw(i,j,l)=w(i,j,l)*g*0.01/aire(i,j) C print*,i,j,l,'fluxw(i,j,l)=',fluxw(i,j,l), C c 'w(i,j,l)=',w(i,j,l) enddo enddo enddo c INVERSION DES NIVEAUX c le programme ppm3d travaille avec une 3ème coordonnée inversée par rapport c de celle du LMDZ: z=1<=>niveau max, z=llm+1<=>surface c On passe donc des niveaux du LMDZ à ceux de Lin do l=1,llm+1 apppm(l)=ap(llm+2-l) bpppm(l)=bp(llm+2-l) enddo do l=1,llm do j=1,jjp1 do i=1,iim unatppm(i,j,l)=unat(i,j,llm-l+1) vnatppm(i,j,l)=vnat(i,j,llm-l+1) fluxwppm(i,j,l)=fluxw(i,j,llm-l+1) qppm(i,j,l)=q(i,j,llm-l+1) enddo enddo enddo return end e pour
50 c la vectorialisation
51 
52  do j=1,jjp1
53  do i=1,iip1
54  smass(i,j)=0.
55  enddo
56  enddo
57 
58  do l=1,llm
59  do j=1,jjp1
60  do i=1,iip1
61  smass(i,j)=smass(i,j)+masse(i,j,l)
62  enddo
63  enddo
64  enddo
65 
66  do j=1,jjp1
67  do i=1,iim
68  psppm(i,j)=smass(i,j)/aire(i,j)*g*0.01
69  end do
70  end do
71 
72 c reconstruction des champs contravariants
73 c le programme ppm3d travaille avec les composantes
74 c de vitesse et pas les flux, on doit donc passer de l'un à l'autre
75 c dans le mêe temps, on fait le changement d'orientation du vent en v do l=1,llm do j=1,jjm do i=1,iip1 vnat(i,j,l)=-pbarv(i,j,l)/masseby(i,j,l)*cv(i,j) enddo enddo do i=1,iim vnat(i,jjp1,l)=0. enddo do j=1,jjp1 do i=1,iip1 unat(i,j,l)=pbaru(i,j,l)/massebx(i,j,l)*cu(i,j) enddo enddo enddo c CALCUL DU FLUX MASSIQUE VERTICAL c Flux en l=1 (sol) nul fluxw=0. do l=1,llm do j=1,jjp1 do i=1,iip1 fluxw(i,j,l)=w(i,j,l)*g*0.01/aire(i,j) C print*,i,j,l,'fluxw(i,j,l)=',fluxw(i,j,l), C c 'w(i,j,l)=',w(i,j,l) enddo enddo enddo c INVERSION DES NIVEAUX c le programme ppm3d travaille avec une 3ème coordonnée inversée par rapport c de celle du LMDZ: z=1<=>niveau max, z=llm+1<=>surface c On passe donc des niveaux du LMDZ à ceux de Lin do l=1,llm+1 apppm(l)=ap(llm+2-l) bpppm(l)=bp(llm+2-l) enddo do l=1,llm do j=1,jjp1 do i=1,iim unatppm(i,j,l)=unat(i,j,llm-l+1) vnatppm(i,j,l)=vnat(i,j,llm-l+1) fluxwppm(i,j,l)=fluxw(i,j,llm-l+1) qppm(i,j,l)=q(i,j,llm-l+1) enddo enddo enddo return end me temps, on fait le changement d'orientation du vent en v
76  do l=1,llm
77  do j=1,jjm
78  do i=1,iip1
79  vnat(i,j,l)=-pbarv(i,j,l)/masseby(i,j,l)*cv(i,j)
80  enddo
81  enddo
82  do i=1,iim
83  vnat(i,jjp1,l)=0.
84  enddo
85  do j=1,jjp1
86  do i=1,iip1
87  unat(i,j,l)=pbaru(i,j,l)/massebx(i,j,l)*cu(i,j)
88  enddo
89  enddo
90  enddo
91 
92 c CALCUL DU FLUX MASSIQUE VERTICAL
93 c Flux en l=1 (sol) nul
94  fluxw=0.
95  do l=1,llm
96  do j=1,jjp1
97  do i=1,iip1
98  fluxw(i,j,l)=w(i,j,l)*g*0.01/aire(i,j)
99 C print*,i,j,l,'fluxw(i,j,l)=',fluxw(i,j,l),
100 C c 'w(i,j,l)=',w(i,j,l)
101  enddo
102  enddo
103  enddo
104 
105 c INVERSION DES NIVEAUX
106 c le programme ppm3d travaille avec une 3ème coordonnée inversée par rapport
107 c de celle du LMDZ: z=1<=>niveau max, z=llm+1<=>surface
108 c On passe donc des niveaux du LMDZ à ceux de Lin
109 
110  do l=1,llm+1
111  apppm(l)=ap(llm+2-l)
112  bpppm(l)=bp(llm+2-l)
113  enddo
114 
115  do l=1,llm
116  do j=1,jjp1
117  do i=1,iim
118  unatppm(i,j,l)=unat(i,j,llm-l+1)
119  vnatppm(i,j,l)=vnat(i,j,llm-l+1)
120  fluxwppm(i,j,l)=fluxw(i,j,llm-l+1)
121  qppm(i,j,l)=q(i,j,llm-l+1)
122  enddo
123  enddo
124  enddo
125 
126  return
127  end
128 
129 
130 
131 
132 
133 
!$Id mode_top_bound COMMON comconstr g
Definition: comconst.h:7
c c $Id c c calculs statistiques distribution nuage ftion du regime dynamique c c Ce calcul doit etre fait a partir de valeurs mensuelles CALL nbregdyn DO kmaxm1 DO l
Definition: calcul_REGDYN.h:13
!$Id bp(llm+1)
!$Id ok_orolf LOGICAL ok_limitvrai LOGICAL ok_all_xml INTEGER iflag_ener_conserv REAL solaire RCFC12 RCFC12_act CFC12_ppt!IM ajout CFMIP2 CMIP5 LOGICAL ok_4xCO2atm RCFC12_per CFC12_ppt_per!OM correction du bilan d eau global!OM Correction sur precip KE REAL cvl_corr!OM Fonte calotte dans bilan eau LOGICAL ok_lic_melt!IM simulateur ISCCP INTEGER overlap!IM seuils cdrh REAL cdhmax!IM param stabilite s terres et en dehors REAL f_ri_cd_min!IM MAFo pmagic evap0!Frottement au sol(Cdrag) Real f_cdrag_ter
!$Id Turb_fcg_gcssold get_uvd hqturb_gcssold endif!large scale llm day day1 day day1 *dt_toga endif!time annee_ref dt_toga u_toga vq_toga w_prof vq_prof llm day day1 day day1 *dt_dice endif!time annee_ref dt_dice swup_dice vg_dice omega_dice tg_prof vg_profd w_profd omega_profd!do llm!print llm l llm
!$Header!CDK comgeom COMMON comgeom aire
Definition: comgeom.h:25
!$Id klon initialisation mois suivants day_rain itap ENDIF!Calcul fin de nday_rain calcul nday_rain itap DO i
Definition: calcul_divers.h:24
subroutine pression(ngrid, ap, bp, ps, p)
Definition: pression.F90:2
!$Id klon klev DO klon!IM klev DO klon klon nbp_lat DO nbp_lon ij
!$Header jjp1
Definition: paramet.h:14
!$Id Turb_fcg!implicit none!ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc!cette routine permet d obtenir hq et ainsi de!pouvoir calculer la convergence et le cisaillement dans la physiq!cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc INTEGER klev REAL j
Definition: 1Dconv.h:27
subroutine ppm3d(IGD, Q, PS1, PS2, U, V, W, NDT, IORD, JORD, KORD, NC, IMR, JNP, j1, NLAY, AP, BP, PT, AE, fill, dum, Umax)
Definition: ppm3d.F:67
c c zjulian c cym CALL iim cym klev iim
Definition: ini_bilKP_ave.h:24
do llm!au dessus de