LMDZ
groupe.F
Go to the documentation of this file.
1 !
2 ! $Header$
3 !
4  subroutine groupe(pext,pbaru,pbarv,pbarum,pbarvm,wm)
5  implicit none
6 
7 c sous-programme servant a fitlrer les champs de flux de masse aux
8 c poles en "regroupant" les mailles 2 par 2 puis 4 par 4 etc. au fur
9 c et a mesure qu'on se rapproche du pole.
10 c
11 c en entree: pext, pbaru et pbarv
12 c
13 c en sortie: pbarum,pbarvm et wm.
14 c
15 c remarque, le wm est recalcule a partir des pbaru pbarv et on n'a donc
16 c pas besoin de w en entree.
17 
18 #include "dimensions.h"
19 #include "paramet.h"
20 #include "comconst.h"
21 #include "comgeom2.h"
22 #include "comvert.h"
23 
24  integer ngroup
25  parameter(ngroup=3)
26 
27 
28  real pbaru(iip1,jjp1,llm),pbarv(iip1,jjm,llm)
29  real pext(iip1,jjp1,llm)
30 
31  real pbarum(iip1,jjp1,llm),pbarvm(iip1,jjm,llm)
32  real wm(iip1,jjp1,llm)
33 
34  real zconvm(iip1,jjp1,llm),zconvmm(iip1,jjp1,llm)
35 
36  real uu
37 
38  integer i,j,l
39 
40  logical firstcall,groupe_ok
41  save firstcall,groupe_ok
42 
43  data firstcall/.true./
44  data groupe_ok/.true./
45 
46  if (iim==1) then
47  groupe_ok=.false.
48  endif
49 
50  if (firstcall) then
51  if (groupe_ok) then
52  if(mod(iim,2**ngroup).ne.0) stop'probleme du nombre de point'
53  endif
54  firstcall=.false.
55  endif
56 
57 
58 c Champs 1D
59 
60  call convflu(pbaru,pbarv,llm,zconvm)
61 
62  call scopy(ijp1llm,zconvm,1,zconvmm,1)
63  call scopy(ijmllm,pbarv,1,pbarvm,1)
64 
65  if (groupe_ok) then
66  call groupeun(jjp1,llm,zconvmm)
67  call groupeun(jjm,llm,pbarvm)
68 
69 c Champs 3D
70  do l=1,llm
71  do j=2,jjm
72  uu=pbaru(iim,j,l)
73  do i=1,iim
74  uu=uu+pbarvm(i,j,l)-pbarvm(i,j-1,l)-zconvmm(i,j,l)
75  pbarum(i,j,l)=uu
76 c zconvm(i,j,l ) = xflu(i-1,j,l)-xflu(i,j,l)+
77 c * yflu(i,j,l)-yflu(i,j-1,l)
78  enddo
79  pbarum(iip1,j,l)=pbarum(1,j,l)
80  enddo
81  enddo
82 
83  else
84  pbarum(:,:,:)=pbaru(:,:,:)
85  pbarvm(:,:,:)=pbarv(:,:,:)
86  endif
87 
88 c integration de la convergence de masse de haut en bas ......
89  do l=1,llm
90  do j=1,jjp1
91  do i=1,iip1
92  zconvmm(i,j,l)=zconvmm(i,j,l)
93  enddo
94  enddo
95  enddo
96  do l = llm-1,1,-1
97  do j=1,jjp1
98  do i=1,iip1
99  zconvmm(i,j,l)=zconvmm(i,j,l)+zconvmm(i,j,l+1)
100  enddo
101  enddo
102  enddo
103 
104  CALL vitvert(zconvmm,wm)
105 
106  return
107  end
108 
!$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
subroutine convflu(xflu, yflu, nbniv, convfl)
Definition: convflu.F:5
subroutine scopy(n, sx, incx, sy, incy)
Definition: cray.F:9
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL false
Definition: calcul_STDlev.h:26
!$Header llmm1 INTEGER ijp1llm INTEGER ijmllm
Definition: paramet.h:14
subroutine groupe(pext, pbaru, pbarv, pbarum, pbarvm, wm)
Definition: groupe.F:5
!$Header jjp1
Definition: paramet.h:14
!$Header!integer nvarmx parameter(nfmx=10, imx=200, jmx=150, lmx=200, nvarmx=1000) real xd(imx
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
subroutine vitvert(convm, w)
Definition: vitvert.F90:2
c c zjulian c cym CALL iim cym klev iim
Definition: ini_bilKP_ave.h:24
subroutine groupeun(jjmax, llmax, q)
Definition: groupeun.F:5