source: LMDZ5/trunk/libf/dyn3d_common/limx.F @ 2600

Last change on this file since 2600 was 2600, checked in by Ehouarn Millour, 8 years ago

Cleanup in the dynamics: turn comvert.h into module comvert_mod.F90
EM

  • 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.4 KB
Line 
1!
2! $Header$
3!
4      SUBROUTINE limx(s0,sx,sm,pente_max)
5c
6c     Auteurs:   P.Le Van, F.Hourdin, F.Forget
7c
8c    ********************************************************************
9c     Shema  d'advection " pseudo amont " .
10c    ********************************************************************
11c     nq,iq,q,pbaru,pbarv,w sont des arguments d'entree  pour le s-pg ....
12c
13c
14c   --------------------------------------------------------------------
15      IMPLICIT NONE
16c
17      include "dimensions.h"
18      include "paramet.h"
19      include "logic.h"
20      include "comgeom.h"
21c
22c
23c   Arguments:
24c   ----------
25      real pente_max
26      REAL s0(ip1jmp1,llm),sm(ip1jmp1,llm)
27      real sx(ip1jmp1,llm)
28c
29c      Local
30c   ---------
31c
32      INTEGER ij,l,j,i,iju,ijq,indu(ip1jmp1),niju
33      integer n0,iadvplus(ip1jmp1,llm),nl(llm)
34c
35      REAL q(ip1jmp1,llm)
36      real dxq(ip1jmp1,llm)
37
38
39      REAL new_m,zm
40      real dxqu(ip1jmp1)
41      real adxqu(ip1jmp1),dxqmax(ip1jmp1)
42
43      Logical extremum,first
44      save first
45
46      REAL      SSUM,CVMGP,CVMGT
47      integer ismax,ismin
48      EXTERNAL  SSUM, ismin,ismax
49
50      data first/.true./
51
52
53       DO  l = 1,llm
54         DO  ij=1,ip1jmp1
55               q(ij,l) = s0(ij,l) / sm ( ij,l )
56               dxq(ij,l) = sx(ij,l) /sm(ij,l)
57         ENDDO
58       ENDDO
59
60c   calcul de la pente a droite et a gauche de la maille
61
62      do l = 1, llm
63         do ij=iip2,ip1jm-1
64            dxqu(ij)=q(ij+1,l)-q(ij,l)
65         enddo
66         do ij=iip1+iip1,ip1jm,iip1
67            dxqu(ij)=dxqu(ij-iim)
68         enddo
69
70         do ij=iip2,ip1jm
71            adxqu(ij)=abs(dxqu(ij))
72         enddo
73
74c   calcul de la pente maximum dans la maille en valeur absolue
75
76         do ij=iip2+1,ip1jm
77            dxqmax(ij)=pente_max*min(adxqu(ij-1),adxqu(ij))
78         enddo
79
80         do ij=iip1+iip1,ip1jm,iip1
81            dxqmax(ij-iim)=dxqmax(ij)
82         enddo
83
84c   calcul de la pente avec limitation
85
86         do ij=iip2+1,ip1jm
87            if(     dxqu(ij-1)*dxqu(ij).gt.0.
88     &         .and. dxq(ij,l)*dxqu(ij).gt.0.) then
89              dxq(ij,l)=
90     &         sign(min(abs(dxq(ij,l)),dxqmax(ij)),dxq(ij,l))
91            else
92c   extremum local
93               dxq(ij,l)=0.
94            endif
95         enddo
96         do ij=iip1+iip1,ip1jm,iip1
97            dxq(ij-iim,l)=dxq(ij,l)
98         enddo
99
100         DO  ij=1,ip1jmp1
101               sx(ij,l) = dxq(ij,l)*sm(ij,l)
102         ENDDO
103
104       ENDDO
105
106      RETURN
107      END
Note: See TracBrowser for help on using the repository browser.