source: LMDZ6/trunk/libf/dyn3d/groupe.f90 @ 5447

Last change on this file since 5447 was 5285, checked in by abarral, 8 weeks ago

As discussed internally, remove generic ONLY: ... for new _mod_h modules

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.3 KB
Line 
1!
2! $Header$
3!
4subroutine groupe(pext,pbaru,pbarv,pbarum,pbarvm,wm)
5
6  USE comgeom2_mod_h
7  use comconst_mod, only: ngroup
8
9  USE dimensions_mod, ONLY: iim, jjm, llm, ndm
10USE paramet_mod_h
11implicit none
12
13  !   sous-programme servant a fitlrer les champs de flux de masse aux
14  !   poles en "regroupant" les mailles 2 par 2 puis 4 par 4 etc. au fur
15  !   et a mesure qu'on se rapproche du pole.
16  !
17  !   en entree: pext, pbaru et pbarv
18  !
19  !   en sortie:  pbarum,pbarvm et wm.
20  !
21  !   remarque, le wm est recalcule a partir des pbaru pbarv et on n'a donc
22  !   pas besoin de w en entree.
23
24
25
26
27  ! integer ngroup
28  ! parameter (ngroup=3)
29
30
31  real :: pbaru(iip1,jjp1,llm),pbarv(iip1,jjm,llm)
32  real :: pext(iip1,jjp1,llm)
33
34  real :: pbarum(iip1,jjp1,llm),pbarvm(iip1,jjm,llm)
35  real :: wm(iip1,jjp1,llm)
36
37  real :: zconvm(iip1,jjp1,llm),zconvmm(iip1,jjp1,llm)
38
39  real :: uu
40
41  integer :: i,j,l
42
43  logical :: firstcall,groupe_ok
44  save firstcall,groupe_ok
45
46  data firstcall/.true./
47  data groupe_ok/.true./
48
49  if (iim==1) then
50     groupe_ok=.false.
51  endif
52
53  if (firstcall) then
54     if (groupe_ok) then
55        if(mod(iim,2**ngroup).ne.0) &
56              CALL abort_gcm('groupe','probleme du nombre de point',1)
57     endif
58     firstcall=.false.
59  endif
60
61
62  !   Champs 1D
63
64  call convflu(pbaru,pbarv,llm,zconvm)
65
66  call scopy(ijp1llm,zconvm,1,zconvmm,1)
67  call scopy(ijmllm,pbarv,1,pbarvm,1)
68
69  if (groupe_ok) then
70  call groupeun(jjp1,llm,zconvmm)
71  call groupeun(jjm,llm,pbarvm)
72
73  !   Champs 3D
74  do l=1,llm
75     do j=2,jjm
76        uu=pbaru(iim,j,l)
77        do i=1,iim
78           uu=uu+pbarvm(i,j,l)-pbarvm(i,j-1,l)-zconvmm(i,j,l)
79           pbarum(i,j,l)=uu
80  ! zconvm(i,j,l ) =  xflu(i-1,j,l)-xflu(i,j,l)+
81  !    *                      yflu(i,j,l)-yflu(i,j-1,l)
82        enddo
83        pbarum(iip1,j,l)=pbarum(1,j,l)
84     enddo
85  enddo
86
87  else
88     pbarum(:,:,:)=pbaru(:,:,:)
89     pbarvm(:,:,:)=pbarv(:,:,:)
90  endif
91
92  !    integration de la convergence de masse de haut  en bas ......
93  do l=1,llm
94     do j=1,jjp1
95        do i=1,iip1
96           zconvmm(i,j,l)=zconvmm(i,j,l)
97        enddo
98     enddo
99  enddo
100  do  l = llm-1,1,-1
101      do j=1,jjp1
102         do i=1,iip1
103            zconvmm(i,j,l)=zconvmm(i,j,l)+zconvmm(i,j,l+1)
104         enddo
105      enddo
106  enddo
107
108  CALL vitvert(zconvmm,wm)
109
110  return
111end subroutine groupe
112
Note: See TracBrowser for help on using the repository browser.